/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2019*/ var mkd_events = (function () { var topics = {}; var hOP = topics.hasOwnProperty; return { subscribe: function (topic, listener) { // Create the topic's object if not yet created if (!hOP.call(topics, topic)) topics[topic] = []; // Add the listener to queue var index = topics[topic].push(listener) - 1; // Provide handle back for removal of topic return { remove: function () { delete topics[topic][index]; }, }; }, publish: function (topic, info) { // If the topic doesn't exist, or there's no listeners in queue, just leave if (!hOP.call(topics, topic)) return; // Cycle through topics queue, fire! topics[topic].forEach(function (item) { item(info != undefined ? info : {}); }); }, }; })(); function mkd_is_number(evt, obj) { var charCode = evt.which ? evt.which : event.keyCode; var value = obj.value; var minuscontains = value.indexOf("-") != -1; if (minuscontains) { if (charCode == 45) { return false; } } if (charCode == 45) { return true; } var dotcontains = value.indexOf(".") != -1; if (dotcontains) { if (charCode == 46) { return false; } } if (charCode == 46) { return true; } if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; } function mkd_export_table(url) { if (url.indexOf("?") > -1) { url = url + "&format=csv"; } else { url = url + "?format=csv"; } window.location.href = url; } $(document).ready(function () { $("#sidebarCollapse").on("click", function () { $("#sidebar").toggleClass("active"); }); //import csv code $("#btn-choose-csv").on("click", function (e) { e.preventDefault(); $("#csv-file").trigger("click"); }); $("#csv-file").on("change", function () { $("#import-csv").trigger("submit"); }); $("#import-csv").on("submit", function (e) { e.preventDefault(); var formData = new FormData(this); var url = $(this).attr("action"); $(this).addClass("d-none"); $.ajax({ url: url, type: "POST", data: formData, cache: false, contentType: false, processData: false, success: function (res) { var body_html = ""; var head_html = ""; if (res.preview == true) { var data = res.data; var header = data[0]; data.shift(); for (let headerItem of header) { head_html += `${headerItem}`; } for (let row of data) { body_html += ""; for (let item of row) { body_html += `${item} `; } body_html += ""; } $("#csv-table-head").html(head_html); $("#csv-table-body").html(body_html); $("#csv-table").removeClass("d-none"); $("#btn-save-csv").removeClass("d-none"); } else if (res.saved == true) { alert("Imported Successfully"); location.reload(); } }, }); }); $("#btn-save-csv").on("click", function (e) { e.preventDefault(); var model = $("#btn-csv-upload-dialog").data("model"); console.log(model); $("#import-csv").attr("action", "/v1/api/file/import/" + model); $("#import-csv").trigger("submit"); }); $(".modal-image").on("click", function () { var src = $(this).attr("src"); $("#modal-image-slot").attr("src", src); $("#modal-image-show").modal("show"); }); }); const selectedRows = []; // Buk Actions const bulkSelectAll = document.getElementById("bulkSelectAll"); const deleteButton = document.getElementById("bulkDeleteButton"); const editButton = document.getElementById("bulkEditButton"); const originalDeleteHref = deleteButton?.href ?? ""; // Select All click if (bulkSelectAll) { bulkSelectAll.addEventListener("click", (event) => { selectedRows.length = 0; const bulkSelectRows = document.querySelectorAll(".bulkSelect"); const isSelectAll = event.target.checked; bulkSelectRows.forEach((item) => { item.checked = isSelectAll; if (isSelectAll) { selectedRows.push(item.dataset.id); } }); // Update delete link if (isSelectAll) { if (deleteButton) deleteButton.style.display = "inline-block"; if (deleteButton) deleteButton.href = originalDeleteHref + selectedRows.join("|"); if (editButton) editButton.style.display = "inline-block"; } else { if (deleteButton) deleteButton.style.display = "none"; if (deleteButton) deleteButton.href = originalDeleteHref; if (editButton) editButton.style.display = "none"; } }); } // Handle Individual Select const handleBulkSelectChange = function (event) { const id = event.dataset.id; if (event.checked) { selectedRows.push(id); } else { const findIndex = selectedRows.findIndex((item) => item === id); if (findIndex > -1) { selectedRows.splice(findIndex, 1); } } deleteButton.href = originalDeleteHref + selectedRows.join("|"); deleteButton.style.display = selectedRows.length > 0 ? "inline-block" : "none"; editButton.style.display = selectedRows.length > 0 ? "inline-block" : "none"; }; const orderContainer = document.getElementById("order-container"); if (orderContainer) { (async () => { const quizzes = await fetch("/admin/api/quizzes?limit=0") .then((res) => res.json()) .then((data) => data.data.items); // Store listitems const listItems = []; let dragStartIndex; let dragStartQuiz; createList(); // Insert list items into DOM function createList() { quizzes.forEach((quiz) => { const quizContainer = document.createElement("div"); const quizHeadTag = document.createElement("h2"); quizHeadTag.className = "font-weight-bold mb-3"; quizHeadTag.innerHTML = `Quiz: ${quiz.name}`; quizContainer.id = `${quiz.name.replace(/ /g, "_")}_id`; quizContainer.className = "quiz-container mb-5"; const draggable_list = document.createElement("ul"); draggable_list.id = `draggable-list-${quiz.id}`; draggable_list.className = "draggable-list"; quizContainer.appendChild(quizHeadTag); quizContainer.appendChild(draggable_list); quiz.questions.forEach((questionObject, index) => { const listItem = document.createElement("li"); listItem.setAttribute("data-index", index); listItem.setAttribute("data-quiz", quiz.id); listItem.innerHTML = ` ${questionObject.order}

${questionObject.question}

`; listItems.push(listItem); draggable_list.appendChild(listItem); }); orderContainer.appendChild(quizContainer); }); addEventListeners(); } function dragStart() { dragStartIndex = +this.closest("li").getAttribute("data-index"); dragStartQuiz = +this.closest("li").getAttribute("data-quiz"); } function dragEnter() { this.classList.add("over"); } function dragLeave() { this.classList.remove("over"); } function dragOver(e) { e.preventDefault(); } function dragDrop() { const dragEndIndex = +this.getAttribute("data-index"); const dragEndQuiz = +this.getAttribute("data-quiz"); swapItems(dragStartIndex, dragStartQuiz, dragEndIndex, dragEndQuiz); this.classList.remove("over"); } // Swap list items that are drag and drop function swapItems(fromIndex, fromQuiz, toIndex, toQuiz) { const itemOne = listItems.find((item) => { return item.getAttribute("data-quiz") == fromQuiz && item.getAttribute("data-index") == fromIndex; }); const itemTwo = listItems.find((item) => { return item.getAttribute("data-quiz") == toQuiz && item.getAttribute("data-index") == toIndex; }); const movableItemOne = itemOne.querySelector(".draggable"); const movableItemTwo = itemTwo.querySelector(".draggable"); itemOne.appendChild(movableItemTwo); itemTwo.appendChild(movableItemOne); const itemOneOrder = movableItemOne.querySelector(".question-text").getAttribute("data-question-new-order"); const itemTwoOrder = movableItemTwo.querySelector(".question-text").getAttribute("data-question-new-order"); movableItemOne.querySelector(".question-text").setAttribute("data-question-new-order", itemTwoOrder); movableItemTwo.querySelector(".question-text").setAttribute("data-question-new-order", itemOneOrder); } function addEventListeners() { const draggables = document.querySelectorAll(".draggable"); const dragListItems = document.querySelectorAll(".draggable-list li"); draggables.forEach((draggable) => { draggable.addEventListener("dragstart", dragStart); }); dragListItems.forEach((item) => { item.addEventListener("dragover", dragOver); item.addEventListener("drop", dragDrop); item.addEventListener("dragenter", dragEnter); item.addEventListener("dragleave", dragLeave); }); } })(); } async function submitChanges(el, e) { e.preventDefault(); el.innerHTML = ` Loading...`; const questions = document.querySelectorAll(".question-text"); const payload = []; questions.forEach((question) => { payload.push({ id: question.getAttribute("data-question-id"), order: question.getAttribute("data-question-new-order"), }); }); const response = await fetch("/questions/order/save", { method: "POST", headers: { "content-type": "application/json", }, body: JSON.stringify(payload), }).then((res) => res.json()); console.log(response); el.innerHTML = `Submit changes`; } function weightScoreInputChange(el, event) { if (el.value && el.value.trim()) { if (!el.classList.contains("has-value")) el.classList.add("has-value"); } else { el.classList.remove("has-value"); } } async function updateMainPicture(self, evt) { evt.preventDefault(); const imageId = document.getElementById("file_image").value; if (!imageId) { return false; } self.innerHTML = ` Loading...`; const response = await fetch("/main-image/update", { method: "POST", headers: { "content-type": "application/json", }, body: JSON.stringify({ image_url: imageId, }), }).then((res) => res.json()); console.log(response); self.innerHTML = `Update image`; } function printSpecific(divId) { let divToPrint = document.getElementById(divId); let printBtn = document.querySelector(".print-btn"); divToPrint.classList.add("print"); printBtn.classList.add("print"); window.print(); printBtn.classList.remove("print"); divToPrint.classList.remove("print"); }