Files
monpas/public/js/monpas/models/matrixmodel.js
T
2023-07-03 13:10:11 +02:00

472 lines
13 KiB
JavaScript

$(function () {
function fAddSWV(p) {
var dit = this;
this.id = p.id;
this.soort = p.soort;
this.naam = p.naam;
this.plaats = p.plaats;
this.geopend = ko.observable(false);
dit.kamers = ko.observableArray([]);
if (p.kamers) {
$.each(p.kamers, function (j, k) {
dit.kamers.push(new fAddKamer(k));
})
}
}
function fAddKamer(p) {
var dit = this;
this.id = p.id;
this.soort = p.soort
this.naam = p.naam
this.plaats = p.plaats
this.geopend = ko.observable(false);
this.bgs = ko.observableArray([]);
if (p.bgs) {
$.each(p.bgs, function (x, z) {
dit.bgs.push(new fAddBG(z));
})
}
}
function fAddBG(p) {
var dit = this;
this.id = p.id;
this.soort = p.soort
this.naam = p.naam
this.plaats = p.plaats
this.geopend = ko.observable(false);
this.scholen = ko.observableArray([]);
if (p.scholen) {
$.each(p.scholen, function (a, b) {
dit.scholen.push(new fAddSchool(b));
})
}
}
function fAddSchool(p) {
var dit = this;
this.id = p.id;
this.soort = p.soort
this.naam = p.naam
this.brin = p.brin
this.plaats = p.plaats
}
function fAddOrgversion(p) {
this.id = p.id; //orgversion id
this.periodenummer = p.periodenummer
this.versie_id = p.versie_id
this.vorm = p.vorm
var wijik = "schoolversie";
if(p.vorm == 2){
wijik = "individuele versie"
}
this.scoretype = p.scoretype
var scoreomschrijving = p.scoreomschrijving;
if(p.scoreomschrijving == 'included/involved/present/absent')
scoreomschrijving = 'inc/inv/pre/abs'
this.scoreomschrijving = scoreomschrijving;
this.naam = p.naam;
this.geldigvanaf = p.geldigvanaf;
this.geldigtm = p.geldigtm;
this.invullentm = p.invullentm;
this.info = ko.computed(function(){
var versieInfostr=this.naam;
versieInfostr += "- periode " + this.periodenummer +
", scoretype: " + this.scoreomschrijving + ", "+ wijik +
", " + this.geldigvanaf + " t/m " + this.geldigtm;
return versieInfostr;
}
,this)
}
function fAddIndeling(p) {
var dit = this;
this.id = p.waardeid;
this.naam = p.naam
this.volgorde = p.volgorde;
this.organisaties = ko.observableArray([]);
if (p.users) {
$.each(p.users, function (j, k) {
dit.organisaties.push(new fAddOrgIndeling(k));
})
}
}
function fAddOrgIndeling(k) {
var dit = this;
this.subject = k.fullname;
this.naamkort = k.naamkort;
this.brin = '';
if (k.brin) this.brin = k.brin;
this.fvid = k.filledversionid;
this.results = ko.observableArray([]);
if (k.scores) {
$.each(k.scores, function (j, k) {
dit.results.push(new fAddResult(k));
})
}
}
function fAddIJkpunt(p) {
this.nummer = p.nummer;
this.omschrijving = p.omschrijving;
this.toelichting = p.toelichting;
}
function fAddResult(k) {
if (k.gem === '' || isNaN(k.gem) || k.gem === null) {
this.gem = 0;
}
else {
this.gem = Math.round(parseFloat(k.gem));
}
this.num = k.nummer;
// this.colorcode = '#e08885';
this.colorcode = k.kleur ? k.kleur : "#cccccc";
if (k.disabled == "T" || k.disablenvt == "T") {
this.gem='';
this.colorcode="#cccccc";
}
}
function fAddCriteria(c) {
var dit = this;
this.criteriumid = ko.observable(c.id);
this.naam = ko.observable(c.naam);
}
ls.initMatrixModel = function () {
if (ls.MatrixModel !== undefined) {
ls.MatrixModel.initModel();
}
else {
ls.MatrixModel = {
bgs : ko.observableArray([]),
erzijnscores : ko.observable(false),
ijkpunten : ko.observableArray([]),
toporg : ko.observableArray([]),
criteria : ko.observableArray([]),
indelingen : ko.observableArray([]),
selectedOrg : ko.observable(''),
orgsoort : ko.observable(1),
orgversions : ko.observableArray([]),
selectedOrgversion : ko.observable(''),
selectedCriterium : ko.observable(0),
versievorm : ko.observable(''),
kleurlegenda : ko.observable(''),
inzage : ko.observable(),
invulid : ko.observable(''),
aantalY : ko.observable(0),
bezig : ko.observable(false),
druk : ko.observable(false),
data : ko.observable(false),
ijknummer :ko.observable('ijkpuntnummer'),
kolombreedte : ko.pureComputed(function(){
var row = 708;
var orgbreedte = 250
var aantal = 16;
if(ls.MatrixModel.aantalY()){
aantal = ls.MatrixModel.aantalY()+1;
}
var breedte = Math.floor((row - orgbreedte)/aantal);
return breedte;
}),
orgbreedtehead : ko.pureComputed(function(){
var aantal = 16;
if(ls.MatrixModel.aantalY()){
aantal = ls.MatrixModel.aantalY()+1;
}
orgpassend = Math.floor(700 - (aantal * ls.MatrixModel.kolombreedte()))
return orgpassend;
}),
orgbreedtebody : ko.pureComputed(function(){
var aantal = 16;
if(ls.MatrixModel.aantalY()){
aantal = ls.MatrixModel.aantalY()+1;
}
var orgpassend = Math.floor(710- (aantal * ls.MatrixModel.kolombreedte()))
return orgpassend;
}),
initBindings: function () {
var self = ls.MatrixModel;
if (!ko.dataFor(document.getElementById('pagmatrix'))) {
ko.applyBindings(ls.MatrixModel, document.getElementById("pagmatrix"));
}
self.initModel();
},
initModel: function () {
var self = ls.MatrixModel;
self.toporg('');
self.fCheckInzageRecht();
$.post("index.php/monpas/rapijkpunten/getorgs", function (data) {
if (data.organisatie) {
self.orgsoort(data.soort);
switch (self.orgsoort()) {
case 1:
self.toporg(new fAddSWV(data.organisatie));
break;
case 2:
self.toporg(new fAddKamer(data.organisatie));
break;
case 3:
self.toporg(new fAddBG(data.organisatie));
break;
case 4:
self.toporg(new fAddSchool(data.organisatie));
break;
}
self.selectedOrg(self.toporg());
self.fSwitchLevel();
}
}, 'json');
},
fCheckInzageRecht: function () {
var self = ls.MatrixModel;
$.post("index.php/monpas/rapmatrix/checkinzage/", function (data) {
if (data) {
self.inzage(data.rol);
self.ijknummer(data.label)
}
}, 'json');
},
fSwitchOrg: function () {
var self = ls.MatrixModel;
if (self.selectedOrg() == undefined) return;
if (this.id == self.selectedOrg().id) return;
self.selectedOrg(this);
self.orgversions.removeAll();
self.fSwitchLevel();
},
fSwitchLevel: function () {
var self = ls.MatrixModel;
if (self.selectedOrg() == undefined) return;
var versieid = null;
if(self.selectedOrgversion() != undefined ) {
versieid = self.selectedOrgversion().id;
}
$.post("index.php/monpas/rapijkpunten/getperiodes3/" + self.selectedOrg().id, function (data) {
// ls: hier self bezig toegevoegd en later weer op false gezet zodat de functie fChangeVersion2 niet
// wordt aangeroepen voor dat alle orgversions zijn ingelezen en selectedOrgversion is gezet.
self.bezig(true);
self.orgversions.removeAll();
if (data) {
$.each(data, function (i, p) {
self.orgversions.push(new fAddOrgversion(p));
})
if(versieid != null ){
$.each(self.orgversions(), function (i, q) {
if (q.id == versieid) {
self.selectedOrgversion(q);
return false;
}
});
}
if(self.selectedOrg().soort == 4) {
self.bezig(false);
self.fChangeVersion2();
}
else {
self.fGetCriteria();
}
}
}, 'json')
.always(self.bezig(false) );
},
fToggleGeopend: function () {
this.geopend(!this.geopend());
},
fCheckOwner: function () {
var self = ls.MatrixModel;
var submitData = {
"orgversieid" : self.selectedOrgversion().id,
"orgid" : self.selectedOrg().id,
}
// hideAjaxLoader();
$.post("index.php/monpas/rapmatrix/checkowner/", submitData, function (data) {
if (data) {
self.invulid(parseInt(data));
}
}, 'json');
},
// fSwitchOrg: function () {
// var self = ls.MatrixModel;
//
// if (self.selectedOrg() == undefined) return;
// if (this.id == self.selectedOrg().id) return;
// self.selectedOrg(this);
// self.fSwitchLevel();
// },
fGetCriteria: function(){
var self = ls.MatrixModel;
var submitData ={
'orgid' : self.selectedOrg().id,
'orgsoort' : self.selectedOrg().soort
}
$.post("index.php/monpas/rapmatrix/getCriteriaSWV", submitData, function(results) {
self.druk(true);
self.criteria.removeAll();
if (results) {
$.each(results, function (i, c) {
self.criteria.push(new fAddCriteria(c));
if (c.id == 1000) {
self.selectedCriterium(c.id);
return false;
}
}); // each
}
self.druk(false);
self.fChangeCriterium();
},'json')
.always(self.druk(false), self.bezig(false));
},
fChangeCriterium: function(){
var self = ls.MatrixModel;
if (self.selectedOrgversion() == undefined) return;
if (self.druk() ) return;
self.fHaalScoresOp();
},
fChangeVersion2: function () {
var self = ls.MatrixModel;
if (self.selectedOrgversion() == undefined) return;
if (self.bezig() ) return;
self.fHaalScoresOp();
},
fHaalScoresOp: function(){
var self = ls.MatrixModel;
var dit = this;
if (self.druk() ) return;
var sorteerid = 0;
if(self.selectedCriterium())
{
sorteerid = self.selectedCriterium().criteriumid();
}
var submitData = {
'orgid' : self.selectedOrg().id,
'orgsoort' : self.selectedOrg().soort,
'toporg' : self.toporg().soort,
'criteriumid' : sorteerid,
'orgversieid' : self.selectedOrgversion().id,
}
// showAjaxLoader();
$.post("index.php/monpas/rapmatrix/haalScoresOp", submitData, function(results) {
self.data(false);
self.indelingen.removeAll();
self.ijkpunten.removeAll();
if (results) {
self.erzijnscores(results.erzijnscores);
if(!self.erzijnscores()){
apprise("Er is nog geen lijst ingevuld bij dit instrument");
return;
}
else {
self.data(true);
$.each(results.labels, function (i, p) {
self.indelingen.push(new fAddIndeling(p));
}); // each
self.fCheckOwner();
$.each(results.ijkpunten, function (i, p) {
self.ijkpunten.push(new fAddIJkpunt(p));
}); // each
self.aantalY(results.aantalY);
self.versievorm(results.vorm);
self.kleurlegenda(results.kleurtabel);
}
}
}, 'json').always(function(){
hideAjaxLoader() } );
},
fToonToelichting: function () {
var self = ls.MatrixModel;
var dit = this;
apprise("Toelichting bij ijkpunt " + dit.nummer + ":<br/><i>" + dit.omschrijving + "</i><br/><hr/> " + dit.toelichting);
},
fPrint:function(){
var self =ls.MatrixModel;
if (self.bezig()) return;
self.bezig(true);
var criterium= null;
if(self.selectedCriterium()){
criterium = self.selectedCriterium().naam();
}
var indelingen = ko.toJSON(self.indelingen());
var ijkpunten = ko.toJSON(self.ijkpunten);
var data ={
'orgversie' : self.selectedOrgversion(),
'criterium' : criterium,
'organisatie' : self.selectedOrg(),
'indelingen' : indelingen,
'ijkpunten' : ijkpunten,
'invulid' : self.invulid(),
'inzage' : self.inzage(),
'kopbreedte' : self.orgbreedtehead(),
'orgbreedte' : self.orgbreedtebody(),
'kolombreedte' : self.kolombreedte(),
}
data=JSON.stringify(data);
var $form = $("<form method='post' action='index.php/monpas/rapmatrix/printmatrix' target='_blank'>").append($('<input type = "hidden" name="data" id ="data">').val(data) );
$form.appendTo("body").submit();
self.bezig(false);
},
}; // definition van model
ls.MatrixModel.initBindings();
ls.MatrixModel.showMatrix= ko.pureComputed(function () {
var self = ls.MatrixModel;
if (self.versievorm() != 2) return 'AlleRijen';
if (self.selectedOrg().soort != 4) return 'AlleRijen';
if (self.inzage() == 256) return 'AlleRijen';
if (self.inzage() < 256) return 'GemiddeldeVanInd';
if (self.inzage() > 256) return 'EigenEnGemiddelde';
return '';
});
}
; // else
}// function initMatrixModel
});