var getUrl = window.location; var baseHost = getUrl.protocol + "//" + getUrl.host + "/"; var baseUrl = baseHost + getUrl.pathname.split('/')[1]; var prefix_folder_admin = ''; let is_online; const toastLiveExample = document.getElementById('liveToast') const toast = new bootstrap.Toast(toastLiveExample) let deg = 0; let csrfHash = $("meta[name=X-CSRF-TOKEN]").attr('content'); let prodi_use; $(document).ready(function () { $(".pc-hasmenu.active").children().eq(1).attr('style', 'display: block; box-sizing: border-box;'); $(".placeholder").removeClass('placeholder'); $('.horizontal-mainwrapper').show(); var path_current = getUrl.origin + getUrl.pathname; // console.log(path_current); $("a[data-url='" + path_current + "']").addClass('active'); // main-parent-menu $("a[data-url='" + path_current + "']").closest('.main-parent-menu').addClass('collapsed'); // $("select.js-select2").each(function (index, element) { // $(element).select2({ // theme: 'bootstrap-5', // placeholder: $(element).data("placeholder"), // dropdownParent: $($(element).parent()), // width: '100%', // allowClear: $(element).data("allowclear") // }); // if ($(element).data('disable')) { // $(element).prop('disabled', true) // } // }); $('.modal').each(function (index, element) { $(element).attr('data-keyboard', false).attr('data-backdrop', 'static'); }); $('.trumbowyg-js').each(function () { $(this).trumbowyg({ autogrow: true, disabled: $(this).data('trumbowyg-disable') !== undefined ? $(this).data('trumbowyg-disable') : false, // btns: ['upload'], // plugins: { // upload: { // serverPath: 'https://api.imgur.com/3/image', // fileFieldName: 'image', // headers: { // 'Authorization': 'Client-ID xxxxxxxxxxxx' // }, // urlPropertyName: 'data.link' // } // } }); }); // $(".datepicer-js").datepicker({ // format: "dd/mm/yyyy", // autoclose: true, // orientation: "auto", // todayHighlight: true // }); // $(".datepicer-js").attr('readonly', true); // $(".datepicer-year-js").datepicker({ // format: "yyyy", // autoclose: true, // minViewMode: 2, // maxViewMode: 2, // todayHighlight: true, // orientation: "bottom auto" // }); // $(".datepicer-year-js").attr('readonly', true); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': csrfHash // Mengirim token CSRF dalam header }, }); $(document).ajaxSuccess(function (event, xhr, settings) { const responseData = JSON.parse(xhr.responseText); if (responseData.is_login != undefined && responseData.is_login == false) { console.log('Unauthorized'); toast.hide() window.location.reload(); return; } }); $(".select-checkbox-all").change(function (e) { e.preventDefault(); let this_table = $(this).data('table'); if ($(this).prop('checked') === true) { $('.dt-select-checkbox').prop('checked', true); $("#" + this_table).DataTable().rows().select(); } else { $('.dt-select-checkbox').prop('checked', false); $("#" + this_table).DataTable().rows().deselect(); } }); }); // Track page impression trackImpression(); // Track duration var startTime = Date.now(); window.addEventListener('beforeunload', function () { var endTime = Date.now(); var duration = Math.round((endTime - startTime) / 1000); // Duration in seconds navigator.sendBeacon('/track-duration', JSON.stringify({ token: getCookie('visitor_token'), url: window.location.pathname, duration: duration })); }); // Track button clicks $('button').on('click', function () { var buttonId = $(this).attr('id') || 'unknown'; trackButtonClick(buttonId); }); function getCookie(name) { let cookieArr = document.cookie.split(";"); for (let i = 0; i < cookieArr.length; i++) { let cookiePair = cookieArr[i].split("="); if (name == cookiePair[0].trim()) { return decodeURIComponent(cookiePair[1]); } } return null; } function trackImpression() { navigator.sendBeacon('/track-impression', JSON.stringify({ token: getCookie('visitor_token'), url: window.location.pathname })); } function trackButtonClick(buttonId) { navigator.sendBeacon('/track-button-click', JSON.stringify({ token: getCookie('visitor_token'), url: window.location.pathname, button_id: buttonId })); } function get_csrf() { return $("meta[name=X-CSRF-TOKEN]").attr('content'); } function update_csrf(newToken) { $("meta[name=X-CSRF-TOKEN]").attr('content', newToken) } function formated_date(date_src) { if (date_src) { var date = new Date(date_src); } else { var date = new Date(); } var day = date.getDate(); var month = date.getMonth() + 1; var year = date.getFullYear(); return day + '/' + month + '/' + year; } function windowResize() { let window_width = window.innerWidth; if (window_width <= 756) { $(".mobile-menu-nav .devider").removeClass('ml-2'); $(".logo-pro .main-logo").removeClass('d-none'); $(".nav-mobile-view .row").removeClass('d-none'); $(".nav-mobile-view").removeClass('d-none'); $("#v-pills-tab").removeClass('position-fixed pr-4'); $("#v-pills-tab").parent().removeClass('border-left order-2').addClass('border-bottom pb-2 order-1'); $("#v-pills-tab").parent().prev().removeClass('order-1').addClass('pt-2 order-2'); } else { $(".mobile-menu-nav .devider").addClass('ml-2'); $(".logo-pro .main-logo").removeClass('d-none'); $(".nav-mobile-view .row").addClass('d-none'); $(".nav-mobile-view").addClass('d-none'); $("#v-pills-tab").addClass('position-fixed pr-4'); $("#v-pills-tab").parent().removeClass('border-bottom pb-2 order-1').addClass('border-left order-2'); $("#v-pills-tab").parent().prev().removeClass('pt-2 order-2').addClass('order-1'); } } $(window).resize(function (e) { windowResize(); }); function showGlobalLoading(element = 'global-loading') { $('body').css({ 'overflow': 'hidden' }); $(`#${element}`).removeClass('d-none'); } function hideGlobalLoading(element = 'global-loading') { $('body').css({ 'overflow': 'auto' }); $(`#${element}`).addClass('d-none'); } function showLoading(parent_elem = '#spinner', target_element = 'btn_save') { $(`${parent_elem}`).addClass('show'); } function hideLoading(parent_elem = '#spinner', target_element = 'btn_save') { $(`${parent_elem}`).removeClass('show'); } function alert_success(msg) { Swal.fire({ icon: 'success', title: msg, showConfirmButton: false, timer: 1500 }); } function alert_error(msg) { Swal.fire({ icon: 'error', title: msg, showConfirmButton: false, timer: 1500 }); } function notif_success(message) { $("#liveToast").removeClass('bg-danger').addClass('bg-success'); $(".toast-header .me-auto").html(message); toast.show() } function notif_error(message) { $("#liveToast").removeClass('bg-success').addClass('bg-danger'); $(".toast-header .me-auto").html(message); toast.show() } function remove_invalid() { $('.invalid-feedback').empty(); $('.invalid-feedback').removeClass('d-block'); $('input').removeClass('is-invalid'); $('select').removeClass('is-invalid'); $('textarea').removeClass('is-invalid'); } function empty_input() { remove_invalid(); $('.form-group > input').removeClass('is-invalid'); $('.form-group > select').removeClass('is-invalid'); $('.form-group > textarea').removeClass('is-invalid'); let form_element = $('form'); form_element.find('select').val('').trigger('change'); form_element.find('input').val(''); form_element.find('textarea').text(''); form_element.find('textarea').val(''); if (form_element.find('.trumbowyg-js')) { $('.trumbowyg-js').each(function () { $(this).trumbowyg('html', ''); }); } if (form_element.find('[type=file]')) { $.each(form_element.find('[type=file]'), function (indexInArray, valueOfElement) { let this_target = $(valueOfElement).data('target'); let target_show = this_target; if (this_target) { if (!this_target.includes('#') && !this_target.includes('.')) { target_show = '#' + this_target; if ($(target_show).length == 0) { target_show = '.' + this_target; } } if ($(target_show).length > 0) { $(target_show).empty(); } } }); } } /** * * @param {object} data */ function input_error(data) { for (var i = 0; i < data.inputerror.length; i++) { let split_inputerror = data.inputerror[i].split('.'); if ($('[name="' + data.inputerror[i] + '"]').parent().hasClass('input-group')) { $('[name="' + data.inputerror[i] + '"]').addClass('is-invalid').parent().find('.invalid-feedback').addClass('d-block').text(data.error_string[i]); } else if ($('[name="' + data.inputerror[i] + '"]').hasClass('trumbowyg-js')) { $('[name="' + data.inputerror[i] + '"]').parent().parent().find('.invalid-feedback').addClass('d-block').text(data.error_string[i]); } else { let selector = $('[name="' + data.inputerror[i] + '"]'); if (split_inputerror.length > 1) { selector = $('[name="' + split_inputerror[0] + '[]"]').eq(parseInt(split_inputerror[1])); } selector.addClass('is-invalid'); selector.siblings(':last').text(data.error_string[i]); selector.siblings(':last').addClass('d-block'); } } } function isGuest() { if (localStorage.getItem('guest') == 'true') { $("#modalGuest").modal('show'); return true; } return false; } let modalHandler = function (e) { if (isGuest()) { e.preventDefault(); return; }; }; $(document).on('show.bs.modal', '#modal_form', modalHandler); $(document).on('hidden.bs.modal', '#modalGuest', function () { $(document).off('show.bs.modal', '#modal_form', modalHandler); $(document).on('show.bs.modal', '#modal_form', modalHandler); }); $(document).on('click', '.btn-sign-guest', function () { let username = $("#username").val(); let password = $("#password").val(); $('.text-message').html(''); $.ajax({ url: baseUrl + '/' + prefix_folder_admin + '/login/do_login', type: "POST", data: { username: username, password: password, }, dataType: "JSON", success: function (data) { if (data.status) { window.location.reload(); } else { console.log(data.inputerror); if (data.error_login != '') { $('.text-message').html(data.error_login); } var label = ''; for (var i = 0; i < data.inputerror.length; i++) { $('[name="' + data.inputerror[i] + '"]').parent().addClass('is-invalid'); $('[name="' + data.inputerror[i] + '"]').next().next().text(data.error_string[i]); } } }, error: function (jqXHR, textStatus, errorThrown) { $('.btn_save_group').button('reset'); } });//end ajax }); $(document).on("click", ".show_password", function () { $(this).addClass('hide_password').removeClass('show_password').parent().children().eq(1).children().removeClass("bx bx-bullseye").addClass("bx bxs-low-vision"); $(this).parent().children().eq(0).attr('type', 'text'); }); $(document).on("click", ".hide_password", function () { $(this).addClass('show_password').removeClass('hide_password').parent().children().eq(1).children().removeClass("bx bxs-low-vision").addClass("bx bx-show-alt"); $(this).parent().children().eq(0).attr('type', 'password'); }); $(document).on('click', '.btn_custom_minus', function () { selector_val = $(this).closest('.group-plus-minus').find('.value'); if (parseInt(selector_val.val()) > 1) { value_int = parseInt(selector_val.val()) - 1; selector_val.val(value_int); } }); $(document).on('click', '.btn_custom_plus', function () { selector_val = $(this).closest('.group-plus-minus').find('.value'); value_int = parseInt(selector_val.val()) + 1; // console.log(value_int); selector_val.val(value_int); }); if ($('.ckeditor_form').length) { $('.ckeditor_form').ckeditor({ filebrowserBrowseUrl: '' //url }); } //=========================================== module function ==================================================== function show_image(inputFile, target_display) { const fileReader = new FileReader(); fileReader.onload = function (event) { $(target_display).attr('src', event.target.result); }; fileReader.onerror = function (error) { console.error('Terjadi kesalahan:', error); }; fileReader.readAsDataURL(inputFile); } function show_count_confirm() { $.ajax({ url: baseUrl + '/admin/booking/count_booking_confirm?token=' + _token_user, type: "POST", dataType: "JSON", success: function (data) { // $('.count_confirm_booking').css('position', 'relative'); if (data.count > 0) { $('.count_confirm_booking > a').prepend(` ` + data.count + ` `); } }, error: function (jqXHR, textStatus, errorThrown) { hideLoading(); } }); //end ajax $.ajax({ url: baseUrl + '/admin/transaction/count_transaction?token=' + _token_user, type: "POST", dataType: "JSON", success: function (data) { if (data.status) { if (data.count_proceed_voyage > 0) { $('.count_transaction_voyage > a').prepend(` ` + data.count_proceed_voyage + ` `); } if (data.count_return_countainer > 0) { $('.count_return_countainer > a').prepend(` ` + data.count_return_countainer + ` `); } if (data.count_unloading_countainer > 0) { $('.count_unloading_countainer > a').prepend(` ` + data.count_unloading_countainer + ` `); } } }, error: function (jqXHR, textStatus, errorThrown) { hideLoading(); } }); //end ajax } /* Fungsi formatRupiah */ function formatRupiah(angka) { var reverse = angka.toString().split('').reverse().join(''), ribuan = reverse.match(/\d{1,3}/g); ribuan = ribuan.join('.').split('').reverse().join(''); return 'Rp. ' + ribuan; } /* Fungsi formatNumber */ function formatNumber(angka) { var reverse = angka.toString().split('').reverse().join(''), ribuan = reverse.match(/\d{1,3}/g); ribuan = ribuan.join('.').split('').reverse().join(''); return ribuan; } function formatDateIndo(date) { var dateObj = new Date(date); var day = dateObj.getDate(); var month = dateObj.getMonth() + 1; var year = dateObj.getFullYear(); var formattedDate = day + '-' + month + '-' + year; return formattedDate; } function formatDateIso(date) { if (date == null || date == "" || date == undefined) { return ""; } var dateParts = date.split('-'); var day = dateParts[0]; var month = dateParts[1]; var year = dateParts[2]; var formattedDate = year + '-' + month + '-' + day; return formattedDate; } var data_search_select2_default = { data: function (params) { var query = { search: params.term, } return query; }, } function select2_define(selector, url, custom_search_properties = data_search_select2_default, option_clear = false, dropdown_parent = $(selector).parent().parent()) { var ajax_settings = { url: url_controller + url + "/?token=" + _token_user, dataType: 'json', delay: 300, processResults: function (data) { return { results: data.map(function (item) { return { id: item.code, text: item.content, } }) } } } $(selector).select2({ dropdownParent: dropdown_parent, // dropdownAutoWidth: true, allowClear: option_clear, ajax: { ...ajax_settings, ...custom_search_properties } }) $(`span.select2.select2-container`).css("width", "unset"); } function flatpicker_define(selector, add_on_proporties = {}, is_custom_properties = 0) { var default_config = { dateFormat: "d-m-Y", }; if (is_custom_properties == 0) { var new_config = { ...default_config, ...add_on_proporties } } else { var new_config = add_on_proporties; } var flatpickr_var = $(selector).flatpickr(new_config); return flatpickr_var; } function ckeditor_define(id, placeholder = 'Isikan detail') { let editor; CKEDITOR.ClassicEditor.create(document.getElementById(id), { // https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html#extended-toolbar-configuration-format toolbar: { items: [ 'findAndReplace', 'selectAll', '|', 'heading', '|', 'bold', 'italic', 'strikethrough', 'underline', 'code', 'subscript', 'superscript', 'removeFormat', '|', 'bulletedList', 'numberedList', 'todoList', '|', 'outdent', 'indent', '|', 'undo', 'redo', '-', 'fontSize', 'fontFamily', 'fontColor', 'fontBackgroundColor', 'highlight', '|', 'alignment', '|', 'uploadImage', '|', 'blockQuote', 'insertTable', '|', 'specialCharacters', 'horizontalLine', 'pageBreak', '|', ], shouldNotGroupWhenFull: true }, // Changing the language of the interface requires loading the language file using the