$(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 + ":
" + dit.omschrijving + "

" + 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 = $("
").append($('').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 });