clam2021/public/js/program.js

202 lines
6.9 KiB
JavaScript
Raw Normal View History

2021-09-01 21:26:00 +00:00
document.addEventListener("DOMContentLoaded", function () {
var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
2021-09-01 23:17:32 +00:00
/*var slotMin = new Date("2021-09-13:14:00Z")
var slotMax = new Date("2021-09-13:23:30Z")
if(slotMax.getHours()<slotMin.getHours()){
slotMax.setHours(23)
slotMax.setMinutes(59)
2021-09-01 21:26:00 +00:00
}
2021-09-01 23:17:32 +00:00
console.log(slotMin.toLocaleTimeString(),slotMax.toLocaleTimeString())*/
//document.getElementById("timezone").innerHTML=`Zona Horaria: ${timeZone}`;
var timeZoneSelectorEl = document.getElementById("time-zone-selector");
if(timeZone !== "America/Montevideo"){
var optionEl = document.createElement('option');
optionEl.value = "local";
optionEl.innerText = timeZone;
timeZoneSelectorEl.appendChild(optionEl)
}
var calendarEl = document.getElementById("calendar");
var calendar = new FullCalendar.Calendar(calendarEl, {
schedulerLicenseKey: "CC-Attribution-NonCommercial-NoDerivatives",
eventDidMount: function (info) {
if(info.backgroundColor == "gray"){
var tooltip = tippy(info.el, {
content: `${info.event.extendedProps.description.replaceAll("|",',<br/>')}`,
// content: `<strong>${info.event.title}</strong><br/><ul>${info.event.extendedProps.description.split('|').map(ses=>`<li>${ses}</li>`)}</ul>`,
allowHTML: true,
});
}
else{
var tooltip = tippy(info.el, {
content: `<strong>${info.event.title}</strong><br/><strong>${info.event.extendedProps.speaker.nombre}</strong><br/>${info.event.extendedProps.description}`,
allowHTML: true,
});
}
},
eventSources: [
{url: "/api/eventos/cursos", color: "#755baf"},
{url: "/api/eventos/plenarias", color: "#578e44"},
{url: "/api/eventos/semiplenarias", color: "#3383cb"},
{url: "/api/eventos/publicas", color: "#a57b00"},
{url: "/api/eventos/premiados", color: "darkred"},
{ url: "/api/eventos/sesiones/", color: "gray", display:'list-item', eventDidMount:function(info){
console.log(info)
}},
{url: "/api/eventos/genero", color: "#812c64"},
{
events: function (info, success, fail) {
let asamblea = {
title: "Asamblea UMALCA",
start: "2021-09-13T19:00-0300",
end: "2019-09-13T20:00-0300",
url: 'https://us02web.zoom.us/j/88195214460',
speaker: {
nombre:
"Representantes de cada una de las sociedades que integran UMALCA",
},
description:
"Estatutariamente, la asamblea reúne a los representantes de cada una de las sociedades que integran UMALCA. Las autoridades de los distintos comités (ejecutivo, científico, etc) están presentes para dar cuentas de lo actuado. No está abierta al público en general.",
color: "black",
};
success([asamblea]);
},
},
],
headerToolbar: {
center: "timeGridAll,timeGridThree,timeGridOne,listView",
2021-09-01 21:26:00 +00:00
},
eventTimeFormat: {
hour: "numeric",
minute: "2-digit",
meridiem: false,
2021-09-01 21:26:00 +00:00
},
timeZone: "America/Montevideo",
locale: "es",
initialView: "timeGridAll",
initialDate: "2021-09-13",
validRange: {
start: "2021-09-13",
end: "2021-09-18",
2021-09-01 21:26:00 +00:00
},
nowIndicator: true,
now: "2021-09-12",
slotMinTime: "11:00:00",
slotMaxTime: "21:00:00",
slotDuration: "00:15",
allDaySlot: false,
slotLabelFormat: {
hour: "numeric",
minute: "2-digit",
omitZeroMinute: false,
meridiem: "short",
2021-09-01 21:26:00 +00:00
},
eventTimeFormat: {
hour: "numeric",
minute: "2-digit",
omitZeroMinute: false,
meridiem: "short",
},
eventDisplay: "block",
views: {
timeGridAll: {
type: "timeGrid",
duration: { days: 5 },
buttonText: "Todos los dias",
},
timeGridThree: {
type: "timeGrid",
duration: { days: 2 },
buttonText: "2 dias",
},
timeGridOne: {
type: "timeGrid",
duration: { days: 1 },
buttonText: "1 dia",
},
dayGridD: {
type: "dayGridDay",
},
dayGridW: {
type: "dayGridWeek",
duration: { days: 2 },
},
listView: {
type: "listWeek",
buttonText: "Lista",
duration: { days: 2 },
},
2021-09-01 21:26:00 +00:00
},
});
2021-09-01 21:26:00 +00:00
calendar.render();
2021-09-01 23:17:32 +00:00
timeZoneSelectorEl.addEventListener("change", function () {
console.log(calendar.getOption('slotMinTime'))
2021-09-01 23:17:32 +00:00
calendar.setOption("timeZone", this.value);
switch (this.value) {
case "America/Montevideo":
calendar.setOption("locale", "es");
calendar.setOption("slotMinTime", "11:00:00");
calendar.setOption("slotMaxTime", "21:00:00");
calendar.setOption("initialDate", "2021-09-13");
calendar.setOption("validRange", {
start: "2021-09-13",
end: "2021-09-18",
});
calendar.changeView("timeGridAll");
break;
case "UTC":
calendar.setOption("locale", "en");
calendar.setOption("slotMinTime", "14:00:00");
calendar.setOption("slotMaxTime", "23:59:00");
calendar.setOption("initialDate", "2021-09-13");
calendar.setOption("validRange", {
start: "2021-09-13",
end: "2021-09-18",
});
calendar.changeView("timeGridAll");
break;
default:
calendar.setOption("locale",'en')
let initial = moment("2021-09-13T14:00Z");
let final = moment("2021-09-17T23:30Z");
let offset = initial.utcOffset();
calendar.setOption("initialDate", initial.format("Y-MM-DD"));
if(offset>0 && offset < 600){
//calendar.setOption("slotMinTime", "initial.format("H:mm")");
calendar.setOption("slotMinTime", "00:00");
//calendar.setOption("slotMaxTime", {days:1,hours:offset/60});
calendar.setOption("slotMaxTime", "24:00");
calendar.changeView("listView");
}
//let currentOffset = moment().utcOffset();
//initial.add(currentOffset, "minutes");
//calendar.setOption('slotMinTime', initial.utc().format('H:mm'))
//calendar.setOption("slotMaxTime", {days:1,hours:currentOffset/60});
else{
calendar.setOption("slotMaxTime",final.format("H:mm"));
calendar.setOption("slotMinTime", initial.format("H:mm"));
}
calendar.setOption("validRange", {
start: initial.format("Y-MM-DD"),
end:final.add(1,'d').format("Y-MM-DD")
});
}
2021-09-01 23:17:32 +00:00
});
2021-09-01 21:26:00 +00:00
});