$(function () { var appliedBindings = false; fNewPijlerlijst = function(p){ this.id = p.id; this.pijlerID = p.pijlerID; //id van de pijler in tbPijlers this.naam = p.pijlerNaam; this.omschrijving = p.omschrijving; this.status = ko.observable('o'); // status o= open c= close this.code = p.code; // schoolniveau of bg niveau this.start = ko.observable(p.start); this.eind = ko.observable(p.eind); this.perc = ko.observable(p.perc); this.duur =ko.observable(p.duur); this.taakLijst = ko.observableArray([]); var self = this; $.each(p.taakLijst, function(j,q){ self.taakLijst.push(new fTaaklijst(q) ); }) }; fTaaklijst = function(q){ this.id = q.id; this.pijlerID = q.pijlerID; this.sequence = ko.observable(q.sequence); this.perc = ko.observable(q.perc); this.naam = ko.observable(q.naam); this.start = ko.observable(q.start); this.eind = ko.observable(q.eind); this.duur = ko.observable(q.duur); }; Test = function (data) { this.pijlernaam = data.pijlernaam; this.pijlerID = data.pijlerID; this.taakID = data.ID; this.taaknaam = data.taaknaam; this.omschrijving = ko.observable(data.omschrijving); this.opmerkingen = ko.observable(data.opmerkingen); this.start = ko.observable(data.start); this.eind = ko.observable(data.eind); this.duur = ko.observable(data.duur); this.selectedFase = ko.observable(data.fase) this.verantwoordelijke = ko.observable(data.verantwoordelijke); this.orgusers = ko.observable(data.orgusers); this.gereed = ko.observable(data.gereed); this.soortTaak = data.soortTaak; this.bronOmschrijving = data.bronOmschrijving; this.resultaatOmschrijving = data.resOmschrijving; this.resultaat = ko.observable(data.resultaat); this.eSpanne = ko.observable(data.eSpanne); if (data.mailPleider==1) { this.mailPleider = ko.observable( true); } else this.mailPleider = ko.observable( false); if (data.mailVerantwoordelijke ==1){ this.mailVerantwoordelijke = ko.observable(true); } else {this.mailVerantwoordelijke = ko.observable(false)}; this.mailNaarMail = ko.observable(data.mailNaarMail); this.afhankelijkNaam = ''; // hier een lijst van taken; this.afhankelijkID = ko.observable(data.afhankelijkvanID); this.takenLijst = ko.observableArray([]); if (data.takenlijst) { this.takenLijst = ko.observableArray(data.takenlijst); }; this.hulpmiddelen = ko.observableArray([]); if (data.hulpmiddelen.length > 0){ this.hulpmiddelen = ko.observableArray( $.each(data.hulpmiddelen, function(i,h){ this.hID = h.hID; this.hulpID = h.hulpID; this.omschrijving = h.omschrijving; }) // each ); }; //if this.selectedhulpmiddel = ko.observable(''); this.uitvoerenden =ko.observableArray([]); if (data.uitvoerenden.length > 0) { this.uitvoerenden = ko.observableArray(data.uitvoerenden); }; this.selecteduitvoerende= ko.observable(); this.overigeusers = ko.observableArray([]); if (data.overigeusers.length > 0) { this.overigeusers = ko.observableArray(data.overigeusers); }; this.selectedoverige = ko.observable(); this.doelgroepen = ko.observableArray([]); if (data.doelgroepen.length > 0){ this.doelgroepen = ko.observableArray( $.each(data.doelgroepen, function(i,d){ this.id = d.id; this.padID = d.padID; this.omschrijving = d.omschrijving; }) // each ); }; this.kosten = ko.observableArray([]); if (data.kosten.length > 0 && !(data.kosten == false)){ var self= this; $.each(data.kosten, function(i,kost){ self.kosten.push(new fKostregel(kost)); });// each }; // if this.totaalkosten = ko.computed(function(){ var sum=0; $.each(this.kosten(), function(i,kostplaats){ sum = sum + MaakEnglishFormat(kostplaats.kosten()); }); if (sum == undefined) {sum = 0.00}; sum = MaakNedFormat(sum,2); return sum }, this); } function fKostregel(p){ this.omschrijving = ko.observable(p.omschrijving) ; this.kosten = ko.observable(p.kosten) ; this.id = p.id ; }; function fAddNote(n){ this.id = n.id; this.toonnaam = ko.observable(n.toonnaam); this.partactID = n.partactid; } ls.initPlanning = function(){ if (ls.ModelPlanning !==undefined) { ls.ModelPlanning.InitValues(); } else { ls.ModelPlanning = { partituurID : ko.observable(), tijdspan : ko.observable('months'), zoomlevel : ko.observable(2), targetDate : ko.observable(), fasen : ko.observableArray([]), centerDatum : ko.observable(), medewerkers : ko.observableArray([]), GanttTaken : ko.observableArray([]), TaakRow : ko.observable(), afhankelijkID : ko.observable(), taak : ko.observable(), doelgroepenkeus : ko.observableArray([]), TakenbijPijler : ko.observableArray([]), selectedTaakbijPijler : ko.observable(), voorna : ko.observable(), // of insert voor of na opgegeven sequentie moet selectedPijler : ko.observable(), hasWrite : ko.observable(true), notes : ko.observableArray([]), selectedNote : ko.observable({id: 0, toonnaam: ko.observable(''), partactID: 0}), LSselectedNfile : ko.observable(), actionURL : ko.observable(), bezig : ko.observable(false), InitValues : function(){ var self = this; self.GanttTaken.removeAll(); $.getJSON('index.php/ijkpartituur/planning/getPlanning', function(planningData){ var hulpstr = planningData.partituur.partituur_start; hulpstr=hulpstr.replace(/-/g,'/'); projStart=new Date(hulpstr); projStart.setHours(0,0,0); if (planningData.canWrite > 0) {self.hasWrite(true);} else {self.hasWrite(false)}; hulpstr = planningData.partituur.partituur_eind; hulpstr=hulpstr.replace(/-/g,'/'); projEind=new Date(hulpstr); projEind.setHours(0,0,0); self.partituurID(planningData.partituur.id); self.medewerkers(planningData.medewerkers); self.fasen(planningData.fasen); $.each(planningData.taken, function(i, p) { self.GanttTaken.push(new fNewPijlerlijst(p)) }); MaakGanttTabel(self.zoomlevel()); MaakTaken(self.GanttTaken(), self.zoomlevel() ); var vandaag = new Date(); var dag = vandaag.getDate(); if (dag < 10) {dag ='0' + dag} var maand = vandaag.getMonth() + 1; if (maand < 10){maand = '0' + maand;}; var jaar = vandaag.getFullYear(); var inDag =dag + '-' + maand + '-' + jaar; self.targetDate(inDag); self.gottoDate(); self.fVulTakenlijstAan(); }); //get } , // einde init values fCheckPijlerStart : function() { var self = ls.ModelPlanning; var startdate =NedDatNaarDateObj(self.selectedPijler().start()); var einddate = NedDatNaarDateObj(self.selectedPijler().eind()); if (startdate.getTime() < projStart.getTime() ){ apprise('De startdatum moet op of na de startdatum van de partituur vallen.' , {}, function(){ startdate.setTime(projStart.getTime()) self.selectedPijler().start(DateNaarNedDat(startdate)); }) } else{ if (startdate.getTime() > einddate.getTime()) { apprise('De startdatum moet voor de einddatum vallen.' , {}, function(){ startdate.setTime(projStart.getTime()); self.selectedPijler().start(DateNaarNedDat(startdate)); }) } }; // else // controleer de agenda $.post('index.php/ijkpartituur/agenda/getMinDag/' +self.selectedPijler().id,function(data){ var aangepast = false; var mindag = data[0].mindag; if (mindag !== null) { var maxStart= new Date(mindag.substr(0,4), (mindag.substr(5,2) - 1),mindag.substr(8,2)); // max start is de vroegste datum waarop in de agenda iets gepland is voor deze pijler // de startdatum mag dus niet na deze datum vallen, maar moet in de range van // projStartdatum tot maxstart vallen if (startdate.getTime() > maxStart.getTime() ) { startdate.setTime(maxStart.getTime() ); aangepast = true; } }; var taakStart; $.each(self.GanttTaken(), function(i, Kpijler){ if (Kpijler.id == self.selectedPijler().id){ $.each(Kpijler.taakLijst(), function(j,Ktaak) { taakStart=NedDatNaarDateObj(Ktaak.start()); if(startdate.getTime() > taakStart.getTime()) { aangepast = true; startdate.setTime(taakStart.getTime()); } //if }); // each return false; } // if });// each if (aangepast) { self.selectedPijler().start(DateNaarNedDat(startdate)); apprise('Startdatum wordt aangepast vanwege de agenda en/of de startdatum van een of meer activiteiten.') } },'json'); }, fCheckPijlerEind :function(){ var self = ls.ModelPlanning; var startdate =NedDatNaarDateObj(self.selectedPijler().start()); var einddate = NedDatNaarDateObj(self.selectedPijler().eind()); if (einddate.getTime() > projEind.getTime()) { apprise("De einddatum moet op of voor de einddatum van de partituur vallen.", {} , function(){ einddate.setTime(projEind.getTime()); self.selectedPijler().eind(DateNaarNedDat(einddate)); }) } else{ if (einddate.getTime() < startdate.getTime()){ apprise("De einddatum moet na de startdatum vallen.", {} , function(){ einddate.setTime(projEind.getTime()); self.selectedPijler().eind(DateNaarNedDat(einddate)); }) } } // else // controleer de agenda $.post('index.php/ijkpartituur/agenda/getMaxDag/' +self.selectedPijler().id,function(data){ var aangepast = false; var maxdag=data[0].maxdag; if (maxdag) { var minEind= new Date(maxdag.substr(0,4), (maxdag.substr(5,2) - 1),maxdag.substr(8,2)); // minEind is de laatste datum waarop in de agenda iets gepland is voor deze pijler // de einddatum mag dus niet voor deze datum vallen, maar moet in de range van // minEind tot projEinddatum vallen // hier check de taken if (einddate.getTime() < minEind.getTime() ) { einddate.setTime(minEind.getTime() ); aangepast = true; } } // controleer de data van de activiteiten. var taakEind; $.each(self.GanttTaken(), function(i, pijler){ if (pijler.id == self.selectedPijler().id){ $.each(pijler.taakLijst(), function(j,taak) { taakEind=NedDatNaarDateObj(taak.eind()); if(einddate.getTime() < taakEind.getTime()) { aangepast = true; einddate.setTime(taakEind.getTime()); } //if }); // each return false; } // if });// each if (aangepast){ self.selectedPijler().eind(DateNaarNedDat(einddate)); apprise("Einddatum wordt aangepast vanwege de agenda en/of de einddatum van een of meer activiteiten.")} },'json'); }, fSetPijlerData : function(){ var self = ls.ModelPlanning; var submitData = { id : self.selectedPijler().id, start: self.selectedPijler().start(), eind: self.selectedPijler().eind()}; $.post("index.php/ijkpartituur/planning/SavePijlerData", submitData); // GanttTaken aanpassen. Hoeft niet gebeurt vanzelf doordat selectedPijler naar dezelfde onderliggend // array verwijs als de desbetreffende "GanttTaak" // gantt aanpassen MaakTaken(self.GanttTaken(), self.zoomlevel() ); $(".popclose").click(); }, fCheckStartNieuw : function(){ if (!appliedBindings) {return}; var self = ls.ModelPlanning; var pijlerID = self.taak().pijlerID; var actID = self.taak().taakID; var duur = parseInt(self.taak().duur()); var StartAsObject = NedDatNaarDateObj(self.taak().start()); var EindAsObject = NedDatNaarDateObj(self.taak().eind()); var BeginPijlerAsObject = ''; $.each(self.GanttTaken(), function(i,p){ if (p.id== pijlerID){ BeginPijlerAsObject = NedDatNaarDateObj( p.start() ); return false; } }); // each var MinAgenda =''; $.post("index.php/ijkpartituur/agenda/getMinMaxDagActiviteit/" + pijlerID + '/' + actID, function(data){ var mindag = data[0].mindag; if (mindag){ MinAgenda =new Date(mindag.substr(0,4), (mindag.substr(5,2) - 1),mindag.substr(8,2)); }; var testDate = new Date(EindAsObject); testDate.setDate(testDate.getDate() - duur ); if (MinAgenda) { if (testDate.getTime() < MinAgenda.getTime() ) { MinAgenda.setTime(testDate.getTime()); } } else {MinAgenda.setDate(testDate.getDate())}; self.fCompareStart(StartAsObject, BeginPijlerAsObject, MinAgenda, self.taak()); },'json'); }, fCompareStart : function(StartAsObject, BeginPijlerAsObject, MinAgenda, taakObj){ if ( StartAsObject.getTime() < BeginPijlerAsObject.getTime() ){ apprise('De startdatum moet in het interval van ' + DateNaarNedDat(BeginPijlerAsObject) + " tot " + DateNaarNedDat(MinAgenda) + " vallen." ,{}, function(){ taakObj.start(DateNaarNedDat(BeginPijlerAsObject)) ; }); }; if (StartAsObject.getTime() > MinAgenda.getTime()){ apprise('De startdatum moet in het interval van ' + DateNaarNedDat(BeginPijlerAsObject) + " tot " + DateNaarNedDat(MinAgenda) + " vallen." ,{}, function(){ taakObj.start(DateNaarNedDat(MinAgenda)) ; }); }; }, fCheckEindNieuw : function(){ if (!appliedBindings) {return}; var self = ls.ModelPlanning; var pijlerID = self.taak().pijlerID; var actID = self.taak().taakID; var duur = parseInt(self.taak().duur()); var StartAsObject = NedDatNaarDateObj(self.taak().start()); var EindAsObject = NedDatNaarDateObj(self.taak().eind()); var EindPijlerAsObject = ''; $.each(self.GanttTaken(), function(i,p){ if (p.id== pijlerID){ EindPijlerAsObject = NedDatNaarDateObj( p.eind() ); return false; } }); // each var MaxAgenda =''; $.post("index.php/ijkpartituur/agenda/getMinMaxDagActiviteit/" + pijlerID + '/' + actID, function(data){ var maxdag = data[0].maxdag; var MaxAgenda = new Date(); if (maxdag){ MaxAgenda = Date(maxdag.substr(0,4), (maxdag.substr(5,2) - 1),maxdag.substr(8,2)); }; var testDate = new Date(StartAsObject); testDate.setDate(testDate.getDate() + duur ); if (maxdag) { if (testDate.getTime() > MaxAgenda.getTime() ) { MaxAgenda.setTime(testDate.getTime()); }; } else { MaxAgenda.setTime(testDate.getTime())}; self.fCompareEind(EindAsObject, EindPijlerAsObject, MaxAgenda, self.taak()); },'json'); }, fCompareEind : function(EindAsObject, EindPijlerAsObject, MaxAgenda, taakObj){ if ( EindAsObject.getTime() > EindPijlerAsObject.getTime() ){ apprise('De einddatum moet in het interval van ' + DateNaarNedDat(MaxAgenda) + " tot " + DateNaarNedDat(EindPijlerAsObject) + " vallen." ,{}, function(){ taakObj.eind(DateNaarNedDat(EindPijlerAsObject)) ; }); }; if (EindAsObject.getTime() < MaxAgenda.getTime()){ apprise('De einddatum moet in het interval van ' + DateNaarNedDat(MaxAgenda) + " tot " + DateNaarNedDat(EindPijlerAsObject)+ " vallen." ,{}, function(){ taakObj.eind(DateNaarNedDat(MaxAgenda)) ; }); }; }, fCheckDuur : function(){ var self = ls.ModelPlanning; var varDuur = this.duur(); var DagInMs = 24 * 60 * 60 * 1000 ; if (varDuur < 1){ apprise("Een activiteit moet ten minste 1 dag beslaan.",{},function(){ ls.ModelPlanning.taak().duur(1); }); }; var StartAsObject = NedDatNaarDateObj(self.taak().start()); var EindAsObject = NedDatNaarDateObj(self.taak().eind() ); var ms = StartAsObject.getTime() + (86400000 * varDuur); var test = new Date(ms); if (test > EindAsObject){ var DaysInMs = Math.abs(EindAsObject.getTime() - StartAsObject.getTime()); var Days= Math.round(DaysInMs / DagInMs); apprise("Gegeven de start- en einddatum kan deze activiteit niet meer dan " + Days + " dagen duren.",{},function(){ self.taak().duur(Days); }) }; // if }, fToonPijler : function(){ var self = ls.ModelPlanning; self.selectedPijler(this); if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popWijzigPijler") $('#popWijzigPijler').fadeIn(); }, GetClickedTaak : function(taakID){ var self= this; var target ; $.each(self.GanttTaken(), function(i,p){ if (p.id() == taakID) { target =p; return false; }; }); // einde for each taken return target; } , fToonTaakEditor : function(){ var taakID = this.id; var self = ls.ModelPlanning; $.getJSON('index.php/ijkpartituur/planning/getTaakInfo/' +taakID, function(result){ self.notes.removeAll(); if (result.taak){ if (result.notes){ $.each(result.notes , function(i,n){ self.notes.push(new fAddNote(n)); }); } self.taak(new Test(result.taak)); if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popTaakEditor"); $('#popTaakEditor').fadeIn(); }; // einde if result }); // einde getJSON }, fOpslaanTaakDetails: function(){ // taak details hebben geen effect op de gantt representatie en kunnen dus zo worden opgeslagen var self = ls.ModelPlanning; var naarPL = 0; if (self.taak().mailPleider() ){naarPL = 1}; var naarVW = 0; if (self.taak().mailVerantwoordelijke() ){naarVW = 1}; var submitData={ taakID : self.taak().taakID, omschrijving : self.taak().omschrijving(), opmerkingen : self.taak().opmerkingen(), gereed : self.taak().gereed(), verantwoordelijke: self.taak().verantwoordelijke(), email_dagen : self.taak().eSpanne(), email_naar_pl : naarPL, email_naar_vw : naarVW, email_adres : self.taak().mailNaarMail() }; $.post("index.php/ijkpartituur/planning/SaveTaakDetails", submitData); return true; // nodig voor IE om de checkboxvalue te tonen }, fCheckInput : function(){ var self=ls.ModelPlanning; var target = this; if (target.gereed() > 100 || target.gereed() < 0){ apprise("Percentage gereed moet tussen 0 en 100 vallen.",{}, function(){ target.gereed(0); }) } }, fCheckMail : function(item, event){ var self=ls.ModelPlanning; var target = this; if (checkEmail(this.mailNaarMail()) ){ self.fOpslaanTaakDetails(); } else { apprise("Ongeldig e-mailadres",{"textOK" : "OK"},function(){ target.mailNaarMail(''); $(event.target).focus(); }) } }, fSavePercent : function(item,event){ var self=ls.ModelPlanning; var target = this; if (this.perc() > 100 || this.perc() < 0){ apprise("Percentage gereed moet tussen 0 en 100 vallen.",{}, function(){ target.perc(0); $(event.target).focus(); }) } else { var submitData={ taakID : this.id, gereed: this.perc()}; $.post("index.php/ijkpartituur/planning/SavePerc", submitData); } }, OpslaanTaak : function(){ var self = ls.ModelPlanning; var naarPL = 0; if (self.taak().mailPleider() ){naarPL = 1}; var naarVW = 0; if (self.taak().mailVerantwoordelijke() ){naarVW = 1}; var submitData={ taakID : self.taak().taakID, startdatum : self.taak().start(), einddatum : self.taak().eind(), duur : self.taak().duur(), afhankelijkvan : self.taak().afhankelijkID(), gereed : self.taak().gereed(), }; //doelgroepen, uitvoerenden, kosten, hulpmiddelen en resultaten worden apart opgeslagen $.post("index.php/ijkpartituur/planning/SaveTaak", submitData); var pijlID = $('table.gTable').find("tr.ganttselected").attr("pijlid"); $.each(self.GanttTaken(), function(i,g){ if (g.id==pijlID){ $.each(g.taakLijst(), function(j,lijst){ if (lijst.id == self.taak().taakID ) { lijst.perc(self.taak().gereed() )} }) return false; } }); var year = self.taak().start().substr(6); var month = parseInt(self.taak().start().substr(3,2)) -1; var dag =self.taak().start().substring(0,2); var NewStart = new Date(year, month,dag); year = self.taak().eind().substr(6); month = parseInt(self.taak().eind().substr(3,2)) - 1; dag = self.taak().eind().substring(0,2); var NewEind = new Date(year, month,dag); $.each(Alles, function(i,a){ if (a.id == self.taak().taakID && !a.isPijler){ if (! (a.start.getTime() == NewStart.getTime() )|| ! (a.eind.getTime() == NewEind.getTime() ) ){ a.start.setTime(NewStart.getTime()); a.eind.setTime(NewEind.getTime()); a.getNewSize(); } a.duur=self.taak().duur(); return false; }; //if }); //hier moet nog bepaald worden of depends on veranderd is en dat moet dan ook getekend worden }, zoomMinus : function(){ var self=this; if (self.zoomlevel()==3) return; self.zoomlevel( self.zoomlevel() + 1); MaakGanttTabel(self.zoomlevel()); MaakTaken(self.GanttTaken(), self.zoomlevel() ); self.gottoDate(); }, zoomPlus : function(){ var self=this; if (self.zoomlevel()==1) return; self.zoomlevel( self.zoomlevel() - 1); MaakGanttTabel(self.zoomlevel()); MaakTaken(self.GanttTaken(), self.zoomlevel() ); self.gottoDate(); }, gottoDate : function(){ var datum = ls.ModelPlanning.targetDate(); goToDay(datum, this.zoomlevel()); }, undoGantt : function(){ var self = this; $.getJSON('index.php/ijkpartituur/planning/get_planning', function(planningData){ self.GanttTaken.removeAll(); ko.mapping.fromJS(planningData.tasks, self.GanttTaken); MaakGanttTabel(self.zoomlevel()); MaakTaken(self.GanttTaken(), self.zoomlevel() ); $('table.gTable').find("tr.ganttselected").removeClass('ganttselected'); }); // einde getJSON }, InvoegenTaak : function(){ $(".popclose").click(); // get en set de nieuwe ids var self = ls.ModelPlanning; var newID= self.selectedTaakbijPijler().id; var currentSeq = $('table.gTable').find("tr.ganttselected").attr('seq'); if (currentSeq === undefined) {currentSeq= 0;} var pijlerIDs = self.fFindPijlerIDs(); var submitData={ partituurID : self.partituurID(), pijlerID : pijlerIDs[0], newTaakID : newID, positie : self.voorna(), selSeq : currentSeq} ; $.post("index.php/ijkpartituur/planning/addTaak",submitData, function(data){ self.GanttTaken.removeAll(); self.InitValues(); }); self.fVulTakenlijstAan(); }, fFindPijlerIDs : function(){ var self= ls.ModelPlanning; var currentID = $('table.gTable').find("tr.ganttselected").attr('id'); var IDarray=[-1,-1] ; // partpijlerID, truepijlerID if (currentID == undefined){ return IDarray; } //einde if else { var ID1=currentID.substr(0,4) if (ID1 =="pijl") { IDarray[0]= currentID.substring(4, currentID.length) } else{ IDarray[0] = $('table.gTable').find("tr.ganttselected").attr('pijlid'); } $.each(self.GanttTaken(), function(i,p){ if (p.id == IDarray[0]) { IDarray[1]=p.pijlerID} }); return IDarray; }; }, addAboveCurrentTask : function(){ var self = this; var currentID = $('table.gTable').find("tr.ganttselected").attr('id'); if (currentID.substr(0,4) == "pijl"){ apprise("U kunt geen activiteiten boven een pijler invoegen.",{},function(){ return; }) } else { var pijlerIDs= self.fFindPijlerIDs(); if (pijlerIDs[0] == -1){ apprise("U moet eerst een regel selecteren waarboven de nieuwe taak moet worden toegevoegd.", function(){ return; }); // einde apprise } //einde if else { $.getJSON('index.php/ijkpartituur/planning/getActiviteitenPerPijler/'+self.partituurID() +'/'+pijlerIDs[1], function(taken){ self.TakenbijPijler(taken); self.selectedTaakbijPijler(taken[0]); self.voorna('voor'); if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popTaakSelector"); $('#popTaakSelector').fadeIn(); }); // einde getjson }; // einde else bij er is wel een pijler }; // else }, addBelowCurrentTask : function(){ var self = this; var currentID = $('table.gTable').find("tr.ganttselected").attr('id'); var pijlerIDs= self.fFindPijlerIDs(); if (pijlerIDs[0] == -1){ apprise("U moet eerst een regel selecteren waaronder de nieuwe taak moet worden toegevoegd.", function(){ return; }); // einde apprise } //einde if else { // get de taken bij de current Pijler $.getJSON('index.php/ijkpartituur/planning/getActiviteitenPerPijler/' +self.partituurID() +'/' +pijlerIDs[1], function(taken){ self.TakenbijPijler(taken); self.selectedTaakbijPijler(taken[0]); self.voorna('na'); if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popTaakSelector"); $('#popTaakSelector').fadeIn(); }); // einde getjson }; // einde else }, moveDown : function(){ var self = ls.ModelPlanning; var currentSeq = $('table.gTable').find("tr.ganttselected").attr('seq'); var taakID = $('table.gTable').find("tr.ganttselected").attr('id'); if (taakID) { taakID = taakID.substr(3, taakID.length);} var pijlerID = $('table.gTable').find("tr.ganttselected").attr('pijlid'); var pijlerIndex = 0; var taakIndex = 0; var isPijler = false; if (pijlerID == undefined) { isPijler= true;} if (taakID == undefined){ apprise('U moet eerst een activiteti selecteren.', function() {return false;}); }; if (isPijler){ apprise("U kunt een pijler niet verplaatsen.", function() {return false;}); } else { $.each(this.GanttTaken(), function(i,gTaak){ if (gTaak.id == pijlerID) { pijlerIndex = i; $.each(gTaak.taakLijst(), function(j,lijst) { if( lijst.id == taakID){ taakIndex = j; return false } }); return false; } }); // each gantttaken if (taakIndex >= (self.GanttTaken()[pijlerIndex].taakLijst().length -1)) { apprise("U kunt deze activiteit niet naar onderen verplaatsen.", function(){ return; }); // apprise } // if else { var nextSeq = self.GanttTaken()[pijlerIndex].taakLijst()[(taakIndex + 1)].sequence() ; var nextID =self.GanttTaken()[pijlerIndex].taakLijst()[(taakIndex + 1)].id; $('#act'+nextID).attr('seq' , currentSeq); $('#act'+taakID).attr('seq' , nextSeq); self.GanttTaken()[pijlerIndex].taakLijst()[taakIndex].sequence(nextSeq); self.GanttTaken()[pijlerIndex].taakLijst()[taakIndex + 1].sequence(currentSeq); var temTaak= self.GanttTaken()[pijlerIndex].taakLijst.splice((taakIndex),1); self.GanttTaken()[pijlerIndex].taakLijst.splice(taakIndex +1 ,0,temTaak[0]); // nu de tabellen opnieuw opbouwen MaakTaken(self.GanttTaken(), self.zoomlevel() ); // save de nieuwe sequentie var SeqLijst=[]; $.each(self.GanttTaken()[pijlerIndex].taakLijst(), function(i,p){ SeqLijst.push({id: p.id, seq: p.sequence()}) }); var submitData={'seqlijst' : SeqLijst}; $.post('index.php/ijkpartituur/planning/saveSequentie', submitData); } // else } //else }, moveUp : function(){ var self = ls.ModelPlanning; var currentSeq = $('table.gTable').find("tr.ganttselected").attr('seq'); var taakID = $('table.gTable').find("tr.ganttselected").attr('id'); if (taakID) {taakID = taakID.substr(3, taakID.length);} var pijlerID = $('table.gTable').find("tr.ganttselected").attr('pijlid'); var pijlerIndex = 0; var taakIndex = 0; var isPijler = false; if (pijlerID == undefined) { isPijler= true;} if (taakID == undefined){ apprise('U moet eerst een activiteit selecteren.', function() {return false;}); }; if (isPijler){ apprise("U kunt een pijler niet verplaatsen.", function() {return false;}); } else { $.each(this.GanttTaken(), function(i,gTaak){ if (gTaak.id == pijlerID) { pijlerIndex = i; $.each(gTaak.taakLijst(), function(j,lijst) { if( lijst.id == taakID){ taakIndex = j; return false } }); return false; } }); // each gantttaken if (taakIndex == 0) {return } ; var prevSeq = self.GanttTaken()[pijlerIndex].taakLijst()[(taakIndex - 1)].sequence() ; var prevID =self.GanttTaken()[pijlerIndex].taakLijst()[(taakIndex - 1)].id; self.GanttTaken()[pijlerIndex].taakLijst()[taakIndex].sequence(prevSeq); self.GanttTaken()[pijlerIndex].taakLijst()[taakIndex - 1].sequence(currentSeq); $('#act'+prevID).attr('seq' , currentSeq); $('#act'+taakID).attr('seq' , prevSeq); var temTaak= self.GanttTaken()[pijlerIndex].taakLijst.splice((taakIndex -1),1); self.GanttTaken()[pijlerIndex].taakLijst.splice(taakIndex ,0,temTaak[0]); // nu de tabellen opnieuw opbouwen MaakTaken(self.GanttTaken(), self.zoomlevel() ); // save de nieuwe sequentie var SeqLijst=[]; $.each(self.GanttTaken()[pijlerIndex].taakLijst(), function(i,p){ SeqLijst.push({id: p.id, seq: p.sequence()}) }); var submitData={'seqlijst' : SeqLijst}; $.post('index.php/ijkpartituur/planning/saveSequentie', submitData); } // else }, fToonHulpmiddel : function(){ ls.ModelPopToonHulp.InitValues(this.hulpID, 1, ''); setDrag("#popToonHulp"); $("#popToonHulp").css('z-index', 350); $('#popToonHulp').fadeIn(); }, fToonEnSelectHulpmiddel : function(){ ls.ModelPopToonHulp.InitValues(0, 4, "ls.ModelPlanning"); setDrag("#popToonHulp"); $("#popToonHulp").css('z-index', 350); $('#popToonHulp').fadeIn(); }, fAddUitvoerende : function(){ var self=ls.ModelPlanning var overigID= self.taak().selectedoverige(); $.each(self.taak().overigeusers(), function(i,p){ if (p.id==overigID){ var temUser = p; self.taak().overigeusers.remove(p); self.taak().uitvoerenden.push(temUser); $.post('index.php/ijkpartituur/planning/addUitvoerende/' + self.taak().taakID + '/' +overigID); return false; } }); // each }, fDeleteUitvoerende : function(){ var self=ls.ModelPlanning var overigID= self.taak().selecteduitvoerende(); $.each(self.taak().uitvoerenden(), function(i,p){ if (p.id==overigID){ var temUser = p; self.taak().uitvoerenden.remove(p); self.taak().overigeusers.push(temUser); $.post('index.php/ijkpartituur/planning/removeUitvoerende/' + self.taak().taakID + '/' +overigID); return false; } }); // each }, deleteCurrent : function(){ var self = ls.ModelPlanning; var currentID = $('table.gTable').find("tr.ganttselected").attr('id'); var msg = ''; if (currentID == undefined){ msg ='Selecteer eerst de activiteit die u wilt verwijderen.' } else { if (currentID.substr(0,4) == 'pijl' ){msg +='Pijlers kunnen niet verwijderd worden.' }; }; if (msg > '' ){ apprise(msg, function(){return false }) ; } else { // kijk of er agenda-items gekoppeld zijn aan deze activiteit $.post("index.php/ijkpartituur/agenda/findEntries/" + parseInt(currentID.substr(3, currentID.length)) , function(data){ if (data) {msg="Weet u zeker dat u deze activiteit wilt verwijderen? Er zijn agenda-items. Die worden dan ook verwijderd."} else {msg="Weet u zeker dat u deze activiteit wilt verwijderen?"} apprise(msg, {'verify' : true, 'textYes': 'ja', 'textNo': 'nee'}, function(ans){ if (!ans) { return false;} else{ var submitData= {"partActID" : currentID.substr(3, currentID.length)} $.post('index.php/ijkpartituur/planning/RemoveTaak' , submitData); var pijlerID = $('table.gTable').find("tr.ganttselected").attr('pijlid'); $.each(self.GanttTaken(), function(i,gTaak){ if (gTaak.id ==pijlerID) { $.each(gTaak.taakLijst(), function(j,lijst) { if (lijst.id == currentID.substr(3, currentID.length)) { self.GanttTaken()[i].taakLijst.remove(lijst); MaakGanttTabel(self.zoomlevel()); MaakTaken(self.GanttTaken(), self.zoomlevel() ); return false; }; }); // each taaklijst return false; };// if }); // each }; // else bij if ans }); // apprise },'json'); }; // else bij als msg = '' }, saveGantt : function(){ var SaveVersion = ko.toJSON(this.GanttTaken); var submitData={SaveVersion : SaveVersion}; $.post('index.php/ijkpartituur/planning/saveGantt', SaveVersion, function(){},'json'); }, fHulpmiddelSelected : function(hID){ var self=ls.ModelPlanning; var actID =self.taak().taakID ; if (hID > 0){ $.post('index.php/ijkpartituur/planning/AddHulpmiddel/' + actID + '/' + hID, function(data){ self.taak().hulpmiddelen.push(data[0]); },'json'); //post }; // if }, fRemoveHulpmiddel : function(){ var self = ls.ModelPlanning; var hID = this.hID; var omschrijving = this.omschrijving; apprise("Weet u zeker dat u " + omschrijving + " wilt verwijderen?",{verify:true, textYes:'ja', textNo:'nee'},function(ans){ if (ans){ $.post("index.php/ijkpartituur/planning/removeHulpmiddel/" + hID, function(){ $.each(self.taak().hulpmiddelen(), function(i,h){ if (h.hID ==hID) {self.taak().hulpmiddelen.remove(h);}; });//each }); // post } ; // if });//apprise }, fToevoegenDoelgroep : function(){ var self=ls.ModelPlanning; self.doelgroepenkeus.removeAll(); $.post("index.php/ijkpartituur/planning/getDoelgroepen/" + self.taak().taakID, function(data){ if (data.length > 0 ){ $.each(data, function(i,d){ self.doelgroepenkeus.push(d); }); //each if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popToevoegenDoelgroep"); $('#popToevoegenDoelgroep').fadeIn(); } // if else { apprise("Er zijn geen doelgroepen die u zou kunnen toevoegen."); } },'json'); // post }, fAddDoelgroep : function(){ var dID = this.id var self=ls.ModelPlanning; $("#popToevoegenDoelgroep").fadeOut(); $.post("index.php/ijkpartituur/planning/AddDoelgroep/" + dID + '/' + self.taak().taakID, function(data){ self.taak().doelgroepen.push(data); },'json'); // post }, fVerwijderDoelgroep : function(){ var self=ls.ModelPlanning; var dID=this.padID; apprise('Weet u zeker dat u ' + this.omschrijving + ' wilt verwijderen?', {verify:true, textYes:'ja', textNo:'nee'}, function(ans){ if (ans) { $.post("index.php/ijkpartituur/planning/RemoveDoelgroep/" + dID, function(){ $.each(self.taak().doelgroepen(), function(i,d){ if (d.padID == dID){ self.taak().doelgroepen.remove(d); return false; } });//each }); // post }; // if } ); // apprise }, fNewKosten : function(){ var self=ls.ModelPlanning; $.post('index.php/ijkpartituur/planning/newKostenregel/' + self.taak().taakID, function(data){ self.taak().kosten.push(new fKostregel(data)); },'json'); }, fSaveKosten : function(){ var self = ls.ModelPlanning; var kID = this.id kosten = MaakEnglishFormat(this.kosten() ); var submitData={id : kID, omschrijving : this.omschrijving(), kosten : kosten}; $.post("index.php/ijkpartituur/planning/SaveKosten", submitData ); }, fDeleteKostregel : function(){ var kID = this.id; var self = ls.ModelPlanning apprise("Weet u zeker dat u " + this.omschrijving() + " wilt verwijderen?", {verify:true, textYes:'ja', textNo:'nee'}, function(ans){ if (ans){ $.post("index.php/ijkpartituur/planning/DeleteKost/" +kID, function(){ $.each(self.taak().kosten(), function(i,k){ if (k.id == kID){ self.taak().kosten.remove(k); return false; } }); // each }); // post }; // if ans }); // apprise }, fSaveResultaten : function(){ var self=ls.ModelPlanning var actID=self.taak().taakID; var submitData = { "id" : actID, "resultaat" : this.resultaat()}; if (appliedBindings) { $.post('index.php/ijkpartituur/planning/SaveResultaten', submitData); } }, showUploads: function(){ tw.documentsModel.selectedHulpID(this.id); tw.initDocuments(); }, fOpenClose : function(){ var self = ls.ModelPlanning var pijlerID = this.id; var ref = "#OC" + pijlerID; Alles.length=0; if ($(ref).hasClass("PijlerClose")) { $(ref).removeClass("PijlerClose"); $(ref).addClass("PijlerOpen"); $.each(self.GanttTaken(), function(i,p){ if (p.id == pijlerID) { p.status ("o"); return false; }// if }); // each } else{ $(ref).removeClass("PijlerOpen"); $(ref).addClass("PijlerClose"); $.each(self.GanttTaken(), function(i,p){ if (p.id == pijlerID) { p.status ("c"); return false; }// if }); // each }// else MaakTaken(self.GanttTaken(), self.zoomlevel()); self.fVulTakenlijstAan(); }, // function open/close fVulTakenlijstAan : function() { // hier voor het aantal lege rijen vul de tabel aan rows = -1; $.each(ls.ModelPlanning.GanttTaken(), function(i,p){ if (p.status() == 'o') {rows+= 1;} } ); //each var rows = $('#bgTable tr').length - ($("#TabelTakenLijst tr:visible").length - rows); if (rows > 0) { var rijen= ''; for (i=0; i 0){ apprise("Weet u zeker dat u het bestand bij " + self.selectedNote().toonnaam() + " wilt overschrijven?", {'verify' : true, 'textYes': 'ja', 'textNo': 'nee'}, function(ans){ if (!ans){return} else{ if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popUploadANote") $('#popUploadANote').fadeIn(); }; }); } else{ if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() }; setDrag("#popUploadANote") $('#popUploadANote').fadeIn(); } }, fSetNaam : function(){ var self = ls.ModelPlanning; if (self.LSselectedNfile() ==''){return;} if (self.selectedNote().toonnaam() == '' || self.selectedNote().toonnaam() =='undefined' || self.selectedNote().toonnaam() == null) { self.selectedNote().toonnaam(self.LSselectedNfile().replace("C:\\fakepath\\", '') ) } }, fUploadToServer : function(){ var self=ls.ModelPlanning; var url = 'index.php/ijkpartituur/planning/LSUploadNote/' + self.selectedNote().id + '/' + self.taak().taakID ; self.actionURL(url); $("#LSuploadform2").submit(); }, fSetNieuweNote :function(id){ var self = ls.ModelPlanning; var p={id : id, toonnaam: self.selectedNote().toonnaam(), partactID: self.selectedNote().partactID } if (id != self.selectedNote().id) { self.notes.push(new fAddNote(p)); }; } }; // einde model definitie ls.ModelPlanning.InitValues(); ko.applyBindings(ls.ModelPlanning, document.getElementById("planning-pagina")); appliedBindings=true; // }); // einde getJson };// einde else }; $(document).on('click','.gSelectable',function(){ $('.gTable').find('tr').removeClass('ganttselected'); $(this).addClass("ganttselected"); }); $(".takenlijst").scroll(function() { $('.dagenlijst').scrollTop($( ".takenlijst") .scrollTop()) ; }); $(".dagenlijst").scroll(function() { $('.takenlijst').scrollTop($( ".dagenlijst") .scrollTop()) ; }) }); // einde main function