55 lines
2.3 KiB
JavaScript
55 lines
2.3 KiB
JavaScript
(() => {
|
|
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
|
|
const apiKey = document.querySelector("main").dataset.apiKey;
|
|
const workOrderTypeIdsElement = document.querySelector("#icsFilters--workOrderTypeIds");
|
|
const workOrderMilestoneTypeIdsElement = document.querySelector("#icsFilters--workOrderMilestoneTypeIds");
|
|
const calendarLinkElement = document.querySelector("#icsFilters--calendarURL");
|
|
const updateCalendarURL = () => {
|
|
let url = window.location.href.slice(0, Math.max(0, window.location.href.indexOf(window.location.pathname) + 1)) +
|
|
urlPrefix +
|
|
"api/" +
|
|
apiKey +
|
|
"/" +
|
|
"milestoneICS/" +
|
|
"?";
|
|
if (!workOrderTypeIdsElement.disabled &&
|
|
workOrderTypeIdsElement.selectedOptions.length > 0) {
|
|
url += "workOrderTypeIds=";
|
|
for (const optionElement of workOrderTypeIdsElement.selectedOptions) {
|
|
url += optionElement.value + ",";
|
|
}
|
|
url = url.slice(0, -1) + "&";
|
|
}
|
|
if (!workOrderMilestoneTypeIdsElement.disabled &&
|
|
workOrderMilestoneTypeIdsElement.selectedOptions.length > 0) {
|
|
url += "workOrderMilestoneTypeIds=";
|
|
for (const optionElement of workOrderMilestoneTypeIdsElement.selectedOptions) {
|
|
url += optionElement.value + ",";
|
|
}
|
|
url = url.slice(0, -1) + "&";
|
|
}
|
|
calendarLinkElement.value = url.slice(0, -1);
|
|
};
|
|
document
|
|
.querySelector("#icsFilters--workOrderTypeIds-all")
|
|
.addEventListener("change", (changeEvent) => {
|
|
workOrderTypeIdsElement.disabled = changeEvent.currentTarget.checked;
|
|
});
|
|
document
|
|
.querySelector("#icsFilters--workOrderMilestoneTypeIds-all")
|
|
.addEventListener("change", (changeEvent) => {
|
|
workOrderMilestoneTypeIdsElement.disabled = changeEvent.currentTarget.checked;
|
|
});
|
|
const inputSelectElements = document
|
|
.querySelector("#panel--icsFilters")
|
|
.querySelectorAll("input, select");
|
|
for (const element of inputSelectElements) {
|
|
element.addEventListener("change", updateCalendarURL);
|
|
}
|
|
updateCalendarURL();
|
|
calendarLinkElement.addEventListener("click", () => {
|
|
calendarLinkElement.focus();
|
|
calendarLinkElement.select();
|
|
});
|
|
})();
|