Files
monpas/public/js/monpas/models/sorteringmodel.js
T
2021-07-10 16:25:16 +02:00

444 lines
11 KiB
JavaScript

$(function(){
mh.initSorteringModel = function(){
function fAddSWV(p) {
this.id = p.id;
this.soort = p.soort
this.naam = p.naam
}
function fAddSWVIndeling(p) {
var dit = this;
this.kamers = ko.observableArray([]),
this.id = p.id;
this.soort = p.soort
this.naam = p.naam
if (p.kamers) {
$.each(p.kamers, function (x, z) {
dit.kamers.push(new fAddKamer(z));
})
}
}
function fAddKamer(p) {
var dit = this;
this.id = p.id;
this.soort = p.soort
this.naam = p.naam
this.plaats = p.plaats
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.indelingen = ko.observableArray([]);
if (p.scholen) {
$.each(p.scholen, function (a, b) {
dit.indelingen.push(new fAddSchoolIndeling(b));
})
}
}
function fAddSchoolIndeling(s ) {
var dit = this;
this.schoolid = s.id;
this.soort = s.soort;
this.naam = s.naam;
this.naamkort = s.naamkort;
this.brin = s.brin;
this.plaats = s.plaats;
this.criteriumid = s.criteriumid;
this.selectedOptie = ko.observable(null);
this.opties = ko.observableArray('');
var school = s.id;
var gekozenid = s.indeling.waardeid;
if(s.opties){
var lengte = s.opties.length;
if(s.indeling.waardeid == s.opties){
}
}
if (s.opties) {
$.each(s.opties, function (i, o) {
dit.opties.push(new fAddOptie(o, i, lengte, school, gekozenid));
if(o.waardeid == s.indeling.waardeid){
dit.selectedOptie(o.waardeid)
}
})
}
}
function fAddOptie(o, i, lengte, school, gekozenid){
var dit = this;
this.optie = o.naam;
this.waardeid = o.waardeid;
var school = school;
var gekozenid = gekozenid;
this.selectedSchool = ko.observable(school);
this.gekozenid = ko.observable(gekozenid);
this.kolombreedte2 = ko.pureComputed(function(){
var breedte = 0;
var kolom1= 210;
var tabel = 1000;
var min = (tabel - kolom1)/lengte;
var max = 210;
min > max ? breedte = max : breedte = min;
breedte = breedte + 'px';
return breedte;
})
}
function fAddCriteria(c){
var dit = this;
var lengte = c.labels.length;
this.criteriumid = c.id;
this.swvid = c.swv_id;
this.criterium = ko.observable(c.naam);
this.criteriumoud = ko.observable(c.naam);
this.labels = ko.observableArray([]);
if (c.labels) {
$.each(c.labels, function (j, l) {
dit.labels.push(new fAddLabels( l, j, lengte));
})
}
}
function fAddLabels(l, j, lengte){
var dit = this;
this.index = j;
this.waardeid = l.waardeid;
this.sorteringid = l.sorteringid;
this.label = ko.observable(l.naam);
this.volgorde = l.volgorde;
this.kolombreedte = ko.pureComputed(function(){
var breedte = 0;
var kolom1 = 210;
var tabel = 1000;
var min = (tabel - kolom1)/lengte;
var max = 210;
min > max ? breedte = max : breedte = min;
breedte = breedte + 'px';
return breedte;
})
}
if (mh.SorteringModel !== undefined){
mh.SorteringModel.initModel();
}
else {
mh.SorteringModel = {
swvs : ko.observableArray([]),
criteria : ko.observableArray([]),
nieuweLabels : ko.observableArray([]),
swvindeling : ko.observable(''),
selectedSWV : ko.observable(''),
selectedCriterium : ko.observable(''),
selectedLabel : ko.observable(''),
nieuwCriterium : ko.observable(''),
nieuwLabel1 : ko.observable(''),
nieuwLabel2 : ko.observable(''),
toonIndeling : ko.observable(false),
legelabels : ko.observable(false),
kolom1 : ko.pureComputed(function(){
var aantal = 0
var kolom1 = 210
if(mh.SorteringModel.selectedCriterium().labels> 0){
aantal = mh.SorteringModel.selectedCriterium().labels.length;
var tabel = 1000;
var breedte = (tabel - kolom1)% aantal + kolom1;
kolom1 = breedte;
}
kolom1 = kolom1 + 'px';
return kolom1;
}),
initBindings :function(){
var self = mh.SorteringModel;
if (!ko.dataFor(document.getElementById('pagSortering')) ) {
ko.applyBindings(mh.SorteringModel, document.getElementById("pagSortering"));
}
self.initModel();
},
initModel: function(){
var self =mh.SorteringModel;
self.swvs.removeAll();
$.post("index.php/shared/organisaties/getorgsperlevel/1", function(data){
if (data){
$.each(data, function(i,p){
self.swvs.push(new fAddSWV(p));
});
}
self.fToonSortering();
},'json');
},
fChangeSWV : function(){
var self = mh.SorteringModel;
self.fSluitIndeling();
self.fToonSortering();
},
fToonSortering: function(){
var self = mh.SorteringModel;
var dit = this;
var swvid = dit.selectedSWV().id
dit.criteria.removeAll();
$.post("index.php/monpas/sortering/getsortering/" + swvid, function(data){
dit.criteria.removeAll();
if (data){
$.each(data, function(i,c){
self.criteria.push(new fAddCriteria(c));
});
}
},'json');
},
fMaakSortering: function(){
var self = mh.SorteringModel;
var dit = this;
},
fNieuwCriterium: function(){
var self = mh.SorteringModel;
var dit = this;
$("#nieuwCriterium").modal('show');
},
fNieuwLabel: function(){
var self = mh.SorteringModel;
var dit = this;
self.nieuweLabels.push({nieuwLabel:ko.observable('')});
},
fSaveCriterium: function(){
var self = mh.SorteringModel;
var dit = this;
if(!self.nieuwCriterium()){
apprise("Vul eerst een criterium in.");
return;
}
if(!self.nieuwLabel1() || !self.nieuwLabel2() ){
apprise("Vul eerst twee waarden in.");
return;
}
if(self.nieuweLabels()){
for(var i = 0; i < self.nieuweLabels().length; i++ ){
if(self.nieuweLabels()[i].nieuwLabel()==''){
self.nieuweLabels.splice(i,1)
}
}
}
var submitData = {
'swvID' : self.selectedSWV().id,
'criterium' : self.nieuwCriterium(),
'label1' : self.nieuwLabel1(),
'label2' : self.nieuwLabel2(),
'labelArray' : self.nieuweLabels(),
}
$.post("index.php/monpas/sortering/saveCriterium/", submitData, function (data) {
if (data) {
self.fToonSortering();
self.nieuwCriterium('');
self.nieuwLabel1('');
self.nieuwLabel2('');
self.nieuweLabels([]);
}
}, 'json');
$("#nieuwCriterium").modal('hide');
},
fSaveEdit: function(){
var self = mh.SorteringModel;
var dit = this;
if(!self.selectedCriterium().criterium()){
apprise("Vul eerst een criterium in.");
self.selectedCriterium().criterium(self.selectedCriterium().criteriumoud());
return;
}
if(self.selectedCriterium().labels().length < 2){
apprise("Vul de eerste twee waarden in.");
return;
}
if(self.nieuweLabels()){
for(var i = 0; i < self.nieuweLabels().length; i++ ){
if(self.nieuweLabels()[i].nieuwLabel()==''){
self.nieuweLabels.splice(i,1)
}
}
}
var submitData = {
'swvID' : self.selectedSWV().id,
'criteriumid': self.selectedCriterium().criteriumid,
'criterium' : self.selectedCriterium().criterium(),
'labels' : self.selectedCriterium().labels(),
'labelArray' : self.nieuweLabels(),
}
$.post("index.php/monpas/sortering/editCriterium/", submitData, function (data) {
if (data) {
self.selectedCriterium().labels.removeAll();
self.nieuweLabels.removeAll;
self.fToonSortering();
}
}, 'json');
$("#editCriterium").modal('hide');
},
fAnnuleerCriterium: function(){
var self = mh.SorteringModel;
var dit = this;
self.nieuwCriterium('');
self.nieuwLabel1('');
self.nieuwLabel2('');
self.nieuweLabels([]);
$("#nieuwCriterium").modal('hide');
},
fEditCriterium: function(){
var self = mh.SorteringModel;
var dit = this;
self.selectedCriterium(this);
$("#editCriterium").modal('show');
},
fDeleteCriterium: function(){
var self = mh.SorteringModel;
var dit = this;
var criteriumid = dit.criteriumid;
apprise("Weet u zeker dat u <i> " + dit.criterium() + " </i> wilt verwijderen? " +
"Ook de waarden worden verwijderd. " +
"Dit kan niet ongedaan gemaakt worden.", {
'verify': true,
textYes: 'ja',
textNo: 'nee'
}, function (ans) {
if (ans) {
$.post("index.php/monpas/sortering/deleteCriterium/" + criteriumid, function (data) {
if (data) {
self.fToonSortering();
}
}, 'json');
} // if
else {
return false;
} //else
}); //apprise
},
fDeleteLabel: function(){
var self = mh.SorteringModel;
var dit = this;
var labelid = dit.waardeid;
self.selectedLabel(this);
apprise("Weet u zeker dat u <i> " + dit.label() + " </i> wilt verwijderen? ", {
'verify': true,
textYes: 'ja',
textNo: 'nee'
}, function (ans) {
if (ans) {
$.post("index.php/monpas/sortering/deleteLabel/" + labelid, function (data) {
if (data) {
self.selectedCriterium().labels.remove(self.selectedLabel());
}
}, 'json');
} // if
else {
return false;
} //else
}); //apprise
},
fAnnuleerLabel: function(){
var self = mh.SorteringModel;
var dit = this;
self.nieuweLabels.remove(this);
},
fKoppelScholen: function(){
var self = mh.SorteringModel;
var dit = this;
self.toonIndeling(true);
self.selectedCriterium(dit);
self.fGetIndeling();
},
fSluitIndeling: function(){
var self = mh.SorteringModel;
var dit = this;
self.toonIndeling(false);
},
fGetIndeling: function(){
var self = mh.SorteringModel;
var dit = this;
var submitData ={
'swvid' : self.selectedSWV().id,
'criteriumid' : self.selectedCriterium().criteriumid
}
$.post("index.php/monpas/sortering/getSchoolIndelingen", submitData, function (data) {
self.swvindeling('');
if (data) {
self.swvindeling(new fAddSWVIndeling(data));
}
}, 'json');
},
fUpdateIndeling: function(parent){
var self = mh.SorteringModel;
parent.selectedOptie(this.waardeid);
var submitData ={
'orgid' : this.selectedSchool(),
'keuzeid' : this.waardeid,
'criteriumid' : self.selectedCriterium().criteriumid
}
$.post("index.php/monpas/sortering/updateSortering", submitData, function (data){
if(data){
}
})
}
} ; // definition van model
ko.applyBindings(mh.SorteringModel, document.getElementById("pagSortering"));
mh.SorteringModel.initModel();
}; // else
}// function initSorteringModel
});