diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index f2c40ce46..c3c7e0d14 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -4852,22 +4852,23 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index f54fdb02c..aba16cf92 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2702,22 +2702,23 @@ DROP TABLE IF EXISTS `USR_REPORTING`; CREATE TABLE `USR_REPORTING` ( - `USR_UID` VARCHAR(32) NOT NULL, - `TAS_UID` VARCHAR(32) NOT NULL, - `PRO_UID` VARCHAR(32) NOT NULL, - `MONTH` INTEGER default 0 NOT NULL, - `YEAR` INTEGER default 0 NOT NULL, - `TOTAL_TIME_BY_TASK` DECIMAL(7,2) default 0, - `TOTAL_CASES_IN` DECIMAL(7,2) default 0, - `TOTAL_CASES_OUT` DECIMAL(7,2) default 0, - `USER_HOUR_COST` DECIMAL(7,2) default 0, - `AVG_TIME` DECIMAL(7,2) default 0, - `SDV_TIME` DECIMAL(7,2) default 0, - `CONFIGURED_TASK_TIME` DECIMAL(7,2) default 0, - `TOTAL_CASES_OVERDUE` DECIMAL(7,2) default 0, - `TOTAL_CASES_ON_TIME` DECIMAL(7,2) default 0, - `PRO_COST` DECIMAL(7,2) default 0, - `PRO_UNIT_COST` VARCHAR(50) default '', + `USR_UID` VARCHAR(32) NOT NULL, + `TAS_UID` VARCHAR(32) NOT NULL, + `PRO_UID` VARCHAR(32) NOT NULL, + `MONTH` INTEGER default 0 NOT NULL, + `YEAR` INTEGER default 0 NOT NULL, + `TOTAL_QUEUE_TIME_BY_TASK` DECIMAL(7,2) default 0, + `TOTAL_TIME_BY_TASK` DECIMAL(7,2) default 0, + `TOTAL_CASES_IN` DECIMAL(7,2) default 0, + `TOTAL_CASES_OUT` DECIMAL(7,2) default 0, + `USER_HOUR_COST` DECIMAL(7,2) default 0, + `AVG_TIME` DECIMAL(7,2) default 0, + `SDV_TIME` DECIMAL(7,2) default 0, + `CONFIGURED_TASK_TIME` DECIMAL(7,2) default 0, + `TOTAL_CASES_OVERDUE` DECIMAL(7,2) default 0, + `TOTAL_CASES_ON_TIME` DECIMAL(7,2) default 0, + `PRO_COST` DECIMAL(7,2) default 0, + `PRO_UNIT_COST` VARCHAR(50) default '', PRIMARY KEY (`USR_UID`, `TAS_UID`,`MONTH`,`YEAR`), KEY `indexReporting`(`USR_UID`, `TAS_UID`, `PRO_UID`) )ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Data calculated users by task'; diff --git a/workflow/engine/js/strategicDashboard/timeSeriesPresenter.js b/workflow/engine/js/strategicDashboard/timeSeriesPresenter.js index e274443c0..7f2efcc3e 100644 --- a/workflow/engine/js/strategicDashboard/timeSeriesPresenter.js +++ b/workflow/engine/js/strategicDashboard/timeSeriesPresenter.js @@ -113,6 +113,7 @@ TimeSeriesPresenter.prototype.changePeriodicityToMonth = function (monthList) { this.endPeriodState.list = monthList; this.initPeriodState.visible = true; this.endPeriodState.visible = true; + this.endPeriodState.selValue = this.periodEquivalentFromDate (this.helper.ReportingPeriodicityEnum.MONTH, new Date()); } TimeSeriesPresenter.prototype.changePeriodicityToQuarter = function (quarterList) { @@ -120,6 +121,7 @@ TimeSeriesPresenter.prototype.changePeriodicityToQuarter = function (quarterList this.endPeriodState.list = quarterList; this.initPeriodState.visible = true; this.endPeriodState.visible = true; + this.endPeriodState.selValue = this.periodEquivalentFromDate (this.helper.ReportingPeriodicityEnum.QUARTER, new Date()); } TimeSeriesPresenter.prototype.changePeriodicityToSemester = function (semesterList) { @@ -127,6 +129,7 @@ TimeSeriesPresenter.prototype.changePeriodicityToSemester = function (semesterLi this.endPeriodState.list = semesterList; this.initPeriodState.visible = true; this.endPeriodState.visible = true; + this.endPeriodState.selValue = this.periodEquivalentFromDate (this.helper.ReportingPeriodicityEnum.SEMESTER, new Date()); } TimeSeriesPresenter.prototype.changePeriodicityToYear = function (yearList) { @@ -134,6 +137,7 @@ TimeSeriesPresenter.prototype.changePeriodicityToYear = function (yearList) { this.endPeriodState.list = []; this.initPeriodState.visible = false; this.endPeriodState.visible = false; + this.endPeriodState.selValue = this.periodEquivalentFromDate (this.helper.ReportingPeriodicityEnum.YEAR, new Date()); } TimeSeriesPresenter.prototype.historicData = function (indicator, periodicity, initPeriod, @@ -145,7 +149,7 @@ TimeSeriesPresenter.prototype.historicData = function (indicator, periodicity, i this.model.historicData(indicator, periodicity, initDate, endDate).done(function (data) { var graphData = []; $.each(data, function(index, originalObject) { - var newObject = {datalabel: that.periodValue(periodicity, originalObject) + '/' + originalObject['YEAR'], + var newObject = {datalabel: that.periodColumnName(periodicity, originalObject) + '/' + originalObject['YEAR'], value: originalObject.VALUE } graphData.push(newObject); @@ -157,7 +161,7 @@ TimeSeriesPresenter.prototype.historicData = function (indicator, periodicity, i } -TimeSeriesPresenter.prototype.periodValue = function (periodicity, object) { +TimeSeriesPresenter.prototype.periodColumnName = function (periodicity, object) { var retval = ""; switch (periodicity*1) { case this.helper.ReportingPeriodicityEnum.MONTH: @@ -179,6 +183,48 @@ TimeSeriesPresenter.prototype.periodValue = function (periodicity, object) { return retval; } +TimeSeriesPresenter.prototype.periodEquivalentFromDate = function (periodicity, date) { + var retval = null; + var year = date.getFullYear(); + + switch (periodicity * 1) { + case this.helper.ReportingPeriodicityEnum.MONTH: + for (var i = 1; i < 12; i++) { + var periodInitDate = this.periodInitDate (periodicity, i, year); + var periodEndDate = this.periodEndDate (periodicity, i, year); + if (periodInitDate <= date && periodEndDate >= date) { + retval = i; + } + } + break; + case this.helper.ReportingPeriodicityEnum.QUARTER: + for (var i = 1; i < 4; i++) { + var periodInitDate = this.periodInitDate (periodicity, i, year); + var periodEndDate = this.periodEndDate (periodicity, i, year); + if (periodInitDate <= date && periodEndDate >= date) { + retval = i; + } + } + break; + case this.helper.ReportingPeriodicityEnum.SEMESTER: + for (var i = 1; i < 2; i++) { + var periodInitDate = this.periodInitDate (periodicity, i, year); + var periodEndDate = this.periodEndDate (periodicity, i, year); + if (periodInitDate <= date && periodEndDate >= date) { + retval = i; + } + } + break; + case this.helper.ReportingPeriodicityEnum.YEAR: + retval = year + break; + } + if (retval == null) { + throw new Error("The periodicity " + periodicity + " is not supported."); + } + return retval; +} + TimeSeriesPresenter.prototype.periodInitDate = function (periodicity, period, year) { var retval = null; switch (periodicity * 1) { diff --git a/workflow/engine/js/strategicDashboard/viewDashboardView.js b/workflow/engine/js/strategicDashboard/viewDashboardView.js index 68bc584db..c69a67957 100644 --- a/workflow/engine/js/strategicDashboard/viewDashboardView.js +++ b/workflow/engine/js/strategicDashboard/viewDashboardView.js @@ -505,7 +505,7 @@ var loadIndicator = function (indicatorId, initDate, endDate) { fillSpecialIndicatorFirstView(viewModel); break; case "1050": - fillStatusIndicatorFirstView(viewModel); + //fillStatusIndicatorFirstView(viewModel); break; default: fillGeneralIndicatorFirstView(viewModel); diff --git a/workflow/engine/methods/setup/setupSchemas/triggerFillReportByUser.sql b/workflow/engine/methods/setup/setupSchemas/triggerFillReportByUser.sql index dc468398f..a630c7b43 100644 --- a/workflow/engine/methods/setup/setupSchemas/triggerFillReportByUser.sql +++ b/workflow/engine/methods/setup/setupSchemas/triggerFillReportByUser.sql @@ -12,6 +12,7 @@ INSERT INTO USR_REPORTING ( PRO_UID, MONTH, YEAR, + TOTAL_QUEUE_TIME_BY_TASK, TOTAL_TIME_BY_TASK, TOTAL_CASES_IN, TOTAL_CASES_OUT, @@ -31,6 +32,7 @@ SELECT ACV.PRO_UID, DATE_FORMAT(ACV.DEL_INIT_DATE, '%m') AS `MONTH`, DATE_FORMAT(ACV.DEL_INIT_DATE, '%Y') AS `YEAR`, + SUM(ACV.DEL_QUEUE_DURATION*24) AS TOTAL_QUEUE_TIME_BY_TASK, SUM(ACV.DEL_DURATION*24) AS TOT_TIME_BY_TASK, COUNT(ACV.DEL_INIT_DATE) AS TOT_CASES_IN, COUNT(ACV.DEL_FINISH_DATE) AS TOT_CASES_OUT, diff --git a/workflow/engine/templates/cases/casesList.js b/workflow/engine/templates/cases/casesList.js index 082521694..30fc95759 100755 --- a/workflow/engine/templates/cases/casesList.js +++ b/workflow/engine/templates/cases/casesList.js @@ -1058,6 +1058,9 @@ Ext.onReady ( function() { }); /*----------------------------------********---------------------------------*/ + if (typeof filterStatus == 'undefined') { + filterStatus = []; + } var comboFilterStatus = new Ext.form.ComboBox({ width : 180, boxMaxWidth : 200, @@ -1071,6 +1074,7 @@ Ext.onReady ( function() { mode : 'local', autocomplete : true, triggerAction : 'all', + hidden : filterStatus.length == 0 ? true : false, store : new Ext.data.ArrayStore({ fields : ['UID','NAME'], data : filterStatus @@ -1705,8 +1709,11 @@ Ext.onReady ( function() { '-', btnAll, '->', // begin using the right-justified button container - _('ID_OVERDUE'), - comboFilterStatus, + filterStatus.length != 0 ?[ + _('ID_OVERDUE'), + comboFilterStatus + ] : [ + ], _("ID_CATEGORY"), comboCategory, "-", diff --git a/workflow/engine/templates/strategicDashboard/viewDashboard.html b/workflow/engine/templates/strategicDashboard/viewDashboard.html index 0c6d51ef7..0ad1b3b74 100644 --- a/workflow/engine/templates/strategicDashboard/viewDashboard.html +++ b/workflow/engine/templates/strategicDashboard/viewDashboard.html @@ -79,7 +79,7 @@ data-indicator-type="<%- indicator.type %>" data-gs-min-width="3" data-gs-min-height="2" data-gs-max-height="2" data-toggle="tooltip" data-original-title={translate label="ID_DASH_HELP_INBOX_STATUS"}> -