sito per le richieste......
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

1258 righe
56 KiB

4 anni fa
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 = '<div class="agenda__header--offset"></div>';
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('<div class="agenda__header--item ' +
role +
'">' +
'<p class="agenda__header--item-name agenda__header--item-name-size-min">' +
//Bug 32935
funzionari[i].cognome + ' ' +funzionari[i].nome +
'</p>' +
'<p class="agenda__header--item-role agenda__header--item-role-size-min">(' +
funzionari[i].tipologia +
')</p>' +
'</div>');
} else {
header_template = header_template.concat('<div class="agenda__header--item ' +
role +
'">' +
'<p class="agenda__header--item-name agenda__header--item-name-size-max">' +
//Bug 32935
funzionari[i].cognome + ' ' +funzionari[i].nome +
'</p>' +
'<p class="agenda__header--item-role agenda__header--item-role-size-max">(' +
funzionari[i].tipologia +
')</p>' +
'</div>');
}
}
$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('<div class="agenda__body--timing">\n' +
'<div class="agenda__body--timing__header"></div>' +
' <div class="timing__hour">08:00</div>\n' +
' <div class="timing__hour">09:00</div>\n' +
' <div class="timing__hour">10:00</div>\n' +
' <div class="timing__hour">11:00</div>\n' +
' <div class="timing__hour">12:00</div>\n' +
' <div class="timing__hour">13:00</div>\n' +
' <div class="timing__hour">14:00</div>\n' +
' <div class="timing__hour">15:00</div>\n' +
' <div class="timing__hour">16:00</div>\n' +
' <div class="timing__hour">17:00</div>\n' +
' <div class="timing__hour">18:00</div>\n' +
' <div class="timing__hour">19:00</div>\n' +
' </div>\n' +
' <div id="col_' + funzionari[i].id + '"' +
' class="agenda__body--col">\n' +
' <div class="agenda__body--col__header ' +
role +
'">' +
'<p class="agenda__body--col__header-name">' +
//Bug 32935
funzionari[i].cognome +' '+funzionari[i].nome+
'</p>' +
'<p class="agenda__body--col__header-role">(' +
funzionari[i].tipologia +
')</p>' +
'</div>' +
' <div data-id="08:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="08:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="09:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="09:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="10:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="10:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="11:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="11:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="12:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="12:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="13:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="13:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="14:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="14:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="15:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="15:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="16:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="16:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="17:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="17:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="18:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="18:30" class="agenda__body--row">\n' +
' </div>\n' +
' <div data-id="19:00" class="agenda__body--row first_half_hour">\n' +
' </div>\n' +
' <div data-id="19:30" class="agenda__body--row">\n' +
' </div>\n' +
' </div>');
$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 = '<div data-id="'+ dataId +'" id="' + idDescrizione + '" class="appuntamento_descrizione">' +
'<p class="appuntamento_descrizione--ora">' + inizio + '-' + fine + '</p>' +
'<p class="appuntamento_descrizione--richiedente">' + richiedente + '</p>' +
/* '<p class="appuntamento_descrizione--desc">' + descrizione + '</p>' +*/
'</div>';
} else {
var html_desccrizione = '<div data-id="'+ dataId +'" id="' + idDescrizione + '" class="appuntamento_descrizione_limite_visibile">' +
'<p class="appuntamento_descrizione_limite_visibile--ora">' + inizio + '-' + fine + '</p>' +
'</div>';
}
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<fine){
oreInizio.push(ora+":00");
oreInizio.push(ora+":30");
}else if(i==fine && fineMin=='30'){
oreInizio.push(ora+":00");
}
if (i != fine){
oreFine.push(ora+":00");
oreFine.push(ora+":30");
}else if(fineMin == '30'){
oreFine.push(ora+":00");
}
}
}
oreFine.push(fascieOrarie[j].fine);
}
Liferay.Service(
'/portos-calendar-appointments-portlet.disponibilita/verify-disponibilita-by-date-hour',
{
presidio: presidio,
date: date,
oreInizio:oreInizio,
idFunzionario:idFunzionario
},
function(obj) {
var slotJson = JSON.parse(obj);
var slot = slotJson.slot;
var nslot = slot.length;
for (var i = 0; i < nslot; i++) {
if(slot[i].disponibile){
htmlInizioSelect += '<option value="'+ slot[i].ora +'">'+ slot[i].ora +'</option>';
} else {
htmlInizioSelect += '<option disabled="disabled" value="'+ slot[i].ora +'">'+ slot[i].ora +'</option>';
}
}
$(".popup-calendar "+ workspace +"oraInizio").html(htmlInizioSelect);
oreFine.forEach(function( entry ) {
htmlFineSelect += '<option value="'+ entry +'">'+ entry +'</option>';
});
$(".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("");
}
}
};