function showAddVehicleModal() { uploadedFile = ""; $.get('/Vehicle/AddVehiclePartialView', function (data) { if (data) { $("#addVehicleModalContent").html(data); initTagSelector($("#inputTag")); initDatePicker($('#inputPurchaseDate')); initDatePicker($('#inputSoldDate')); $('#addVehicleModal').modal('show'); } }) } function hideAddVehicleModal() { $('#addVehicleModal').modal('hide'); } //refreshable function to reload Garage PartialView function loadGarage() { $.get('/Home/Garage', function (data) { $("#garageContainer").html(data); loadSettings(); bindTabEvent(); }); } function loadSettings() { $.get('/Home/Settings', function (data) { $("#settings-tab-pane").html(data); }); } function getVehicleSupplyRecords() { $.get(`/Vehicle/GetSupplyRecordsByVehicleId?vehicleId=0`, function (data) { if (data) { $("#supply-tab-pane").html(data); restoreScrollPosition(); } }); } function GetVehicleId() { return { vehicleId: 0, hasOdometerAdjustment: false }; } function bindTabEvent() { $('button[data-bs-toggle="tab"]').on('show.bs.tab', function (e) { switch (e.target.id) { case "supply-tab": getVehicleSupplyRecords(); break; case "calendar-tab": getVehicleCalendarEvents(); break; } switch (e.relatedTarget.id) { //clear out previous tabs with grids in them to help with performance case "supply-tab": $("#supply-tab-pane").html(""); break; case "calendar-tab": $("#calendar-tab-pane").html(""); break; } }); } function getVehicleCalendarEvents() { $.get('/Home/Calendar', function (data) { if (data) { $("#calendar-tab-pane").html(data); } }); } function showCalendarReminderModal(id) { event.stopPropagation(); $.get(`/Home/ViewCalendarReminder?reminderId=${id}`, function (data) { if (data) { $("#reminderRecordCalendarModalContent").html(data); $("#reminderRecordCalendarModal").modal('show'); $('#reminderRecordCalendarModal').off('shown.bs.modal').on('shown.bs.modal', function () { if (getGlobalConfig().useMarkDown) { toggleMarkDownOverlay("reminderNotes"); } }); } }) } function hideCalendarReminderModal() { $("#reminderRecordCalendarModal").modal('hide'); } function generateReminderItem(id, urgency, description) { if (description.trim() == '') { return; } switch (urgency) { case "VeryUrgent": return `
${encodeHTMLInput(description)}
`; case "PastDue": return `${encodeHTMLInput(description)}
`; case "Urgent": return `${encodeHTMLInput(description)}
`; case "NotUrgent": return `${encodeHTMLInput(description)}
`; } } function markDoneCalendarReminderRecord(reminderRecordId, e) { event.stopPropagation(); $.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) { if (data) { hideCalendarReminderModal(); successToast("Reminder Updated"); getVehicleCalendarEvents(); } else { errorToast(genericErrorMessage()); } }); } function deleteCalendarReminderRecord(reminderRecordId, e) { if (e != undefined) { event.stopPropagation(); } $("#workAroundInput").show(); Swal.fire({ title: "Confirm Deletion?", text: "Deleted Reminders cannot be restored.", showCancelButton: true, confirmButtonText: "Delete", confirmButtonColor: "#dc3545" }).then((result) => { if (result.isConfirmed) { $.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) { if (data) { hideCalendarReminderModal(); successToast("Reminder Deleted"); getVehicleCalendarEvents(); } else { errorToast(genericErrorMessage()); } }); } else { $("#workAroundInput").hide(); } }); } function initCalendar() { if (groupedDates.length == 0) { //group dates eventDates.map(x => { var existingIndex = groupedDates.findIndex(y => y.date == x.date); if (existingIndex == -1) { groupedDates.push({ date: x.date, reminders: [`${generateReminderItem(x.id, x.urgency, x.description)}`] }); } else if (existingIndex > -1) { groupedDates[existingIndex].reminders.push(`${generateReminderItem(x.id, x.urgency, x.description)}`); } }); } $(".reminderCalendarViewContent").datepicker({ startDate: "+0d", format: getShortDatePattern().pattern, todayHighlight: true, weekStart: getGlobalConfig().firstDayOfWeek, beforeShowDay: function (date) { var reminderDateIndex = groupedDates.findIndex(x => (x.date == date.getTime() || x.date == (date.getTime() - date.getTimezoneOffset() * 60000))); //take into account server timezone offset if (reminderDateIndex > -1) { return { enabled: true, classes: 'reminder-exist', content: `${date.getDate()}
${groupedDates[reminderDateIndex].reminders.join('