pos-gis/public/assets/js/pages/custom/todo/todo.js

233 lines
8.0 KiB
JavaScript
Raw Normal View History

2024-10-07 06:13:42 +00:00
"use strict";
// Class definition
var KTAppTodo = function() {
// Private properties
var _asideEl;
var _listEl;
var _viewEl;
var _replyEl;
var _asideOffcanvas;
// Private methods
var _initEditor = function(form, editor) {
// init editor
var options = {
modules: {
toolbar: {}
},
placeholder: 'Type message...',
theme: 'snow'
};
if (!KTUtil.getById(editor)) {
return;
}
// Init editor
var editor = new Quill('#' + editor, options);
// Customize editor
var toolbar = KTUtil.find(form, '.ql-toolbar');
var editor = KTUtil.find(form, '.ql-editor');
if (toolbar) {
KTUtil.addClass(toolbar, 'px-5 border-top-0 border-left-0 border-right-0');
}
if (editor) {
KTUtil.addClass(editor, 'px-8');
}
}
var _initAttachments = function(elemId) {
if (!KTUtil.getById(elemId)) {
return;
}
var id = "#" + elemId;
var previewNode = $(id + " .dropzone-item");
previewNode.id = "";
var previewTemplate = previewNode.parent('.dropzone-items').html();
previewNode.remove();
var myDropzone = new Dropzone(id, { // Make the whole body a dropzone
url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location
parallelUploads: 20,
maxFilesize: 1, // Max filesize in MB
previewTemplate: previewTemplate,
previewsContainer: id + " .dropzone-items", // Define the container to display the previews
clickable: id + "_select" // Define the element that should be used as click trigger to select files.
});
myDropzone.on("addedfile", function(file) {
// Hookup the start button
$(document).find(id + ' .dropzone-item').css('display', '');
});
// Update the total progress bar
myDropzone.on("totaluploadprogress", function(progress) {
document.querySelector(id + " .progress-bar").style.width = progress + "%";
});
myDropzone.on("sending", function(file) {
// Show the total progress bar when upload starts
document.querySelector(id + " .progress-bar").style.opacity = "1";
});
// Hide the total progress bar when nothing's uploading anymore
myDropzone.on("complete", function(progress) {
var thisProgressBar = id + " .dz-complete";
setTimeout(function() {
$(thisProgressBar + " .progress-bar, " + thisProgressBar + " .progress").css('opacity', '0');
}, 300)
});
}
// Public methods
return {
// Public functions
init: function() {
// Init variables
_asideEl = KTUtil.getById('kt_todo_aside');
_listEl = KTUtil.getById('kt_todo_list');
_viewEl = KTUtil.getById('kt_todo_view');
_replyEl = KTUtil.getById('kt_todo_reply');
// Init handlers
KTAppTodo.initAside();
KTAppTodo.initList();
KTAppTodo.initView();
KTAppTodo.initReply();
},
initAside: function() {
// Mobile offcanvas for mobile mode
_asideOffcanvas = new KTOffcanvas(_asideEl, {
overlay: true,
baseClass: 'offcanvas-mobile',
//closeBy: 'kt_todo_aside_close',
toggleBy: 'kt_subheader_mobile_toggle'
});
// View list
KTUtil.on(_asideEl, '.list-item[data-action="list"]', 'click', function(e) {
var type = KTUtil.attr(this, 'data-type');
var listItemsEl = KTUtil.find(_listEl, '.kt-inbox__items');
var navItemEl = this.closest('.kt-nav__item');
var navItemActiveEl = KTUtil.find(_asideEl, '.kt-nav__item.kt-nav__item--active');
// demo loading
var loading = new KTDialog({
'type': 'loader',
'placement': 'top center',
'message': 'Loading ...'
});
loading.show();
setTimeout(function() {
loading.hide();
KTUtil.css(_listEl, 'display', 'flex'); // show list
KTUtil.css(_viewEl, 'display', 'none'); // hide view
KTUtil.addClass(navItemEl, 'kt-nav__item--active');
KTUtil.removeClass(navItemActiveEl, 'kt-nav__item--active');
KTUtil.attr(listItemsEl, 'data-type', type);
}, 600);
});
},
initList: function() {
// Group selection
KTUtil.on(_listEl, '[data-inbox="group-select"] input', 'click', function() {
var messages = KTUtil.findAll(_listEl, '[data-inbox="message"]');
for (var i = 0, j = messages.length; i < j; i++) {
var message = messages[i];
var checkbox = KTUtil.find(message, '.checkbox input');
checkbox.checked = this.checked;
if (this.checked) {
KTUtil.addClass(message, 'active');
} else {
KTUtil.removeClass(message, 'active');
}
}
});
// Individual selection
KTUtil.on(_listEl, '[data-inbox="message"] [data-inbox="actions"] .checkbox input', 'click', function() {
var item = this.closest('[data-inbox="message"]');
if (item && this.checked) {
KTUtil.addClass(item, 'active');
} else {
KTUtil.removeClass(item, 'active');
}
});
},
initView: function() {
// Back to listing
KTUtil.on(_viewEl, '[data-inbox="back"]', 'click', function() {
// demo loading
var loading = new KTDialog({
'type': 'loader',
'placement': 'top center',
'message': 'Loading ...'
});
loading.show();
setTimeout(function() {
loading.hide();
KTUtil.addClass(_listEl, 'd-block');
KTUtil.removeClass(_listEl, 'd-none');
KTUtil.addClass(_viewEl, 'd-none');
KTUtil.removeClass(_viewEl, 'd-block');
}, 700);
});
// Expand/Collapse reply
KTUtil.on(_viewEl, '[data-inbox="message"]', 'click', function(e) {
var message = this.closest('[data-inbox="message"]');
var dropdownToggleEl = KTUtil.find(this, '[data-toggle="dropdown"]');
var toolbarEl = KTUtil.find(this, '[data-inbox="toolbar"]');
// skip dropdown toggle click
if (e.target === dropdownToggleEl || (dropdownToggleEl && dropdownToggleEl.contains(e.target) === true)) {
return false;
}
// skip group actions click
if (e.target === toolbarEl || (toolbarEl && toolbarEl.contains(e.target) === true)) {
return false;
}
if (KTUtil.hasClass(message, 'toggle-on')) {
KTUtil.addClass(message, 'toggle-off');
KTUtil.removeClass(message, 'toggle-on');
} else {
KTUtil.removeClass(message, 'toggle-off');
KTUtil.addClass(message, 'toggle-on');
}
});
},
initReply: function() {
_initEditor(_replyEl, 'kt_todo_reply_editor');
_initAttachments('kt_todo_reply_attachments');
}
};
}();
// Class Initialization
jQuery(document).ready(function() {
KTAppTodo.init();
});