175 lines
4.4 KiB
JavaScript
175 lines
4.4 KiB
JavaScript
"use strict";
|
|
|
|
// Class definition
|
|
var KTLayoutBuilder = function() {
|
|
var form = document.querySelector("#kt_layout_builder_form");
|
|
var actionInput = document.querySelector("#kt_layout_builder_action");
|
|
var tabInput = document.querySelector("#kt_layout_builder_tab");
|
|
var url = form.getAttribute("action");
|
|
|
|
var previewButton = document.querySelector("#kt_layout_builder_preview");
|
|
var exportButton = document.querySelector("#kt_layout_builder_export");
|
|
var resetButton = document.querySelector("#kt_layout_builder_reset");
|
|
|
|
var handleTab = function() {
|
|
var tabs = [].slice.call(document.querySelectorAll('#kt_layout_builder_tabs a[data-bs-toggle="tab"]'));
|
|
|
|
tabs.forEach(function (tab) {
|
|
tab.addEventListener("shown.bs.tab", function (e) {
|
|
tabInput.value = tab.getAttribute("href").substring(1);
|
|
});
|
|
});
|
|
};
|
|
|
|
var handlePreview = function() {
|
|
previewButton.addEventListener("click", function(e) {
|
|
e.preventDefault();
|
|
|
|
// Set form action value
|
|
actionInput.value = "preview";
|
|
|
|
// Show progress
|
|
previewButton.setAttribute("data-kt-indicator", "on");
|
|
|
|
// Prepare form data
|
|
var data = $(form).serialize();
|
|
|
|
// Submit
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: "html",
|
|
url: url,
|
|
data: data,
|
|
success: function(response, status, xhr) {
|
|
toastr.success(
|
|
"Preview has been updated with current configured layout.",
|
|
"Preview updated!",
|
|
{timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0}
|
|
);
|
|
|
|
setTimeout(function() {
|
|
location.reload(); // reload page
|
|
}, 1500);
|
|
},
|
|
error: function(response) {
|
|
toastr.error(
|
|
"Please try it again later.",
|
|
"Something went wrong!",
|
|
{timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0}
|
|
);
|
|
},
|
|
complete: function() {
|
|
previewButton.removeAttribute("data-kt-indicator");
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
var handleExport = function() {
|
|
exportButton.addEventListener("click", function(e) {
|
|
e.preventDefault();
|
|
|
|
toastr.success(
|
|
"Process has been started and it may take a while.",
|
|
"Generating HTML!",
|
|
{timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0}
|
|
);
|
|
|
|
// Show progress
|
|
exportButton.setAttribute("data-kt-indicator", "on");
|
|
|
|
// Set form action value
|
|
actionInput.value = "export";
|
|
|
|
// Prepare form data
|
|
var data = $(form).serialize();
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: "html",
|
|
url: url,
|
|
data: data,
|
|
success: function(response, status, xhr) {
|
|
var timer = setInterval(function() {
|
|
$("<iframe/>").attr({
|
|
src: url + "?layout-builder[action]=export&download=1&output=" + response,
|
|
style: "visibility:hidden;display:none",
|
|
}).ready(function() {
|
|
// Stop the timer
|
|
clearInterval(timer);
|
|
|
|
exportButton.removeAttribute("data-kt-indicator");
|
|
}).appendTo("body");
|
|
}, 3000);
|
|
},
|
|
error: function(response) {
|
|
toastr.error(
|
|
"Please try it again later.",
|
|
"Something went wrong!",
|
|
{timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0}
|
|
);
|
|
|
|
exportButton.removeAttribute("data-kt-indicator");
|
|
},
|
|
});
|
|
});
|
|
};
|
|
|
|
var handleReset = function() {
|
|
resetButton.addEventListener("click", function(e) {
|
|
e.preventDefault();
|
|
|
|
// Show progress
|
|
resetButton.setAttribute("data-kt-indicator", "on");
|
|
|
|
// Set form action value
|
|
actionInput.value = "reset";
|
|
|
|
// Prepare form data
|
|
var data = $(form).serialize();
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
dataType: "html",
|
|
url: url,
|
|
data: data,
|
|
success: function(response, status, xhr) {
|
|
toastr.success(
|
|
"Preview has been successfully reset and the page will be reloaded.",
|
|
"Reset Preview!",
|
|
{timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0}
|
|
);
|
|
|
|
setTimeout(function() {
|
|
location.reload(); // reload page
|
|
}, 1500);
|
|
},
|
|
error: function(response) {
|
|
toastr.error(
|
|
"Please try it again later.",
|
|
"Something went wrong!",
|
|
{timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0}
|
|
);
|
|
},
|
|
complete: function() {
|
|
resetButton.removeAttribute("data-kt-indicator");
|
|
},
|
|
});
|
|
});
|
|
};
|
|
|
|
return {
|
|
// Public functions
|
|
init: function() {
|
|
handlePreview();
|
|
handleExport();
|
|
handleReset();
|
|
handleTab();
|
|
}
|
|
};
|
|
}();
|
|
|
|
// On document ready
|
|
KTUtil.onDOMContentLoaded(function() {
|
|
KTLayoutBuilder.init();
|
|
}); |