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

550 lines
18 KiB
JavaScript

$(function () {
var appliedBindings = false;
var partituurID;
var oldpijlerID;
var vandaag = new Date();
fContent = function(daglijst){
this.teller = daglijst.teller;
this.dag = ko.observable(daglijst.dag);
this.isVandaag = ko.computed(function() {
if (ls.ModelAgenda.currentMaand().nummer() == vandaag.getMonth() &&
ls.ModelAgenda.currentMaand().jaar() == vandaag.getFullYear() &&
this.dag() == vandaag.getDate() ) {
return true;
}
else {return false};
}, this);
this.dagvanweek = ko.observable(daglijst.dagvanweek);
this.events = ko.observableArray([]);
};
fAddEvent = function(data){
this. id = data.id;
this.owner = data.owner;
this.toegang = ko.observable(data.toegang);
this.wijzig = ko.observable(data.wijzig);
this.schrijf = ko.observable(data.schrijf); // heeft deze gebruiker schrijfrechten
//this.schrijf = ko.observable(false);
this.pijlerID = ko.observable(data.pijlerID);
this.activiteitID = ko.observable(data.activiteitID);
this.activiteitNaam = ko.observable(data.actNaam);
this.colorcode = ko.observable(data.colorcode);
this.dag = ko.observable(data.dag);
this.maand = ko.observable(data.maand);
this.jaar = ko.observable(data.jaar);
this.startUur = ko.observable(data.startUur);
this.startMinuut = ko.observable(data.startMinuut);
this.eindUur = ko.observable(data.eindUur);
this.eindMinuut = ko.observable(data.eindMinuut);
this.titel = ko.observable(data.titel);
this.Atitel = ko.computed(function() {
var uur = this.startUur();
if (uur < 10) {uur= "0"+ uur}
if (this.startMinuut() < 10){
uur= uur + ':0' + this.startMinuut()+ ' ';
}
else {uur = uur + ":" + this.startMinuut() + ' '}
return this.titel().length > 14 ? (uur + this.titel().substring(0,14) + '..') : uur+this.titel();
},this); //korte titel voor maandoverzicht
this.Info = ko.computed(function(){
var uur = this.startUur();
if (uur < 10) {uur= "0"+ uur}
if (this.startMinuut() < 10){
uur= uur + ':0' + this.startMinuut()+ '-' ;
}
else {uur = uur + ":" + this.startMinuut() + '-' }
var uur2 = this.eindUur();
if (uur2 < 10) {uur2= "0"+ uur2}
if (this.eindMinuut() < 10){
uur= uur + uur2 + ':0' + this.eindMinuut()+ ' ' + this.titel();
}
else {uur = uur +uur2 + ":" + this.eindMinuut() + ' ' + this.titel()}
return uur;
},this); // voor titel info als je hovert
this.opmerking = ko.observable(data.opmerking);
this.ChangeActiviteit=ko.observable(false);
this.ChangePijler = ko.observable(false);
}
FcurrentDatum = function(data){
this.dagen = ko.observable(data.dagen);
this.nummer = ko.observable(data.nummer);
this.naam = ko.observable(data.naam);
this.jaar = ko.observable(data.jaar);
}
fVulPijlerset = function(data){
this.id = data.id;
this.naam = data.pijlerNaam;
if (data.id > 0){
this.start = data.start;
this.eind = data.eind;
}
}
fVulActiviteitenset = function(data) {
this.id = data.id;
this.naam = data.naam;
if (data.id > 0){
this.start = data.start;
this.eind = data.eind;
this.duur = data.duur;
}
}
if (ls.ModelAgenda !==undefined) {
ls.ModelAgenda.InitValues();
}
else {
ls.ModelAgenda = {
currentMaand : ko.observable(),
Acontent : ko.observableArray([]),
selectedContent : ko.observable(),
Pijlerset : ko.observableArray([]),
DagPijlerset : ko.observableArray([]), // alleen pijlers waarvan de begin en einddatum de geselecteerde datum omvatten
selectedPijler : ko.observable(),
selectedPijlerInDag : ko.observableArray([{id : ko.observable()} ]),
Activiteitenset : ko.observableArray([]),
DagActiviteitset : ko.observableArray([]),
newDagActiviteitset : ko.observableArray([]),
selectedActiviteit : ko.observable(),
colorset : ko.observableArray([
{naam: 'grijs', colorcode:"#f2f2f2"},
{naam: 'paars', colorcode:"#dcc6db"},
{naam: 'oranje', colorcode:"#f99443"},
{naam: 'rood' , colorcode:"#ea656e"},
{naam:'roze' , colorcode:"#fa8dc1"},
{naam: 'wit', colorcode:"#ffffff"}
]),
NewAfspraak : ko.observable(),
InitValues : function() {
var self = ls.ModelAgenda;
var vandaag= new Date();
var dageninmaand = GetDagen(vandaag.getMonth() + 1, vandaag.getFullYear())
$.post("index.php/ijkpartituur/agenda/getPijlers", function(data){
partituurID = data.partID;
self.Pijlerset.removeAll();
self.Pijlerset.push(new fVulPijlerset({id:0, pijlerNaam: "alle ijkpunten"}));
$.each(data.pijlers, function(i,p){
self.Pijlerset.push(new fVulPijlerset(p));
});
self.selectedPijler(0)
}, 'json');
self.currentMaand(new FcurrentDatum({
nummer :vandaag.getMonth(),
naam : maandArray[vandaag.getMonth()],
dagen : dageninmaand,
jaar : vandaag.getFullYear()
})
);
self.Acontent.removeAll();
for (var m=0; m < 42 ; m ++){
self.Acontent.push(new fContent({teller: m, dag: 0}));
}
self.fVulKalender();
self.selectedContent(self.Acontent()[0])
},
fVulKalender : function(){
var self=ls.ModelAgenda;
var firstDayofMonth = new Date(self.currentMaand().jaar(), self.currentMaand().nummer(), 1);
var k= firstDayofMonth.getDay();
var vandaag = new Date();
for (var i=1; i<=41; i++ ){
self.Acontent()[i-1].dag(0);
self.Acontent()[i-1].events.removeAll();
}
if (k==0) {k=6}
else {k= k -1}
for (var i=1; i <= self.currentMaand().dagen() ; i++){
self.Acontent()[((i+k) - 1)].dag(i);
}
self.fFilter();
//self.fGetActiviteiten();
},
fPlus : function(){
if (!appliedBindings) {return};
var self = ls.ModelAgenda;
var datum = new Date(self.currentMaand().jaar(), (self.currentMaand().nummer() + 1), 1);
self.currentMaand(new FcurrentDatum({
nummer:datum.getMonth(),
naam:maandArray[datum.getMonth()],
dagen : GetDagen(datum.getMonth() + 1, datum.getFullYear()),
jaar : datum.getFullYear()
})
);
self.fVulKalender();
},
fMinus : function(){
if (!appliedBindings) {return};
var self = ls.ModelAgenda;
var datum = new Date(self.currentMaand().jaar(), (self.currentMaand().nummer() - 1), 1);
self.currentMaand(new FcurrentDatum({
nummer:datum.getMonth(),
naam:maandArray[datum.getMonth()],
dagen : GetDagen(datum.getMonth() +1 , datum.getFullYear()),
jaar : datum.getFullYear()
})
);
self.fVulKalender();
},
fToday : function(){
if (!appliedBindings) {return};
var self = ls.ModelAgenda;
var datum = new Date();
self.currentMaand(new FcurrentDatum({
nummer:datum.getMonth(),
naam:maandArray[datum.getMonth()],
dagen : GetDagen(datum.getMonth() - 1, datum.getFullYear()),
jaar : datum.getFullYear()
})
);
self.fVulKalender();
},
fFilter : function(){
var self=ls.ModelAgenda;
var submitData = {PijlerID : self.selectedPijler(),
ActiviteitID : self.selectedActiviteit(),
Maand : (self.currentMaand().nummer() + 1),
Jaar : self.currentMaand().jaar()};
$.post("index.php/ijkpartituur/agenda/getItems", submitData,function(data){
$.each(self.Acontent(), function(i,p){
p.events.removeAll();
if (data.items ){
$.each(data.items, function(j,k){
if (p.dag()==k.dag){
p.events.push(new fAddEvent(k))
}
}); // each data.items
} ; // if data
}) ; // each Acontent
},'json');
},
fGetActiviteiten : function(){
if (!appliedBindings){return};
var self=ls.ModelAgenda;
self.Activiteitenset.removeAll();
self.selectedActiviteit(0);
if (self.selectedPijler() > 0){
var submitData = {pijlerid : self.selectedPijler()};
$.post("index.php/ijkpartituur/agenda/getActiviteiten" , submitData, function(data){
self.Activiteitenset.push(new fVulActiviteitenset({id:0, naam: "alle activiteiten"}));
$.each(data.activiteiten, function(i,p){
self.Activiteitenset.push(new fVulActiviteitenset(p));
});
},'json');
}
else { if (self.selectedPijler() == 0 ) {self.fFilter(); } }
},
fOpenCloseEvent : function() {
var self=ls.ModelAgenda;
var eID = this.id;
if ($("#event"+eID).hasClass("DagClose")) {
$('#event' + eID).removeClass('DagClose');
$("#event"+ eID).addClass("DagOpen");
$("#trbij" + eID).removeClass("trClose");
$("#trbij" + eID). addClass("trOpen");
}
else{
$('#event' + eID).removeClass('DagOpen');
$("#event"+ eID).addClass("DagClose");
$("#trbij" + eID).removeClass("trOpen");
$("#trbij" + eID). addClass("trClose");
}
},
fADetails : function(){
if (this.dag()==0) {return};
var self=ls.ModelAgenda;
self.selectedContent(this);
var selectedDatum = new Date(self.currentMaand().jaar(),self.currentMaand().nummer(), this.dag());
self.selectedContent().dagvanweek(weekArray[selectedDatum.getDay()]) ;
var StartAsDate = new Date();
var EindAsDate = new Date();
appliedBindings=false;
self.DagPijlerset.removeAll();
$.each(self.Pijlerset(), function(i,p){
if (p.id > 0){
StartAsDate=new Date(p.start.substr(0,4), (p.start.substr(5,2) -1),p.start.substr(8,2));
EindAsDate = new Date(p.eind.substr(0,4), (p.eind.substr(5,2) -1),p.eind.substr(8,2));
if ((StartAsDate.getTime() <=selectedDatum.getTime()) &&
(EindAsDate.getTime() >= selectedDatum.getTime()) ) {
self.DagPijlerset.push( {id: p.id,
naam: p.naam,
start : p.start,
eind: p.eind} );
} // if
}; // if
})
if ( $('#lsOverlay').css('display') == 'none' ) { $("#lsOverlay").fadeIn() };
setDrag("#popDagAgenda");
$('#popDagAgenda').fadeIn();
// zorg voor het juiste format van uur en minuut door event change toe te passen
$(".dubbelint").each( function(){
$(this).change();
});
appliedBindings=true;
},
fSaveEvent : function(inID){
if (!appliedBindings){return};
var self =ls.ModelAgenda;
var eID = this.id;
self.fTrueSave(eID)
},
fTrueSave : function (eID){
if (!appliedBindings){return};
var self =ls.ModelAgenda;
$.each(self.selectedContent().events(), function(i,p){
if (p.id == eID){
var submitData={id : eID,
toegang : p.toegang(),
wijzig : p.wijzig(),
pijlerID : p.pijlerID(),
activiteitID : p.activiteitID(),
color : p.colorcode(),
startUur : p.startUur(),
startMinuut : p.startMinuut(),
eindUur : p.eindUur(),
eindMinuut : p.eindMinuut(),
titel : p.titel(),
opmerking : p.opmerking()
};
$.post("index.php/ijkpartituur/agenda/saveEvent", submitData, function(){});
return false;
}
});
},
fCheckUur : function(){
if (!appliedBindings) {return}
var self = ls.ModelAgenda;
var eID = this.id;
var thisevent = this;
var uurS=parseInt(this.startUur(),10);
var uurE=parseInt(this.eindUur(),10);
if ((uurS >= 0 ) && (uurS < 24) && (uurE >= 0 ) && (uurE < 24) ){
self.fTrueSave(eID);
}
else {
if (uurS > 24 || uurS < 0){
apprise("Start uur moet tussen 0 en 24 vallen. ",{} ,function(){
thisevent.startUur(9);
$("#uurS"+ eID).attr('value',"09");
self.fTrueSave(eID);
return
})
};
if (uurE > 24 || uurE < 0){
apprise("Eind uur moet tussen 0 en 24 vallen. ", {},function(){
thisevent.eindUur(17);
self.fTrueSave(eID);
return
});
}; // if
} // else
},
fCheckMinuut : function(){
if (!appliedBindings) {return}
var self = ls.ModelAgenda;
var eID = this.id;
var thisevent = this;
var minuutS=parseInt(this.startMinuut(),10);
var minuutE=parseInt(this.eindMinuut() ,10);
if ((minuutS >= 0 ) && (minuutS < 60) && (minuutE >= 0 ) && (minuutE < 60) ){
self.fTrueSave(eID);
}
else {
if (minuutS >= 60 || minuutS < 0){
apprise(eID + '-' + minuutS + " Start minuten moet tussen 0 en 60 vallen. ",{} ,function(){
thisevent.startMinuut(0);
$('#minuutS' + eID).attr("value", "00");
self.fTrueSave(eID);
return
})
};
if (minuutE >= 60 || minuutE < 0){
apprise(eID + '-' + minuutE + "Eind minuten moet tussen 0 en 60 vallen. ", {},function(){
thisevent.eindMinuut(0);
$('#minuutE' + eID).attr("value", "00");
self.fTrueSave(eID);
return
});
}; // if
} // else
},
fSaveOldPijler : function() {
oldpijlerID = this.pijlerID();
this.ChangePijler(true);
},
fChangePijler : function() {
if (!this.ChangePijler()){return};
if (oldpijlerID == this.pijlerID()) {return}
var self= ls.ModelAgenda;
var eID = this.id;
var thisE = this;
apprise("Weet u zeker dat u een andere pijler wilt opgeven. U moet dan ook een nieuwe activiteit selecteren.", {verify:true, textYes: "ja", textNo:'nee'},
function(ans){
if (ans){ thisE.activiteitID(0);
thisE.activiteitNaam('geen');
thisE.ChangeActiviteit(false);
thisE.ChangePijler(false);
self.fTrueSave(eID);}
else {
thisE.pijlerID(oldpijlerID)
} ; // else
});
},
fChangeActiviteit : function(){
if (!appliedBindings) {return};
var self = ls.ModelAgenda;
var pijlerID = this.pijlerID();
var thisE = this;
appliedBindings=false;
if (pijlerID <= 0 || pijlerID === undefined){
apprise("U moet eerst een pijler selecteren", function(){return});
}
else {
submitData= {"pijlerID" : pijlerID,
"dag" : this.dag,
"maand" : self.currentMaand().nummer() + 1,
'jaar' : self.currentMaand().jaar()};
$.post("index.php/ijkpartituur/agenda/getActiviteitenPerDag", submitData, function(data){
self.DagActiviteitset.removeAll();
$.each(data.activiteiten, function(i,p){
self.DagActiviteitset.push(new fVulActiviteitenset(p))
});
thisE.ChangeActiviteit(true);
},'json');
}; // else
appliedBindings=true;
},
fSaveActiviteit : function(){
var self =ls.ModelAgenda;
var thisE = this;
if(!thisE.ChangeActiviteit()) {return}
$.each(self.DagActiviteitset(), function(i,p){
if(p.id == thisE.activiteitID()){
thisE.activiteitNaam(p.naam);
}
});
this.ChangeActiviteit(false);
self.fTrueSave(this.id);
},
fNewEvent : function() {
var self= ls.ModelAgenda;
var data={id : 0,
owner : 0,
toegang : 3,
wijzig : 3,
schrijf : true,
colorcode : '#f2f2f2',
dag : self.selectedContent().dag(),
maand : self.currentMaand().nummer() + 1,
jaar : self.currentMaand().jaar(),
startUur : 9,
startMinuut : 30,
eindUur : 17,
eindMinuut: 30,
titel: '',
opmerking: '',
pijlerID: 0,
activiteitID: 0,
activiteitNaam:'',
ChangeActiviteit: true,
ChangePijler: false
}
self.NewAfspraak(new fAddEvent(data) );
if ( $('#lsOverlay2').css('display') == 'none' ) { $("#lsOverlay2").fadeIn() };
setDrag("#popNewEvent");
$('#popNewEvent').css("z-index" , 510).fadeIn(200,function(){
$(this).css('z-index', 510);
});
$('#newAfspraakTitel').focus();
},
fAnderePijler : function(){
if (!appliedBindings) {return};
var self = ls.ModelAgenda;
var pijlerID = this.pijlerID();
var submitData= { "pijlerID" : pijlerID,
"dag" : this.dag,
"maand" : self.currentMaand().nummer() + 1,
'jaar' : self.currentMaand().jaar()};
$.post("index.php/ijkpartituur/agenda/getActiviteitenPerDag", submitData, function(data){
self.newDagActiviteitset.removeAll();
$.each(data.activiteiten, function(i,p){
self.newDagActiviteitset.push(new fVulActiviteitenset(p))
});
},'json');
},
fMaakNewAfspraak : function(){
var self = ls.ModelAgenda;
var submitData = {
"toegang" : self.NewAfspraak().toegang(),
"wijzig" : self.NewAfspraak().wijzig(),
"colorcode" : self.NewAfspraak().colorcode(),
"dag" : self.selectedContent().dag(),
"maand" : self.currentMaand().nummer() + 1,
"jaar" : self.currentMaand().jaar(),
"startUur" : self.NewAfspraak().startUur(),
"startMinuut" : self.NewAfspraak().startMinuut(),
"eindUur" : self.NewAfspraak().eindUur(),
"eindMinuut" : self.NewAfspraak().eindMinuut(),
"titel" : self.NewAfspraak().titel(),
"opmerking" : self.NewAfspraak().opmerking(),
"pijlerID" : self.NewAfspraak().pijlerID(),
"activiteitID" : self.NewAfspraak().activiteitID()
};
$.post("index.php/ijkpartituur/agenda/newAfspraak", submitData,function(data){
self.fClosePopUp();
if (data.items ){
self.Acontent()[self.selectedContent().teller].events.push(new fAddEvent(data.items));
// via Acontent word selectedContent aangepast omdat dat een clone is van Acontent
} ; // if data
},'json');
},
fClosePopUp : function(){
$("#lsOverlay2").fadeOut();
$("#popNewEvent").fadeOut();
},
fDelete : function(){
if (!appliedBindings) {return}
var self = ls.ModelAgenda;
var thisE = this;
apprise("Weet u zeker dat u deze afspraak wilt verwijderen?",
{verify:true, textYes:'ja', textNo: 'nee'},
function(ans){
if (ans) {
var submitData= {itemid : thisE.id};
$.post('index.php/ijkpartituur/agenda/deleteAfspraak', submitData);
self.Acontent()[self.selectedContent().teller].events.remove(thisE);
} ; // if
}); // apprise
}
} // model definitie
ls.ModelAgenda.InitValues();
ko.applyBindings(ls.ModelAgenda, document.getElementById("popAgenda"));
appliedBindings=true;
} // else
}); // eind hoofdfunction