it: каталог моделей в popup и возврат к добавлению экземпляров.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -53,9 +53,93 @@ function itPanelClose(id) {
|
||||
document.body.style.overflow = '';
|
||||
}
|
||||
|
||||
var IT_EQ_DRAFT_KEY = 'it-equipment-draft';
|
||||
|
||||
function itEquipmentDraftSave() {
|
||||
var form = document.querySelector('#it-equipment-panel form');
|
||||
if (!form || !window.sessionStorage) return;
|
||||
var data = {};
|
||||
form.querySelectorAll('input, textarea, select').forEach(function (el) {
|
||||
if (!el.name || el.name === 'csrfmiddlewaretoken') return;
|
||||
if (el.type === 'checkbox' || el.type === 'radio') {
|
||||
data[el.name] = el.checked ? (el.value || '1') : '';
|
||||
data['__checked__' + el.name] = el.checked;
|
||||
} else {
|
||||
data[el.name] = el.value;
|
||||
}
|
||||
});
|
||||
try { sessionStorage.setItem(IT_EQ_DRAFT_KEY, JSON.stringify(data)); } catch (e) {}
|
||||
}
|
||||
|
||||
function itEquipmentDraftRestore() {
|
||||
if (!window.sessionStorage) return;
|
||||
var raw;
|
||||
try { raw = sessionStorage.getItem(IT_EQ_DRAFT_KEY); } catch (e) { return; }
|
||||
if (!raw) return;
|
||||
var data;
|
||||
try { data = JSON.parse(raw); } catch (e) { return; }
|
||||
var form = document.querySelector('#it-equipment-panel form');
|
||||
if (!form) return;
|
||||
Object.keys(data).forEach(function (name) {
|
||||
if (name.indexOf('__checked__') === 0) return;
|
||||
var el = form.querySelector('[name="' + name + '"]');
|
||||
if (!el) return;
|
||||
if (el.type === 'checkbox' || el.type === 'radio') {
|
||||
el.checked = !!data['__checked__' + name];
|
||||
} else {
|
||||
el.value = data[name] || '';
|
||||
if (el.tagName === 'SELECT') {
|
||||
el.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
}
|
||||
}
|
||||
});
|
||||
var model = document.getElementById('it-equipment-model-select');
|
||||
if (model && model.value && typeof itSetSearchableSelectValue === 'function') {
|
||||
itSetSearchableSelectValue('it-equipment-model-select', model.value);
|
||||
}
|
||||
}
|
||||
|
||||
function itEquipmentDraftClear() {
|
||||
try { sessionStorage.removeItem(IT_EQ_DRAFT_KEY); } catch (e) {}
|
||||
}
|
||||
|
||||
function itModelsOpenCatalog() {
|
||||
var ret = document.getElementById('it-models-return-to');
|
||||
if (ret) ret.value = '';
|
||||
itPanelOpen('it-equipment-models-panel');
|
||||
}
|
||||
|
||||
function itModelsOpenFromEquipment() {
|
||||
itEquipmentDraftSave();
|
||||
var ret = document.getElementById('it-models-return-to');
|
||||
if (ret) ret.value = 'equipment';
|
||||
itPanelClose('it-equipment-panel');
|
||||
itPanelOpen('it-equipment-models-panel');
|
||||
}
|
||||
|
||||
function itModelsDismiss() {
|
||||
var ret = document.getElementById('it-models-return-to');
|
||||
var back = ret && ret.value === 'equipment';
|
||||
itPanelClose('it-equipment-models-panel');
|
||||
if (back) {
|
||||
itPanelOpen('it-equipment-panel');
|
||||
itEquipmentDraftRestore();
|
||||
}
|
||||
}
|
||||
|
||||
function itModalsInit(root) {
|
||||
if (!root) return;
|
||||
if (root.getAttribute('data-it-equipment-open') === '1') itPanelOpen('it-equipment-panel');
|
||||
if (root.getAttribute('data-it-models-open') === '1') {
|
||||
itPanelOpen('it-equipment-models-panel');
|
||||
return;
|
||||
}
|
||||
if (root.getAttribute('data-it-equipment-open') === '1') {
|
||||
itPanelOpen('it-equipment-panel');
|
||||
itEquipmentDraftRestore();
|
||||
var mid = root.getAttribute('data-it-select-model-id');
|
||||
if (mid) itSetSearchableSelectValue('it-equipment-model-select', mid);
|
||||
itEquipmentDraftClear();
|
||||
}
|
||||
if (root.getAttribute('data-it-worklog-open') === '1') itPanelOpen('it-worklog-panel');
|
||||
}
|
||||
|
||||
@@ -441,6 +525,11 @@ document.addEventListener('keydown', function (ev) {
|
||||
itReportPreviewClose();
|
||||
return;
|
||||
}
|
||||
var models = document.getElementById('it-equipment-models-panel');
|
||||
if (models && models.style.display === 'flex') {
|
||||
itModelsDismiss();
|
||||
return;
|
||||
}
|
||||
['it-equipment-panel', 'it-worklog-panel'].forEach(function (id) {
|
||||
var el = document.getElementById(id);
|
||||
if (el && el.style.display === 'flex') itPanelClose(id);
|
||||
|
||||
Reference in New Issue
Block a user