ItEr49S17CUAsignacionGrupoRecursosAPlanificacionItEr47S16: Added pagination in advanced assignment window
This commit is contained in:
parent
a04c1d2d28
commit
60f46963d3
14 changed files with 367 additions and 114 deletions
|
|
@ -51,6 +51,7 @@ public class TimeTrackedTableWithLeftPane<A, B> {
|
|||
timeTrackedTable = new TimeTrackedTable<B>(
|
||||
dataForTimeTracker(dataSource), cellRendererForTimeTracker,
|
||||
timeTracker);
|
||||
timeTrackedTable.setSclass("inner-timetracked-table");
|
||||
leftPane = new Grid();
|
||||
zoomLevelListener = new IZoomLevelChangedListener() {
|
||||
@Override
|
||||
|
|
@ -133,4 +134,8 @@ public class TimeTrackedTableWithLeftPane<A, B> {
|
|||
return leftPane;
|
||||
}
|
||||
|
||||
public void reload() {
|
||||
timeTrackedTable.recreate();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,16 @@ import org.zkoss.zk.ui.Component;
|
|||
|
||||
public class TimeTracker {
|
||||
|
||||
public interface IDetailItemFilter {
|
||||
|
||||
public Collection<DetailItem> selectsFirstLevel(
|
||||
Collection<DetailItem> firstLevelDetails);
|
||||
|
||||
public Collection<DetailItem> selectsSecondLevel(
|
||||
Collection<DetailItem> secondLevelDetails);
|
||||
|
||||
}
|
||||
|
||||
private ZoomLevel detailLevel = ZoomLevel.DETAIL_ONE;
|
||||
|
||||
private WeakReferencedListeners<IZoomLevelChangedListener> zoomListeners = WeakReferencedListeners
|
||||
|
|
@ -68,6 +78,8 @@ public class TimeTracker {
|
|||
|
||||
private boolean registeredFirstTask = false;
|
||||
|
||||
private IDetailItemFilter filter = null;
|
||||
|
||||
public TimeTracker(Interval interval, ZoomLevel zoomLevel, Component parent) {
|
||||
this(interval, zoomLevel, SeveralModificators.empty(),
|
||||
SeveralModificators.empty(), parent);
|
||||
|
|
@ -101,6 +113,10 @@ public class TimeTracker {
|
|||
detailLevel = zoomLevel;
|
||||
}
|
||||
|
||||
public void setFilter(IDetailItemFilter filter) {
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
public ZoomLevel getDetailLevel() {
|
||||
return detailLevel;
|
||||
}
|
||||
|
|
@ -114,7 +130,15 @@ public class TimeTracker {
|
|||
detailsFirstLevelCached = getTimeTrackerState()
|
||||
.getFirstLevelDetails(interval);
|
||||
}
|
||||
return detailsFirstLevelCached;
|
||||
return filterFirstLevel(detailsFirstLevelCached);
|
||||
}
|
||||
|
||||
private Collection<DetailItem> filterFirstLevel(
|
||||
Collection<DetailItem> firstLevelDetails) {
|
||||
if (filter == null) {
|
||||
return firstLevelDetails;
|
||||
}
|
||||
return filter.selectsFirstLevel(firstLevelDetails);
|
||||
}
|
||||
|
||||
public Collection<DetailItem> getDetailsSecondLevel() {
|
||||
|
|
@ -122,7 +146,15 @@ public class TimeTracker {
|
|||
detailsSecondLevelCached = getTimeTrackerState()
|
||||
.getSecondLevelDetails(interval);
|
||||
}
|
||||
return detailsSecondLevelCached;
|
||||
return filterSecondLevel(detailsSecondLevelCached);
|
||||
}
|
||||
|
||||
private Collection<DetailItem> filterSecondLevel(
|
||||
Collection<DetailItem> secondLevelDetails) {
|
||||
if (filter == null) {
|
||||
return secondLevelDetails;
|
||||
}
|
||||
return filter.selectsSecondLevel(secondLevelDetails);
|
||||
}
|
||||
|
||||
private Interval realIntervalCached;
|
||||
|
|
|
|||
|
|
@ -53,7 +53,8 @@ public class DetailFiveTimeTrackerState extends TimeTrackerStateUsingJodaTime {
|
|||
public DetailItem create(DateTime dateTime) {
|
||||
return new DetailItem(FIRST_LEVEL_SIZE, dateTime
|
||||
.getWeekOfWeekyear()
|
||||
+ dateTime.toString(", MMM YYYY"));
|
||||
+ dateTime.toString(", MMM YYYY"), dateTime, dateTime
|
||||
.plusDays(7));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@ public class DetailFourTimeTrackerState extends TimeTrackerStateUsingJodaTime {
|
|||
@Override
|
||||
public DetailItem create(DateTime dateTime) {
|
||||
return new DetailItem(FIRST_LEVEL_SIZE, dateTime
|
||||
.toString("MMMM,YYYY"));
|
||||
.toString("MMMM,YYYY"), dateTime, dateTime
|
||||
.plusMonths(1));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ public class DetailOneTimeTrackerState extends TimeTrackerState {
|
|||
|
||||
for (int i = initialYear; i <= endYear; i++) {
|
||||
DetailItem d = new DetailItem(FIRST_LEVEL_ITEM_SIZE, String
|
||||
.valueOf(i));
|
||||
.valueOf(i), new DateTime(i, 1, 1, 0, 0, 0, 0),
|
||||
new DateTime(i, 12, 31, 0, 0, 0, 0));
|
||||
detailsVector.add(d);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,8 @@ public class DetailThreeTimeTrackerState extends TimeTrackerStateUsingJodaTime {
|
|||
@Override
|
||||
public DetailItem create(DateTime dateTime) {
|
||||
return new DetailItem(FIRST_LEVEL_SIZE,
|
||||
getYearWithSemesterString(dateTime));
|
||||
getYearWithSemesterString(dateTime), dateTime, dateTime
|
||||
.plusMonths(6));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,11 +82,14 @@ public class DetailTwoTimeTrackerState extends TimeTrackerState {
|
|||
int quarter = calculateInQuarterPeriodDateInYear(initialDate,
|
||||
initialYear);
|
||||
detailsVector.add(new DetailItem((4 - (quarter - 1))
|
||||
* FIRST_LEVEL_ITEM_SIZE / 4, String.valueOf(initialYear)));
|
||||
* FIRST_LEVEL_ITEM_SIZE / 4, String.valueOf(initialYear),
|
||||
new DateTime(initialYear, 1, 1, 0, 0, 0, 0), new DateTime(
|
||||
initialYear, 1, 1, 0, 0, 0, 0)));
|
||||
|
||||
for (int i = (initialYear + 1); i < endYear; i++) {
|
||||
DetailItem d = new DetailItem(FIRST_LEVEL_ITEM_SIZE, String
|
||||
.valueOf(i));
|
||||
.valueOf(i), new DateTime(i, 1, 1, 0, 0, 0, 0),
|
||||
new DateTime(i, 12, 31, 0, 0, 0, 0));
|
||||
detailsVector.add(d);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ import org.apache.commons.lang.StringUtils;
|
|||
import org.apache.commons.lang.Validate;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.joda.time.Period;
|
||||
import org.navalplanner.business.planner.entities.AggregateOfResourceAllocations;
|
||||
import org.navalplanner.business.planner.entities.AssignmentFunction;
|
||||
import org.navalplanner.business.planner.entities.CalculatedValue;
|
||||
|
|
@ -60,6 +61,7 @@ import org.zkoss.ganttz.timetracker.TimeTrackedTable;
|
|||
import org.zkoss.ganttz.timetracker.TimeTrackedTableWithLeftPane;
|
||||
import org.zkoss.ganttz.timetracker.TimeTracker;
|
||||
import org.zkoss.ganttz.timetracker.TimeTrackerComponentWithoutColumns;
|
||||
import org.zkoss.ganttz.timetracker.TimeTracker.IDetailItemFilter;
|
||||
import org.zkoss.ganttz.timetracker.zoom.DetailItem;
|
||||
import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener;
|
||||
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
|
||||
|
|
@ -152,6 +154,7 @@ public class AdvancedAllocationController extends GenericForwardComposer {
|
|||
return end;
|
||||
}
|
||||
|
||||
|
||||
private static ArrayList<ResourceAllocation<?>> reverse(
|
||||
List<ResourceAllocation<?>> all) {
|
||||
ArrayList<ResourceAllocation<?>> reversed = new ArrayList<ResourceAllocation<?>>(
|
||||
|
|
@ -370,8 +373,13 @@ public class AdvancedAllocationController extends GenericForwardComposer {
|
|||
private Div insertionPointLeftPanel;
|
||||
private Div insertionPointRightPanel;
|
||||
|
||||
private Button paginationDownButton;
|
||||
private Button paginationUpButton;
|
||||
|
||||
private TimeTracker timeTracker;
|
||||
|
||||
private PaginatorFilter paginatorFilter;
|
||||
|
||||
private TimeTrackerComponentWithoutColumns timeTrackerComponent;
|
||||
private Grid leftPane;
|
||||
private TimeTrackedTable<Row> table;
|
||||
|
|
@ -405,6 +413,7 @@ public class AdvancedAllocationController extends GenericForwardComposer {
|
|||
onlyOneVisible = new OnlyOneVisible(normalLayout, noDataLayout);
|
||||
this.associatedComponent = comp;
|
||||
loadAndInitializeComponents();
|
||||
Clients.evalJavaScript("ADVANCE_ALLOCATIONS.listenToScroll();");
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -422,24 +431,171 @@ public class AdvancedAllocationController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
private class PaginatorFilter implements IDetailItemFilter {
|
||||
|
||||
private DateTime intervalStart;
|
||||
private DateTime intervalEnd;
|
||||
|
||||
private DateTime paginatorStart;
|
||||
private DateTime paginatorEnd;
|
||||
|
||||
private ZoomLevel zoomLevel = ZoomLevel.DETAIL_ONE;
|
||||
|
||||
private Period intervalIncrease() {
|
||||
switch (zoomLevel) {
|
||||
case DETAIL_ONE:
|
||||
return Period.years(5);
|
||||
case DETAIL_TWO:
|
||||
return Period.years(3);
|
||||
case DETAIL_THREE:
|
||||
return Period.years(2);
|
||||
case DETAIL_FOUR:
|
||||
return Period.months(6);
|
||||
case DETAIL_FIVE:
|
||||
return Period.months(2);
|
||||
}
|
||||
return Period.years(5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<DetailItem> selectsFirstLevel(
|
||||
Collection<DetailItem> firstLevelDetails) {
|
||||
ArrayList<DetailItem> result = new ArrayList<DetailItem>();
|
||||
for (DetailItem each : firstLevelDetails) {
|
||||
if ((each.getStartDate() == null)
|
||||
|| !(each.getStartDate().isBefore(paginatorStart))
|
||||
&& (each.getStartDate().isBefore(paginatorEnd))) {
|
||||
result.add(each);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<DetailItem> selectsSecondLevel(
|
||||
Collection<DetailItem> secondLevelDetails) {
|
||||
ArrayList<DetailItem> result = new ArrayList<DetailItem>();
|
||||
for (DetailItem each : secondLevelDetails) {
|
||||
if ((each.getStartDate() == null)
|
||||
|| !(each.getStartDate().isBefore(paginatorStart))
|
||||
&& (each.getStartDate().isBefore(paginatorEnd))) {
|
||||
result.add(each);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void next() {
|
||||
paginatorStart = paginatorStart.plus(intervalIncrease());
|
||||
paginatorEnd = paginatorEnd.plus(intervalIncrease());
|
||||
// Avoid reduced last intervals
|
||||
if ((paginatorEnd.plus(intervalIncrease()).isAfter(intervalEnd))) {
|
||||
paginatorEnd = paginatorEnd.plus(intervalIncrease());
|
||||
}
|
||||
updatePaginationButtons();
|
||||
}
|
||||
|
||||
public void previous() {
|
||||
paginatorStart = paginatorStart.minus(intervalIncrease());
|
||||
paginatorEnd = paginatorEnd.minus(intervalIncrease());
|
||||
updatePaginationButtons();
|
||||
}
|
||||
|
||||
private void updatePaginationButtons() {
|
||||
paginationDownButton.setDisabled(isFirstPage());
|
||||
paginationUpButton.setDisabled(isLastPage());
|
||||
}
|
||||
|
||||
public boolean isFirstPage() {
|
||||
return !(paginatorStart.isAfter(intervalStart));
|
||||
}
|
||||
|
||||
public boolean isLastPage() {
|
||||
return ((paginatorEnd.isAfter(intervalEnd)) || (paginatorEnd
|
||||
.isEqual(intervalEnd)));
|
||||
}
|
||||
|
||||
public void setZoomLevel(ZoomLevel detailLevel) {
|
||||
zoomLevel = detailLevel;
|
||||
}
|
||||
|
||||
public void setInterval(Interval realInterval) {
|
||||
intervalStart = new DateTime(realInterval.getStart());
|
||||
intervalEnd = new DateTime(realInterval.getFinish());
|
||||
paginatorStart = intervalStart;
|
||||
paginatorEnd = intervalStart.plus(intervalIncrease());
|
||||
if ((paginatorEnd.plus(intervalIncrease()).isAfter(intervalEnd))) {
|
||||
paginatorEnd = intervalEnd;
|
||||
}
|
||||
updatePaginationButtons();
|
||||
}
|
||||
}
|
||||
|
||||
private void createComponents() {
|
||||
timeTracker = new TimeTracker(addMarginTointerval(), self);
|
||||
timeTrackerComponent = new TimeTrackerComponentWithoutColumns(
|
||||
timeTracker, "timeTracker");
|
||||
TimeTrackedTableWithLeftPane<Row, Row> timeTrackedTableWithLeftPane = new TimeTrackedTableWithLeftPane<Row, Row>(
|
||||
getDataSource(), getColumnsForLeft(), getLeftRenderer(),
|
||||
getRightRenderer(), timeTracker);
|
||||
Clients.evalJavaScript("ADVANCE_ALLOCATIONS.listenToScroll();");
|
||||
paginatorFilter = new PaginatorFilter();
|
||||
paginatorFilter.setZoomLevel(timeTracker.getDetailLevel());
|
||||
paginatorFilter.setInterval(timeTracker.getRealInterval());
|
||||
paginationUpButton.setDisabled(isLastPage());
|
||||
timeTracker.setFilter(paginatorFilter);
|
||||
timeTracker.addZoomListener(new IZoomLevelChangedListener() {
|
||||
@Override
|
||||
public void zoomLevelChanged(ZoomLevel detailLevel) {
|
||||
Clients.evalJavaScript("ADVANCE_ALLOCATIONS.listenToScroll();");
|
||||
paginatorFilter.setZoomLevel(detailLevel);
|
||||
paginatorFilter.setInterval(timeTracker.getRealInterval());
|
||||
timeTracker.setFilter(paginatorFilter);
|
||||
Clients
|
||||
.evalJavaScript("ADVANCE_ALLOCATIONS.listenToHorizontalScroll();");
|
||||
}
|
||||
});
|
||||
timeTrackerComponent = new TimeTrackerComponentWithoutColumns(
|
||||
timeTracker, "timeTracker");
|
||||
timeTrackedTableWithLeftPane = new TimeTrackedTableWithLeftPane<Row, Row>(
|
||||
getDataSource(), getColumnsForLeft(), getLeftRenderer(),
|
||||
getRightRenderer(), timeTracker);
|
||||
table = timeTrackedTableWithLeftPane.getRightPane();
|
||||
table.setSclass("timeTrackedTableWithLeftPane");
|
||||
leftPane = timeTrackedTableWithLeftPane.getLeftPane();
|
||||
leftPane.setFixedLayout(true);
|
||||
Clients.evalJavaScript("ADVANCE_ALLOCATIONS.listenToScroll();");
|
||||
Clients
|
||||
.evalJavaScript("ADVANCE_ALLOCATIONS.listenToHorizontalScroll();");
|
||||
}
|
||||
|
||||
public void paginationDown() {
|
||||
paginatorFilter.previous();
|
||||
reloadComponent();
|
||||
}
|
||||
|
||||
public void paginationUp() {
|
||||
paginatorFilter.next();
|
||||
reloadComponent();
|
||||
}
|
||||
|
||||
private void reloadComponent() {
|
||||
timeTrackedTableWithLeftPane.reload();
|
||||
timeTrackerComponent.recreate();
|
||||
// Reattach listener for zoomLevel changes. May be optimized
|
||||
timeTracker.addZoomListener(new IZoomLevelChangedListener() {
|
||||
@Override
|
||||
public void zoomLevelChanged(ZoomLevel detailLevel) {
|
||||
paginatorFilter.setZoomLevel(detailLevel);
|
||||
paginatorFilter.setInterval(timeTracker.getRealInterval());
|
||||
timeTracker.setFilter(paginatorFilter);
|
||||
Clients
|
||||
.evalJavaScript("ADVANCE_ALLOCATIONS.listenToHorizontalScroll();");
|
||||
}
|
||||
});
|
||||
Clients
|
||||
.evalJavaScript("ADVANCE_ALLOCATIONS.listenToHorizontalScroll();");
|
||||
}
|
||||
|
||||
public boolean isFirstPage() {
|
||||
return paginatorFilter.isFirstPage();
|
||||
}
|
||||
|
||||
public boolean isLastPage() {
|
||||
return paginatorFilter.isLastPage();
|
||||
}
|
||||
|
||||
private void insertComponentsInLayout() {
|
||||
|
|
@ -497,6 +653,7 @@ public class AdvancedAllocationController extends GenericForwardComposer {
|
|||
private OnlyOneVisible onlyOneVisible;
|
||||
private Component normalLayout;
|
||||
private Component noDataLayout;
|
||||
private TimeTrackedTableWithLeftPane<Row, Row> timeTrackedTableWithLeftPane;
|
||||
|
||||
private List<Row> getRows() {
|
||||
if (rowsCached != null) {
|
||||
|
|
|
|||
|
|
@ -171,12 +171,16 @@ button.z-button {
|
|||
|
||||
.z-button-cm:active {
|
||||
background-color: #A1D586; /* green2 (active background)*/
|
||||
border-right: 1px solid #439e32;
|
||||
border-right: 0 solid #439e32;
|
||||
border-bottom: 1px solid #439e32;
|
||||
border-top: 2px solid #3f5917;
|
||||
border-left: 2px solid #3f5917;
|
||||
}
|
||||
|
||||
.z-button.z-button-disd .z-button-cm:active {
|
||||
border: inherit;
|
||||
}
|
||||
|
||||
.z-button.z-button-disd .z-button-cm {
|
||||
background-color: #EAEAEA;
|
||||
color: #A0A0A0;
|
||||
|
|
@ -900,7 +904,7 @@ span.z-dottree-line {
|
|||
}
|
||||
|
||||
|
||||
/* --- START -- menubar --
|
||||
/* --- START -- menus and toolbar --
|
||||
=================================================== */
|
||||
|
||||
.z-menubar-hor, .z-menubar-ver {
|
||||
|
|
@ -1050,8 +1054,63 @@ span.z-dottree-line {
|
|||
background-image: url(../img/ico_advanced-allocation.png);
|
||||
}
|
||||
|
||||
.perspectives-column {
|
||||
display:none;
|
||||
}
|
||||
|
||||
/* End perspectives */
|
||||
/* ---- Toolbar ------ */
|
||||
|
||||
.toolbar-box .z-button-cm {
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.toolbar-box .z-label {
|
||||
color:#0068B1;
|
||||
padding-left:4px;
|
||||
}
|
||||
|
||||
.toolbar-box span.z-button {
|
||||
margin: 0 0 0 0;
|
||||
}
|
||||
|
||||
.toolbar-box .planner-icon,
|
||||
.toolbar-box .planner-command {
|
||||
padding-top: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
|
||||
.toolbar-box .z-button-cm {
|
||||
background-color: transparent;
|
||||
border-color:transparent;
|
||||
}
|
||||
|
||||
.toolbar-box .z-button-cm:hover {
|
||||
background-color: #E6F2F9;
|
||||
border-color:#006699 #DFF5FE #DFF5FE #006699;
|
||||
}
|
||||
|
||||
.toolbar-box .z-button.z-button-disd .z-button-cm {
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.toolbar-box {
|
||||
background:transparent url(../img/toolbar-hm.png) repeat-x scroll 0 0;
|
||||
border-bottom:1px solid #9ECAD8;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
.toolbar-box table.z-button-disd:active {
|
||||
margin-top: 1px;
|
||||
margin-right: 1px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* =================================================== */
|
||||
|
||||
.vertical-separator {
|
||||
display:none;
|
||||
|
|
@ -1109,31 +1168,6 @@ tr.z-tree-row-seld, tr.z-list-item-seld,
|
|||
padding: 10px;
|
||||
}
|
||||
|
||||
.perspectives-column {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.toolbar-box .z-button-cm {
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.toolbar-box .z-label {
|
||||
color:#0068B1;
|
||||
padding-left:4px;
|
||||
}
|
||||
|
||||
.toolbar-box span.z-button {
|
||||
margin: 0 0 0 0;
|
||||
}
|
||||
|
||||
.toolbar-box .planner-icon,
|
||||
.toolbar-box .planner-command {
|
||||
padding-top: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.z-tab-accordion-hm, .z-tab-accordion-hr, .z-tab-accordion-hl {
|
||||
-moz-background-clip:border;
|
||||
|
|
@ -1189,21 +1223,29 @@ tr.z-tree-row-seld, tr.z-list-item-seld,
|
|||
cursor: help;
|
||||
}
|
||||
|
||||
|
||||
.toolbar-box .z-button-cm {
|
||||
background-color: transparent;
|
||||
border-color:transparent;
|
||||
.timeTrackedTableWithLeftPane input[value="0"] {
|
||||
color: #DDDDDD;
|
||||
}
|
||||
|
||||
.toolbar-box .z-button-cm:hover {
|
||||
background-color: #E6F2F9;
|
||||
border-color:#006699 #DFF5FE #DFF5FE #006699;
|
||||
/* for horizontal scrolling */
|
||||
.timeTrackedTableWithLeftPane .z-grid-body table {
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.toolbar-box {
|
||||
background:transparent url(/navalplanner-webapp/zkau/web/zkex/zul/img/layout/borderlayout-hm.png) repeat-x scroll 0 0;
|
||||
border-bottom:1px solid #9ECAD8;
|
||||
font-size:11px;
|
||||
/* Test*/
|
||||
.timeTrackedTableWithLeftPane div.z-grid-body {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.advancedallocationlayout #timeTracker .z-vbox {
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.z-button-disd {
|
||||
opacity:0.3;
|
||||
}
|
||||
|
||||
.advancedallocationlayout #timeTracker {
|
||||
background-color: #CDE6F5;
|
||||
}
|
||||
|
||||
|
|
|
|||
BIN
navalplanner-webapp/src/main/webapp/common/img/ico_left.png
Normal file
BIN
navalplanner-webapp/src/main/webapp/common/img/ico_left.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 647 B |
BIN
navalplanner-webapp/src/main/webapp/common/img/ico_right.png
Normal file
BIN
navalplanner-webapp/src/main/webapp/common/img/ico_right.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 664 B |
BIN
navalplanner-webapp/src/main/webapp/common/img/toolbar-hm.png
Normal file
BIN
navalplanner-webapp/src/main/webapp/common/img/toolbar-hm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 986 B |
|
|
@ -22,20 +22,30 @@
|
|||
ADVANCE_ALLOCATIONS = {};
|
||||
|
||||
ADVANCE_ALLOCATIONS.listenToScroll = function() {
|
||||
var timetrackergap_ = YAHOO.util.Selector.query('.timetrackergap')[0];
|
||||
var taskspanel_ = YAHOO.util.Selector.query('.rightpanellayout .z-grid-body')[0];
|
||||
// var timetrackergap_ = YAHOO.util.Selector.query('#timeTracker .z-vbox')[0];
|
||||
// var taskspanel_ = YAHOO.util.Selector.query('.rightpanellayout .z-grid-body')[0];
|
||||
var taskdetails_ = YAHOO.util.Selector.query('.advancedassignmentdetails .z-grid-body')[0];
|
||||
|
||||
var taskspanelcenter_ = YAHOO.util.Selector.query('.rightpanellayout .z-center-body')[0];
|
||||
|
||||
var onScroll = function() {
|
||||
timetrackergap_.style["left"] = "-" + taskspanel_.scrollLeft + "px";
|
||||
};
|
||||
taskspanel_.onscroll = onScroll;
|
||||
var taskspanelcenter_ = YAHOO.util.Selector.query('.rightpanellayout')[0];
|
||||
|
||||
var onVerticalScroll = function() {
|
||||
taskdetails_.style["top"] = "-" + taskspanelcenter_.scrollTop + "px";
|
||||
};
|
||||
taskspanelcenter_.onscroll = onVerticalScroll;
|
||||
|
||||
};
|
||||
|
||||
|
||||
ADVANCE_ALLOCATIONS.listenToHorizontalScroll = function() {
|
||||
var horizontalScroll_ = YAHOO.util.Selector.query('.horizontalscroller')[0];
|
||||
var timeTrackedTable_ = YAHOO.util.Selector.query('.timeTrackedTableWithLeftPane .z-grid-body table')[0];
|
||||
var timetrackergap_ = YAHOO.util.Selector.query('#timeTracker .z-vbox')[0];
|
||||
var innerScroll_ = YAHOO.util.Selector.query('#horizontalScrollContainer')[0];
|
||||
|
||||
var onHorizontalScroll = function() {
|
||||
timeTrackedTable_.style["left"] = "-" + horizontalScroll_.scrollLeft + "px";
|
||||
timetrackergap_.style["left"] = "-" + horizontalScroll_.scrollLeft + "px";
|
||||
};
|
||||
|
||||
innerScroll_.style["width"] = (timeTrackedTable_.clientWidth + 10 ) +"px";
|
||||
horizontalScroll_.scrollLeft = "0";
|
||||
horizontalScroll_.onscroll = onHorizontalScroll;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<?page title="${i18n:_('Navalpro: Scheduling')}"?>
|
||||
<?page title="${i18n:_('NavalPlan: Advanced allocation')}"?>
|
||||
<?taglib uri="/WEB-INF/tld/i18n.tld" prefix="i18n"?>
|
||||
<zk xmlns:n="http://www.zkoss.org/2005/zk/native">
|
||||
|
||||
|
|
@ -26,55 +26,55 @@
|
|||
advancedAllocationController = arg.get("advancedAllocationController");
|
||||
]]>
|
||||
</zscript>
|
||||
<div>
|
||||
<div id="noDataLayout">
|
||||
<n:h4 class="message_WARNING">${i18n:_('No Allocations have been done')}</n:h4>
|
||||
</div>
|
||||
|
||||
<borderlayout id="normalLayout" width="auto" apply="${advancedAllocationController}" class="advancedallocationlayout">
|
||||
<north height="30px" border="0" sclass="toolbar-box">
|
||||
<hbox align="center">
|
||||
<button label="${i18n:_('Accept')}" id="acceptButton" class="save-button global-action"
|
||||
if="${advancedAllocationController.advancedAllocationOfSingleTask}" />
|
||||
<button label="${i18n:_('Cancel')}" id="cancelButton" class="cancel-button global-action"
|
||||
if="${advancedAllocationController.advancedAllocationOfSingleTask}" />
|
||||
<button image="/common/img/ico_save.png" tooltiptext="${i18n:_('Accept')}" id="acceptButton" class="planner-command"
|
||||
if="${!(advancedAllocationController.advancedAllocationOfSingleTask)}" />
|
||||
<separator/>
|
||||
<label>${i18n:_('Zoom level')}:</label>
|
||||
<listbox mold="select" rows="1"
|
||||
model="${advancedAllocationController.zoomLevels}"
|
||||
onSelect="advancedAllocationController.setZoomLevel(self.selectedItem.value);" >
|
||||
</listbox>
|
||||
<separator/>
|
||||
<div id="messages" />
|
||||
</hbox>
|
||||
</north>
|
||||
|
||||
<center border="0">
|
||||
<borderlayout sclass="resourcesload">
|
||||
<west size="400px" flex="true" collapsible="true"
|
||||
splittable="true" autoscroll="true">
|
||||
|
||||
<borderlayout >
|
||||
<north border="0" height="0px" flex="true" collapsible="true" autoscroll="true">
|
||||
</north>
|
||||
<center border="0" sclass="advancedassignmentdetails">
|
||||
<div sclass="leftpanelgap" id="insertionPointLeftPanel"></div>
|
||||
</center>
|
||||
</borderlayout>
|
||||
</west>
|
||||
|
||||
<center sclass="taskspanel">
|
||||
<borderlayout>
|
||||
<north border="0"><div sclass="timetrackergap" height="31px" id="insertionPointTimetracker"></div></north>
|
||||
<center autoscroll="true" border="0" sclass="rightpanellayout">
|
||||
<div id="insertionPointRightPanel" sclass="taskspanelgap"></div>
|
||||
</center>
|
||||
</borderlayout>
|
||||
</center>
|
||||
</borderlayout>
|
||||
</center>
|
||||
</borderlayout>
|
||||
<n:div>
|
||||
<div id="noDataLayout">
|
||||
<n:h4 class="message_WARNING">${i18n:_('No Allocations have been done')}</n:h4>
|
||||
</div>
|
||||
|
||||
<borderlayout id="normalLayout" width="auto" apply="${advancedAllocationController}" class="advancedallocationlayout">
|
||||
<north height="30px" border="0" sclass="toolbar-box">
|
||||
<hbox align="center">
|
||||
<button label="${i18n:_('Accept')}" id="acceptButton" class="save-button global-action"
|
||||
if="${advancedAllocationController.advancedAllocationOfSingleTask}" />
|
||||
<button label="${i18n:_('Cancel')}" id="cancelButton" class="cancel-button global-action"
|
||||
if="${advancedAllocationController.advancedAllocationOfSingleTask}" />
|
||||
<button image="/common/img/ico_save.png" tooltiptext="${i18n:_('Accept')}" id="acceptButton" class="planner-command"
|
||||
if="${!(advancedAllocationController.advancedAllocationOfSingleTask)}" />
|
||||
<separator/>
|
||||
<button tooltiptext="Page down" image="/common/img/ico_left.png" id="paginationDownButton"
|
||||
onClick="advancedAllocationController.paginationDown();" disabled="true" />
|
||||
<label>${i18n:_('Zoom level')}:</label>
|
||||
<listbox mold="select" rows="1"
|
||||
model="${advancedAllocationController.zoomLevels}"
|
||||
onSelect="advancedAllocationController.setZoomLevel(self.selectedItem.value);" >
|
||||
</listbox>
|
||||
<button tooltiptext="Page up" image="/common/img/ico_right.png" id="paginationUpButton" onClick="advancedAllocationController.paginationUp();" />
|
||||
<separator/>
|
||||
<div id="messages" />
|
||||
</hbox>
|
||||
</north>
|
||||
|
||||
<center border="0">
|
||||
<borderlayout sclass="resourcesload">
|
||||
<west size="400px" flex="true" collapsible="true"
|
||||
splittable="true" sclass="advancedassignmentdetails">
|
||||
<div sclass="leftpanelgap" id="insertionPointLeftPanel"></div>
|
||||
</west>
|
||||
|
||||
<center sclass="taskspanel">
|
||||
<borderlayout>
|
||||
<north border="0"><div sclass="timetrackergap" height="31px" id="insertionPointTimetracker"></div></north>
|
||||
<center style="overflow-y:auto;overflow-x:hidden;" border="0" sclass="rightpanellayout">
|
||||
<div id="insertionPointRightPanel" sclass="taskspanelgap"></div>
|
||||
</center>
|
||||
<south border="0" sclass="horizontalscroller" height="16px" style="overflow-x:auto;overflow-y:hidden;">
|
||||
<n:div id="horizontalScrollContainer" style="height:10px;" />
|
||||
</south>
|
||||
</borderlayout>
|
||||
</center>
|
||||
</borderlayout>
|
||||
</center>
|
||||
</borderlayout>
|
||||
</n:div>
|
||||
</zk>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue