Files
2021-07-10 16:25:16 +02:00

1191 lines
41 KiB
JavaScript

$(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<rows;i++){
rijen +="<tr><td colspan=4 class='gCell'>&nbsp;</td> </tr>";
}
$('#TabelTakenLijst').append(rijen);
}
else {
rows = rows * -1;
for (i=0; i < rows; i ++){
$('#TabelTakenLijst tr:last').remove();
}
}
}, // function vultakenlijstaan
fGetAgenda : function() {
setDrag("#popAgenda");
$('#popAgenda').fadeIn();
},
fSetSelectedNote : function(){
var self = ls.ModelPlanning;
if ( $("#note"+this.id).hasClass("SelectedNote") ) {
$("#note"+this.id).removeClass("SelectedNote");
self.selectedNote("");
}
else {
$(".liNote").removeClass("SelectedNote");
$("#note"+this.id).addClass("SelectedNote");
self.selectedNote(this);
};
},
fDeleteNote : function(){
if (this.id == undefined || this.id == 0){return}
var self=ls.ModelPlanning;
if (self.bezig()) return;
self.bezig(true);
var note = this;
apprise("Weet u zeker dat u " +this.toonnaam() + " wilt verwijderen?", {'verify' : true, 'textYes': 'ja', 'textNo': 'nee'}, function(ans){
if (!ans){self.bezig(false);
return}
else{
$.post("index.php/ijkpartituur/planning/DeleteNote/" + note.id);
self.notes.remove(note);
self.bezig(false);
};
});
},
fDownloadNote : function(){
if (this.id == undefined || this.id == 0){return}
var win=window.open('index.php/ijkpartituur/planning/DownloadNote/' + this.id, '_blank');
win.focus();
},
fUpload : function(){
var self = ls.ModelPlanning;
if (self.selectedNote() === undefined || self.selectedNote().id == 0 || !self.selectedNote())
{ self.selectedNote({id:0, toonnaam:ko.observable(), partactID: self.taak().taakID});}
if (self.selectedNote().id > 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