From: fomichev Date: Thu, 7 Nov 2024 06:43:11 +0000 (+0300) Subject: Перенос JS в файл _form.js X-Git-Tag: 1.7~228^2~10 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=43de4d2c7b819fc3029bd9bb91c50391c240aa7f;p=erp24_rep%2Fyii-erp24%2F.git Перенос JS в файл _form.js --- diff --git a/erp24/views/crud/cluster-admin/_form.php b/erp24/views/crud/cluster-admin/_form.php index a5211ba9..a65228a0 100644 --- a/erp24/views/crud/cluster-admin/_form.php +++ b/erp24/views/crud/cluster-admin/_form.php @@ -15,7 +15,7 @@ use yii_app\records\ClusterAdmin; /** @var array $allAdmins */ /** @var yii_app\records\Admin $user */ - +$this->registerJsFile('/js/crud/cluster-admin/_form.js', ['position' => \yii\web\View::POS_END]); $inactiveAdmins = ArrayHelper::map($inactiveAdmins, 'id', 'name'); $allAdmins = ArrayHelper::map($allAdmins, 'id', 'name'); ?> @@ -78,81 +78,9 @@ $allAdmins = ArrayHelper::map($allAdmins, 'id', 'name'); - + var inactiveAdminsData = ; + var allAdminsData = ; + var selectedAdminId = admin_id) ?>; + -$inactiveAdminsJson = json_encode($inactiveAdmins, JSON_UNESCAPED_UNICODE); - -$allAdminsJson = json_encode($allAdmins, JSON_UNESCAPED_UNICODE); -$js = <<admin_id; - populateAdminSelect(selectData, selectedValue); - - if (isChecked) { - $('label[for="date-end-field"]').hide(); - } else { - $('label[for="date-end-field"]').show(); - } -} - -function toggleDateEndField() { - var isChecked = $('#active-checkbox').is(':checked'); - var currentDate = new Date().toISOString().split('T')[0]; - var data = isChecked ? $inactiveAdminsJson : $allAdminsJson; - var selectData = Object.entries(data).map(function([id, text]) { - return { id: parseInt(id), text: text }; - }); - var selectedValue = \$adminSelect.val(); - populateAdminSelect(selectData, selectedValue); - - if (isChecked) { - $('#date-end-field').val('2100-01-01'); - $('#date-end-field').hide(); - $('label[for="date-end-field"]').hide(); - } else { - $('#date-end-field').val(currentDate); - $('#date-end-field').show(); - $('label[for="date-end-field"]').show(); - } -} - - -$('#active-checkbox').on('change', function() { - toggleDateEndField(); -}); - - -initDateEndField(); -JS; - -$this->registerJs($js); -?> \ No newline at end of file diff --git a/erp24/web/js/crud/cluster-admin/_form.js b/erp24/web/js/crud/cluster-admin/_form.js new file mode 100644 index 00000000..6c8a85a3 --- /dev/null +++ b/erp24/web/js/crud/cluster-admin/_form.js @@ -0,0 +1,69 @@ +$(document).ready(function() { + + + + +var $adminSelect = $('#admin-select'); + +function populateAdminSelect(data, selectedValue) { + $adminSelect.empty(); + data.forEach(function(item) { + $adminSelect.append(new Option(item.text, item.id, false, false)); + }); + + if (selectedValue && data.some(function(item) { return item.id == selectedValue; })) { + $adminSelect.val(selectedValue).trigger('change'); + } else { + $adminSelect.val(null).trigger('change'); + } + + $adminSelect.select2({ + placeholder: 'Выберите кустового...', + allowClear: true, + }); +} + +function initDateEndField() { + var isChecked = $('#active-checkbox').is(':checked'); + var data = isChecked ? inactiveAdminsData : allAdminsData; + var selectData = Object.entries(data).map(function([id, text]) { + return { id: parseInt(id), text: text }; + }); + var selectedValue = selectedAdminId; + populateAdminSelect(selectData, selectedValue); + + if (isChecked) { + $('label[for="date-end-field"]').hide(); + } else { + $('label[for="date-end-field"]').show(); + } +} + +function toggleDateEndField() { + var isChecked = $('#active-checkbox').is(':checked'); + var currentDate = new Date().toISOString().split('T')[0]; + var data = isChecked ? inactiveAdminsData : allAdminsData; + var selectData = Object.entries(data).map(function([id, text]) { + return { id: parseInt(id), text: text }; + }); + var selectedValue = $adminSelect.val(); + populateAdminSelect(selectData, selectedValue); + + if (isChecked) { + $('#date-end-field').val('2100-01-01'); + $('#date-end-field').hide(); + $('label[for="date-end-field"]').hide(); + } else { + $('#date-end-field').val(currentDate); + $('#date-end-field').show(); + $('label[for="date-end-field"]').show(); + } +} + +$('#active-checkbox').on('change', function() { + toggleDateEndField(); +}); + +initDateEndField(); + +}); \ No newline at end of file