{"version":3,"sources":["app.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.js","sourcesContent":["$(function() {\n let url = location.href;\n let url_array = url.split(\"/\");\n let uri = url_array[url_array.length-1];\n if(url_array[url_array.length-2] != 'undefined') {\n if(url_array[url_array.length-2] == 'token') {\n uri = url_array[url_array.length-2];\n }\n }\n if(uri != 'login' && uri != 'token') {\n if (Boolean(sessionStorage.getItem('sidebar-toggle-collapsed'))) {\n var body = document.getElementsByTagName('body')[0];\n body.className = body.className + ' sidebar-collapse';\n }\n\n $('.sidebar-toggle').click(function(event) {\n event.preventDefault();\n if (Boolean(sessionStorage.getItem('sidebar-toggle-collapsed'))) {\n sessionStorage.setItem('sidebar-toggle-collapsed', '');\n } else {\n sessionStorage.setItem('sidebar-toggle-collapsed', '1');\n }\n });\n }\n\n // Перевод datatables лежит в /locales/datatable_lang.json\n switch (window.lang) {\n case \"en\":\n window.dataTableLang = {\n \"nothingfound\": \"Nothing found\",\n \"sEmptyTable\": \"No data available\",\n \"sInfo\": \"Entries from _START_ to _END_, total _TOTAL_\",\n \"sInfoEmpty\": \"Entries from 0 to 0, total 0\",\n \"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n \"sInfoPostFix\": \"\",\n \"sInfoThousands\": \",\",\n \"sLengthMenu\": \"_MENU_ Show entries\",\n \"sLoadingRecords\": \"Loading...\",\n \"sProcessing\": \"Processing...\",\n \"sSearch\": \"Search:\",\n \"sZeroRecords\": \"No matching records found\",\n \"oPaginate\": {\n \"sFirst\": \"First\",\n \"sLast\": \"Last\",\n \"sNext\": \"Next\",\n \"sPrevious\": \"Previous\"\n },\n \"oAria\": {\n \"sSortAscending\": \": activate to sort column ascending\",\n \"sSortDescending\": \": activate to sort column descending\"\n }\n };\n break;\n case \"ru\":\n window.dataTableLang = {\n \"nothingfound\": \"Ничего не найдено\",\n \"sProcessing\": \"Подождите...\",\n \"sLengthMenu\": \"_MENU_ Показано записей\",\n \"sZeroRecords\": \"Записи отсутствуют.\",\n \"sInfo\": \"Записи от _START_ до _END_, всего _TOTAL_\",\n \"sInfoEmpty\": \"Записи от 0 до 0, всего 0\",\n \"sInfoFiltered\": \"(отфильтровано из _MAX_ записей)\",\n \"sInfoPostFix\": \"\",\n \"sSearch\": \"Поиск:\",\n \"sUrl\": \"\",\n \"oPaginate\": {\n \"sFirst\": \"Первая\",\n \"sPrevious\": \"Предыдущая\",\n \"sNext\": \"Следующая\",\n \"sLast\": \"Последняя\"\n },\n \"oAria\": {\n \"sSortAscending\": \": активировать для сортировки столбца по возрастанию\",\n \"sSortDescending\": \": активировать для сортировки столбцов по убыванию\"\n }\n };\n break;\n case \"uk\":\n window.dataTableLang = {\n \"nothingfound\": \"Нічого не знайдено\",\n \"sEmptyTable\": \"Немає даних у таблиці\",\n \"sInfo\": \"Записи від _START_ до _END_, всього _TOTAL_\",\n \"sInfoEmpty\": \"Записи від 0 до 0, всього 0\",\n \"sInfoFiltered\": \"(відфільтровано з _MAX_ загальної кількості записів)\",\n \"sInfoPostFix\": \"\",\n \"sInfoThousands\": \",\",\n \"sLengthMenu\": \"_MENU_ Показати записи\",\n \"sLoadingRecords\": \"Завантаження...\",\n \"sProcessing\": \"Обробка...\",\n \"sSearch\": \"Пошук:\",\n \"sZeroRecords\": \"Не знайдено відповідних записів\",\n \"oPaginate\": {\n \"sFirst\": \"Перший\",\n \"sLast\": \"Остання\",\n \"sNext\": \"Далі\",\n \"sPrevious\": \"Попередня\"\n },\n \"oAria\": {\n \"sSortAscending\": \": активувати, щоб сортувати стовпець у порядку зростання\",\n \"sSortDescending\": \": активувати, щоб сортувати стовпець знижуючи\"\n }\n };\n break;\n case \"hr\":\n window.dataTableLang = {\n \"nothingfound\": \"Ništa nije pronađeno\",\n \"sEmptyTable\": \"Podaci u tablici nisu dostupni\",\n \"sInfo\": \"Prikazuje se _START_ do _END_, ukupno _TOTAL_\",\n \"sInfoEmpty\": \"Prikazuje se 0 do 0, ukupno 0\",\n \"sInfoFiltered\": \"(filtrirano od _MAX_ ukupnih unosa)\",\n \"sInfoPostFix\": \"\",\n \"sInfoThousands\": \",\",\n \"sLengthMenu\": \"_MENU_ Prikaži unose\",\n \"sLoadingRecords\": \"Učitavam...\",\n \"sProcessing\": \"Obrada...\",\n \"sSearch\": \"Traži:\",\n \"sZeroRecords\": \"Nije pronađen nijedan podudarni zapis\",\n \"oPaginate\": {\n \"sFirst\": \"Prvi\",\n \"sLast\": \"Posljednji\",\n \"sNext\": \"Sljedeće\",\n \"sPrevious\": \"Prethodno\"\n },\n \"oAria\": {\n \"sSortAscending\": \": aktivirati za sortiranje stupca uzlazno\",\n \"sSortDescending\": \": aktivirajte za sortiranje stupaca prema silaznom nizu\"\n }\n };\n break;\n default:\n window.dataTableLang = {\n \"nothingfound\": \"Ничего не найдено\",\n \"sProcessing\": \"Подождите...\",\n \"sLengthMenu\": \"_MENU_ Показано записей\",\n \"sZeroRecords\": \"Записи отсутствуют.\",\n \"sInfo\": \"Записи от _START_ до _END_, всего _TOTAL_\",\n \"sInfoEmpty\": \"Записи от 0 до 0, всего 0\",\n \"sInfoFiltered\": \"(отфильтровано из _MAX_ записей)\",\n \"sInfoPostFix\": \"\",\n \"sSearch\": \"Поиск:\",\n \"sUrl\": \"\",\n \"oPaginate\": {\n \"sFirst\": \"Первая\",\n \"sPrevious\": \"Предыдущая\",\n \"sNext\": \"Следующая\",\n \"sLast\": \"Последняя\"\n },\n \"oAria\": {\n \"sSortAscending\": \": активировать для сортировки столбца по возрастанию\",\n \"sSortDescending\": \": активировать для сортировки столбцов по убыванию\"\n }\n };\n }\n\n $('.js-select2').select2({\n allowClear: true,\n placeholder: \"Select an option\",\n language: {\n \"noResults\": function(){\n return window.dataTableLang.nothingfound;\n }\n }\n });\n $('.mselect2').selectpicker({ style: 'btn-info', size: 4 });\n\n setTimeout(function() {\n $('.points').remove();\n }, 1500);\n\n $(document).on(\"change\", \".showHide\", function(e) {\n var status = $(this).is(':checked');\n console.log(status);\n if (status) {\n $(\".hides.\" + $(this).data('show')).addClass(\"active\");\n $(\".hides.\" + $(this).data('show')).find(\"input[type='text'], input[type='password']\").each(function() {\n $(this).attr('name', $(this).data('name'));\n });\n } else {\n $(\".hides.\" + $(this).data('show')).removeClass(\"active\");\n $(\".hides.\" + $(this).data('show')).find(\"input[type='text'], input[type='password']\").each(function() {\n $(this).attr('name', \"\");\n });\n }\n });\n\n $(document).on('click', '.modal_add', function() {\n clear_modal();\n var action = $(this).attr('action');\n $.ajax({\n async: false,\n url: action + '/form_add',\n type: 'GET',\n data: { '_token': $('meta[name=\"csrf-token\"]').attr('content') },\n error: function(xhr, status, hz) {\n $('#modal-default .modal-body').html('При загрузке произошла ошибка:' + xhr.responseJSON.status + ' ' + xhr.responseJSON.statusText);\n },\n success: function(data) {\n var obj = jQuery.parseJSON(data);\n if (obj.caption) {\n $('#modal-default .modal-title').text(obj.caption);\n }\n if (obj.text) {\n $('#modal-default .modal-body').html(obj.text);\n }\n $('#modal-default .modal-body form').bind('submit', function() {\n send_add(this);\n return false;\n });\n }\n });\n });\n\n $(document).on('click', '.modal_edit', function() {\n clear_modal();\n var action = $(this).attr('action');\n var item = $(this).attr('data-item');\n $.ajax({\n async: false,\n url: action + '/form_edit',\n type: 'GET',\n data: { item: item, '_token': $('meta[name=\"csrf-token\"]').attr('content') },\n error: function(xhr, status, hz) {\n $('#modal-default .modal-body').html('При загрузке произошла ошибка:' + xhr.status + ' ' + xhr.statusText);\n },\n success: function(data) {\n var obj = jQuery.parseJSON(data);\n if (obj.caption) {\n $('#modal-default .modal-title').text(obj.caption);\n }\n if (obj.text) {\n $('#modal-default .modal-body').html(obj.text);\n }\n $('#modal-default .modal-body form').bind('submit', function() {\n send_edit(this);\n return false;\n });\n }\n });\n });\n\n $(document).on('click', '.modal_closed', function() {\n clear_modal();\n var action = $(this).attr('action');\n var item = $(this).attr('data-item');\n $.ajax({\n async: false,\n url: action + '/form_closed',\n type: 'GET',\n data: { item: item, '_token': $('meta[name=\"csrf-token\"]').attr('content') },\n error: function(xhr, status, hz) {\n $('#modal-default .modal-body').html('При загрузке произошла ошибка:' + xhr.status + ' ' + xhr.statusText);\n },\n success: function(data) {\n var obj = jQuery.parseJSON(data);\n if (obj.caption) {\n $('#modal-default .modal-title').text(obj.caption);\n }\n if (obj.text) {\n $('#modal-default .modal-body').html(obj.text);\n }\n }\n });\n });\n\n /** @type {(key: string, replace: object) => string} */\n __t = function (key, replace = {}) {\n let translation = key.split('.').reduce((t, i) => t ? t[i] : null, window.translations);\n if (!translation) return key;\n for (var placeholder in replace) translation = translation.replace(`:${placeholder}`, replace[placeholder]);\n return translation;\n };\n\n $(document).on('click', '.modal_template', function() {\n clear_modal();\n var action = $(this).attr('action');\n var item = $(this).attr('data-item');\n var type = $(this).attr('data-type');\n $.ajax({\n async: false,\n url: action + '/form_template',\n type: 'GET',\n data: { item: item, type:type, '_token': $('meta[name=\"csrf-token\"]').attr('content') },\n error: function(xhr, status, hz) {\n $('#modal-default .modal-body').html('При загрузке произошла ошибка:' + xhr.status + ' ' + xhr.statusText);\n },\n success: function(data) {\n var obj = jQuery.parseJSON(data);\n if (obj.caption) {\n $('#modal-default .modal-title').text(obj.caption);\n }\n if (obj.text) {\n $('#modal-default .modal-body').html(obj.text);\n }\n $('#modal-default .modal-body form').bind('submit', function() {\n send_edit(this);\n return false;\n });\n }\n });\n });\n\n $(document).on('click', '.modal_view', function() {\n clear_modal();\n var action = $(this).attr('action');\n var item = $(this).attr('data-item');\n $.ajax({\n async: false,\n url: action + '/form_view',\n type: 'GET',\n data: { item: item, '_token': $('meta[name=\"csrf-token\"]').attr('content') },\n error: function(xhr, status, hz) {\n $('#modal-default .modal-body').html('При загрузке произошла ошибка:' + xhr.status + ' ' + xhr.statusText);\n },\n success: function(data) {\n var obj = jQuery.parseJSON(data);\n if (obj.caption) {\n $('#modal-default .modal-title').text(obj.caption);\n }\n if (obj.text) {\n $('#modal-default .modal-body').html(obj.text);\n }\n $('#modal-default .modal-body form').bind('submit', function() {\n send_edit(this);\n return false;\n });\n $('.select2').select2({\n language: {\n \"noResults\": function(){\n return window.dataTableLang.nothingfound;\n }\n }\n });\n }\n });\n });\n\n $(document).on('click', '.modal_delete', function() {\n clear_modal();\n var action = $(this).attr('action');\n var item = $(this).attr('data-item');\n $.ajax({\n async: false,\n url: action + '/' + item + '/form_delete',\n type: 'GET',\n data: { item: item, '_token': $('meta[name=\"csrf-token\"]').attr('content') },\n error: function(xhr, status, hz) {\n $('#modal-default .modal-body').html('При загрузке произошла ошибка:' + xhr.responseJSON.status + ' ' + xhr.responseJSON.statusText);\n },\n success: function(data) {\n var obj = jQuery.parseJSON(data);\n if (obj.caption) {\n $('#modal-default .modal-title').text(obj.caption);\n }\n if (obj.text) {\n $('#modal-default .modal-body').html(obj.text);\n }\n }\n });\n });\n\n $('.str_add').click(function() {\n $('.validate-error').remove();\n var formid = $(this).closest('form').attr('id');\n var action = $(this).closest('form').attr('action');\n if ($(this).closest('form').attr('redirect'))\n var redirect = $(this).closest('form').attr('redirect');\n\n $('#' + formid + ' :input').each(function() {\n $(this).parent().removeClass('has-error');\n });\n var formData = '_token=' + $('meta[name=\"csrf-token\"]').attr('content');\n formData += '&' + $('#' + formid).serialize();\n addLoad();\n $.ajax({\n url: action,\n data: formData,\n type: 'post',\n error: function(xhr, status, errorThrow) {\n if (xhr.status == 422) { // validator exception\n validate_handler('#' + formid, xhr.responseText, '');\n } else {\n console.log(xhr);\n alert(common.save_error + ':' + xhr.responseJSON.status + ' ' + xhr.responseJSON.statusText);\n }\n\n removeLoad();\n\n return false;\n },\n success: function(data, status, xhr) {\n if (data == \"forbidden\") {\n removeLoad();\n alert(common.forbidden);\n }\n var obj = (typeof data == 'string') ? jQuery.parseJSON(data) : data;\n if (obj.status == 'success') {\n if (obj.warning) {\n removeLoad();\n $(\"#modal-default\").modal();\n $('#modal-default .modal-body').html(obj.warning);\n $('#modal-default .modal-title').html(obj.warning_title);\n } else {\n if (redirect)\n document.location.href = redirect;\n else\n document.location.reload();\n }\n } else if (obj.status == 'load_file') {\n removeLoad();\n $(\"#modal-default\").modal();\n $('#modal-default .modal-body').html(obj.body);\n $('#modal-default .modal-title').html(obj.title);\n addLoad();\n } else {\n removeLoad();\n alert(data);\n }\n }\n });\n });\n\n $(document).on('click', '.str_edit', function(e) {\n e.preventDefault();\n var id = $(this).attr('data-id');\n var action = $(this).attr('data-action');\n $('#ui-dialog').remove();\n var dlg = $('
').appendTo('body');\n dlg.dialog({\n close: function() {$('#ui-dialog').remove();},\n resizable: false,\n modal: true,\n width: 800,\n open: function() {\n if ($.ui && $.ui.dialog && $.ui.dialog.prototype._allowInteraction) {\n var ui_dialog_interaction = $.ui.dialog.prototype._allowInteraction;\n $.ui.dialog.prototype._allowInteraction = function(e) {\n if ($(e.target).closest('.select2-dropdown').length) return true;\n return ui_dialog_interaction.apply(this, arguments);\n };\n }\n },\n _allowInteraction: function(event) {\n return !!$(event.target).is(\".select2-input\") || this._super(event);\n },\n create: function(event, ui) {\n addLoad();\n $.ajax({\n async: false,\n url: action + \"/\" + id + \"/edit\",\n type: 'GET',\n data: {\n '_token': $('meta[name=\"csrf-token\"]').attr('content')\n },\n error: function(xhr, status, hz) {\n removeLoad();\n $('#ui-dialog').dialog('close');\n alert(common.upload_error + ':' + xhr.responseJSON.status + ' ' + xhr.responseJSON.statusText);\n return false;\n },\n success: function(data, status, xhr) {\n removeLoad();\n $('#ui-dialog').html(data);\n }\n });\n doDragNDrop('edit');\n },\n buttons: [{\n text: common.save,\n click: function() {\n $('.validate-error').remove();\n var formid = $('#ui-dialog').find('form').attr('id');\n var action = $('#' + formid).attr('action');\n $('#' + formid + ' :input').each(function() {\n $(this).css('border-color', '');\n $(this).css('border', '');\n });\n var formData = '_token=' + $('meta[name=\"csrf-token\"]').attr('content');\n formData += '&' + $('#' + formid).serialize();\n $('#' + formid).find('.serialize').each(function() {\n formData += '&' + $(this).sortable(\"serialize\");\n });\n var form_serialize_ul_pattern = '.serialize_ul li';\n $('#' + formid).find(form_serialize_ul_pattern).each(function() {\n formData += '&' + $(this).attr('id') + '[]=' + $(this).contents()\n .get(0).nodeValue.trim();\n });\n\n addLoad();\n $.ajax({\n url: action + '/' + id,\n type: 'put',\n data: formData,\n error: function(xhr, status, hz) {\n removeLoad();\n if (xhr.status == 422) { // validator exception\n validate_handler('#' + formid, xhr.responseText);\n } else {\n alert(common.update_error + ':' + xhr.responseJSON.status +\n ' ' + xhr.responseJSON.statusText);\n $('#ui-dialog').dialog('close');\n }\n return false;\n },\n success: function(data, status, xhr) {\n var obj = (typeof data == 'string') ? jQuery.parseJSON(data) : data;\n if (obj.status == 'success') {\n document.location.reload();\n } else {\n alert(data);\n removeLoad();\n }\n }\n });\n },\n }, {\n text: common.cancel,\n click: function() {\n $(this).dialog('close');\n },\n }]\n });\n });\n\n $(document).on('click', '.str_delete', function(e) {\n e.preventDefault();\n var id = $(this).attr('data-id');\n var action = $(this).attr('data-action');\n var $table = $(this).closest('table');\n $('')\n .appendTo('body')\n .html(common.deleting_question)\n .dialog({\n resizable: false,\n modal: true,\n close: function() {$('#ui-dialog').remove();},\n buttons: [{\n text: common.delete,\n click: function() {\n var $modal = $(this);\n addLoad();\n $.ajax({\n url: action + \"/\" + id,\n type: \"DELETE\",\n data: {\n '_token': $('meta[name=\"csrf-token\"]').attr('content')\n },\n complete: function() {\n removeLoad();\n },\n error: function(xhr, status, error) {\n $modal.dialog('close');\n $modal.remove();\n alert(common.upload_error + ':' + xhr.responseJSON.status + ' ' + xhr.responseJSON.statusText);\n },\n success: function(data, status, xhr) {\n if (data == 'forbidden') {\n alert(common.forbidden);\n return;\n }\n\n var obj = (typeof data == 'string') ? jQuery.parseJSON(data) : data;\n\n if (obj.status == 'success') {\n $table.DataTable().row('#tbl_' + id).remove().draw();\n $table.closest('.dataTables_wrapper').find('.all-check-number').prop('checked', false);\n $table.closest('.dataTables_wrapper').find('.check-number').prop('checked', false);\n $modal.dialog('close');\n $modal.remove();\n } else if (obj.status == 'error') {\n removeLoad();\n if (obj.msg != '') {\n $('#ui-dialog').html(obj.msg);\n $('.ui-dialog-buttonset button').first().remove();\n //drow_error('ui-dialog', '', obj.msg);\n } else {\n drow_error('ui-dialog', 'При изменении произошла ошибка', xhr.status + ' ' + xhr.statusText);\n }\n } else {\n alert(data);\n }\n }\n });\n }\n },\n {\n text: common.cancel,\n click: function() {\n $(this).dialog('close');\n $(this).remove();\n }\n }]\n });\n });\n\n updateTab();\n $(\".nav.nav-tabs li a\").click(function(e) {\n e.preventDefault();\n history.replaceState({}, \"\", $(this).attr(\"href\"));\n updateTab();\n });\n\n function updateTab() {\n var parent = $(\".nav-tabs-custom\");\n parent.find(\"li, .tab-content .tab-pane\").removeClass(\"active\");\n var hash = window.location.hash;\n if (hash == \"\") {\n hash = parent.find(\".nav.nav-tabs li\").eq(0).find(\"a\").attr(\"href\");\n }\n // console.log(hash);\n $(\"[href='\" + hash + \"']\").closest(\"li\").addClass(\"active\");\n $(hash).addClass(\"active\");\n }\n});\n\nfunction send_add(e) {\n $('.validate-error').remove();\n var formid = $('#modal-default .modal-body form').attr('id');\n var action = $('#modal-default .modal-body form').attr('action');\n $('#' + formid + ' :input').each(function() {\n $(this).parent().removeClass('has-error');\n });\n var formData = '_token=' + $('meta[name=\"csrf-token\"]').attr('content');\n formData += '&' + $('#' + formid).serialize();\n $.ajax({\n url: action,\n data: formData,\n type: 'post',\n error: function(xhr, status, errorThrow) {\n if (xhr.status == 422) { // validator exception\n validate_handler('#' + formid, xhr.responseText, '');\n } else if(xhr.status == 409) {\n var obj = $.parseJSON(xhr.responseText);\n $('#modal-default .modal-title').text(common.save_error);\n $('#modal-default .modal-body').html(obj.statusText);\n } else {\n alert(common.save_error + ':' + xhr.status + ' ' + xhr.statusText);\n }\n return false;\n },\n success: function(data, status, xhr) {\n var obj = $.parseJSON(data);\n if (obj.status == 'success') {\n document.location.reload();\n } else if (obj.status == 'success'){\n if (obj.statusText) {\n $('#modal-default .modal-title').text(obj.statusText);\n $('#modal-default .modal-body').html('');\n }\n } else {\n alert(data);\n }\n }\n });\n}\n\nfunction send_edit(e) {\n $('.validate-error').remove();\n var formid = $('#modal-default .modal-body form').attr('id');\n var action = $('#modal-default .modal-body form').attr('action');\n let redirect = $('#modal-default .modal-body form').attr('redirect');\n $('#' + formid + ' :input').each(function() {\n $(this).parent().removeClass('has-error');\n });\n var formData = '_token=' + $('meta[name=\"csrf-token\"]').attr('content');\n formData += '&' + $('#' + formid).serialize();\n addLoad();\n $.ajax({\n url: action,\n data: formData,\n type: 'put',\n error: function(xhr, status, errorThrow) {\n removeLoad();\n if (xhr.status == 422) { // validator exception\n validate_handler('#' + formid, xhr.responseText, '');\n } else {\n alert(common.save_error + ':' + xhr.status + ' ' + xhr.statusText);\n }\n return false;\n },\n success: function(data, status, xhr) {\n removeLoad();\n var obj = $.parseJSON(data);\n if (obj.status == 'success') {\n if(typeof(redirect) != 'undefined') {\n if(redirect.length > 0) {\n document.location.href = redirect;\n } else {\n document.location.reload();\n }\n } else {\n document.location.reload();\n }\n } else {\n alert(data);\n }\n }\n });\n}\n\nfunction clear_modal() {\n $('#modal-default .modal-body').html('');\n $('#modal-default .modal-title').text('');\n}\n\nfunction addLoad() {\n var text = '' + obj[key][msgnum] + '
');\n $(form + ' #' + key).focus();\n $(form + ' #' + key).parent().addClass('has-error');\n\n arr = key.split('.');\n if (arr[2]) {\n $(form + ' input[name=\"'+arr[0]+'[][\\''+arr[2]+'\\']\"] ').eq(arr[1]).parent().prepend('' + obj[key][msgnum] + '
');\n $(form + ' input[name=\"'+arr[0]+'[][\\''+arr[2]+'\\']\"] ').eq(arr[1]).focus();\n } else if (arr[1]) {\n $(form + ' input[name=\"' + arr[0] + '[]\"] ').eq(arr[1]).parent().prepend('' + obj[key][msgnum] + '
');\n $(form + ' input[name=\"' + arr[0] + '[]\"] ').eq(arr[1]).focus();\n $(form + ' select[name=\"' + arr[0] + '[]\"] ').parent().addClass('has-error');\n }\n }\n }\n}\n\n/**\n* Функция проверки патерна рег.выражения\n\n * @param string reg - патерн\n * @param string error - текст ошибки, не обязательно\n * @returns {flag|Boolean} */\nfunction check_regexp(reg, error) {\n error = error === undefined ? false : error;\n try {\n new RegExp(reg);\n flag = false;\n } catch (err) {\n if (error) {\n alert(reg + error);\n }\n flag = true;\n };\n return flag;\n}\n\nfunction init_lists() {\n tag_id = $('#tag_id').val();\n list_move_right();\n list_move_left();\n list_bind_buttons();\n}\n\nfunction getDateFormat(microtime, format=null) {\n let newDate = new Date(microtime);\n let year = newDate.getFullYear();\n let month = newDate.getMonth() + 1;\n let date = newDate.getDate();\n if(format == 'd.m.Y') {\n return ((date < 10) ? \"0\" + date : date) + '.' + ((month < 10) ? \"0\" + month : month) + '.' + year;\n } else {\n return year + \"-\" + ((month < 10) ? \"0\" + month : month) + \"-\" + ((date < 10) ? \"0\" + date : date);\n }\n}\n\nfunction getDateTimeFormat(microtime, format=null) {\n let newDate = new Date(microtime);\n let year = newDate.getFullYear();\n let month = newDate.getMonth() + 1;\n let date = newDate.getDate();\n let hour = newDate.getHours();\n let minute = newDate.getMinutes();\n let second = newDate.getSeconds();\n if(format == 'd.m.Y H:i:s') {\n return ((date < 10) ? \"0\" + date : date) + '.' + ((month < 10) ? \"0\" + month : month) + '.' + year + ' ' + ((hour < 10) ? \"0\" + hour : hour) + \":\" + ((minute < 10) ? \"0\" + minute : minute) + \":\" + ((second < 10) ? \"0\" + second : second);\n } else {\n return year + \"-\" + ((month < 10) ? \"0\" + month : month) + \"-\" + ((date < 10) ? \"0\" + date : date) + \" \" + ((hour < 10) ? \"0\" + hour : hour) + \":\" + ((minute < 10) ? \"0\" + minute : minute) + \":\" + ((second < 10) ? \"0\" + second : second);\n }\n}\n\nfunction remove_error(id) {\n $('#' + id + ' .alert.alert-error').each(function () {\n $(this).remove();\n });\n return false;\n}\n\n/**\n * Функция вывода ошибок\n\n * @param string id - id формы внутри которой вывести ошибку\n * @param string head - заголовок ошибки\n * @param string text - текст ошибки\n * @param string position - куда вывести ошибку (top - в начало формы, bottom - в конец формы)\n * @param string icon - иконка favicon\n * @returns false */\nfunction drow_error(id, head, text = '', position = 'top', icon = 'fa-close') {\n if (text != '')\n text = '' + text + '
';\n if (head != '')\n head = '