JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr"use strict"; $(function () { commonLoader(); }); $(document).ready(function () { if ($(".dataTable").length > 0) { $(".dataTable").dataTable({ language: dataTabelLang, "columnDefs": [ { "visible": false, "targets": 0 } ] }); } }); function validation() { var forms = document.querySelectorAll('.needs-validation'); Array.prototype.forEach.call(forms, function (form) { form.addEventListener('submit', function (event) { var submitButton = form.querySelector('button[type="submit"], input[type="submit"]'); if (submitButton) { submitButton.disabled = true; } if (form.checkValidity() === false) { event.preventDefault(); event.stopPropagation(); if (submitButton) { submitButton.disabled = false; } } form.classList.add('was-validated'); }, false); }); } $(document).on("click", '.bs-pass-para',function () { const swalWithBootstrapButtons = Swal.mixin({ customClass: { confirmButton: 'btn btn-success', cancelButton: 'btn btn-danger' }, buttonsStyling: false }) swalWithBootstrapButtons.fire({ title: $(this).data('confirm'), text: $(this).data('text'), icon: 'warning', showCancelButton: true, confirmButtonText: 'Yes', cancelButtonText: 'No', reverseButtons: false, }).then((result) => { if (result.isConfirmed) { document.getElementById($(this).data('confirm-yes')).submit(); } else if ( result.dismiss === Swal.DismissReason.cancel ) { } }) }); function show_toastr(title, message, type) { var o, i; var icon = ''; var cls = ''; if (type == 'success') { icon = 'fas fa-check-circle'; cls = 'success'; } else { icon = 'fas fa-times-circle'; cls = 'danger'; } $.notify({icon: icon, title: " " + title, message: message, url: ""}, { element: "body", type: cls, allow_dismiss: !0, placement: { from: 'top', align: toster_pos }, offset: {x: 15, y: 15}, spacing: 10, z_index: 1080, delay: 2500, timer: 2000, url_target: "_blank", mouse_over: !1, animate: {enter: o, exit: i}, template: '' }); } $(document).on('click', 'a[data-ajax-popup="true"], button[data-ajax-popup="true"], div[data-ajax-popup="true"]', function () { var title = $(this).data('title'); var size = ($(this).data('size') == '') ? 'md' : $(this).data('size'); var url = $(this).data('url'); $("#commonModal .modal-title").html(title); $("#commonModal .modal-dialog").addClass('modal-' + size); $.ajax({ url: url, success: function (data) { $('#commonModal .modal-body').html(data); $("#commonModal").modal('show'); taskCheckbox(); validation(); commonLoader(); }, error: function (data) { data = data.responseJSON; show_toastr('Error', data.error, 'error') } }); }); function arrayToJson(form) { var data = $(form).serializeArray(); var indexed_array = {}; $.map(data, function (n, i) { indexed_array[n['name']] = n['value']; }); return indexed_array; } $(document).on("submit", "#commonModalOver form", function (e) { e.preventDefault(); var data = arrayToJson($(this)); data.ajax = true; var url = $(this).attr('action'); $.ajax({ url: url, data: data, type: 'POST', success: function (data) { show_toastr('Success', data.success, 'success'); $(data.target).append(''); $(data.target).val(data.record.id); $(data.target).trigger('change'); $("#commonModalOver").modal('hide'); commonLoader(); }, error: function (data) { data = data.responseJSON; show_toastr('Error', data.error, 'error') } }); }); function taskCheckbox() { var checked = 0; var count = 0; var percentage = 0; count = $("#check-list input[type=checkbox]").length; checked = $("#check-list input[type=checkbox]:checked").length; percentage = parseInt(((checked / count) * 100), 10); if (isNaN(percentage)) { percentage = 0; } $(".custom-label").text(percentage + "%"); $('#taskProgress').css('width', percentage + '%'); $('#taskProgress').removeClass('bg-warning'); $('#taskProgress').removeClass('bg-primary'); $('#taskProgress').removeClass('bg-success'); $('#taskProgress').removeClass('bg-danger'); if (percentage <= 15) { $('#taskProgress').addClass('bg-danger'); } else if (percentage > 15 && percentage <= 33) { $('#taskProgress').addClass('bg-warning'); } else if (percentage > 33 && percentage <= 70) { $('#taskProgress').addClass('bg-primary'); } else { $('#taskProgress').addClass('bg-success'); } } var Charts = (function () { // Variable var $toggle = $('[data-toggle="chart"]'); var mode = 'light';//(themeMode) ? themeMode : 'light'; var fonts = { base: 'Open Sans' } // Colors var colors = { gray: { 100: '#f6f9fc', 200: '#e9ecef', 300: '#dee2e6', 400: '#ced4da', 500: '#adb5bd', 600: '#8898aa', 700: '#525f7f', 800: '#32325d', 900: '#212529' }, theme: { 'default': '#172b4d', 'primary': '#5e72e4', 'secondary': '#f4f5f7', 'info': '#11cdef', 'success': '#2dce89', 'danger': '#f5365c', 'warning': '#fb6340' }, black: '#12263F', white: '#FFFFFF', transparent: 'transparent', }; // Methods // Chart.js global options function chartOptions() { // Options var options = { defaults: { global: { responsive: true, maintainAspectRatio: false, defaultColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600], defaultFontColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600], defaultFontFamily: fonts.base, defaultFontSize: 13, layout: { padding: 0 }, legend: { display: false, position: 'bottom', labels: { usePointStyle: true, padding: 16 } }, elements: { point: { radius: 0, backgroundColor: colors.theme['primary'] }, line: { tension: .4, borderWidth: 4, borderColor: colors.theme['primary'], backgroundColor: colors.transparent, borderCapStyle: 'rounded' }, rectangle: { backgroundColor: colors.theme['warning'] }, arc: { backgroundColor: colors.theme['primary'], borderColor: (mode == 'dark') ? colors.gray[800] : colors.white, borderWidth: 4 } }, tooltips: { enabled: true, mode: 'index', intersect: false, } }, doughnut: { cutoutPercentage: 83, legendCallback: function (chart) { var data = chart.data; var content = ''; data.labels.forEach(function (label, index) { var bgColor = data.datasets[0].backgroundColor[index]; content += ''; content += ''; content += label; content += ''; }); return content; } } } } // yAxes Chart.scaleService.updateScaleDefaults('linear', { gridLines: { borderDash: [2], borderDashOffset: [2], color: (mode == 'dark') ? colors.gray[900] : colors.gray[300], drawBorder: false, drawTicks: false, drawOnChartArea: true, zeroLineWidth: 0, zeroLineColor: 'rgba(0,0,0,0)', zeroLineBorderDash: [2], zeroLineBorderDashOffset: [2] }, ticks: { beginAtZero: true, padding: 10, callback: function (value) { if (!(value % 10)) { return value } } } }); // xAxes Chart.scaleService.updateScaleDefaults('category', { gridLines: { drawBorder: false, drawOnChartArea: false, drawTicks: false }, ticks: { padding: 20 }, maxBarThickness: 10 }); return options; } // Parse global options function parseOptions(parent, options) { for (var item in options) { if (typeof options[item] !== 'object') { parent[item] = options[item]; } else { parseOptions(parent[item], options[item]); } } } // Push options function pushOptions(parent, options) { for (var item in options) { if (Array.isArray(options[item])) { options[item].forEach(function (data) { parent[item].push(data); }); } else { pushOptions(parent[item], options[item]); } } } // Pop options function popOptions(parent, options) { for (var item in options) { if (Array.isArray(options[item])) { options[item].forEach(function (data) { parent[item].pop(); }); } else { popOptions(parent[item], options[item]); } } } // Toggle options function toggleOptions(elem) { var options = elem.data('add'); var $target = $(elem.data('target')); var $chart = $target.data('chart'); if (elem.is(':checked')) { // Add options pushOptions($chart, options); // Update chart $chart.update(); } else { // Remove options popOptions($chart, options); // Update chart $chart.update(); } } // Update options function updateOptions(elem) { var options = elem.data('update'); var $target = $(elem.data('target')); var $chart = $target.data('chart'); // Parse options parseOptions($chart, options); // Toggle ticks toggleTicks(elem, $chart); // Update chart $chart.update(); } // Toggle ticks function toggleTicks(elem, $chart) { if (elem.data('prefix') !== undefined || elem.data('prefix') !== undefined) { var prefix = elem.data('prefix') ? elem.data('prefix') : ''; var suffix = elem.data('suffix') ? elem.data('suffix') : ''; // Update ticks $chart.options.scales.yAxes[0].ticks.callback = function (value) { if (!(value % 10)) { return prefix + value + suffix; } } // Update tooltips $chart.options.tooltips.callbacks.label = function (item, data) { var label = data.datasets[item.datasetIndex].label || ''; var yLabel = item.yLabel; var content = ''; if (data.datasets.length > 1) { content += '' + label + ''; } content += '' + prefix + yLabel + suffix + ''; return content; } } } // Events // Parse global options if (window.Chart) { parseOptions(Chart, chartOptions()); } // Toggle options $toggle.on({ 'change': function () { var $this = $(this); if ($this.is('[data-add]')) { toggleOptions($this); } }, 'click': function () { var $this = $(this); if ($this.is('[data-update]')) { updateOptions($this); } } }); // Return return { colors: colors, fonts: fonts, mode: mode }; })(); function commonLoader() { if ($(".datepicker").length) { $('.datepicker').daterangepicker({ locale: date_picker_locale, singleDatePicker: true, }); } if ($(".date-rangepicker").length > 0) { $('.date-rangepicker').daterangepicker({ locale: date_picker_locale, }); } // jQuery(document).ready(function(){ // if ($(".select2").length > 0) { // jQuery('.select2').select2({ // disableOnMobile: false, // nativeOnMobile: false // }); // } // }); if ($("#selector").length > 0) $("#selector").select2(); if ($(".summernote-simple").length) { $('.summernote-simple').summernote({ dialogsInBody: !0, minHeight: 200, toolbar: [ ['style', ['style']], ["font", ["bold", "italic", "underline", "clear", "strikethrough"]], ['fontname', ['fontname']], ['color', ['color']], ["para", ["ul", "ol", "paragraph"]], ['misc', ['emoji']], ] }); } if ($(".jscolor").length > 0) { jscolor.installByClassName("jscolor"); } if ($(".needs-validation").length > 0) { validation(); } // for Choose file $(document).on('change', 'input[type=file]', function () { var fileclass = $(this).attr('data-filename'); var finalname = $(this).val().split('\\').pop(); $('.' + fileclass).html(finalname); }); } (function ($, window, i) { // Bootstrap 4 Modal $.fn.fireModal = function (options) { var options = $.extend({ size: 'modal-md', center: false, animation: true, title: 'Modal Title', closeButton: false, header: true, bodyClass: '', footerClass: '', body: '', buttons: [], autoFocus: true, created: function () { }, appended: function () { }, onFormSubmit: function () { }, modal: {} }, options); this.each(function () { i++; var id = 'fire-modal-' + i, trigger_class = 'trigger--' + id, trigger_button = $('.' + trigger_class); $(this).addClass(trigger_class); // Get modal body let body = options.body; if (typeof body == 'object') { if (body.length) { let part = body; body = body.removeAttr('id').clone().removeClass('modal-part'); part.remove(); } else { body = '
Modal part element not found!
'; } } // Modal base template var modal_template = ' '; // Convert modal to object var modal_template = $(modal_template); // Start creating buttons from 'buttons' option var this_button; options.buttons.forEach(function (item) { // get option 'id' let id = "id" in item ? item.id : ''; // Button template this_button = ''; // add click event to the button this_button = $(this_button).off('click').on("click", function () { // execute function from 'handler' option item.handler.call(this, modal_template); }); // append generated buttons to the modal footer $(modal_template).find('.modal-footer').append(this_button); }); // append a given body to the modal $(modal_template).find('.modal-body').append(body); // add additional body class if (options.bodyClass) $(modal_template).find('.modal-body').addClass(options.bodyClass); // add footer body class if (options.footerClass) $(modal_template).find('.modal-footer').addClass(options.footerClass); // execute 'created' callback options.created.call(this, modal_template, options); // modal form and submit form button let modal_form = $(modal_template).find('.modal-body form'), form_submit_btn = modal_template.find('button[type=submit]'); // append generated modal to the body $("body").append(modal_template); // execute 'appended' callback options.appended.call(this, $('#' + id), modal_form, options); // if modal contains form elements if (modal_form.length) { // if `autoFocus` option is true if (options.autoFocus) { // when modal is shown $(modal_template).on('shown.bs.modal', function () { // if type of `autoFocus` option is `boolean` if (typeof options.autoFocus == 'boolean') modal_form.find('input:eq(0)').focus(); // the first input element will be focused // if type of `autoFocus` option is `string` and `autoFocus` option is an HTML element else if (typeof options.autoFocus == 'string' && modal_form.find(options.autoFocus).length) modal_form.find(options.autoFocus).focus(); // find elements and focus on that }); } // form object let form_object = { startProgress: function () { modal_template.addClass('modal-progress'); }, stopProgress: function () { modal_template.removeClass('modal-progress'); } }; // if form is not contains button element if (!modal_form.find('button').length) $(modal_form).append(''); // add click event form_submit_btn.click(function () { modal_form.submit(); }); // add submit event modal_form.submit(function (e) { // start form progress form_object.startProgress(); // execute `onFormSubmit` callback options.onFormSubmit.call(this, modal_template, e, form_object); }); } $(document).on("click", '.' + trigger_class, function () { $('#' + id).modal(options.modal); return false; }); }); } // Bootstrap Modal Destroyer $.destroyModal = function (modal) { modal.modal('hide'); modal.on('hidden.bs.modal', function () { }); } })(jQuery, this, 0); $('[data-confirm]').each(function () { var me = $(this), me_data = me.data('confirm'); me_data = me_data.split("|"); me.fireModal({ title: me_data[0], body: me_data[1], buttons: [ { text: me.data('confirm-text-yes') || 'Yes', class: 'btn btn-sm btn-danger rounded-pill', handler: function () { eval(me.data('confirm-yes')); } }, { text: me.data('confirm-text-cancel') || 'Cancel', class: 'btn btn-sm btn-secondary rounded-pill', handler: function (modal) { $.destroyModal(modal); eval(me.data('confirm-no')); } } ] }) }); function selectFile(elementid){ $(`.${elementid}`).trigger('click'); $(`.${elementid}`).change(function() { var url = this.value; var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase(); if (this.files && this.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) { var reader = new FileReader(); reader.onload = function (e) { $(`#${elementid}`).attr('src', e.target.result); $(`#section_${elementid}`).attr('src', e.target.result); $(`#${elementid}_preview`).attr('src', e.target.result); } reader.readAsDataURL(this.files[0]); }else{ let file_error = $(this).closest('.img-validate-class-detail').find('.file-error-detail'); file_error.text("Please select a valid file type. Allowed types: jpg, jpeg, png, gif.").show(); $(`#${elementid}`).attr('src', '/assets/no_preview.png'); $(`#section_${elementid}`).attr('src', '/assets/no_preview.png'); } }); } $(document).on('click', 'a[data-ajax-popup-over="true"], button[data-ajax-popup-over="true"], div[data-ajax-popup-over="true"]', function () { var validate = $(this).attr('data-validate'); var id = ''; if (validate) { id = $(validate).val(); } var title = $(this).data('title'); var size = ($(this).data('size') == '') ? 'md' : $(this).data('size'); var url = $(this).data('url'); $("#commonModalOver .modal-title").html(title); $("#commonModalOver .modal-dialog").addClass('modal-' + size); $.ajax({ url: url + '?id=' + id, success: function (data) { $('#commonModalOver .modal-body').html(data); $("#commonModalOver").modal('show'); taskCheckbox(); }, error: function (data) { data = data.responseJSON; show_toastr('Error', data.error, 'error') } }); }); $(document).ready(function() { $('.error-msg-video').hide(); $(document).on("change",".file-validate",function(){ let file_input = $(this)[0]; let max_size = file_size; let allowed_extensions = file_types; let file_error = $(this).closest('.img-validate-class').find('.file-error'); file_error.text(''); if (file_input.files.length > 0) { let file = file_input.files[0]; let file_size = file.size / 1024; let file_extension = file.name.split('.').pop().toLowerCase(); let extensions_array = allowed_extensions.split(','); if (!extensions_array.includes(file_extension)) { if($(this).hasClass('upload_video')) { if(!allowed_extensions.includes('mp4')) { $('.error-msg-video').show(); }else{ $('.error-msg-video').hide(); } } file_error.text(type_err).show(); file_input.value = ''; return false; } else if (file_size > max_size) { file_error.text(size_err).show(); file_input.value = ''; return false; } } return true; }); });