$(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