Compare commits

...

1 Commits

Author SHA1 Message Date
Raphael Michel
90d12506f4 Meta properties: Add helper to sort values (Z#23213668) 2025-11-10 11:20:00 +01:00
2 changed files with 19 additions and 0 deletions

View File

@@ -91,6 +91,8 @@
<div class="col-sm-12">
<button type="button" class="btn btn-default" data-formset-add>
<i class="fa fa-plus"></i> {% trans "Add a new value" %}</button>
<button type="button" class="btn btn-default" data-formset-sort>
<i class="fa fa-sort-alpha-asc"></i> {% trans "Sort alphabetically" %}</button>
</div>
</div>
</div>

View File

@@ -80,6 +80,23 @@ var form_handlers = function (el) {
el.find("[data-formset]").on("formAdded", "div", function (event) {
form_handlers($(event.target));
});
el.find("[data-formset] [data-formset-sort]").on("click", function (event) {
// Sort forms alphabetically by their first field
var $formset = $(this).closest("[data-formset]");
var $forms = $formset.find("[data-formset-form]").not("[data-formset-form-deleted]")
var compareForms = function(form_a, form_b) {
var a = $(form_a).find('input:not([name*=-ORDER]):not([name*=-DELETE]):not([name*=-id])').val();
var b = $(form_b).find('input:not([name*=-ORDER]):not([name*=-DELETE]):not([name*=-id])').val();
return a.localeCompare(b);
}
$forms = $forms.sort(compareForms);
$forms.each(function(i, form) {
var $order = $(form).find('[name*=-ORDER]');
$order.val(i + 1);
});
// Trigger visual reorder
$formset.find("[name*=-ORDER]").first().trigger("change");
});
// Vouchers
el.find("#voucher-bulk-codes-generate").click(function () {