Code refactoring.

Add changes to Dashboard Global functionality.
Change i18n for OrderStatusEnum.
Add new values for i18n.
Add css classes for Dashboard Global.
This commit is contained in:
Vova Perebykivskiy 2015-11-30 15:41:09 +02:00 committed by Vova Perebykivskiy
parent bc578530f7
commit 788e8880fd
18 changed files with 222 additions and 102 deletions

View file

@ -40,7 +40,7 @@ public enum OrderStatusEnum {
ON_HOLD(_("ON HOLD")),
FINISHED(_("FINISHED")),
CANCELLED(_("CANCELLED")),
STORED(_("STORED"));
STORED(_("ARCHIVED"));
private String description;

View file

@ -1,6 +1,5 @@
package org.libreplan.web.dashboard;
import org.libreplan.business.orders.entities.Order;
import org.libreplan.web.orders.IOrderModel;
@ -9,9 +8,17 @@ 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 org.zkoss.zul.Checkbox;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Label;
import org.zkoss.zul.Rows;
import org.zkoss.zul.Row;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -28,13 +35,11 @@ public class DashboardControllerGlobal extends GenericForwardComposer {
private IOrderModel orderModel;
private Grid pipelineGrid;
// TODO make archived checkbox
// TODO highlited cell when hover?
private Checkbox storedColumnVisible;
private List<Order> preSalesOrders = new ArrayList<Order>();
private List<Order> offeredOrders = new ArrayList<Order>();
private List<Order> outsorcedOrders = new ArrayList<Order>();
private List<Order> outsourcedOrders = new ArrayList<Order>();
private List<Order> acceptedOrders = new ArrayList<Order>();
private List<Order> startedOrders = new ArrayList<Order>();
private List<Order> onHoldOrders = new ArrayList<Order>();
@ -48,6 +53,7 @@ public class DashboardControllerGlobal extends GenericForwardComposer {
component.setVariable("dashboardControllerGlobal", this, true);
fillOrderLists();
setupPipelineGrid();
showStoredColumn();
}
public List<Order> getOrders(){
@ -55,7 +61,6 @@ public class DashboardControllerGlobal extends GenericForwardComposer {
}
private void fillOrderLists() {
List<Order> orderList = new ArrayList<Order>();
for (Order orderItem : getOrders()){
switch (orderItem.getState()){
case PRE_SALES: {
@ -67,7 +72,7 @@ public class DashboardControllerGlobal extends GenericForwardComposer {
break;
}
case OUTSOURCED: {
outsorcedOrders.add(orderItem);
outsourcedOrders.add(orderItem);
break;
}
case ACCEPTED: {
@ -98,8 +103,8 @@ public class DashboardControllerGlobal extends GenericForwardComposer {
}
}
private void setupPipelineGrid(){
int rowsCount = findMaxList(preSalesOrders.size(), offeredOrders.size(), outsorcedOrders.size(), acceptedOrders.size(),
private void setupPipelineGrid() throws ParseException {
int rowsCount = findMaxList(preSalesOrders.size(), offeredOrders.size(), outsourcedOrders.size(), acceptedOrders.size(),
startedOrders.size(), onHoldOrders.size(), finishedOrders.size(), cancelledOrders.size(), storedOrders.size());
Rows rows = new Rows();
@ -111,85 +116,179 @@ public class DashboardControllerGlobal extends GenericForwardComposer {
pipelineGrid.appendChild(rows);
// Fill data into first column and so on with other columns devided by Enter in code...
// Fill data into first column and so on with other columns divided 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);
}
if ( preSalesOrders.size() > 0 )
for (int i = 0; i < preSalesOrders.size(); i++){
String outputInit = getOrderInitDate(preSalesOrders.get(i));
String outputDeadline = getOrderDeadline(preSalesOrders.get(i));
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);
}
( (Label) pipelineGrid.getCell(i, 0) ).setValue(preSalesOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + preSalesOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 0) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 0) ).setClass("label-highlight");
}
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);
}
if ( offeredOrders.size() > 0 )
for (int i = 0; i < offeredOrders.size(); i++){
String outputInit = getOrderInitDate(offeredOrders.get(i));
String outputDeadline = getOrderDeadline(offeredOrders.get(i));
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);
}
( (Label) pipelineGrid.getCell(i, 1) ).setValue(offeredOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + offeredOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 1) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 1) ).setClass("label-highlight");
}
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);
}
if ( outsourcedOrders.size() > 0 )
for (int i = 0; i < outsourcedOrders.size(); i++){
String outputInit = getOrderInitDate(outsourcedOrders.get(i));
String outputDeadline = getOrderDeadline(outsourcedOrders.get(i));
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);
}
( (Label) pipelineGrid.getCell(i, 2) ).setValue(outsourcedOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + outsourcedOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 2) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 2) ).setClass("label-highlight");
}
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);
}
if ( acceptedOrders.size() > 0 )
for (int i = 0; i < acceptedOrders.size(); i++){
String outputInit = getOrderInitDate(acceptedOrders.get(i));
String outputDeadline = getOrderDeadline(acceptedOrders.get(i));
( (Label) pipelineGrid.getCell(i, 3) ).setValue(acceptedOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + acceptedOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 3) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 3) ).setClass("label-highlight");
}
if ( startedOrders.size() > 0 )
for (int i = 0; i < startedOrders.size(); i++){
String outputInit = getOrderInitDate(startedOrders.get(i));
String outputDeadline = getOrderDeadline(startedOrders.get(i));
( (Label) pipelineGrid.getCell(i, 4) ).setValue(startedOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + startedOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 4) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 4) ).setClass("label-highlight");
}
if ( onHoldOrders.size() > 0 )
for (int i = 0; i < onHoldOrders.size(); i++){
String outputInit = getOrderInitDate(onHoldOrders.get(i));
String outputDeadline = getOrderDeadline(onHoldOrders.get(i));
( (Label) pipelineGrid.getCell(i, 5) ).setValue(onHoldOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + onHoldOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 5) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 5) ).setClass("label-highlight");
}
if ( finishedOrders.size() > 0 )
for (int i = 0; i < finishedOrders.size(); i++){
String outputInit = getOrderInitDate(finishedOrders.get(i));
String outputDeadline = getOrderDeadline(finishedOrders.get(i));
( (Label) pipelineGrid.getCell(i, 6) ).setValue(finishedOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + finishedOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 6) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 6) ).setClass("label-highlight");
}
if ( cancelledOrders.size() > 0 )
for (int i = 0; i < cancelledOrders.size(); i++){
String outputInit = getOrderInitDate(cancelledOrders.get(i));
String outputDeadline = getOrderDeadline(cancelledOrders.get(i));
( (Label) pipelineGrid.getCell(i, 7) ).setValue(cancelledOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + cancelledOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 7) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 7) ).setClass("label-highlight");
}
}
private int findMaxList(int preSales, int offered, int outsorced, int accepted, int started, int onHold, int finished,
private String getOrderInitDate(Order order) throws ParseException {
// Remove time, timezone from full-date string
DateFormat inputFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
DateFormat outputFormatter = new SimpleDateFormat("EEE MMM dd yyyy");
String input = "";
String outputInit = "";
String outputDeadline = "";
Date date = null;
input = order.getInitDate().toString();
date = inputFormatter.parse(input);
return outputInit = outputFormatter.format(date);
}
private String getOrderDeadline(Order order) throws ParseException {
// Remove time, timezone from full-date string
DateFormat inputFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
DateFormat outputFormatter = new SimpleDateFormat("EEE MMM dd yyyy");
String input = "";
String outputInit = "";
String outputDeadline = "";
Date date = null;
input = order.getDeadline().toString();
date = inputFormatter.parse(input);
return outputDeadline = outputFormatter.format(date);
}
public void showStoredColumn() throws ParseException {
if ( storedColumnVisible.isChecked() ){
if ( storedOrders.size() > 0 ){
for (int i = 0; i < storedOrders.size(); i++){
String outputInit = getOrderInitDate(storedOrders.get(i));
String outputDeadline = getOrderDeadline(storedOrders.get(i));
pipelineGrid.getCell(i, 8).setVisible(true);
( (Label) pipelineGrid.getCell(i, 8) ).setValue(storedOrders.get(i).getName());
String tooltipText = "Start date: " + outputInit +
"\n" + "End date: " + outputDeadline +
"\n" + "Progress: " + storedOrders.get(i).getAdvancePercentage() + " %";
( (Label) pipelineGrid.getCell(i, 8) ).setTooltiptext(tooltipText);
( (Label) pipelineGrid.getCell(i, 8) ).setClass("label-highlight");
}
}
}
else if ( !storedColumnVisible.isChecked() ){
for (int i = 0; i < storedOrders.size(); i++)
pipelineGrid.getCell(i, 8).setVisible(false);
}
}
private int findMaxList(int preSales, int offered, int outsourced, int accepted, int started, int onHold, int finished,
int cancelled, int stored){
int[] sizes = {preSales, offered, outsorced, accepted, started, onHold, finished, cancelled, stored};
int[] sizes = {preSales, offered, outsourced, accepted, started, onHold, finished, cancelled, stored};
int max = sizes[0];
for (int i = 1; i < sizes.length; i++)

View file

@ -8474,8 +8474,8 @@ msgid "CANCELLED"
msgstr "CANCEL·LAT"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:41
msgid "STORED"
msgstr "EMMAGATZEMAT"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:366
msgid "Fully scheduled"

View file

@ -8361,8 +8361,8 @@ msgid "SUBCONTRACTED PENDING PROJECT"
msgstr "SUBKONTRAKTOVANÝ NEVYŘÍZENÝ PROJEKT"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:35
msgid "STORED"
msgstr "ULOŽENO"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:366
msgid "Fully scheduled"

View file

@ -8362,7 +8362,7 @@ msgid "SUBCONTRACTED PENDING PROJECT"
msgstr "UNTERVERGEBENES, AUSTEHENDES PROJEKT "
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:35
msgid "STORED"
msgid "ARCHIVED"
msgstr "GESPEICHERT"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:366

View file

@ -9191,8 +9191,8 @@ msgid "CANCELLED"
msgstr "CANCELADO"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgstr "ARCHIVADO"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/CriterionRequirementHandler.java:539
msgid "The criterion already exists into another task"

View file

@ -9191,8 +9191,8 @@ msgid "CANCELLED"
msgstr "ANNULE"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgstr "ENREGISTRE"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/CriterionRequirementHandler.java:539
msgid "The criterion already exists into another task"

View file

@ -9190,8 +9190,8 @@ msgid "CANCELLED"
msgstr "CANCELADO"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgstr "ARCHIVADO"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/CriterionRequirementHandler.java:539
msgid "The criterion already exists into another task"

View file

@ -9188,7 +9188,7 @@ msgid "CANCELLED"
msgstr "CANCELLATO"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgid "ARCHIVED"
msgstr "IMMAGAZZINATO"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/CriterionRequirementHandler.java:539

View file

@ -9188,7 +9188,7 @@ msgid "CANCELLED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/CriterionRequirementHandler.java:539
@ -9279,3 +9279,11 @@ msgstr ""
#: libreplan-webapp/src/main/webapp/email/email_templates.zul:119
msgid "Welcome page"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "ARCHIVED"
msgstr ""
#: libreplan-webapp/src/main/webapp/dashboard/_pipeline.zul:2
msgid "Show archived column data"
msgstr ""

View file

@ -9006,8 +9006,8 @@ msgid "CANCELLED"
msgstr "AVLYST"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgstr "LAGRET"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:366
msgid "Fully scheduled"

View file

@ -9188,8 +9188,8 @@ msgid "CANCELLED"
msgstr "AFGEBROKEN"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "STORED"
msgstr "OPGESLAGEN"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/CriterionRequirementHandler.java:539
msgid "The criterion already exists into another task"

View file

@ -7109,8 +7109,8 @@ msgid "SUBCONTRACTED PENDING PROJECT"
msgstr "Nierozstrzygnięty pracowany"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:35
msgid "STORED"
msgstr "Przechowywane"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:215
msgid "it's already somewhat scheduled"

View file

@ -8476,8 +8476,8 @@ msgid "CANCELLED"
msgstr "CANCELADO"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:41
msgid "STORED"
msgstr "Arquivado"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:366
msgid "Fully scheduled"

View file

@ -6711,3 +6711,7 @@ msgstr "Итоговая стоимость"
#: libreplan-webapp/src/main/webapp/excetiondays/_listExceptionDayTypes.zul:54
msgid "Delete"
msgstr "Удалить"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:43
msgid "ARCHIVED"
msgstr "Заархивированный"

View file

@ -8474,8 +8474,8 @@ msgid "CANCELLED"
msgstr "已取消"
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java:41
msgid "STORED"
msgstr "STORED"
msgid "ARCHIVED"
msgstr ""
#: libreplan-business/src/main/java/org/libreplan/business/orders/entities/SchedulingState.java:366
msgid "Fully scheduled"

View file

@ -1069,6 +1069,13 @@ span.perspective, span.perspective-active {
background-image: url(../img/ico_order-dashboard.png);
}
.label-highlight:hover{
background-color: #aacbff;
}
.global-dashboard-grid{
margin-top: 5px;
}
.perspectives-column {

View file

@ -1,5 +1,7 @@
<window apply="org.libreplan.web.dashboard.DashboardControllerGlobal" contentStyle="overflow:auto;">
<grid id="pipelineGrid">
<checkbox id="storedColumnVisible" label="${i18n:_('Show archived column data')}" checked="true" onCheck="dashboardControllerGlobal.showStoredColumn()"/>
<grid id="pipelineGrid" sclass="global-dashboard-grid">
<columns>
<column label="${i18n:_('PRE-SALES')}"/>
<column label="${i18n:_('OFFERED')}"/>
@ -9,7 +11,7 @@
<column label="${i18n:_('ON HOLD')}"/>
<column label="${i18n:_('FINISHED')}"/>
<column label="${i18n:_('CANCELLED')}"/>
<column label="${i18n:_('STORED')}"/>
<column label="${i18n:_('ARCHIVED')}"/>
</columns>
</grid>
</window>