tickets 2787, 3063, 3001, 3061
This commit is contained in:
@@ -71,13 +71,16 @@ TimeSeriesPresenter.prototype.indicatorList = function (dashboardId) {
|
|||||||
var that = this;
|
var that = this;
|
||||||
var requestFinished = $.Deferred();
|
var requestFinished = $.Deferred();
|
||||||
var dummyDate = this.helper.date2MysqlString(new Date());
|
var dummyDate = this.helper.date2MysqlString(new Date());
|
||||||
|
var indicatorsAllowed = [1010, 1030];
|
||||||
this.model.indicatorList(dashboardId, dummyDate, dummyDate).done(function (data) {
|
this.model.indicatorList(dashboardId, dummyDate, dummyDate).done(function (data) {
|
||||||
var newArray = [];
|
var newArray = [];
|
||||||
$.each(data, function(index, originalObject) {
|
$.each(data, function(index, originalObject) {
|
||||||
var newObject = {label: originalObject.DAS_IND_TITLE,
|
if (indicatorsAllowed.indexOf(originalObject.DAS_IND_TYPE*1) >= 0) {
|
||||||
value: originalObject.DAS_IND_UID
|
var newObject = {label: originalObject.DAS_IND_TITLE,
|
||||||
}
|
value: originalObject.DAS_IND_UID
|
||||||
newArray.push(newObject);
|
}
|
||||||
|
newArray.push(newObject);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
requestFinished.resolve(newArray);
|
requestFinished.resolve(newArray);
|
||||||
@@ -144,8 +147,8 @@ TimeSeriesPresenter.prototype.historicData = function (indicator, periodicity, i
|
|||||||
initYear, endPeriod, endYear) {
|
initYear, endPeriod, endYear) {
|
||||||
var that = this;
|
var that = this;
|
||||||
var requestFinished = $.Deferred();
|
var requestFinished = $.Deferred();
|
||||||
var initDate = this.periodInitDate(periodicity, initPeriod, initYear);
|
var initDate = this.helper.periodInitDate(periodicity, initPeriod, initYear);
|
||||||
var endDate = this.periodEndDate(periodicity, endPeriod, endYear);
|
var endDate = this.helper.periodEndDate(periodicity, endPeriod, endYear);
|
||||||
this.model.historicData(indicator, periodicity, initDate, endDate).done(function (data) {
|
this.model.historicData(indicator, periodicity, initDate, endDate).done(function (data) {
|
||||||
var graphData = [];
|
var graphData = [];
|
||||||
$.each(data, function(index, originalObject) {
|
$.each(data, function(index, originalObject) {
|
||||||
@@ -235,8 +238,8 @@ TimeSeriesPresenter.prototype.periodEquivalentFromDate = function (periodicity,
|
|||||||
switch (periodicity * 1) {
|
switch (periodicity * 1) {
|
||||||
case this.helper.ReportingPeriodicityEnum.MONTH:
|
case this.helper.ReportingPeriodicityEnum.MONTH:
|
||||||
for (var i = 1; i < 12; i++) {
|
for (var i = 1; i < 12; i++) {
|
||||||
var periodInitDate = this.periodInitDate (periodicity, i, year);
|
var periodInitDate = this.helper.periodInitDate (periodicity, i, year);
|
||||||
var periodEndDate = this.periodEndDate (periodicity, i, year);
|
var periodEndDate = this.helper.periodEndDate (periodicity, i, year);
|
||||||
if (periodInitDate <= date && periodEndDate >= date) {
|
if (periodInitDate <= date && periodEndDate >= date) {
|
||||||
retval = i;
|
retval = i;
|
||||||
}
|
}
|
||||||
@@ -244,8 +247,8 @@ TimeSeriesPresenter.prototype.periodEquivalentFromDate = function (periodicity,
|
|||||||
break;
|
break;
|
||||||
case this.helper.ReportingPeriodicityEnum.QUARTER:
|
case this.helper.ReportingPeriodicityEnum.QUARTER:
|
||||||
for (var i = 1; i < 4; i++) {
|
for (var i = 1; i < 4; i++) {
|
||||||
var periodInitDate = this.periodInitDate (periodicity, i, year);
|
var periodInitDate = this.helper.periodInitDate (periodicity, i, year);
|
||||||
var periodEndDate = this.periodEndDate (periodicity, i, year);
|
var periodEndDate = this.helper.periodEndDate (periodicity, i, year);
|
||||||
if (periodInitDate <= date && periodEndDate >= date) {
|
if (periodInitDate <= date && periodEndDate >= date) {
|
||||||
retval = i;
|
retval = i;
|
||||||
}
|
}
|
||||||
@@ -253,8 +256,8 @@ TimeSeriesPresenter.prototype.periodEquivalentFromDate = function (periodicity,
|
|||||||
break;
|
break;
|
||||||
case this.helper.ReportingPeriodicityEnum.SEMESTER:
|
case this.helper.ReportingPeriodicityEnum.SEMESTER:
|
||||||
for (var i = 1; i < 2; i++) {
|
for (var i = 1; i < 2; i++) {
|
||||||
var periodInitDate = this.periodInitDate (periodicity, i, year);
|
var periodInitDate = this.helper.periodInitDate (periodicity, i, year);
|
||||||
var periodEndDate = this.periodEndDate (periodicity, i, year);
|
var periodEndDate = this.helper.periodEndDate (periodicity, i, year);
|
||||||
if (periodInitDate <= date && periodEndDate >= date) {
|
if (periodInitDate <= date && periodEndDate >= date) {
|
||||||
retval = i;
|
retval = i;
|
||||||
}
|
}
|
||||||
@@ -270,49 +273,3 @@ TimeSeriesPresenter.prototype.periodEquivalentFromDate = function (periodicity,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeSeriesPresenter.prototype.periodInitDate = function (periodicity, period, year) {
|
|
||||||
var retval = null;
|
|
||||||
switch (periodicity * 1) {
|
|
||||||
case this.helper.ReportingPeriodicityEnum.MONTH:
|
|
||||||
retval = new Date(year, period - 1, 1);
|
|
||||||
break;
|
|
||||||
case this.helper.ReportingPeriodicityEnum.QUARTER:
|
|
||||||
retval = new Date(year, 3 * (period-1), 1);
|
|
||||||
break;
|
|
||||||
case this.helper.ReportingPeriodicityEnum.SEMESTER:
|
|
||||||
retval = new Date(year, 6 * (period-1), 1);
|
|
||||||
break;
|
|
||||||
case this.helper.ReportingPeriodicityEnum.YEAR:
|
|
||||||
retval = new Date(year, 0, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (retval == null) {
|
|
||||||
throw new Error("The periodicity " + periodicity + " is not supported.");
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
TimeSeriesPresenter.prototype.periodEndDate = function (periodicity, period, year) {
|
|
||||||
var retval = null;
|
|
||||||
switch (periodicity * 1) {
|
|
||||||
case this.helper.ReportingPeriodicityEnum.MONTH:
|
|
||||||
retval = new Date(year, period, 0, 23,59,59);
|
|
||||||
break;
|
|
||||||
case this.helper.ReportingPeriodicityEnum.QUARTER:
|
|
||||||
retval = new Date(year, 3 * (period), 0, 23, 59, 59);
|
|
||||||
break;
|
|
||||||
case this.helper.ReportingPeriodicityEnum.SEMESTER:
|
|
||||||
retval = new Date(year, 6 * (period), 0, 23, 59, 59);
|
|
||||||
break;
|
|
||||||
case this.helper.ReportingPeriodicityEnum.YEAR:
|
|
||||||
retval = new Date(year, 11, 31, 23, 59, 59);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (retval == null) {
|
|
||||||
throw new Error("The periodicity " + periodicity + " is not supported.");
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -323,3 +323,61 @@ ViewDashboardHelper.prototype.putInCache = function (endPoint, data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ViewDashboardHelper.prototype.periodInitDate = function (periodicity, period, year) {
|
||||||
|
var retval = null;
|
||||||
|
switch (periodicity * 1) {
|
||||||
|
case this.ReportingPeriodicityEnum.MONTH:
|
||||||
|
retval = new Date(year, period - 1, 1);
|
||||||
|
break;
|
||||||
|
case this.ReportingPeriodicityEnum.QUARTER:
|
||||||
|
retval = new Date(year, 3 * (period-1), 1);
|
||||||
|
break;
|
||||||
|
case this.ReportingPeriodicityEnum.SEMESTER:
|
||||||
|
retval = new Date(year, 6 * (period-1), 1);
|
||||||
|
break;
|
||||||
|
case this.ReportingPeriodicityEnum.YEAR:
|
||||||
|
retval = new Date(year, 0, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (retval == null) {
|
||||||
|
throw new Error("The periodicity " + periodicity + " is not supported.");
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewDashboardHelper.prototype.periodEndDate = function (periodicity, period, year) {
|
||||||
|
var retval = null;
|
||||||
|
switch (periodicity * 1) {
|
||||||
|
case this.ReportingPeriodicityEnum.MONTH:
|
||||||
|
retval = new Date(year, period, 0, 23,59,59);
|
||||||
|
break;
|
||||||
|
case this.ReportingPeriodicityEnum.QUARTER:
|
||||||
|
retval = new Date(year, 3 * (period), 0, 23, 59, 59);
|
||||||
|
break;
|
||||||
|
case this.ReportingPeriodicityEnum.SEMESTER:
|
||||||
|
retval = new Date(year, 6 * (period), 0, 23, 59, 59);
|
||||||
|
break;
|
||||||
|
case this.ReportingPeriodicityEnum.YEAR:
|
||||||
|
retval = new Date(year, 11, 31, 23, 59, 59);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (retval == null) {
|
||||||
|
throw new Error("The periodicity " + periodicity + " is not supported.");
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ViewDashboardHelper.prototype.unescape = function (string) {
|
||||||
|
var temp = document.createElement("div");
|
||||||
|
temp.innerHTML = string;
|
||||||
|
var result = temp.childNodes[0].nodeValue;
|
||||||
|
temp.removeChild(temp.firstChild);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ ViewDashboardPresenter.prototype.dashboardIndicatorsViewModel = function(data) {
|
|||||||
: "normal";
|
: "normal";
|
||||||
|
|
||||||
//rounding
|
//rounding
|
||||||
newObject.comparative = Math.round(newObject.comparative*100)/100;
|
newObject.comparative = Math.round(newObject.comparative * 100)/100;
|
||||||
newObject.comparative = ((newObject.comparative > 0) ? "+": "") + newObject.comparative;
|
newObject.comparative = ((newObject.comparative > 0) ? "+": "") + newObject.comparative;
|
||||||
|
|
||||||
newObject.percentComparative = (newObject.percentComparative != '--')
|
newObject.percentComparative = (newObject.percentComparative != '--')
|
||||||
@@ -141,6 +141,7 @@ ViewDashboardPresenter.prototype.setStatusButtonWidthsAndDisplayValues = functio
|
|||||||
var minPercent = 10;
|
var minPercent = 10;
|
||||||
var barsLessThanMin = [];
|
var barsLessThanMin = [];
|
||||||
var barsNormal = [];
|
var barsNormal = [];
|
||||||
|
var barsNonZero = [];
|
||||||
|
|
||||||
var classifyBar = function (bar) {
|
var classifyBar = function (bar) {
|
||||||
if (bar.valueRounded <= minPercent && bar.valueRounded > 0) {
|
if (bar.valueRounded <= minPercent && bar.valueRounded > 0) {
|
||||||
@@ -150,6 +151,12 @@ ViewDashboardPresenter.prototype.setStatusButtonWidthsAndDisplayValues = functio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var nonZeroBar = function (bar) {
|
||||||
|
if (bar.valueRounded != null && bar.valueRounded > 0) {
|
||||||
|
barsNonZero.push (bar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var atRisk = {
|
var atRisk = {
|
||||||
type : "atRisk",
|
type : "atRisk",
|
||||||
value : data.percentageAtRisk,
|
value : data.percentageAtRisk,
|
||||||
@@ -180,10 +187,39 @@ ViewDashboardPresenter.prototype.setStatusButtonWidthsAndDisplayValues = functio
|
|||||||
? ""
|
? ""
|
||||||
: onTime.valueRounded + "%";
|
: onTime.valueRounded + "%";
|
||||||
|
|
||||||
classifyBar(atRisk);
|
|
||||||
classifyBar(overdue);
|
classifyBar(overdue);
|
||||||
|
classifyBar(atRisk);
|
||||||
classifyBar(onTime);
|
classifyBar(onTime);
|
||||||
|
|
||||||
|
nonZeroBar(overdue);
|
||||||
|
nonZeroBar(atRisk);
|
||||||
|
nonZeroBar(onTime);
|
||||||
|
|
||||||
|
var valuesArray = barsNonZero.map(function (d) { return d.valueRounded; });
|
||||||
|
var completedTo100Sum = 100 - valuesArray.reduce(function(prev, curr, index, array) {
|
||||||
|
var acum = (index == valuesArray.length -1)
|
||||||
|
? prev
|
||||||
|
: prev + curr;
|
||||||
|
return acum;
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
switch (barsNonZero.length) {
|
||||||
|
case 0:
|
||||||
|
barsNormal [0].valueToShow = "100%";
|
||||||
|
barsNormal [0].valueRounded = 100;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
barsNonZero[0].valueToShow = "100%";
|
||||||
|
barsNonZero[0].valueRounded = 100;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
barsNonZero[barsNonZero.length - 1].valueToShow = completedTo100Sum + "%";
|
||||||
|
barsNonZero[barsNonZero.length - 1].valueRounded = completedTo100Sum;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var widthToDivide = 100 - barsLessThanMin.length * minPercent;
|
var widthToDivide = 100 - barsLessThanMin.length * minPercent;
|
||||||
var normalsSum = 0;
|
var normalsSum = 0;
|
||||||
$.each (barsNormal, function() {
|
$.each (barsNormal, function() {
|
||||||
|
|||||||
@@ -505,7 +505,7 @@ var loadIndicator = function (indicatorId, initDate, endDate) {
|
|||||||
hideTitleAndSortDiv();
|
hideTitleAndSortDiv();
|
||||||
$('[data-toggle="tooltip"]').tooltip({
|
$('[data-toggle="tooltip"]').tooltip({
|
||||||
animated: 'fade',
|
animated: 'fade',
|
||||||
placement: 'bottom'
|
placement: 'top'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -538,17 +538,16 @@ var defaultInitDate = function() {
|
|||||||
var date = new Date();
|
var date = new Date();
|
||||||
var dateMonth = date.getMonth();
|
var dateMonth = date.getMonth();
|
||||||
var dateYear = date.getFullYear();
|
var dateYear = date.getFullYear();
|
||||||
var initDate = $('#initYearList').val() + '-' + $('#initPeriodList').val() + '-' + '01';
|
var initDate = new Date(dateYear, dateMonth, 1);
|
||||||
return initDate;
|
initDate.setMonth(initDate.getMonth() - 1);
|
||||||
|
var retval = $('#initYearList').val() + '-' + (initDate.getMonth() + 1) + '-' + '01';
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultEndDate = function () {
|
var defaultEndDate = function () {
|
||||||
//TODO use the timeSeries function that finds the last day in the period
|
var endDate = helper.periodEndDate ($('#periodicityList').val() , $('#endPeriodList').val() , $('#endYearList').val());
|
||||||
var date = new Date();
|
var retval = $('#endYearList').val() + '-' + $('#endPeriodList').val() + '-' + endDate.getDate();
|
||||||
var dateMonth = date.getMonth();
|
return retval;
|
||||||
var dateYear = date.getFullYear();
|
|
||||||
var initDate = $('#endYearList').val() + '-' + $('#endPeriodList').val() + '-' + '30';
|
|
||||||
return initDate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var fillDashboardsList = function (presenterData) {
|
var fillDashboardsList = function (presenterData) {
|
||||||
@@ -562,7 +561,7 @@ var fillDashboardsList = function (presenterData) {
|
|||||||
window.loadedDashboards = presenterData;
|
window.loadedDashboards = presenterData;
|
||||||
for (key in presenterData) {
|
for (key in presenterData) {
|
||||||
var dashboard = presenterData[key];
|
var dashboard = presenterData[key];
|
||||||
dashboard.title = dashboard.title.replace(''', "'");
|
dashboard.title = helper.unescape(dashboard.title);
|
||||||
$('#dashboardsList').append(template(dashboard));
|
$('#dashboardsList').append(template(dashboard));
|
||||||
if (dashboard.isFavorite == 1) {
|
if (dashboard.isFavorite == 1) {
|
||||||
window.currentDashboardId = dashboard.id;
|
window.currentDashboardId = dashboard.id;
|
||||||
@@ -796,6 +795,11 @@ var fillSpecialIndicatorSecondView = function(presenterData) {
|
|||||||
graph.drawChart();
|
graph.drawChart();
|
||||||
}
|
}
|
||||||
this.fillSpecialIndicatorSecondViewDetail(presenter.orderDataList(presenterData.entityData, selectedOrderOfDetailList()));
|
this.fillSpecialIndicatorSecondViewDetail(presenter.orderDataList(presenterData.entityData, selectedOrderOfDetailList()));
|
||||||
|
$('[data-toggle="tooltip"]').tooltip({
|
||||||
|
animated: 'fade',
|
||||||
|
placement: 'top'
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var fillSpecialIndicatorSecondViewDetail = function (list) {
|
var fillSpecialIndicatorSecondViewDetail = function (list) {
|
||||||
|
|||||||
@@ -57,8 +57,13 @@
|
|||||||
<div class="col-xs-3" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_VALUE'}">
|
<div class="col-xs-3" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_VALUE'}">
|
||||||
<div class="huge ind-value-selector"><%- indicator.value %></div>
|
<div class="huge ind-value-selector"><%- indicator.value %></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-9 text-right"><i class="ind-symbol-selector fa fa-arrow-up fa-3x" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_SYMBOL_SELECTOR'}"></i>
|
<div class="col-xs-5">
|
||||||
<div class="small ind-comparative-selector" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_COMPARE'}">
|
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-4 text-right">
|
||||||
|
<i style=" width:60px; text-align:center; display:block; float:right;" class="ind-symbol-selector fa fa-arrow-up fa-3x" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_SYMBOL_SELECTOR'}">
|
||||||
|
</i>
|
||||||
|
<div class="small ind-comparative-selector" style="clear:both;" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_COMPARE'}">
|
||||||
<%- indicator.comparative %> <%- indicator.percentComparative %>
|
<%- indicator.comparative %> <%- indicator.percentComparative %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -225,11 +230,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="text-center huge">
|
<div class="text-center huge">
|
||||||
<div class="col-xs-12 vcenter-task">
|
<div class="col-xs-12 vcenter-task">
|
||||||
<div class="col-xs-6 ">
|
<div class="col-xs-6" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_EFFICIENCY'}">
|
||||||
<div class="blue small"><%- detailData.efficiencyIndexToShow%></div>
|
<div class="blue small"><%- detailData.efficiencyIndexToShow%></div>
|
||||||
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 ">
|
<div class="col-xs-6" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_COST'}">
|
||||||
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
||||||
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -253,11 +258,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="text-center huge">
|
<div class="text-center huge">
|
||||||
<div class="col-xs-12 vcenter-task">
|
<div class="col-xs-12 vcenter-task">
|
||||||
<div class="col-xs-6 ">
|
<div class="col-xs-6" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_EFFICIENCY'}">
|
||||||
<div class="blue small"><%- detailData.efficiencyIndexToShow%></div>
|
<div class="blue small"><%- detailData.efficiencyIndexToShow%></div>
|
||||||
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
<div class="smallB grey detail-efficiency-selector ellipsis"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 ">
|
<div class="col-xs-6" data-toggle="tooltip" data-original-title="{translate label='ID_DASH_HELP_IND_COST'}">
|
||||||
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
<div class="small detail-cost-number-selector">{$unitCost} <%- detailData.inefficiencyCostToShow%></div>
|
||||||
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
<div class="smallB grey detail-cost-selector ellipsis"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user