diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index 23e74d03d..6d3622ad0 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -243,6 +243,8 @@ public class FunctionalityExposedForExtensions implements IContext { result.setShowingReportedHours(planner.showReportedHoursRightNow()); result.setShowingMoneyCostBar(planner.showMoneyCostBarRightNow()); result.setShowingAdvances(planner.showAdvancesRightNow()); + result.setShowingLabels(planner.showLabelsRightNow()); + result.setShowingResources(planner.showResourcesRightNow()); mapper.register(position, result, data); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 568d08154..1cc579285 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -156,6 +156,10 @@ public class Planner extends HtmlMacroComponent { private boolean shownMoneyCostBarByDefault = false; + private boolean shownLabelsByDefault = false; + + private boolean shownResourcesByDefault = false; + private FilterAndParentExpandedPredicates predicate; private boolean visibleChart; @@ -430,6 +434,27 @@ public class Planner extends HtmlMacroComponent { showMoneyCostBarButton.setVisible(false); } + // view buttons toggle state so set all off prior to toggling + if ( configuration.isShowResourcesOn() ) { + showAllResources(); + } + + if ( configuration.isShowAdvancesOn() ) { + showAdvances(); + } + + if ( configuration.isShowReportedHoursOn() ) { + showReportedHours(); + } + + if ( configuration.isShowLabelsOn() ) { + showAllLabels(); + } + + if ( configuration.isShowMoneyCostBarOn() ) { + showMoneyCostBar(); + } + listZoomLevels.setSelectedIndex(getZoomLevel().ordinal()); this.visibleChart = configuration.isExpandPlanningViewCharts(); @@ -656,7 +681,6 @@ public class Planner extends HtmlMacroComponent { public void showReportedHours() { Button showReportedHoursButton = (Button) getFellow("showReportedHours"); if ( disabilityConfiguration.isReportedHoursEnabled() ) { - if ( isShowingReportedHours ) { context.hideReportedHours(); diagramGraph.removePostGraphChangeListener(showReportedHoursOnChange); @@ -694,28 +718,33 @@ public class Planner extends HtmlMacroComponent { public void showAllLabels() { Button showAllLabelsButton = (Button) getFellow("showAllLabels"); - if ( isShowingLabels ) { - Clients.evalJavaScript("ganttz.TaskList.getInstance().hideAllTaskLabels()"); - showAllLabelsButton.setSclass("planner-command show-labels"); - } else { - Clients.evalJavaScript("ganttz.TaskList.getInstance().showAllTaskLabels()"); - showAllLabelsButton.setSclass("planner-command show-labels clicked"); - } + if ( disabilityConfiguration.isLabelsEnabled() ) { + if ( isShowingLabels ) { + Clients.evalJavaScript("ganttz.TaskList.getInstance().hideAllTaskLabels()"); + showAllLabelsButton.setSclass("planner-command show-labels"); + } else { + Clients.evalJavaScript("ganttz.TaskList.getInstance().showAllTaskLabels()"); + showAllLabelsButton.setSclass("planner-command show-labels clicked"); + } - isShowingLabels = !isShowingLabels; + isShowingLabels = !isShowingLabels; + } } public void showAllResources() { Button showAllLabelsButton = (Button) getFellow("showAllResources"); - if ( isShowingResources ) { - Clients.evalJavaScript("ganttz.TaskList.getInstance().hideResourceTooltips()"); - showAllLabelsButton.setSclass("planner-command show-resources"); - } else { - Clients.evalJavaScript("ganttz.TaskList.getInstance().showResourceTooltips()"); - showAllLabelsButton.setSclass("planner-command show-resources clicked"); - } + if ( disabilityConfiguration.isResourcesEnabled() ) { + if ( isShowingResources ) { + Clients.evalJavaScript("ganttz.TaskList.getInstance().hideResourceTooltips()"); + showAllLabelsButton.setSclass("planner-command show-resources"); + } else { + Clients.evalJavaScript("ganttz.TaskList.getInstance().showResourceTooltips()"); + showAllLabelsButton.setSclass("planner-command show-resources clicked"); + } - isShowingResources = !isShowingResources; + isShowingResources = !isShowingResources; + + } } public void print() { @@ -752,7 +781,6 @@ public class Planner extends HtmlMacroComponent { public void setAreShownAdvancesByDefault(boolean shownAdvanceByDefault) { this.shownAdvanceByDefault = shownAdvanceByDefault; - this.isShowingAdvances = shownAdvanceByDefault; } public void setAreShownReportedHoursByDefault(boolean shownReportedHoursByDefault) { @@ -779,6 +807,30 @@ public class Planner extends HtmlMacroComponent { return areShownMoneyCostBarByDefault() || isShowingMoneyCostBar; } + public void setAreShownLabelsByDefault(boolean shownLabelsByDefault) { + this.shownLabelsByDefault = shownLabelsByDefault; + } + + public boolean areShownLabelsByDefault() { + return shownLabelsByDefault; + } + + public boolean showLabelsRightNow() { + return areShownLabelsByDefault() || isShowingLabels; + } + + public void setAreShownResourcesByDefault(boolean shownResourcesByDefault) { + this.shownResourcesByDefault = shownResourcesByDefault; + } + + public boolean areShownResourcesByDefault() { + return shownResourcesByDefault; + } + + public boolean showResourcesRightNow() { + return areShownResourcesByDefault() || isShowingResources; + } + public void expandAll() { Button expandAllButton = (Button) getFellow(EXPAND_ALL_BUTTON); if ( disabilityConfiguration.isExpandAllEnabled() ) { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java index 6f5b50b38..19a28ee5e 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java @@ -42,6 +42,10 @@ public interface IDisabilityConfiguration { public boolean isMoneyCostBarEnabled(); + public boolean isLabelsEnabled(); + + public boolean isResourcesEnabled(); + public boolean isExpandAllEnabled(); public boolean isFlattenTreeEnabled(); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java index e13f5bb88..be866afb6 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java @@ -157,6 +157,10 @@ public class PlannerConfiguration implements IDisabilityConfiguration { private boolean moneyCostBarEnabled = true; + private boolean labelsEnabled = true; + + private boolean ResourcesEnabled = true; + private boolean expandAllEnabled = true; private boolean flattenTreeEnabled = true; @@ -167,6 +171,16 @@ public class PlannerConfiguration implements IDisabilityConfiguration { private boolean treeEditable = true; + private boolean showResourcesOn = false; + + private boolean showAdvancesOn = false; + + private boolean showReportedHoursOn = false; + + private boolean showLabelsOn = false; + + private boolean showMoneyCostBarOn = false; + private IDetailItemModifier firstLevelModifiers = SeveralModifiers.empty(); private IDetailItemModifier secondLevelModifiers = SeveralModifiers.empty(); @@ -355,6 +369,24 @@ public class PlannerConfiguration implements IDisabilityConfiguration { return moneyCostBarEnabled; } + public void setLabelsEnabled(boolean labelsEnabled) { + this.labelsEnabled = labelsEnabled; + } + + @Override + public boolean isLabelsEnabled() { + return labelsEnabled; + } + + public void setResourcesEnabled(boolean ResourcesEnabled) { + this.ResourcesEnabled = ResourcesEnabled; + } + + @Override + public boolean isResourcesEnabled() { + return ResourcesEnabled; + } + public void setExpandAllEnabled(boolean expandAllEnabled) { this.expandAllEnabled = expandAllEnabled; } @@ -495,4 +527,44 @@ public class PlannerConfiguration implements IDisabilityConfiguration { this.scheduleBackwards = scheduleBackwards; } + public boolean isShowResourcesOn() { + return showResourcesOn; + } + + public void setShowResourcesOn(boolean showResourcesOn) { + this.showResourcesOn = showResourcesOn; + } + + public boolean isShowAdvancesOn() { + return showAdvancesOn; + } + + public void setShowAdvancesOn(boolean showAdvancesOn) { + this.showAdvancesOn = showAdvancesOn; + } + + public boolean isShowReportedHoursOn() { + return showReportedHoursOn; + } + + public void setShowReportedHoursOn(boolean showReportedHoursOn) { + this.showReportedHoursOn = showReportedHoursOn; + } + + public boolean isShowLabelsOn() { + return showLabelsOn; + } + + public void setShowLabelsOn(boolean showLabelsOn) { + this.showLabelsOn = showLabelsOn; + } + + public boolean isShowMoneyCostBarOn() { + return showMoneyCostBarOn; + } + + public void setShowMoneyCostBarOn(boolean showMoneyCostBarOn) { + this.showMoneyCostBarOn = showMoneyCostBarOn; + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java index 086156365..3c9a370ef 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java @@ -73,6 +73,10 @@ public abstract class Task implements ITaskFundamentalProperties { private PropertyChangeSupport moneyCostBarProperty = new PropertyChangeSupport(this); + private PropertyChangeSupport labelsProperty = new PropertyChangeSupport(this); + + private PropertyChangeSupport resourcesProperty = new PropertyChangeSupport(this); + private final ITaskFundamentalProperties fundamentalProperties; private boolean visible = true; @@ -85,6 +89,10 @@ public abstract class Task implements ITaskFundamentalProperties { private boolean showingMoneyCostBar = false; + private boolean showingLabels = false; + + private boolean showingResources = false; + private ConstraintViolationNotificator violationNotificator = ConstraintViolationNotificator.create(); private IDependenciesEnforcerHook dependenciesEnforcerHook = GanttDiagramGraph.doNothingHook(); @@ -231,6 +239,26 @@ public abstract class Task implements ITaskFundamentalProperties { return showingMoneyCostBar; } + public void setShowingResources(boolean showingResources) { + boolean previousValue = this.showingResources; + this.showingResources = showingResources; + resourcesProperty.firePropertyChange("showingResources", previousValue, this.showingResources); + } + + public boolean isShowingResources() { + return showingResources; + } + + public void setShowingLabels(boolean showingLabels) { + boolean previousValue = this.showingLabels; + this.showingLabels = showingLabels; + labelsProperty.firePropertyChange("showingLabels", previousValue, this.showingLabels); + } + + public boolean isShowingLabels() { + return showingLabels; + } + public String getName() { return fundamentalProperties.getName(); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java b/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java index 277d506b2..d99f928a9 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java @@ -99,6 +99,16 @@ public class User extends BaseEntity implements IHumanIdentifiable{ private Integer resourcesLoadFilterPeriodTo; + private boolean showResourcesOn = false; + + private boolean showAdvancesOn = false; + + private boolean showReportedHoursOn = false; + + private boolean showLabelsOn = false; + + private boolean showMoneyCostBarOn = false; + /** * Necessary for Hibernate. Please, do not call it. */ @@ -450,4 +460,44 @@ public class User extends BaseEntity implements IHumanIdentifiable{ resourcesLoadFilterPeriodTo = period; } + public boolean isShowResourcesOn() { + return showResourcesOn; + } + + public void setShowResourcesOn(boolean showResourcesOn) { + this.showResourcesOn = showResourcesOn; + } + + public boolean isShowAdvancesOn() { + return showAdvancesOn; + } + + public void setShowAdvancesOn(boolean showAdvancesOn) { + this.showAdvancesOn = showAdvancesOn; + } + + public boolean isShowReportedHoursOn() { + return showReportedHoursOn; + } + + public void setShowReportedHoursOn(boolean showReportedHoursOn) { + this.showReportedHoursOn = showReportedHoursOn; + } + + public boolean isShowLabelsOn() { + return showLabelsOn; + } + + public void setShowLabelsOn(boolean showLabelsOn) { + this.showLabelsOn = showLabelsOn; + } + + public boolean isShowMoneyCostBarOn() { + return showMoneyCostBarOn; + } + + public void setShowMoneyCostBarOn(boolean showMoneyCostBarOn) { + this.showMoneyCostBarOn = showMoneyCostBarOn; + } + } diff --git a/libreplan-business/src/main/resources/db.changelog-1.6.xml b/libreplan-business/src/main/resources/db.changelog-1.6.xml new file mode 100644 index 000000000..6881f4087 --- /dev/null +++ b/libreplan-business/src/main/resources/db.changelog-1.6.xml @@ -0,0 +1,92 @@ + + + + + Add columns to store user default setting of show/hide reported hours button + + + + + + + Add columns to store user default setting of show/hide resources button + + + + + + + Add columns to store user default setting of show/hide advances button + + + + + + + Add columns to store user default setting of show/hide labels button + + + + + + + Add columns to store user default setting of show/hide moneycostbar button + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libreplan-business/src/main/resources/db.changelog.xml b/libreplan-business/src/main/resources/db.changelog.xml index 4f07060cb..99bc85a99 100644 --- a/libreplan-business/src/main/resources/db.changelog.xml +++ b/libreplan-business/src/main/resources/db.changelog.xml @@ -12,4 +12,5 @@ + diff --git a/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml b/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml index 3c90d5507..069423d16 100644 --- a/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml +++ b/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml @@ -70,6 +70,16 @@ + + + + + + + + + + configuration, User user) { + +// set initial button show mode + if ( user.isShowAdvancesOn() ) { + configuration.setShowAdvancesOn(user.isShowAdvancesOn()); + } + + if ( user.isShowReportedHoursOn() ) { + configuration.setShowReportedHoursOn(user.isShowReportedHoursOn()); + } + + if ( user.isShowLabelsOn() ) { + configuration.setShowLabelsOn(user.isShowLabelsOn()); + } + +} + private ZoomLevel getZoomLevel(PlannerConfiguration configuration) { ZoomLevel sessionZoom = FilterUtils.readZoomLevelCompanyView(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java index 7d0de6561..df90a3607 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java @@ -354,6 +354,8 @@ public class OrderPlanningModel implements IOrderPlanningModel { chartComponent.setHeight("200px"); appendTabs(chartComponent); + setDefaultButtonState(configuration,user); + configuration.setChartComponent(chartComponent); configureModifiers(planningState.getOrder(), configuration); long setConfigurationTime = System.currentTimeMillis(); @@ -395,6 +397,36 @@ public class OrderPlanningModel implements IOrderPlanningModel { PROFILING_LOG.debug("overallProgressContent took: " + (System.currentTimeMillis() - overallProgressContentTime)); } + private void setDefaultButtonState(PlannerConfiguration configuration, User user) { + + // set initial button show mode + if ( !planner.areShownAdvancesByDefault() && user.isShowAdvancesOn() ) { + configuration.setShowAdvancesOn(user.isShowAdvancesOn()); + planner.setAreShownAdvancesByDefault(user.isShowAdvancesOn()); + } + + if ( !planner.areShownReportedHoursByDefault() && user.isShowReportedHoursOn() ) { + configuration.setShowReportedHoursOn(user.isShowReportedHoursOn()); + planner.setAreShownReportedHoursByDefault(user.isShowReportedHoursOn()); + } + + if ( !planner.areShownMoneyCostBarByDefault() && user.isShowMoneyCostBarOn() ) { + configuration.setShowMoneyCostBarOn(user.isShowMoneyCostBarOn()); + planner.setAreShownMoneyCostBarByDefault(user.isShowMoneyCostBarOn()); + } + + if ( !planner.areShownLabelsByDefault() && user.isShowLabelsOn() ) { + configuration.setShowLabelsOn(user.isShowLabelsOn()); + planner.setAreShownLabelsByDefault(user.isShowLabelsOn()); + } + + if ( !planner.areShownResourcesByDefault() && user.isShowResourcesOn() ) { + configuration.setShowResourcesOn(user.isShowResourcesOn()); + planner.setAreShownResourcesByDefault(user.isShowResourcesOn()); + } + + } + private ZoomLevel getZoomLevel(PlannerConfiguration configuration, Order order) { ZoomLevel sessionZoom = FilterUtils.readZoomLevel(order); if ( sessionZoom != null ) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java index 344c27eef..97cc077a1 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java @@ -101,4 +101,23 @@ public interface ISettingsModel { void setResourcesLoadFilterCriterion(Criterion criterion); + boolean isShowResourcesOn(); + + void setShowResourcesOn(boolean showResourcesOn); + + boolean isShowAdvancesOn(); + + void setShowAdvancesOn(boolean showAdvancesOn); + + boolean isShowReportedHoursOn(); + + void setShowReportedHoursOn(boolean showReportedHoursOn); + + boolean isShowLabelsOn(); + + void setShowLabelsOn(boolean showLabelsOn); + + boolean isShowMoneyCostBarOn(); + + void setShowMoneyCostBarOn(boolean showMoneyCostBarOn); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java index 9cb723956..28f2940cc 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java @@ -314,4 +314,43 @@ public class SettingsController extends GenericForwardComposer { settingsModel.setResourcesLoadFilterCriterion(criterion); } + public boolean isShowResourcesOn() { + return settingsModel.isShowResourcesOn(); + } + + public void setShowResourcesOn(boolean showResourcesOn) { + settingsModel.setShowResourcesOn(showResourcesOn); + } + + public boolean isShowAdvancesOn() { + return settingsModel.isShowAdvancesOn(); + } + + public void setShowAdvancesOn(boolean showAdvancesOn) { + settingsModel.setShowAdvancesOn(showAdvancesOn); + } + + public boolean isShowReportedHoursOn() { + return settingsModel.isShowReportedHoursOn(); + } + + public void setShowReportedHoursOn(boolean showReportedHoursOn) { + settingsModel.setShowReportedHoursOn(showReportedHoursOn); + } + + public boolean isShowLabelsOn() { + return settingsModel.isShowLabelsOn(); + } + + public void setShowLabelsOn(boolean showLabelsOn) { + settingsModel.setShowLabelsOn(showLabelsOn); + } + + public boolean isShowMoneyCostBarOn() { + return settingsModel.isShowMoneyCostBarOn(); + } + + public void setShowMoneyCostBarOn(boolean showMoneyCostBarOn) { + settingsModel.setShowMoneyCostBarOn(showMoneyCostBarOn); + } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java index ea9ba8acc..762c50883 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java @@ -311,4 +311,53 @@ public class SettingsModel implements ISettingsModel { user.setResourcesLoadFilterCriterion(criterion); } + @Override + public boolean isShowResourcesOn() { + return user.isShowResourcesOn(); + } + + @Override + public void setShowResourcesOn(boolean showResourcesOn) { + user.setShowResourcesOn(showResourcesOn); + } + + @Override + public boolean isShowAdvancesOn() { + return user.isShowAdvancesOn(); + } + + @Override + public void setShowAdvancesOn(boolean showAdvancesOn) { + user.setShowAdvancesOn(showAdvancesOn); + } + + @Override + public boolean isShowReportedHoursOn() { + return user.isShowReportedHoursOn(); + } + + @Override + public void setShowReportedHoursOn(boolean showReportedHoursOn) { + user.setShowReportedHoursOn(showReportedHoursOn); + } + + @Override + public boolean isShowLabelsOn() { + return user.isShowLabelsOn(); + } + + @Override + public void setShowLabelsOn(boolean showLabelsOn) { + user.setShowLabelsOn(showLabelsOn); + } + + @Override + public boolean isShowMoneyCostBarOn() { + return user.isShowMoneyCostBarOn(); + } + + @Override + public void setShowMoneyCostBarOn(boolean showMoneyCostBarOn) { + user.setShowMoneyCostBarOn(showMoneyCostBarOn); + } } diff --git a/libreplan-webapp/src/main/webapp/WEB-INF/zk.xml b/libreplan-webapp/src/main/webapp/WEB-INF/zk.xml index 37c3aa601..110583bb0 100644 --- a/libreplan-webapp/src/main/webapp/WEB-INF/zk.xml +++ b/libreplan-webapp/src/main/webapp/WEB-INF/zk.xml @@ -1,9 +1,5 @@ - - - - - +