var disableDate = ["2018-02-14", "2018-02-15", "2018-02-16"]; var calendar = { init: function (jsonFunzionari, date, presidio, constants) { this.constants = $.extend(this.constants, constants); this.datepiker.init(date, presidio); this.agenda.init(jsonFunzionari, date, presidio); this.constants.presidio = presidio; this.modalitaPrenotazione.init(); this.selectedDate = date; }, constants: { workspace : '#_1_WAR_portoscalendarappointmentsportlet_', presidio: '', isModalitaPrenotazione: false, selectedDate: '' }, clear: function () { AUI().all(".agenda__body--row").each(function (){ AUI().one(this).detach("click"); }); AUI().one(calendar.constants.workspace + "save").detach("click"); AUI().one(calendar.constants.workspace + "delete").detach("click"); AUI().one(calendar.constants.workspace + "save_disponibilita").detach("click"); AUI().one(calendar.constants.workspace + "delete_disponibilita").detach("click"); this.agenda.clearAvailable(); this.agenda.clearEvents(); }, refresh: function(){ $('.layer-popup').addClass('active'); calendar.clear(); calendar.agenda.popolateByDay(calendar.constants.selectedDate, calendar.constants.presidio); calendar.agenda.initPopup(); setTimeout(function() { $('.layer-popup').removeClass('active'); }, 400) }, datepiker: { init: function (date, presidio) { $("#datepicker").datepicker({ dateFormat: 'dd/MM/yy', monthNames: ["01","02","03","04","05","06","07","08","09","10","11","12"], onSelect: function (dateText, inst) { // calendar.clear(); // calendar.agenda.popolateByDay(dateText, presidio); calendar.constants.selectedDate = dateText; calendar.refresh(); }, beforeShowDay: function (date) { var string = jQuery.datepicker.formatDate('yy-mm-dd', date); return [disableDate.indexOf(string) == -1] } }); $.datepicker.setDefaults($.datepicker.regional["it"]); calendar.constants.selectedDate = date; $("#datepicker").datepicker('setDate', date); } }, modalitaPrenotazione: { setModalitaPrenotazione: function(activate) { calendar.constants.isModalitaPrenotazione = activate; calendar.refresh(); }, init: function () { var isFeUser = !(isDirigenteGenerale=='true' || isIstruttoreForOrgs=='true' || isPOForOrgs=='true' || isBoUser=='true'); $('#prenotazioneMode').change(function(event) { calendar.modalitaPrenotazione.setModalitaPrenotazione($(this).is(":checked")); event.preventDefault(); }); if(isFeUser) $('#prenotazioneModeBox').hide(); else $('#prenotazioneModeBox').show(); } }, agenda: { init: function (jsonFunzionari, date, presidio) { this.createHeader(jsonFunzionari, date, presidio); this.createBody(jsonFunzionari, date, presidio); this.popolateByDay(date, presidio); this.initPopup(); }, popolateByDay: function(date, presidio) { var _this = this; Liferay.Service( '/portos-calendar-appointments-portlet.disponibilita/get-disponibilita-by-date', { /*FI OLD*/ presidio: presidio, date: date }, function(obj) { _this.setAvailable(obj, date, presidio); _this.loadEvents(_this, date, presidio); } ); }, createHeader: function (jsonFunzionari, date, presidio) { var $this = $('.agenda__header'); var header_template = '
'; var funzionari = JSON.parse(jsonFunzionari); var nfunzionari = funzionari.length; for (var i = 0; i < nfunzionari; i++) { var role = ''; switch (funzionari[i].tipologia) { case 'Geologo': role = "geologo"; break; case 'Istruttore': role = "istruttore"; break; default: role = ""; } if(nfunzionari >= 10){ header_template = header_template.concat('
' + '

' + //Bug 32935 funzionari[i].cognome + ' ' +funzionari[i].nome + '

' + '

(' + funzionari[i].tipologia + ')

' + '
'); } else { header_template = header_template.concat('
' + '

' + //Bug 32935 funzionari[i].cognome + ' ' +funzionari[i].nome + '

' + '

(' + funzionari[i].tipologia + ')

' + '
'); } } $this.html(header_template); }, createBody: function (jsonFunzionari, date, presidio) { var $this = $('.agenda__body'); var funzionari = JSON.parse(jsonFunzionari); var nfunzionari = funzionari.length; var header_body_timing = ''; for (var i = 0; i < nfunzionari; i++) { var role = ''; switch (funzionari[i].tipologia) { case 'Geologo': role = "geologo"; break; case 'Strutturista': role = "strutturista"; break; default: role = ""; } header_body_timing = header_body_timing.concat('
\n' + '
' + '
08:00
\n' + '
09:00
\n' + '
10:00
\n' + '
11:00
\n' + '
12:00
\n' + '
13:00
\n' + '
14:00
\n' + '
15:00
\n' + '
16:00
\n' + '
17:00
\n' + '
18:00
\n' + '
19:00
\n' + '
\n' + '
\n' + '
' + '

' + //Bug 32935 funzionari[i].cognome +' '+funzionari[i].nome+ '

' + '

(' + funzionari[i].tipologia + ')

' + '
' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
'); $this.html(header_body_timing); } }, setAvailable: function (jsonDisponibilita, date, presidio) { var disponibilita = JSON.parse(jsonDisponibilita); var ndisponibilita = disponibilita.length; for (var i in disponibilita) { //Bug 32935 // var isDisponibile = disponibilita[i].ore[0].disponibile; // if(isDisponibile){ var idCols = '#col_' + disponibilita[i].idFunzionario; var array_row = $('#col_' + disponibilita[i].idFunzionario + ' .agenda__body--row'); for (var j in disponibilita[i].ore) { var inizioAvailable = disponibilita[i].ore[j].inizio; var fineAvailable = disponibilita[i].ore[j].fine; var isDisponibile = disponibilita[i].ore[j].disponibile; if(isDisponibile){ var targetStartAvailable = idCols + ' *[data-id="' + inizioAvailable + '"]'; var targetEndAvailable = idCols + ' *[data-id="' + fineAvailable + '"]'; var tmpClass = calendar.constants.isModalitaPrenotazione ? 'prenotazione' : 'available'; $(targetStartAvailable).addClass(tmpClass).addClass('available-start'); $(targetEndAvailable).addClass('available-finish'); var fascia = false; array_row.each(function (indici) { if ($(this).hasClass("available-start")) { $(this).addClass(tmpClass); fascia = true; } else if ($(this).hasClass("available-finish")) { fascia = false; } else if (fascia) { $(this).addClass(tmpClass); } }); } } // } } }, loadEvents: function (scope, date, presidio) { var _this = this; var userId = Liferay.ThemeDisplay.getUserId() Liferay.Service( '/portos-calendar-appointments-portlet.prenotazione/get-prenotazioni-by-date', { /*FI OLD*/ presidio: presidio, date: date, userId: userId }, function(obj) { var eventi = JSON.parse(obj); var nprenotazioni = eventi.length; var tmpClass = calendar.constants.isModalitaPrenotazione ? 'prenotazione' : 'available' ; for (var i in eventi) { var array_inizi = []; var array_finish = []; // console.log(eventi); var idCols = '#col_' + eventi[i].idFunzionario; var $idCols = $('#col_' + eventi[i].idFunzionario); var array_row = $('#col_' + eventi[i].idFunzionario + ' .agenda__body--row'); for (var j in eventi[i].prenotazioni) { var inizio = eventi[i].prenotazioni[j].inizio; var fine = eventi[i].prenotazioni[j].fine; var descrizione = eventi[i].prenotazioni[j].descrizione; var richiedente = eventi[i].prenotazioni[j].richiedente; //Product Backlog Item 32934 var telefono = eventi[i].prenotazioni[j].telefono; var email = eventi[i].prenotazioni[j].email; var dataId = eventi[i].prenotazioni[j].idPrenotazione; var idDescrizione = "descrizione_" + i + "_" + j; var visible = eventi[i].prenotazioni[j].visible; var html_desccrizione = ""; if(visible){ var html_desccrizione = '
' + '

' + inizio + '-' + fine + '

' + '

' + richiedente + '

' + /* '

' + descrizione + '

' +*/ '
'; } else { var html_desccrizione = '
' + '

' + inizio + '-' + fine + '

' + '
'; } var targetStart = idCols + ' div[data-id="' + inizio + '"]'; var targetEnd = idCols + ' div[data-id="' + fine + '"]'; $(targetStart).addClass('busy busy-start').removeClass(tmpClass).removeClass('available-start available-finish'); $(targetEnd).addClass('busy-finish').removeClass('available-start available-finish'); $idCols.append(html_desccrizione); // if(!visible){ // AUI().one("#"+idDescrizione).detach(); // } var bottom = $(targetEnd).offset().top; _this.positionDescription($('#' + idDescrizione), $(targetStart), bottom); } array_row.each(function (index) { if ($(this).hasClass("busy-start")) { array_inizi.push(index); } if ($(this).hasClass("busy-finish")) { array_finish.push(index); } }); $.each(array_inizi, function (indici) { array_row.filter(function (index) { if (index >= array_inizi[indici] && index < array_finish[indici]) return true; }).addClass('busy').removeClass(tmpClass).removeClass('available-start available-finish'); }); } scope.initScrollbar(); scope.initEventOnOre(presidio); scope.resizePrenotazioni(eventi); } ) }, clearAvailable: function () { $('.appuntamento_descrizione').remove(); $('.appuntamento_descrizione_limite_visibile').remove(); $('.agenda__body--row').removeClass('busy busy-start busy-finish'); $('.agenda__body--row').removeClass('prenotazione'); }, clearEvents: function () { $('.agenda__body--row').removeClass('available available-start available-finish') }, positionDescription: function (idDescrizione, tagetStart, bottom) { idDescrizione.css({ "left": tagetStart.position().left, "top": tagetStart.position().top, "height": bottom - tagetStart.offset().top }); }, initScrollbar: function () { var list_appuntamenti = $('.appuntamento_descrizione'); list_appuntamenti.each(function (index) { var id_element = '#' + $(this).attr('id'); const ps = new PerfectScrollbar(id_element); }) }, popolateSelectDisponibilita: function (presidio, date, idFunzionario, oraInizio) { Liferay.Service( '/portos-calendar-appointments-portlet.disponibilita/get-disponibilita-by-date', { presidio: presidio, date: date }, function(obj) { var disponibilita = JSON.parse(obj); var workspace = calendar.constants.workspace; for (var i in disponibilita) { if(idFunzionario == disponibilita[i].idFunzionario) { var fascieOrarie = disponibilita[i].ore; calendar.agenda.createOptionHtml(fascieOrarie, date,idFunzionario,presidio); } } AUI().one(".popup-calendar "+workspace+"oraInizio").val(oraInizio); calendar.agenda.setHourByStart(oraInizio); } ); }, createOptionHtml: function(fascieOrarie, date,idFunzionario, presidio) { var oreInizio = []; var oreFine = []; var ora = ""; var htmlInizioSelect = ""; var htmlFineSelect = ""; var workspace = calendar.constants.workspace; for( var j in fascieOrarie){ var inizio = parseInt(fascieOrarie[j].inizio.substring(0, 2)); var inizioMin = parseInt(fascieOrarie[j].inizio.substring(3, 5)); var fine = parseInt(fascieOrarie[j].fine.substring(0, 2)); var fineMin = parseInt(fascieOrarie[j].fine.substring(3, 5)); oreInizio.push(fascieOrarie[j].inizio); var first=true; for(var i = inizio; i <= fine; i++) { if(i<10) { ora = '0'+i; } else { ora = ''+i; } if(first){ if(inizioMin != '30'){ oreInizio.push(ora+":30"); oreFine.push(ora+":30"); } first=false; }else{ if(i'+ slot[i].ora +''; } else { htmlInizioSelect += ''; } } $(".popup-calendar "+ workspace +"oraInizio").html(htmlInizioSelect); oreFine.forEach(function( entry ) { htmlFineSelect += ''; }); $(".popup-calendar "+ workspace +"oraFineSelect").html(htmlFineSelect); } ); }, initEventOnOre: function(presidio){ var workspace = calendar.constants.workspace; var idCol = $(this).closest('.agenda__body--col').attr('id'); var dataId = $(this).data('id'); var userId = Liferay.ThemeDisplay.getUserName(); AUI().all(".appuntamento_descrizione").on( 'click', function(event) { event.preventDefault(); var prenotazione = event.currentTarget.getData('id'); AUI().io.request( calendar.constants.getBookingUrl, { data: { "_1_WAR_portoscalendarappointmentsportlet_prenotazioneId": prenotazione }, dataType: 'json', on: { failure: function() { alert('impossibile rimuovere la firma!'); }, success: function(event, id, obj) { var response = this.get('responseData'); var idPrenotazione = response.idPrenotazione; var funzionario = response.funzionario; var funzionarioId = response.funzionarioId; var date = $("#datepicker").datepicker({ dateFormat: 'dd,MM,yyyy' }).val(); var oraInizio = response.inizio; var oraFine = response.fine; var desc = response.descrizione; var richiedente = response.richiedente; //Product Backlog Item 32934 var telefono = response.telefono; var email = response.email; // calendar.agenda.popolateSelectDisponibilita(presidio, date, funzionarioId, oraInizio); $('.val-funzionario').html(funzionario); $('.val-richiedente').html(richiedente); $(".popup-calendar "+ workspace +"idPrenotazione").html(idPrenotazione) $(".popup-calendar "+ workspace +"descrizione").val(desc); $(".popup-calendar "+ workspace +"funzionarioId").val(funzionarioId); $(".popup-calendar "+ workspace +"dataAppuntamento").val(date); //Product Backlog Item 32934 $(".popup-calendar "+ workspace +"telefono").val(telefono); $(".popup-calendar "+ workspace +"email").val(email); // setTimeout(function() { $(".popup-calendar "+workspace+"oraInizio").val(oraInizio); $(".popup-calendar "+workspace+"oraFineSelect").val(oraFine); // }, 400); if(response!=undefined && response!=null ){ $('.popup-calendar').not('#disponibilitaPopUp').slideDown(); $('.layer-popup').addClass('active'); calendar.agenda.viewMode(); } } } } ); } ); // AUI().all(".agenda__body--row.available").on( AUI().all(".agenda__body--row").on( 'click', function(event) { event.preventDefault(); // console.log($(event.currentTarget).attr('data-id')); var isDisponibilitaAvailable = event.currentTarget.hasClass('available'); var isPrenotazioneModeOn = event.currentTarget.hasClass('prenotazione'); // console.log('isDisponibilitaAvailable ' + isDisponibilitaAvailable); // console.log('isDirigenteGenerale ' + isDirigenteGenerale); // console.log('isIstruttoreForOrgs ' + isIstruttoreForOrgs); // console.log('isPOForOrgs ' + isPOForOrgs); // console.log('isBoUser ' + isBoUser); var isFeUser = !(isDirigenteGenerale=='true' || isIstruttoreForOrgs=='true' || isPOForOrgs=='true' || isBoUser=='true'); // console.log('isFeUser ' + isFeUser); var prenotazioneId = $(calendar.constants.workspace +"idPrenotazione").text(); // console.log('prenotazioneId ' + prenotazioneId); //slot disponibile per creazione di una prenotazione var funzionario = event.currentTarget.ancestor('.agenda__body--col').one('.agenda__body--col__header-name').html(); var funzionarioId = event.currentTarget.ancestor('.agenda__body--col').attr("id").replace("col_",""); var date = $("#datepicker").datepicker({ dateFormat: 'dd,MM,yyyy' }).val(); var oraInizio = event.currentTarget.getData('id'); // calendar.agenda.popolateSelectDisponibilita(presidio, date, funzionarioId, oraInizio); var timeArray = oraInizio.split(':'); var dtFine = new Date((new Date()).setHours(timeArray[0], timeArray[1])); dtFine = new Date(dtFine.getTime() + 30*60000); var oraFine = dtFine.getHours().toString().padStart(2, '0') + ":" + dtFine.getMinutes().toString().padStart(2, '0'); $(".popup-calendar "+ workspace +"funzionarioId").val(funzionarioId); $(".popup-calendar "+ workspace +"dataAppuntamento").val(date); $('.val-funzionario').html(funzionario); $('.val-richiedente').html(userId); if((isFeUser && isDisponibilitaAvailable) || (!isFeUser && ((isDisponibilitaAvailable && prenotazioneId) || (isPrenotazioneModeOn && calendar.constants.isModalitaPrenotazione)))){ // //slot disponibile per creazione di una prenotazione // $('.layer-popup').addClass('active'); // // var funzionario = event.currentTarget.ancestor('.agenda__body--col').one('.agenda__body--col__header-name').html(); // var funzionarioId = event.currentTarget.ancestor('.agenda__body--col').attr("id").replace("col_",""); // var date = $("#datepicker").datepicker({ dateFormat: 'dd,MM,yyyy' }).val(); // // var oraInizio = event.currentTarget.getData('id'); //// calendar.agenda.popolateSelectDisponibilita(presidio, date, funzionarioId, oraInizio); // // var timeArray = oraInizio.split(':'); // var dtFine = new Date((new Date()).setHours(timeArray[0], timeArray[1])); // dtFine = new Date(dtFine.getTime() + 30*60000); // var oraFine = dtFine.getHours().toString().padStart(2, '0') + ":" + dtFine.getMinutes().toString().padStart(2, '0'); $(workspace+"oraInizio").val(oraInizio); $(workspace+"oraFineSelect").val(oraFine); // $(".popup-calendar "+ workspace +"funzionarioId").val(funzionarioId); // $(".popup-calendar "+ workspace +"dataAppuntamento").val(date); // $('.val-funzionario').html(funzionario); // $('.val-richiedente').html(userId); if(!prenotazioneId) calendar.agenda.editMode(); else calendar.agenda.viewMode(); $('.layer-popup').addClass('active'); setTimeout(function() { $('.popup-calendar').not('#disponibilitaPopUp').slideDown(); }, 300); }else if(!isFeUser && !(calendar.constants.isModalitaPrenotazione)){ // //slot non disponibile per creazione di una disponibilità // $('.layer-popup').addClass('active'); // // var funzionario = event.currentTarget.ancestor('.agenda__body--col').one('.agenda__body--col__header-name').html(); // var funzionarioId = event.currentTarget.ancestor('.agenda__body--col').attr("id").replace("col_",""); // var date = $("#datepicker").datepicker({ dateFormat: 'dd,MM,yyyy' }).val(); // // var oraInizio = event.currentTarget.getData('id'); // var timeArray = oraInizio.split(':'); // var dtFine = new Date((new Date()).setHours(timeArray[0], timeArray[1])); // dtFine = new Date(dtFine.getTime() + 30*60000); // var oraFine = dtFine.getHours().toString().padStart(2, '0') + ":" + dtFine.getMinutes().toString().padStart(2, '0'); $(workspace+"oraInizio_disponibilita").val(oraInizio); $(workspace+"oraFineSelect_disponibilita").val(oraFine); // $(".popup-calendar "+ workspace +"funzionarioId").val(funzionarioId); // $(".popup-calendar "+ workspace +"dataAppuntamento").val(date); // $('.val-funzionario').html(funzionario); //// $('name=[userId]').html(userId); if(isDisponibilitaAvailable) calendar.agenda.viewMode(); else calendar.agenda.editMode(); $('.layer-popup').addClass('active'); setTimeout(function() { $('#disponibilitaPopUp.popup-calendar').slideDown(); }, 300); } } ); }, initPopup: function () { // console.log("initPopup: "); var workspace = calendar.constants.workspace; var idCol = $(this).closest('.agenda__body--col').attr('id'); var dataId = $(this).data('id'); var userId = Liferay.ThemeDisplay.getUserName(); AUI().one(".popup-calendar "+workspace+"oraInizio").on( 'change', function(event) { var oraInizio = event.currentTarget.val(); calendar.agenda.setHourByStart(oraInizio); } ) AUI().all('#icon-close-popup').on( 'click', function(event) { event.preventDefault(); calendar.agenda.chiudiPopup(); } ); AUI().one(calendar.constants.workspace+'edit').on( 'click', function(event) { event.preventDefault(); var prenotazione = AUI().one(".popup-calendar "+ calendar.constants.workspace +"idPrenotazione").text(); var userParam = calendar.constants.workspace+"userId", prenotazioneParam = calendar.constants.workspace+"prenotazioneId"; AUI().io.request( calendar.constants.isEditableUrl, { data: { "_1_WAR_portoscalendarappointmentsportlet_prenotazioneId" : prenotazione }, dataType: 'json', on: { failure: function() { alert('Non si hanno i permessi per modificare la prenotazione'); }, success: function(event, id, obj) { var response = this.get('responseData'); if(response!=undefined && response!=null ){ if(response.status == "success"){ calendar.agenda.editMode(); } else if (response.status == "error"){ alert('Non si hanno i permessi per modificare la prenotazione'); } } } } } ); } ); AUI().one(calendar.constants.workspace+'save_disponibilita').on( 'click', function(event) { event.preventDefault(); var oraInizio = $(calendar.constants.workspace +"oraInizio_disponibilita").val(); var oraFine = $(calendar.constants.workspace +"oraFineSelect_disponibilita").val(); var funzionarioId = $(calendar.constants.workspace + "funzionarioId").val(); var date = $("#datepicker").datepicker({ dateFormat: 'dd,MM,yyyy' }).val(); var presidio = calendar.constants.presidio; // console.log('oraInizio ' + oraInizio); // console.log('oraFine ' + oraFine); // console.log('funzionarioId ' + funzionarioId); // console.log('date ' + date); // console.log('presidio ' + presidio); if (confirm("Sei sicuro di voler salvare?") == true) { AUI().io.request( calendar.constants.createDisponibilitaUrl, { data: { "_1_WAR_portoscalendarappointmentsportlet_oraInizio" : oraInizio, "_1_WAR_portoscalendarappointmentsportlet_oraFine" : oraFine, "_1_WAR_portoscalendarappointmentsportlet_date" : date, "_1_WAR_portoscalendarappointmentsportlet_funzionarioId" : funzionarioId, "_1_WAR_portoscalendarappointmentsportlet_presidio" : presidio }, dataType: 'json', on: { failure: function() { alert('Non si hanno i permessi per creare una disponibilità'); }, success: function(event, id, obj) { if("success" == JSON.parse(obj.response).status){ var selectedSlot = $('#col_' + funzionarioId).find('[data-id="' + oraInizio + '"]'); selectedSlot.addClass('first_half_hour available available-start'); selectedSlot.next().addClass('first_half_hour available-finish'); calendar.agenda.chiudiPopup(); }else alert('Non si hanno i permessi per creare una disponibilità'); calendar.agenda.chiudiPopup(); } } } ); } } ); AUI().one(calendar.constants.workspace+'delete_disponibilita').on( 'click', function(event) { event.preventDefault(); var oraInizio = $(calendar.constants.workspace +"oraInizio_disponibilita").val(); var oraFine = $(calendar.constants.workspace +"oraFineSelect_disponibilita").val(); var funzionarioId = $(calendar.constants.workspace + "funzionarioId").val(); var date = $("#datepicker").datepicker({ dateFormat: 'dd,MM,yyyy' }).val(); var presidio = calendar.constants.presidio; // console.log('oraInizio ' + oraInizio); // console.log('oraFine ' + oraFine); // console.log('funzionarioId ' + funzionarioId); // console.log('date ' + date); // console.log('presidio ' + presidio); if (confirm("Sei sicuro di voler cancellare?") == true) { AUI().io.request( calendar.constants.deleteDisponibilitaUrl, { data: { "_1_WAR_portoscalendarappointmentsportlet_oraInizio" : oraInizio, "_1_WAR_portoscalendarappointmentsportlet_oraFine" : oraFine, "_1_WAR_portoscalendarappointmentsportlet_date" : date, "_1_WAR_portoscalendarappointmentsportlet_funzionarioId" : funzionarioId, "_1_WAR_portoscalendarappointmentsportlet_presidio" : presidio }, dataType: 'json', on: { failure: function() { alert('Non si hanno i permessi per cancellare una disponibilità'); }, success: function(event, id, obj) { if("success" == JSON.parse(obj.response).status){ var selectedSlot = $('#col_' + funzionarioId).find('[data-id="' + oraInizio + '"]'); selectedSlot.removeClass('first_half_hour available available-start'); selectedSlot.next().removeClass('first_half_hour available-finish'); } else alert('Non si hanno i permessi per cancellare una disponibilità'); calendar.agenda.chiudiPopup(); } } } ); } } ); AUI().one(calendar.constants.workspace+'save').on( 'click', function(event) { event.preventDefault(); //Product Backlog Item 32934 var isValid = true; $("[name*='descrizione'],[name*='telefono'],[name*='email']").each(function () { if ($.trim($(this).val()) === '') { isValid = false; $(this).css({ "border": "1px solid red" }); } else { $(this).css({ "border": "", "background": "" }); } }); var email = $("[name*='email']"); var val = email.val(); var regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; var regexObj = new RegExp (regex); var resultEmail = regexObj.test(val); if(resultEmail === false){ isValid = false; email.css({ "border": "1px solid red" }); } var telefono = $("[name*='telefono']"); var val = telefono.val(); var regex = /^\d+$/; var regexObjTelefono = new RegExp (regex); var resultTelefono = regexObjTelefono.test(val); if(resultTelefono === false){ isValid = false; telefono.css({ "border": "1px solid red" }); } if (isValid === false) return; var prenotazione = AUI().one(".popup-calendar "+ calendar.constants.workspace +"idPrenotazione").text(), oraInizio = AUI().one(".popup-calendar "+ calendar.constants.workspace +"oraInizio").get('value'); oraFine = AUI().one(".popup-calendar "+ calendar.constants.workspace +"oraFineSelect").get('value'), descrizione = AUI().one(".popup-calendar "+ calendar.constants.workspace +"descrizione").get('value'); //Product Backlog Item 32934 telefono = AUI().one(".popup-calendar "+ calendar.constants.workspace +"telefono").get('value'); email = AUI().one(".popup-calendar "+ calendar.constants.workspace +"email").get('value'); if(prenotazione != ""){ if (confirm("Sei sicuro di voler fissare l'appuntamento?") == true) { // console.log('inner SAVE'); AUI().io.request( calendar.constants.createDisponibilita, { data: { "_1_WAR_portoscalendarappointmentsportlet_prenotazioneId" : prenotazione, "_1_WAR_portoscalendarappointmentsportlet_oraInizio" : oraInizio, "_1_WAR_portoscalendarappointmentsportlet_oraFine" : oraFine, "_1_WAR_portoscalendarappointmentsportlet_descrizione" : descrizione, //Product Backlog Item 32934 "_1_WAR_portoscalendarappointmentsportlet_telefono" : telefono, "_1_WAR_portoscalendarappointmentsportlet_email" : email }, dataType: 'json', on: { failure: function() { alert('Non si hanno i permessi per modificare la prenotazione'); }, success: function(event, id, obj) { // var response = this.get('responseData'); // calendar.agenda.chiudiPopup(); // var day = $("#datepicker").val(); // var day_now = {"_1_WAR_portoscalendarappointmentsportlet_data" : day}; // Liferay.Portlet.refresh('#p_p_id_1_WAR_portoscalendarappointmentsportlet_', day_now); // // if(response!=undefined && response!=null ){ // alert('ok') // } if("success" == JSON.parse(obj.response).status){ var response = this.get('responseData'); calendar.agenda.chiudiPopup(); var day = $("#datepicker").val(); var day_now = {"_1_WAR_portoscalendarappointmentsportlet_data" : day}; // Liferay.Portlet.refresh('#p_p_id_1_WAR_portoscalendarappointmentsportlet_', day_now); }else alert('Non si hanno i permessi per creare una prenotazione'); calendar.agenda.chiudiPopup(); calendar.refresh(); } } } ); } } else { if (confirm("Sei sicuro di voler fissare l'appuntamento?") == true) { var funzionarioId = AUI().one(".popup-calendar "+ calendar.constants.workspace +"funzionarioId").val(), professionistaId = AUI().one(".popup-calendar "+ calendar.constants.workspace +"professionistaId").val(), dataAppuntamento = $("#datepicker").val(); AUI().io.request( calendar.constants.newBookingUrl, { data: { "_1_WAR_portoscalendarappointmentsportlet_funzionarioId" : funzionarioId, "_1_WAR_portoscalendarappointmentsportlet_professionistaId" : professionistaId, "_1_WAR_portoscalendarappointmentsportlet_dataAppuntamento" : dataAppuntamento, "_1_WAR_portoscalendarappointmentsportlet_oraInizio" : oraInizio, "_1_WAR_portoscalendarappointmentsportlet_oraFine" : oraFine, "_1_WAR_portoscalendarappointmentsportlet_descrizione" : descrizione, //Product Backlog Item 32934 "_1_WAR_portoscalendarappointmentsportlet_telefono" : telefono, "_1_WAR_portoscalendarappointmentsportlet_email" : email }, dataType: 'json', on: { failure: function() { alert('Non si hanno i permessi per aggiungere una nuova prenotazione'); }, success: function(event, id, obj) { // var response = this.get('responseData'); // calendar.agenda.chiudiPopup(); // var day = $("#datepicker").val(); // var day_now = {"_1_WAR_portoscalendarappointmentsportlet_data" : day}; // Liferay.Portlet.refresh('#p_p_id_1_WAR_portoscalendarappointmentsportlet_', day_now); // // if(response!=undefined && response!=null ){ // alert('ok'); // } if("success" == JSON.parse(obj.response).status){ var response = this.get('responseData'); calendar.agenda.chiudiPopup(); var day = $("#datepicker").val(); var day_now = {"_1_WAR_portoscalendarappointmentsportlet_data" : day}; // Liferay.Portlet.refresh('#p_p_id_1_WAR_portoscalendarappointmentsportlet_', day_now); }else alert('Non si hanno i permessi per creare una prenotazione'); calendar.agenda.chiudiPopup(); calendar.refresh(); } } } ); } } } ); AUI().one(calendar.constants.workspace+'delete').on( 'click', function(event) { if (confirm("Sei sicuro di voler cancellare l'appuntamento?") == true) { event.preventDefault(); var prenotazione = AUI().one(".popup-calendar "+ calendar.constants.workspace +"idPrenotazione").text(), user = AUI().one(".popup-calendar "+ calendar.constants.workspace +"professionistaId").val(); var funzionario = $(calendar.constants.workspace + "funzionarioId").val(); AUI().io.request( calendar.constants.deleteBookingUrl, { data: { "_1_WAR_portoscalendarappointmentsportlet_prenotazioneId" : prenotazione, "_1_WAR_portoscalendarappointmentsportlet_userId" : user, "_1_WAR_portoscalendarappointmentsportlet_funzionarioId" : funzionario }, on: { failure: function() { alert('Non si hanno i permessi per rimuovere questa prenotazione'); }, success: function(event, id, obj) { // console.log('/*/*/*/*/*/*') // console.log($("#datepicker").val()); // console.log('/*/*/*/*/*/*') // var response = this.get('responseData'); // calendar.agenda.chiudiPopup(); // var day = $("#datepicker").val(); // var day_now = {"_1_WAR_portoscalendarappointmentsportlet_data" : day}; // Liferay.Portlet.refresh('#p_p_id_1_WAR_portoscalendarappointmentsportlet_', day_now); // // if(response!=undefined && response!=null ){ // alert('ok') // } if("success" == JSON.parse(obj.response).status){ var response = this.get('responseData'); var day = $("#datepicker").val(); var day_now = {"_1_WAR_portoscalendarappointmentsportlet_data" : day}; // Liferay.Portlet.refresh('#p_p_id_1_WAR_portoscalendarappointmentsportlet_', day_now); }else alert('Non si hanno i permessi per cancellare una prenotazione'); calendar.agenda.chiudiPopup(); calendar.refresh(); } } } ); } } ); }, viewMode: function() { // console.log('viewMode'); $(".popup-calendar "+ calendar.constants.workspace +"oraInizio").prop("disabled", true); $(".popup-calendar "+ calendar.constants.workspace +"descrizione").prop("disabled", true); //Product Backlog Item 32934 $(".popup-calendar "+ calendar.constants.workspace +"telefono").prop("disabled", true); $(".popup-calendar "+ calendar.constants.workspace +"email").prop("disabled", true); $(calendar.constants.workspace +"edit").hide(); $(calendar.constants.workspace +"save").hide(); $(calendar.constants.workspace +"delete").show(); $(calendar.constants.workspace +"delete_disponibilita").show(); $(calendar.constants.workspace +"save_disponibilita").hide(); }, editMode: function () { // console.log('editMode'); //Product Backlog Item 32934 $(".popup-calendar "+ calendar.constants.workspace +"oraInizio").prop("disabled", true); $(".popup-calendar "+ calendar.constants.workspace +"descrizione").prop("disabled", false); //Product Backlog Item 32934 $(".popup-calendar "+ calendar.constants.workspace +"telefono").prop("disabled", false); $(".popup-calendar "+ calendar.constants.workspace +"email").prop("disabled", false); $(calendar.constants.workspace +"save").show(); $(calendar.constants.workspace +"edit").hide(); $(calendar.constants.workspace +"delete").hide(); $(calendar.constants.workspace +"delete_disponibilita").hide(); $(calendar.constants.workspace +"save_disponibilita").show(); }, resizePrenotazioni: function (eventi) { $(window).resize(function () { for (var i in eventi) { var idCols = '#col_' + eventi[i].idFunzionario; for (var j in eventi[i].prenotazioni) { var inizio = eventi[i].prenotazioni[j].inizio; var fine = eventi[i].prenotazioni[j].fine; var dataId = eventi[i].prenotazioni[j].idPrenotazione; var idDescrizione = "descrizione_" + i + "_" + j; var targetStart = idCols + ' *[data-id="' + inizio + '"]'; var targetEnd = idCols + ' *[data-id="' + fine + '"]'; var bottom = $(targetEnd).offset().top; calendar.agenda.positionDescription($('#' + idDescrizione), $(targetStart), bottom); } } }); }, setHourByStart: function(oraInizio) { //var options = $('#_1_WAR_portoscalendarappointmentsportlet_oraInizio option'); //options = options.index($('#_1_WAR_portoscalendarappointmentsportlet_oraInizio option[value="'+oraInizio+'"]')); setTimeout(function() { $(".popup-calendar #_1_WAR_portoscalendarappointmentsportlet_oraInizio").val(oraInizio); var options = $('#_1_WAR_portoscalendarappointmentsportlet_oraInizio option'); options = options.index($('#_1_WAR_portoscalendarappointmentsportlet_oraInizio option[value="'+oraInizio+'"]')); calendar.agenda.changeSelectFine(options); },300); }, changeSelectFine: function(index) { document.getElementById("_1_WAR_portoscalendarappointmentsportlet_oraFineSelect").selectedIndex = index; setTimeout(function() { var oraFine = $("#_1_WAR_portoscalendarappointmentsportlet_oraFineSelect").val(); $(".popup-calendar #_1_WAR_portoscalendarappointmentsportlet_oraFine").val(oraFine); }, 300); }, chiudiPopup: function() { var workspace = calendar.constants.workspace; $('.popup-calendar').slideUp(); $('.val-funzionario').html(""); $('.val-richiedente').html(""); $(".popup-calendar "+ workspace +"idPrenotazione").html(""); $(".popup-calendar "+ workspace +"oraInizio").val(""); $(".popup-calendar "+ workspace +"oraFine").val(""); $(".popup-calendar "+ workspace +"oraFineSelect").val(""); $(".popup-calendar "+ workspace +"descrizione").val(""); $(".popup-calendar "+ workspace +"funzionarioId").val(""); $(".popup-calendar "+ workspace +"dataAppuntamento").val(""); //Product Backlog Item 32934 $(".popup-calendar "+ workspace +"telefono").val(""); $(".popup-calendar "+ workspace +"email").val(""); $('.layer-popup').removeClass('active'); $('#disponibilitaPopUp.popup-calendar').slideUp(); $(".popup-calendar-disponibilita "+ workspace +"idPrenotazione").html(""); $(".popup-calendar-disponibilita "+ workspace +"oraInizio_disponibilita").val(""); $(".popup-calendar-disponibilita "+ workspace +"oraFineSelect_disponibilita").val(""); } } };