Fix: одна строка за клик (extra_js вне content), подпись Удалить у чекбокса
Made-with: Cursor
This commit is contained in:
12
HISTORY.md
12
HISTORY.md
@@ -2,6 +2,18 @@
|
||||
|
||||
# История изменений ERP WaterSurf
|
||||
|
||||
## 2025-02-25 22:50 UTC – Добавление строки: одна строка за клик, понятное удаление
|
||||
|
||||
**Проблема**: По кнопке «Добавить строку» добавлялось сразу две строки; было неочевидно, как удалить лишнюю.
|
||||
|
||||
**Причина**: В order_form.html блок `{% block extra_js %}` был вложен в `{% block content %}`, из‑за чего скрипт попадал на страницу дважды и на кнопку вешались два обработчика.
|
||||
|
||||
**Решение**: Блок контента формы закрыт до скрипта: сначала `{% endblock %}`, затем `{% block extra_js %}` со скриптом — скрипт подключается один раз, добавляется одна строка за клик. Для удаления строки: у чекбокса в колонке «Удалить» добавлена подпись «Удалить» (label), при клонировании строки у новой подписи обновляется атрибут `for` под новый id чекбокса. Стили для подписи: cursor pointer, мелкий текст.
|
||||
|
||||
**Изменения**: order_form.html (структура блоков, label «Удалить», обновление for у клона), supplier_order_form.html (label «Удалить», обновление for у клона), theme-compact.css (стили .ws-delete-row-label).
|
||||
|
||||
---
|
||||
|
||||
## 2025-02-25 22:45 UTC – Поле «Цена»: ввод с клавиатуры сохраняется
|
||||
|
||||
**Проблема**: В табличной части заказа в поле «Цена» сохранялось только изменение стрелками вверх/вниз, введённое с клавиатуры значение не сохранялось.
|
||||
|
||||
@@ -132,6 +132,13 @@
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
.ws-table-items label.ws-delete-row-label {
|
||||
cursor: pointer;
|
||||
font-size: 13px;
|
||||
color: var(--ws-text-muted);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ws-table-items .ws-col-product select {
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<td class="ws-col-currency">{{ f.currency }}</td>
|
||||
<td class="ws-col-qty">{{ f.quantity }}</td>
|
||||
<td class="row-amount ws-col-cost ws-num">—</td>
|
||||
<td>{% if f.DELETE %}{{ f.DELETE }}{% endif %}</td>
|
||||
<td class="ws-col-del"><label class="ws-delete-row-label">{% if f.DELETE %}{{ f.DELETE }}{% endif %} Удалить</label></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -88,6 +88,7 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block extra_js %}
|
||||
<script>
|
||||
(function() {
|
||||
@@ -155,10 +156,14 @@
|
||||
});
|
||||
var amountCell = clone.querySelector('.row-amount');
|
||||
if (amountCell) amountCell.textContent = '—';
|
||||
var delCheckbox = clone.querySelector('input[name$="-DELETE"]');
|
||||
if (delCheckbox) {
|
||||
var delLabel = clone.querySelector('label.ws-delete-row-label');
|
||||
if (delLabel) delLabel.setAttribute('for', delCheckbox.id);
|
||||
}
|
||||
tbody.appendChild(clone);
|
||||
totalInput.value = nextIndex + 1;
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<td class="ws-col-currency">{{ f.currency }}</td>
|
||||
<td class="ws-col-qty">{{ f.quantity }}</td>
|
||||
<td class="row-amount ws-col-cost ws-num">—</td>
|
||||
<td>{% if f.DELETE %}{{ f.DELETE }}{% endif %}</td>
|
||||
<td class="ws-col-del"><label class="ws-delete-row-label">{% if f.DELETE %}{{ f.DELETE }}{% endif %} Удалить</label></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -161,6 +161,11 @@
|
||||
});
|
||||
var amountCell = clone.querySelector('.row-amount');
|
||||
if (amountCell) amountCell.textContent = '—';
|
||||
var delCheckbox = clone.querySelector('input[name$="-DELETE"]');
|
||||
if (delCheckbox) {
|
||||
var delLabel = clone.querySelector('label.ws-delete-row-label');
|
||||
if (delLabel) delLabel.setAttribute('for', delCheckbox.id);
|
||||
}
|
||||
tbody.appendChild(clone);
|
||||
totalInput.value = nextIndex + 1;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user