mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
Improve interface to create and edit subevents (Z#23207890) (#5519)
* Use select2 item input in newly added quotas * Make submit row sticky on really long forms * Only show product settings that match quotas
This commit is contained in:
@@ -26,6 +26,7 @@ $(document).on("pretix:bind-forms", function () {
|
||||
}
|
||||
}
|
||||
|
||||
// RRule editor
|
||||
function rrule_preview() {
|
||||
var ruleset = new rrule.RRuleSet();
|
||||
|
||||
@@ -121,7 +122,14 @@ $(document).on("pretix:bind-forms", function () {
|
||||
});
|
||||
}
|
||||
}
|
||||
$("#rrule-formset").on("change keydown keyup keypress dp.change", "input, select", function () {
|
||||
rrule_preview();
|
||||
});
|
||||
rrule_preview();
|
||||
|
||||
$("#rrule-formset").on("formAdded", "div", function (event) {rrule_bind_form($(event.target)); });
|
||||
|
||||
// Timeslot editor
|
||||
$("#subevent_add_many_slots_go").on("click", function () {
|
||||
$("#time-formset [data-formset-form]").each(function () {
|
||||
var tf = $(this).find("[name$=time_from]").val()
|
||||
@@ -167,13 +175,45 @@ $(document).on("pretix:bind-forms", function () {
|
||||
$(this).addClass("hidden");
|
||||
});
|
||||
|
||||
$("#rrule-formset").on("change keydown keyup keypress dp.change", "input, select", function () {
|
||||
rrule_preview();
|
||||
});
|
||||
rrule_preview();
|
||||
// Hide config for products that are not for sale
|
||||
function quota_form_handlers(el) {
|
||||
// searchable_selection = True
|
||||
el.find('[id^="id_quotas-"]').on("select2:select select2:unselect", () => {
|
||||
update_item_visibility();
|
||||
});
|
||||
// searchable_selection = False
|
||||
el.find('input[id^="id_quotas-"][id*=itemvars_]').on("change", () => {
|
||||
update_item_visibility();
|
||||
});
|
||||
}
|
||||
function update_item_visibility() {
|
||||
const itemvars = [];
|
||||
|
||||
$("#rrule-formset").on("formAdded", "div", function (event) { rrule_bind_form($(event.target)); });
|
||||
// searchable_selection = True
|
||||
$("select[id^=id_quotas-][id$=-itemvars]").filter((idx, el) => {
|
||||
return !$(el).closest('[data-formset-form]').is('[data-formset-form-deleted]');
|
||||
}).each((_, e) => itemvars.push(...$(e).val()));
|
||||
// searchable_selection = False
|
||||
$("input[id^=id_quotas-][id*=itemvars_]:checked").filter((idx, el) => {
|
||||
return !$(el).closest('[data-formset-form]').is('[data-formset-form-deleted]');
|
||||
}).each((_, e) => itemvars.push($(e).val()));
|
||||
|
||||
$("div[data-itemvar]").each(function (idx, e) {
|
||||
const el = $(e);
|
||||
el.prop("hidden", !itemvars.includes(el.attr("data-itemvar")) && !el.find(".has-error, .alert-danger").length);
|
||||
});
|
||||
}
|
||||
|
||||
$('[data-formset-prefix="quotas"]').on("formDeleted", "div", () => {
|
||||
update_item_visibility();
|
||||
}).on("formAdded", "div", (event) => {
|
||||
quota_form_handlers($(event.target));
|
||||
update_item_visibility();
|
||||
})
|
||||
quota_form_handlers($("body"));
|
||||
update_item_visibility();
|
||||
|
||||
// Auto-set name of check-in list
|
||||
var $namef = $("input[id^=id_name]").first();
|
||||
var lastValue = $namef.val();
|
||||
$namef.change(function () {
|
||||
|
||||
@@ -91,6 +91,12 @@ td > .form-group > .checkbox {
|
||||
}
|
||||
}
|
||||
|
||||
.submit-group-sticky {
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.panel .form-group:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user