fix w formularzu

This commit is contained in:
Mateusz Gruszczyński
2025-09-26 23:14:57 +02:00
parent 95b01665b9
commit fd46242cf5
2 changed files with 86 additions and 36 deletions

View File

@@ -0,0 +1,43 @@
(function () {
'use strict';
function ready(fn) {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', fn);
} else {
fn();
}
}
ready(function () {
var boxes = Array.prototype.slice.call(
document.querySelectorAll('input.form-check-input[type="checkbox"][data-group="postepy"]')
);
if (!boxes.length) return;
function atLeastOneChecked() {
return boxes.some(function (b) { return b.checked; });
}
// Blokuj odznaczenie ostatniego włączonego
boxes.forEach(function (box) {
box.addEventListener('change', function () {
if (!atLeastOneChecked()) {
box.checked = true;
}
});
});
// Walidacja przy submit
var form = boxes[0].closest('form');
if (form) {
form.addEventListener('submit', function (e) {
if (!atLeastOneChecked()) {
e.preventDefault();
// Możesz podmienić na toast/flash wg własnego UI
alert('Co najmniej jeden wskaźnik postępu musi być włączony.');
}
});
}
});
})();

View File

@@ -297,44 +297,50 @@
</div>
<div class="row g-3 mt-2">
<div class="col-12 col-md-4">
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
id="pokaz_postep_finanse"
name="pokaz_postep_finanse"
{% if zbiorka %}{% if zbiorka.pokaz_postep_finanse %}checked{% endif %}{% else %}checked{% endif %}
>
<label class="form-check-label" for="pokaz_postep_finanse">Pokaż postęp: Finanse</label>
</div>
</div>
<div class="col-12 col-md-4">
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
id="pokaz_postep_pozycje"
name="pokaz_postep_pozycje"
{% if zbiorka %}{% if zbiorka.pokaz_postep_pozycje %}checked{% endif %}{% else %}checked{% endif %}
>
<label class="form-check-label" for="pokaz_postep_pozycje">Pokaż postęp: Zakupy (liczba)</label>
</div>
</div>
<div class="col-12 col-md-4">
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
id="pokaz_postep_kwotowo"
name="pokaz_postep_kwotowo"
{% if zbiorka %}{% if zbiorka.pokaz_postep_kwotowo %}checked{% endif %}{% else %}checked{% endif %}
>
<label class="form-check-label" for="pokaz_postep_kwotowo">Pokaż postęp: Zakupy (kwotowo)</label>
</div>
<div class="col-12 col-md-4">
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
id="pokaz_postep_finanse"
name="pokaz_postep_finanse"
data-group="postepy"
{% if zbiorka %}{% if zbiorka.pokaz_postep_finanse %}checked{% endif %}{% else %}checked{% endif %}
>
<label class="form-check-label" for="pokaz_postep_finanse">Pokaż postęp: Finanse</label>
</div>
</div>
</div>
<div class="col-12 col-md-4">
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
id="pokaz_postep_pozycje"
name="pokaz_postep_pozycje"
data-group="postepy"
{% if zbiorka %}{% if zbiorka.pokaz_postep_pozycje %}checked{% endif %}{% else %}checked{% endif %}
>
<label class="form-check-label" for="pokaz_postep_pozycje">Pokaż postęp: Zakupy (liczba)</label>
</div>
</div>
<div class="col-12 col-md-4">
<div class="form-check form-switch">
<input
class="form-check-input"
type="checkbox"
id="pokaz_postep_kwotowo"
name="pokaz_postep_kwotowo"
data-group="postepy"
{% if zbiorka %}{% if zbiorka.pokaz_postep_kwotowo %}checked{% endif %}{% else %}checked{% endif %}
>
<label class="form-check-label" for="pokaz_postep_kwotowo">Pokaż postęp: Zakupy (kwotowo)</label>
</div>
</div>
</div>
<!-- CTA -->
<div class="d-flex flex-wrap gap-2">
@@ -356,4 +362,5 @@
<script src="{{ url_for('static', filename='js/formularz_zbiorek.js') }}?v={{ APP_VERSION }}"></script>
<script src="{{ url_for('static', filename='js/produkty_formularz.js') }}?v={{ APP_VERSION }}"></script>
<script src="{{ url_for('static', filename='js/kwoty_formularz.js') }}?v={{ APP_VERSION }}"></script>
<script src="{{ url_for('static', filename='js/przelaczniki_zabezpieczenie.js') }}?v={{ APP_VERSION }}"></script>
{% endblock %}