Files
BeWoPlaner/BeWoPlanerMobil/Scripts/support-concept-statistics.js
Lyndon Jetten f51450b2bb Mobilklient:
Statistik erweitert, damit sie so aussieht wie im Fat-Client.
2021-04-08 19:21:14 +02:00

161 lines
6.3 KiB
JavaScript

function showPieChart() {
var cb2ScRelOid = parseInt($("#CostBearer2SupportConceptOid").val(), 10);
if (cb2ScRelOid === null || cb2ScRelOid === undefined) {
showMessagePopup("Hilfeplanstatistik", "Es wurde kein Hilfeplan ausgewählt");
return;
}
var customerInfo = $("#selectedSupportConceptCustomerInfo").html();
var selectedSupportConceptInfo = $("#selectedSupportConceptInfo").html();
$("#statistics-header").html("Hilfeplanstatistik: " + customerInfo + " | " + selectedSupportConceptInfo);
getSupportConceptStatistics(cb2ScRelOid);
}
function getSupportConceptStatistics(cb2ScRRelOid) {
var url = getLoadStatisticsUrl();
$.get(url, {oid: cb2ScRRelOid}).done(function(jsonObject) {
var scStatistics = $.parseJSON(jsonObject);
var provided = scStatistics.MinutesProvidedThisWeek;
var approved = scStatistics.MinutesApprovedPerWeek;
var freePerWeek = scStatistics.MinutesFreePerWeekAverage;
var providedTotal = scStatistics.MinutesProvidedTotalRounded;
var approvedTotal = scStatistics.MinutesApprovedTotal;
var freePerWeekTotal = approvedTotal - providedTotal;
provided = (provided / 60).toFixed(2);
approved = (approved / 60).toFixed(2);
freePerWeek = (freePerWeek / 60).toFixed(2);
providedTotal = (providedTotal / 60).toFixed(2);
approvedTotal = (approvedTotal / 60).toFixed(2);
freePerWeekTotal = (freePerWeekTotal / 60).toFixed(2);
var percentage = 0;
if (approvedTotal > 0) {
percentage = ((providedTotal / approvedTotal) * 100).toFixed(2);
}
if (percentage > 100) {
percentage = 100;
}
drawPieChart((100 - percentage).toFixed(2), percentage, "Frei (in %)", "Verbraucht (in %)");
$("#provided-per-week-total-col").html(provided + "/" + providedTotal);
$("#approved-per-week-total-col").html(approved + "/" + approvedTotal);
$("#free-per-week-total-col").html(freePerWeek + "/" + freePerWeekTotal);
$("#period-statistics-container").html("");
if(scStatistics.PeriodStatistics != null && scStatistics.PeriodStatistics.length > 0) {
$.each(scStatistics.PeriodStatistics, function(index, periodStatistic) {
try {
var p = periodStatistic.MinutesProvidedThisWeek;
var a = periodStatistic.MinutesApprovedPerWeek;
var f = periodStatistic.MinutesFreePerWeek;
var pTotal = periodStatistic.MinutesProvidedTotalRounded;
var aTotal = periodStatistic.MinutesApprovedTotal;
var fTotal = aTotal - pTotal;
p = (p / 60).toFixed(2);
a = (a / 60).toFixed(2);
f = (f / 60).toFixed(2);
pTotal = (pTotal / 60).toFixed(2);
aTotal = (aTotal / 60).toFixed(2);
fTotal = (fTotal / 60).toFixed(2);
var serviceCategoryName = periodStatistic.SupportConceptApprovalPeriod.ServiceCategory.Name;
var start = moment(new Date(0));
var end = moment(new Date(9999, 11, 31, 23, 59, 59));
if(!isUndefinedOrNull(periodStatistic.SupportConceptApprovalPeriod.StartDate)) {
start = moment(new Date(periodStatistic.SupportConceptApprovalPeriod.StartDate));
}
if(!isUndefinedOrNull(periodStatistic.SupportConceptApprovalPeriod.EndDate)) {
end = moment(new Date(periodStatistic.SupportConceptApprovalPeriod.EndDate));
}
var span = start.format("DD.MM.YY") + " - " + end.format("DD.MM.YY");
$("#period-statistics-container").append(
"<hr />" +
'<div class="row">' +
'<div class="col text-secondary">' + serviceCategoryName + "</div>" +
'<div class="col-auto">' + span + "</div>" +
"</div>" +
'<div class="row">' +
'<div class="col text-secondary">Geleistet diese Woche/gesamt:</div>' +
'<div class="col-auto">' + p + "/" + pTotal + "</div>" +
"</div>" +
'<div class="row">' +
'<div class="col text-secondary">Bewilligt pro Woche/gesamt:</div>' +
'<div class="col-auto">' + a + "/" + aTotal + "</div>" +
"</div>" +
'<div class="row">' +
'<div class="col text-secondary">Frei pro Woche(Ø)/gesamt:</div>' +
'<div class="col-auto">' + f + "/" + fTotal + "</div>" +
"</div>"
);
} catch (error) {
logError(error.message);
}
});
$("#period-statistics-container").append("<hr/>");
}
});
}
function drawPieChart(v1, v2, free, used) {
var data = [
{
value: v1,
color: "#00FF00",
highlight: "#99FF00",
label: free
},
{
value: v2,
color: "#F7464A",
highlight: "#FF5A5E",
label: used
}
];
var options = {
scaleShowLabelBackdrop: true,
scaleBackdropColor: "rgba(255,255,255,0.75)",
scaleBeginAtZero: true,
scaleBackdropPaddingY: 2,
scaleBackdropPaddingX: 2,
scaleShowLine: true,
segmentShowStroke: true,
segmentStrokeColor: "#fff",
segmentStrokeWidth: 1,
animationSteps: 1,
animationEasing: "easeOutBounce",
responsive: true,
animateRotate: false,
animateScale: false,
legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\">" +
"<% for (var i=0; i<segments.length; i++){%>" +
"<li>" +
"<span style=\"background-color:<%=segments[i].fillColor%>\"></span>" +
"<%if(segments[i].label){%><%=segments[i].label%><%}%>" +
"</li><%}%>" +
"</ul>"
};
var context = $("#statistic-canvas").get(0).getContext("2d");
new Chart(context).Pie(data, options);
}