diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardControllerGlobal.java b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardControllerGlobal.java index cdf052a90..d053c4476 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardControllerGlobal.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardControllerGlobal.java @@ -1,9 +1,18 @@ package org.libreplan.web.dashboard; + +import org.libreplan.business.orders.entities.Order; + +import org.libreplan.web.orders.IOrderModel; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.*; + +import java.util.ArrayList; +import java.util.List; /** * Created @@ -14,8 +23,178 @@ import org.zkoss.zk.ui.util.GenericForwardComposer; @org.springframework.stereotype.Component @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class DashboardControllerGlobal extends GenericForwardComposer { + + @Autowired + private IOrderModel orderModel; + + private Grid pipelineGrid; + + // TODO make archived checkbox + // TODO highlited cell when hover? + + private List preSalesOrders = new ArrayList(); + private List offeredOrders = new ArrayList(); + private List outsorcedOrders = new ArrayList(); + private List acceptedOrders = new ArrayList(); + private List startedOrders = new ArrayList(); + private List onHoldOrders = new ArrayList(); + private List finishedOrders = new ArrayList(); + private List cancelledOrders = new ArrayList(); + private List storedOrders = new ArrayList(); + @Override public void doAfterCompose(Component component) throws Exception { super.doAfterCompose(component); + component.setVariable("dashboardControllerGlobal", this, true); + fillOrderLists(); + setupPipelineGrid(); + } + + public List getOrders(){ + return orderModel.getOrders(); + } + + private void fillOrderLists() { + List orderList = new ArrayList(); + for (Order orderItem : getOrders()){ + switch (orderItem.getState()){ + case PRE_SALES: { + preSalesOrders.add(orderItem); + break; + } + case OFFERED: { + offeredOrders.add(orderItem); + break; + } + case OUTSOURCED: { + outsorcedOrders.add(orderItem); + break; + } + case ACCEPTED: { + acceptedOrders.add(orderItem); + break; + } + case STARTED: { + startedOrders.add(orderItem); + break; + } + case ON_HOLD: { + onHoldOrders.add(orderItem); + break; + } + case FINISHED: { + finishedOrders.add(orderItem); + break; + } + case CANCELLED: { + cancelledOrders.add(orderItem); + break; + } + case STORED: { + storedOrders.add(orderItem); + break; + } + } + } + } + + private void setupPipelineGrid(){ + int rowsCount = findMaxList(preSalesOrders.size(), offeredOrders.size(), outsorcedOrders.size(), acceptedOrders.size(), + startedOrders.size(), onHoldOrders.size(), finishedOrders.size(), cancelledOrders.size(), storedOrders.size()); + + Rows rows = new Rows(); + for (int i = 0; i < rowsCount; i++){ + Row row = new Row(); + for (int columns = 0; columns < 9; columns++) row.appendChild(new Label()); + rows.appendChild(row); + } + + pipelineGrid.appendChild(rows); + + // Fill data into first column and so on with other columns devided by Enter in code... + + for (int i = 0; i < preSalesOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 0) ).setValue(preSalesOrders.get(i).getName()); + String tooltipText = "Start date: " + preSalesOrders.get(i).getInitDate() + + "\n" + "End date: " + preSalesOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 0) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < offeredOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 1) ).setValue(offeredOrders.get(i).getName()); + String tooltipText = "Start date: " + offeredOrders.get(i).getInitDate() + + "\n" + "End date: " + offeredOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 1) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < outsorcedOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 2) ).setValue(outsorcedOrders.get(i).getName()); + String tooltipText = "Start date: " + outsorcedOrders.get(i).getInitDate() + + "\n" + "End date: " + outsorcedOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 2) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < acceptedOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 3) ).setValue(acceptedOrders.get(i).getName()); + String tooltipText = "Start date: " + acceptedOrders.get(i).getInitDate() + + "\n" + "End date: " + acceptedOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 3) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < startedOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 4) ).setValue(startedOrders.get(i).getName()); + String tooltipText = "Start date: " + startedOrders.get(i).getInitDate() + + "\n" + "End date: " + startedOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 4) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < onHoldOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 5) ).setValue(onHoldOrders.get(i).getName()); + String tooltipText = "Start date: " + onHoldOrders.get(i).getInitDate() + + "\n" + "End date: " + onHoldOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 5) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < finishedOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 6) ).setValue(finishedOrders.get(i).getName()); + String tooltipText = "Start date: " + finishedOrders.get(i).getInitDate() + + "\n" + "End date: " + finishedOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 6) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < cancelledOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 7) ).setValue(cancelledOrders.get(i).getName()); + String tooltipText = "Start date: " + cancelledOrders.get(i).getInitDate() + + "\n" + "End date: " + cancelledOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 7) ).setTooltiptext(tooltipText); + } + + for (int i = 0; i < storedOrders.size(); i++){ + ( (Label) pipelineGrid.getCell(i, 8) ).setValue(storedOrders.get(i).getName()); + String tooltipText = "Start date: " + storedOrders.get(i).getInitDate() + + "\n" + "End date: " + storedOrders.get(i).getDeadline() + + "\n" + "Progress: "; + ( (Label) pipelineGrid.getCell(i, 8) ).setTooltiptext(tooltipText); + } + } + + private int findMaxList(int preSales, int offered, int outsorced, int accepted, int started, int onHold, int finished, + int cancelled, int stored){ + + int[] sizes = {preSales, offered, outsorced, accepted, started, onHold, finished, cancelled, stored}; + int max = sizes[0]; + + for (int i = 1; i < sizes.length; i++) + if ( sizes[i] > max ) max = sizes[i]; + + return max; } } diff --git a/libreplan-webapp/src/main/webapp/common/css/libreplan_zk.css b/libreplan-webapp/src/main/webapp/common/css/libreplan_zk.css index c8e68b126..55b5421de 100644 --- a/libreplan-webapp/src/main/webapp/common/css/libreplan_zk.css +++ b/libreplan-webapp/src/main/webapp/common/css/libreplan_zk.css @@ -1060,15 +1060,11 @@ span.perspective, span.perspective-active { .perspective-active.montecarlo-simulation .z-button-cm { background-image: url(../img/ico_montecarlo-simulation.png); } -.perspective.global-dashboard .z-button-cm{ +.perspective.global-dashboard .z-button-cm, +.perspective-active.global-dashboard .z-button-cm { background-image: url(../img/ico_global-dashboard.png); } -.perspective-active.global-dashboard .z-button-cm{ - background-image: url(../img/ico_global-dashboard.png); -} -.perspective.order-dashboard .z-button-cm{ - background-image: url(../img/ico_order-dashboard.png); -} +.perspective.order-dashboard .z-button-cm, .perspective-active.order-dashboard .z-button-cm{ background-image: url(../img/ico_order-dashboard.png); } diff --git a/libreplan-webapp/src/main/webapp/dashboard/_dashboardforglobal.zul b/libreplan-webapp/src/main/webapp/dashboard/_dashboardforglobal.zul index d09dd6edf..2a6e55be5 100644 --- a/libreplan-webapp/src/main/webapp/dashboard/_dashboardforglobal.zul +++ b/libreplan-webapp/src/main/webapp/dashboard/_dashboardforglobal.zul @@ -18,49 +18,26 @@ --> + + +
- + - - - - - - - - - - - - - - - - - - +
- \ No newline at end of file + diff --git a/libreplan-webapp/src/main/webapp/dashboard/_pipeline.zul b/libreplan-webapp/src/main/webapp/dashboard/_pipeline.zul index e69de29bb..33ef4b295 100644 --- a/libreplan-webapp/src/main/webapp/dashboard/_pipeline.zul +++ b/libreplan-webapp/src/main/webapp/dashboard/_pipeline.zul @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/libreplan-webapp/src/main/webapp/email/email_templates.zul b/libreplan-webapp/src/main/webapp/email/email_templates.zul index 22b4018f3..6b754eb50 100644 --- a/libreplan-webapp/src/main/webapp/email/email_templates.zul +++ b/libreplan-webapp/src/main/webapp/email/email_templates.zul @@ -131,18 +131,5 @@