Files
monpas/public/js/monpas/models/mondiv/diversiteitsmodel.js
T
2021-12-09 17:08:25 +01:00

680 lines
21 KiB
JavaScript

$(function(){
ls.initDiversiteitModel = function(module){
function fAddGroep(p){
var dit = this;
this.id = p.id;
this.naam = p.naam;
this.niveau = p.niveau;
this.ondersteuning = p.ondersteuning;
this.factor = ls.DiversiteitModel.normaantallen()[1];
if (this.niveau.indexOf('1') >= 0 || this.niveau.indexOf('2') >=0) { this.factor = ls.DiversiteitModel.normaantallen()[0]; }
this.totaantal = p.totaantal;
this.som2 = p.som2;
this.som3 = p.som3;
this.som4 = p.som4
this.som1 = p.totaantal - p.som2 - p.som3 - p.som4;
this.diversiteit = this.som1 + (1.5 * p.som2) + (2 * p.som3) + (4 * p.som4) ;
if (this.totaantal > 0) {
if (p.combi === 2) this.diversiteit = this.diversiteit + parseFloat(ls.DiversiteitModel.combifactor2());
if (p.combi >= 3) this.diversiteit = this.diversiteit + parseFloat(ls.DiversiteitModel.combifactor3());
}
this.combi = p.combi; // voor school moet straks ook gekeken worden of er bij een groep een combifactor is gebruikt
this.DQ = Math.round((this.diversiteit /this.factor) * 100) / 100;
this.tijden = ko.observableArray([]);
if (p.tijden){
$.each(p.tijden, function(j,tijd){
dit.tijden.push(new fAddTijd(tijd));
}); //each
}; // if p.tijden
this.tottijdInt = ko.computed(function(){
var totmin = 0;
$.each(this.tijden(), function(b,tijd){
totmin = totmin + parseInt(tijd.totminuten);
}); // each
return totmin;
},this);
this.tottijd = ko.computed(function(){
var tijdstring = "00:00 uur"
var totmin = 0;
$.each(this.tijden(), function(b,tijd){
totmin = totmin + parseInt(tijd.totminuten);
}); // each
var minuten = totmin % 60;
var uur = (totmin - minuten) / 60;
// tijdstring = ('0' + uur).slice(-2) + ":" + ('0' + minuten).slice(-2) + ' uur';
tijdstring = uur + ":" + ('0' + minuten).slice(-2) + ' uur';
return tijdstring;
},this);
}
function fAddOndersteuningsvorm(p){
var dit = this;
this.naam = p.naam;
this.nivo = p.nivo;
this.vormtotaal = p.vormtotaal
this.groepsaantallen = ko.observableArray([]);
if (p.groepsaantallen){
$.each(p.groepsaantallen, function(j,k){
dit.groepsaantallen.push(new fAddAantal(k));
})
}
}
function fAddAantal(p){
this.groepid = p.groep_id;
this.aantal = p.aantal;
}
function fAddTijd(p){
this.dagnr = p.dagnr
this.soort = p.soort;
this.totminuten = p.minuten;
this.minuten = p.minuten % 60;
this.uur = (p.minuten - this.minuten)/60;
this.tijdstring = p.soort + ': ' + this.uur + ":" + ('0' + this.minuten).slice(-2) ; // + ' uur';
}
if (ls.DiversiteitModel !== undefined){
ls.DiversiteitModel.initModel(module);
}
else {
ls.DiversiteitModel = {
groepen : ko.observableArray([]),
schoolid : ko.observable(),
schooltotaal : ko.observable(0),
schoolsom1 : ko.observable(0),
schoolsom2 : ko.observable(0),
schoolsom3 : ko.observable(0),
schoolsom4 : ko.observable(0),
schooldiversiteit : ko.observable(0),
schoolDQ : ko.observable(0),
ondersteuningsvormen: ko.observableArray([]),
lijnAt : ko.observable(137),
BC6 : null,
groepstijden : ko.observableArray([]),
schoolTijd : ko.observable(0),
schoolTijdstring : ko.observable(''),
totGstring : ko.observable(''),
totSstring : ko.observable(''),
totIstring : ko.observable(''),
normaantallen : ko.observableArray([22,24]),
combifactor2 : ko.observable(1.5),
combifactor3 : ko.observable(2.5),
addtoschool : ko.observable(false),
module : ko.observable(),
ondersteuningSchool : ko.observable(true),
initBindings :function(){
var self = ls.DiversiteitModel;
if (!ko.dataFor(document.getElementById('pagdiversiteit')) ) {
ko.applyBindings(ls.DiversiteitModel, document.getElementById("pagdiversiteit"));
}
self.initModel(module);
},
initModel: function(module){
var self = ls.DiversiteitModel;
var gewogensom = 0;
var totG = 0;
var totS = 0;
var totI = 0;
self.schoolid(ls.MenuModel.selectedSchool().id);
self.module(module);
var schooltype = 'REGULIER';
$.post("index.php/monpas/diversiteit/getnormaantallen/" + self.schoolid() + "/" + schooltype, function(result){
if (result.normaantallen){
self.normaantallen([]);
self.normaantallen.push(result.normaantallen.groep12);
self.normaantallen.push(result.normaantallen.groep38);
}
else {self.normaantallen([22,24]); };
if (result.combifactoren){
self.combifactor2(result.combifactoren.combi2);
self.combifactor3(result.combifactoren.combi3);
if (result.combifactoren.addtoschool=="T"){
self.addtoschool(true);
}else{
self.addtoschool(false);
}
}
else {
self.combifactor2(1.5);
self.combifactor3(2.5);
self.addtoschool(false);
}
var submitData = {
'orgID': self.schoolid(),
'schooljaar': ls.MenuModel.selectedSchooljaar().schooljaarnr,
'module': self.module()
}
$.post("index.php/monpas/diversiteit/getgroepen", submitData , function(data){
self.groepen.removeAll();
self.ondersteuningSchool(true);
self.schooltotaal(0);
self.schoolsom1(0);
self.schoolsom2(0);
self.schoolsom3(0);
self.schoolsom4(0);
self.schooldiversiteit(0);
self.schoolDQ(0);
self.schoolTijd(0);
self.ondersteuningsvormen.removeAll();
if (data){
$.each(data, function(i,p){
if(p.ondersteuning == 'F'){
self.ondersteuningSchool(false);
}
self.groepen.push(new fAddGroep(p));
});//each
var combiwaarde = 0;
$.each(self.groepen(), function(i,p){
self.schooltotaal(self.schooltotaal() + parseInt(p.totaantal));
self.schoolsom1(self.schoolsom1() + parseInt(p.som1));
self.schoolsom2(self.schoolsom2() + parseInt(p.som2));
self.schoolsom3(self.schoolsom3() + parseInt(p.som3));
self.schoolsom4(self.schoolsom4() + parseInt(p.som4));
combiwaarde =0;
// if (self.addtoschool()){
self.combifactor2(result.combifactoren.combi2);
self.combifactor3(result.combifactoren.combi3);
if (p.combi=== 2) combiwaarde = self.combifactor2();
if (p.combi >= 3) combiwaarde = self.combifactor3();
// }
self.schooldiversiteit(Number(self.schooldiversiteit()) + parseFloat(p.som1) + (parseFloat(p.som2) *1.5) + (parseFloat(p.som3) * 2) + (parseFloat(p.som4) *4));
if(Number(self.schooldiversiteit() > 0 && combiwaarde > 0)) {
self.schooldiversiteit(Number(self.schooldiversiteit()) + Number(combiwaarde))}
self.schoolTijd (parseInt(self.schoolTijd()) + parseInt(p.tottijdInt()));
gewogensom = gewogensom + parseInt(p.factor);
if (p.tijden){
$.each(p.tijden(), function(c,tijd){
switch (tijd.soort){
case "G" : totG = parseInt(totG) + parseInt(tijd.totminuten); break;
case "S" : totS = parseInt(totS) + parseInt(tijd.totminuten); break;
case "I" : totI = parseInt(totI) + parseInt(tijd.totminuten); break;
}
}); // each
}; // if p.tijden
}); // each
if(Number(self.schooldiversiteit()=== 0)) {
apprise('geen ondersteuning gevonden');
return;
}
self.schoolDQ(Math.round((self.schooldiversiteit() / gewogensom) * 100 ) / 100);
var minuten = self.schoolTijd() % 60;
var uur = (self.schoolTijd() - minuten) / 60;
self.schoolTijdstring( uur+ ":" + ('0' + minuten).slice(-2) + ' uur');
minuten =totG % 60;
uur = (totG - minuten)/ 60;
self.totGstring ( uur+ ":" + ('0' + minuten).slice(-2) + ' uur');
minuten =totS % 60;
uur = (totS - minuten)/ 60;
self.totSstring( uur + ":" + ('0' + minuten).slice(-2) + ' uur');
minuten =totI % 60;
uur = (totI - minuten)/ 60;
self.totIstring( uur + ":" + ('0' + minuten).slice(-2) + ' uur');
var submitData={
'orgid' : self.schoolid(),
'schooljaarnr' : ls.MenuModel.selectedSchooljaar().schooljaarnr,
'module': self.module(),
'minnivo' : 2,
'maxnivo' : 4
}
$.post("index.php/monpas/diversiteit/getondersteuningsvormen/",submitData, function(data){
self.ondersteuningsvormen.removeAll();
if (data){
$.each(data, function(j,k){
self.ondersteuningsvormen.push(new fAddOndersteuningsvorm(k));
});//each
}; // if data
self.fFillGraph();
},'json');
}; // if data
},'json');
},'json'); // get aantallen
},
fFillGraph(){
var self = ls.DiversiteitModel;
var scores= [];
var labels = [];
var counter = 0;
$.each(self.groepen(), function(i,p){
scores[i] = p.DQ === 0 ? null : Number(p.DQ );
labels[i] = p.naam;
counter = counter + 1;
});
labels[counter]='school';
scores[counter]= self.schoolDQ() === 0? null: Number(self.schoolDQ());
Highcharts.chart('dqpergroep', {
chart: {
type: 'column',
backgroundColor: '#ffffff',
},
title: {
text: 'Diversiteitsquotiënt per groep'
},
credits:{
enabled: false
},
xAxis: {
categories: labels,
},
yAxis: {
min: 0,
tickInterval: 0.2,
title: {
text: 'DQ'
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">groep: {point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f}</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
legend: {
enabled: false,
},
series: [{
name: 'dq',
color: '#6F0B3D',
data: scores
}],
plotOptions: {
series: {
pointWidth: null,
pointPadding: 0,
}
},
});
Highcharts.chart('dqpergroep3d', {
chart: {
type: 'column',
backgroundColor: '#ffffff',
options3d: {
enabled: true,
alpha: 15,
beta: 15,
depth: 50,
viewDistance: 25
}
},
title: {
text: 'Diversiteitsquotiënt per groep'
},
credits:{
enabled: false
},
xAxis: {
categories: labels,
},
yAxis: {
min: 0,
tickInterval: 0.2,
title: {
text: 'DQ'
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">groep: {point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f}</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
legend: {
enabled: false,
},
series: [{
name: 'dq',
color: '#6F0B3D',
data: scores
}],
plotOptions: {
series: {
pointWidth: null,
pointPadding: 0,
}
},
});
},
// fFillGraph: function(){
// var self = ls.DiversiteitModel;
// var scores =[];
// var slabels =[];
// var counter = 0;
// // var aantalgroepen = self.groepen().length + 1;
// // var bartussenruimte = (580 - (80 * aantalgroepen))/aantalgroepen ;
// // if (bartussenruimte <=0 ) bartussenruimte = 4;
// bartussenruimte = 5;
//
// $.each(self.groepen(), function(i,p){
// scores[i] = p.DQ;
// slabels[i] = p.naam;
// counter = counter + 1;
// });
// slabels[counter]='school';
// scores[counter]=self.schoolDQ();
// if (self.BC6 ) {self.BC6.destroy(); }
//
// $("#cdiversiteit").remove();
//
// var canv = document.createElement('canvas');
// canv.id = 'cdiversiteit';
// canv.width = 580;
// canv.height = 285;
// document.getElementById('diversiteitcanvasholder').appendChild(canv);
//
// var ctxDiversiteit=$("#cdiversiteit").get(0).getContext("2d");
//
// var data6 = {labels :slabels,
// datasets: [{fillColor: "rgba(147,15,80,0.9)",
// strokeColor: "rgba(111,11,61,1)",
// highlightStroke: "rgba(222,22,123,1)",
// data: scores},
// ]}
//
// Chart.types.Bar.extend({
// name: "LineAlt",
// initialize: function () {
//
// Chart.types.Bar.prototype.initialize.apply(this, arguments);
// },
// draw: function () {
//
// Chart.types.Bar.prototype.draw.apply(this, arguments);
// // this.chart.ctx.beginPath();
// // this.chart.ctx.moveTo(30,137);
// // this.chart.ctx.lineTo(580, 137);
// // this.chart.ctx.stroke();
// // this.chart.ctx.closePath();
// }
// });
//
// self.BC6 = new Chart(ctxDiversiteit).LineAlt(data6,{
// animation:false,
// scaleFontFamily: "'lato','Arial'",
// scaleColor:"rgba(0,0,0,1)",
// scaleShowGridLines:true,
// scaleLineColor:"rgba(0,0,0,1)",
// scaleOverride: true,
// scaleBeginAtZero :true,
// scaleSteps: 25,
// scaleStepWidth: 0.2,
// scaleStartValue: 0 ,
// barValueSpacing: bartussenruimte,
// barStrokeWidth:1,
// barDatasetSpacing:2,
// toottipFontFamily:"'lato','Arial'",
// showTooltips : true,
// tooltipTemplate: "<%= label %> : <%= value %>"
// });
//
// },
fPrintDiversiteitBar :function(){
var self = ls.DiversiteitModel;
var base64 = self.BC6.toBase64Image();
var data = { 'orgid' : self.schoolid(),
'schooljaarnr': ls.MenuModel.selectedSchooljaar().schooljaarnr,
'image' : base64};
data=JSON.stringify(data);
var $form = $("<form method='post' action='index.php/monpas/diversiteit/pdfdiversiteitbar' target='_blank'>").append($('<input type = "hidden" name="data" id ="data">').val(data) );
$form.appendTo("body").submit();
},
fPrintLeerlingaantallen: function(){
var self =ls.DiversiteitModel;
var schoolid = self.schoolid();
var schooljaarnr = ls.MenuModel.selectedSchooljaar().schooljaarnr;
var submiturl="index.php/monpas/diversiteit/printaantallen/" + schoolid + '/' + schooljaarnr;
window.open(submiturl);
},
fPrintQuotienten: function(){
var self=ls.DiversiteitModel;
var schoolid = self.schoolid();
var schooljaarnr = ls.MenuModel.selectedSchooljaar().schooljaarnr;
var quot= [];
if (self.groepen){
$.each(self.groepen(), function(i,p){
quot.push({'groep': p.naam, 'quotient': p.DQ});
})
}
quot.push({'groep': 'school', 'quotient': self.schoolDQ()});
var data={'orgid' : schoolid,
"schooljaarnr" : schooljaarnr,
"groepen" : quot }
var submitUrl = "index.php/monpas/diversiteit/printquotienten/?json=" + JSON.stringify(data);
window.open(submitUrl);
},
fPrintOndersteuningsmatrix :function(){
var self = ls.DiversiteitModel;
var groeparray=[];
if (self.groepen()){
$.each(self.groepen(), function(i,groep){
groeparray[i]={groep : groep.naam,
DQ : groep.DQ,
tottijd : groep.tottijd(),
tijden : groep.tijden()};
});
}
var schoolid = self.schoolid();
var schooljaarnr = ls.MenuModel.selectedSchooljaar().schooljaarnr;
var data={ 'orgid' : schoolid,
"schooljaarnr" : schooljaarnr,
"groepen" : groeparray,
"schoolDQ" : self.schoolDQ(),
"schooltot" : self.schoolTijdstring() }
var submitUrl = "index.php/monpas/diversiteit/printondersteuningsmatrix/?json=" + JSON.stringify(data);
window.open(submitUrl);
},
fPrintOndersteuningstotalen: function(){
var self= ls.DiversiteitModel;
var schoolid = self.schoolid();
var schooljaarnr = ls.MenuModel.selectedSchooljaar().schooljaarnr;
var tots = [self.totGstring(), self.totSstring(), self.totIstring()];
var data={'orgid' : schoolid,
"schooljaarnr" : schooljaarnr,
"totalen" : tots }
var submitUrl = "index.php/monpas/diversiteit/printtotaaltijden/?json=" + JSON.stringify(data);
window.open(submitUrl);
},
fPrintDiversiteitMatrix: function(){
var self=ls.DiversiteitModel;
var schoolid = self.schoolid();
var schooljaarnr = ls.MenuModel.selectedSchooljaar().schooljaarnr;
var regels1 = [];
var kolommen = [];
kolommen[0]=' ';
var i = 1;
for (i=1; i<=self.groepen().length; i++){
kolommen.push(self.groepen()[i-1].naam);
}
kolommen.push( "Schooltotaal");
regels1.push(kolommen);
kolommen = [];
kolommen[0]="Totaal aantal leerlingen";
for (i=1; i<=self.groepen().length; i++){
kolommen.push(self.groepen()[i-1].totaantal);
}
kolommen.push( self.schooltotaal());
regels1.push(kolommen);
kolommen=[];
kolommen[0]="Uitsplitsing onderwijsvraag per groep";
regels1.push(kolommen);
kolommen=[];
kolommen[0]="Basisondersteuning";
regels1.push(kolommen);
kolommen=[];
kolommen[0] = "Totaal";
for (i=1; i<=self.groepen().length; i++){
kolommen.push(self.groepen()[i-1].som1);
}
kolommen.push( self.schoolsom1());
regels1.push(kolommen);
regels2=[];
kolommen=[]
kolommen[0]="Basisondersteuning-plus";
regels2.push(kolommen);
$.each(self.ondersteuningsvormen(), function(j, vorm){
if (vorm.nivo == 2){
kolommen=[]
kolommen[0]=vorm.naam;
$.each(vorm.groepsaantallen(), function(k,aantal){
kolommen.push(aantal.aantal);
}); // each aantallen
kolommen.push(vorm.vormtotaal);
regels2.push(kolommen);
}
});// each ondersteuningsvormen
kolommen=[];
kolommen[0]="Totaal";
$.each(self.groepen(), function(c, groep){
kolommen.push(groep.som2);
});// foreach groepen
kolommen.push(self.schoolsom2());
regels2.push(kolommen);
regels3=[];
kolommen=[]
kolommen[0]="Extra ondersteuning";
regels3.push(kolommen);
$.each(self.ondersteuningsvormen(), function(j, vorm){
if (vorm.nivo == 3){
kolommen=[]
kolommen[0]=vorm.naam;
$.each(vorm.groepsaantallen(), function(k,aantal){
kolommen.push(aantal.aantal);
}); // each aantallen
kolommen.push(vorm.vormtotaal);
regels3.push(kolommen);
}
});// each ondersteuningsvormen
kolommen=[];
kolommen[0]="Totaal";
$.each(self.groepen(), function(c, groep){
kolommen.push(groep.som3);
});// foreach groepen
kolommen.push(self.schoolsom3());
regels3.push(kolommen);
regels4=[];
kolommen=[]
kolommen[0]="Extra ondersteuning-plus";
regels4.push(kolommen);
$.each(self.ondersteuningsvormen(), function(j, vorm){
if (vorm.nivo == 4){
kolommen=[]
kolommen[0]=vorm.naam;
$.each(vorm.groepsaantallen(), function(k,aantal){
kolommen.push(aantal.aantal);
}); // each aantallen
kolommen.push(vorm.vormtotaal);
regels4.push(kolommen);
}
});// each ondersteuningsvormen
kolommen=[];
kolommen[0]="Totaal";
$.each(self.groepen(), function(c, groep){
kolommen.push(groep.som4);
});// foreach groepen
kolommen.push(self.schoolsom4());
regels4.push(kolommen);
regels5=[];
kolommen=[]
kolommen[0]="Totale diversiteit per groep";
$.each(self.groepen(), function(j, groep){
kolommen.push(groep.diversiteit);
});// each ondersteuningsvormen
kolommen.push(self.schooldiversiteit());
regels5.push(kolommen);
kolommen=[];
kolommen[0]="DQ's";
$.each(self.groepen(), function(c, groep){
kolommen.push(groep.DQ);
});// foreach groepen
kolommen.push(self.schoolDQ());
regels5.push(kolommen);
var data={ 'orgid' : schoolid,
'schooljaarnr' : schooljaarnr,
'regels1' : regels1,
'regels2' : regels2,
'regels3' : regels3,
'regels4' : regels4,
'regels5' : regels5}
data=JSON.stringify(data);
var $form = $("<form method='post' action='index.php/monpas/diversiteit/printdiversiteitmatrix' target='_blank'>").append($('<input type = "hidden" name="data" id ="data">').val(data) );
$form.appendTo("body").submit();
}
} ; // definition van model
ls.DiversiteitModel.initBindings();
}; // else
}// function initDiversiteitModel
});