deving
This commit is contained in:
275
res/assets/js/apps/calendar-init.js
Normal file
275
res/assets/js/apps/calendar-init.js
Normal file
@@ -0,0 +1,275 @@
|
||||
/*========Calender Js=========*/
|
||||
/*==========================*/
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
/*=================*/
|
||||
// Calender Date variable
|
||||
/*=================*/
|
||||
var newDate = new Date();
|
||||
function getDynamicMonth() {
|
||||
getMonthValue = newDate.getMonth();
|
||||
_getUpdatedMonthValue = getMonthValue + 1;
|
||||
if (_getUpdatedMonthValue < 10) {
|
||||
return `0${_getUpdatedMonthValue}`;
|
||||
} else {
|
||||
return `${_getUpdatedMonthValue}`;
|
||||
}
|
||||
}
|
||||
/*=================*/
|
||||
// Calender Modal Elements
|
||||
/*=================*/
|
||||
var getModalTitleEl = document.querySelector("#event-title");
|
||||
var getModalStartDateEl = document.querySelector("#event-start-date");
|
||||
var getModalEndDateEl = document.querySelector("#event-end-date");
|
||||
var getModalAddBtnEl = document.querySelector(".btn-add-event");
|
||||
var getModalUpdateBtnEl = document.querySelector(".btn-update-event");
|
||||
var calendarsEvents = {
|
||||
Danger: "danger",
|
||||
Success: "success",
|
||||
Primary: "primary",
|
||||
Warning: "warning",
|
||||
};
|
||||
/*=====================*/
|
||||
// Calendar Elements and options
|
||||
/*=====================*/
|
||||
var calendarEl = document.querySelector("#calendar");
|
||||
var checkWidowWidth = function () {
|
||||
if (window.innerWidth <= 1199) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
var calendarHeaderToolbar = {
|
||||
left: "prev next addEventButton",
|
||||
center: "title",
|
||||
right: "dayGridMonth,timeGridWeek,timeGridDay",
|
||||
};
|
||||
var calendarEventsList = [
|
||||
{
|
||||
id: 1,
|
||||
title: "Event Conf.",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-01`,
|
||||
extendedProps: { calendar: "Danger" },
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "Seminar #4",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-07`,
|
||||
end: `${newDate.getFullYear()}-${getDynamicMonth()}-10`,
|
||||
extendedProps: { calendar: "Success" },
|
||||
},
|
||||
{
|
||||
groupId: "999",
|
||||
id: 3,
|
||||
title: "Meeting #5",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-09T16:00:00`,
|
||||
extendedProps: { calendar: "Primary" },
|
||||
},
|
||||
{
|
||||
groupId: "999",
|
||||
id: 4,
|
||||
title: "Submission #1",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-16T16:00:00`,
|
||||
extendedProps: { calendar: "Warning" },
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
title: "Seminar #6",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-11`,
|
||||
end: `${newDate.getFullYear()}-${getDynamicMonth()}-13`,
|
||||
extendedProps: { calendar: "Danger" },
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
title: "Meeting 3",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-12T10:30:00`,
|
||||
end: `${newDate.getFullYear()}-${getDynamicMonth()}-12T12:30:00`,
|
||||
extendedProps: { calendar: "Success" },
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
title: "Meetup #",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-12T12:00:00`,
|
||||
extendedProps: { calendar: "Primary" },
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
title: "Submission",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-12T14:30:00`,
|
||||
extendedProps: { calendar: "Warning" },
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
title: "Attend event",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-13T07:00:00`,
|
||||
extendedProps: { calendar: "Success" },
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
title: "Project submission #2",
|
||||
start: `${newDate.getFullYear()}-${getDynamicMonth()}-28`,
|
||||
extendedProps: { calendar: "Primary" },
|
||||
},
|
||||
];
|
||||
/*=====================*/
|
||||
// Calendar Select fn.
|
||||
/*=====================*/
|
||||
var calendarSelect = function (info) {
|
||||
getModalAddBtnEl.style.display = "block";
|
||||
getModalUpdateBtnEl.style.display = "none";
|
||||
myModal.show();
|
||||
getModalStartDateEl.value = info.startStr;
|
||||
getModalEndDateEl.value = info.endStr;
|
||||
};
|
||||
/*=====================*/
|
||||
// Calendar AddEvent fn.
|
||||
/*=====================*/
|
||||
var calendarAddEvent = function () {
|
||||
var currentDate = new Date();
|
||||
var dd = String(currentDate.getDate()).padStart(2, "0");
|
||||
var mm = String(currentDate.getMonth() + 1).padStart(2, "0"); //January is 0!
|
||||
var yyyy = currentDate.getFullYear();
|
||||
var combineDate = `${yyyy}-${mm}-${dd}T00:00:00`;
|
||||
getModalAddBtnEl.style.display = "block";
|
||||
getModalUpdateBtnEl.style.display = "none";
|
||||
myModal.show();
|
||||
getModalStartDateEl.value = combineDate;
|
||||
};
|
||||
|
||||
/*=====================*/
|
||||
// Calender Event Function
|
||||
/*=====================*/
|
||||
var calendarEventClick = function (info) {
|
||||
var eventObj = info.event;
|
||||
|
||||
if (eventObj.url) {
|
||||
window.open(eventObj.url);
|
||||
|
||||
info.jsEvent.preventDefault();
|
||||
} else {
|
||||
var getModalEventId = eventObj._def.publicId;
|
||||
var getModalEventLevel = eventObj._def.extendedProps["calendar"];
|
||||
var getModalCheckedRadioBtnEl = document.querySelector(
|
||||
`input[value="${getModalEventLevel}"]`
|
||||
);
|
||||
|
||||
getModalTitleEl.value = eventObj.title;
|
||||
getModalStartDateEl.value = eventObj.startStr.slice(0, 10);
|
||||
getModalEndDateEl.value = eventObj.endStr.slice(0, 10);
|
||||
getModalCheckedRadioBtnEl.checked = true;
|
||||
getModalUpdateBtnEl.setAttribute(
|
||||
"data-fc-event-public-id",
|
||||
getModalEventId
|
||||
);
|
||||
getModalAddBtnEl.style.display = "none";
|
||||
getModalUpdateBtnEl.style.display = "block";
|
||||
myModal.show();
|
||||
}
|
||||
};
|
||||
|
||||
/*=====================*/
|
||||
// Active Calender
|
||||
/*=====================*/
|
||||
var calendar = new FullCalendar.Calendar(calendarEl, {
|
||||
selectable: true,
|
||||
height: checkWidowWidth() ? 900 : 1052,
|
||||
initialView: checkWidowWidth() ? "listWeek" : "dayGridMonth",
|
||||
initialDate: `${newDate.getFullYear()}-${getDynamicMonth()}-07`,
|
||||
headerToolbar: calendarHeaderToolbar,
|
||||
events: calendarEventsList,
|
||||
select: calendarSelect,
|
||||
unselect: function () {
|
||||
console.log("unselected");
|
||||
},
|
||||
customButtons: {
|
||||
addEventButton: {
|
||||
text: "Add Event",
|
||||
click: calendarAddEvent,
|
||||
},
|
||||
},
|
||||
eventClassNames: function ({ event: calendarEvent }) {
|
||||
const getColorValue =
|
||||
calendarsEvents[calendarEvent._def.extendedProps.calendar];
|
||||
return ["event-fc-color fc-bg-" + getColorValue];
|
||||
},
|
||||
|
||||
eventClick: calendarEventClick,
|
||||
windowResize: function (arg) {
|
||||
if (checkWidowWidth()) {
|
||||
calendar.changeView("listWeek");
|
||||
calendar.setOption("height", 900);
|
||||
} else {
|
||||
calendar.changeView("dayGridMonth");
|
||||
calendar.setOption("height", 1052);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
/*=====================*/
|
||||
// Update Calender Event
|
||||
/*=====================*/
|
||||
getModalUpdateBtnEl.addEventListener("click", function () {
|
||||
var getPublicID = this.dataset.fcEventPublicId;
|
||||
var getTitleUpdatedValue = getModalTitleEl.value;
|
||||
var setModalStartDateValue = getModalStartDateEl.value;
|
||||
var setModalEndDateValue = getModalEndDateEl.value;
|
||||
var getEvent = calendar.getEventById(getPublicID);
|
||||
var getModalUpdatedCheckedRadioBtnEl = document.querySelector(
|
||||
'input[name="event-level"]:checked'
|
||||
);
|
||||
|
||||
var getModalUpdatedCheckedRadioBtnValue =
|
||||
getModalUpdatedCheckedRadioBtnEl !== null
|
||||
? getModalUpdatedCheckedRadioBtnEl.value
|
||||
: "";
|
||||
|
||||
getEvent.setProp("title", getTitleUpdatedValue);
|
||||
getEvent.setDates(setModalStartDateValue, setModalEndDateValue);
|
||||
getEvent.setExtendedProp("calendar", getModalUpdatedCheckedRadioBtnValue);
|
||||
myModal.hide();
|
||||
});
|
||||
/*=====================*/
|
||||
// Add Calender Event
|
||||
/*=====================*/
|
||||
getModalAddBtnEl.addEventListener("click", function () {
|
||||
var getModalCheckedRadioBtnEl = document.querySelector(
|
||||
'input[name="event-level"]:checked'
|
||||
);
|
||||
|
||||
var getTitleValue = getModalTitleEl.value;
|
||||
var setModalStartDateValue = getModalStartDateEl.value;
|
||||
var setModalEndDateValue = getModalEndDateEl.value;
|
||||
var getModalCheckedRadioBtnValue =
|
||||
getModalCheckedRadioBtnEl !== null ? getModalCheckedRadioBtnEl.value : "";
|
||||
|
||||
calendar.addEvent({
|
||||
id: 12,
|
||||
title: getTitleValue,
|
||||
start: setModalStartDateValue,
|
||||
end: setModalEndDateValue,
|
||||
allDay: true,
|
||||
extendedProps: { calendar: getModalCheckedRadioBtnValue },
|
||||
});
|
||||
myModal.hide();
|
||||
});
|
||||
/*=====================*/
|
||||
// Calendar Init
|
||||
/*=====================*/
|
||||
calendar.render();
|
||||
var myModal = new bootstrap.Modal(document.getElementById("eventModal"));
|
||||
var modalToggle = document.querySelector(".fc-addEventButton-button ");
|
||||
document
|
||||
.getElementById("eventModal")
|
||||
.addEventListener("hidden.bs.modal", function (event) {
|
||||
getModalTitleEl.value = "";
|
||||
getModalStartDateEl.value = "";
|
||||
getModalEndDateEl.value = "";
|
||||
var getModalIfCheckedRadioBtnEl = document.querySelector(
|
||||
'input[name="event-level"]:checked'
|
||||
);
|
||||
if (getModalIfCheckedRadioBtnEl !== null) {
|
||||
getModalIfCheckedRadioBtnEl.checked = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user