550 lines
18 KiB
JavaScript
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
|