Fix preview of subevent repetition rule with UNTIL (#1857)

This commit is contained in:
Richard Schreiber
2020-11-26 17:01:29 +01:00
committed by GitHub
parent 97561819e2
commit 827afd6d39
2 changed files with 3662 additions and 2143 deletions

View File

@@ -27,7 +27,7 @@ $(function () {
} }
function rrule_preview() { function rrule_preview() {
var ruleset = new RRuleSet(); var ruleset = new rrule.RRuleSet();
$(".rrule-form").each(function () { $(".rrule-form").each(function () {
if ($(this).find("input[name$=DELETE]").prop("checked")) { if ($(this).find("input[name$=DELETE]").prop("checked")) {
@@ -47,7 +47,7 @@ $(function () {
rule_args.interval = parseInt($form.find("input[name*=interval]").val()) || 1; rule_args.interval = parseInt($form.find("input[name*=interval]").val()) || 1;
if (freq === 'yearly') { if (freq === 'yearly') {
rule_args.freq = RRule.YEARLY; rule_args.freq = rrule.RRule.YEARLY;
var same = $form.find("input[name*=yearly_same]:checked").val(); var same = $form.find("input[name*=yearly_same]:checked").val();
if (same === "off") { if (same === "off") {
@@ -56,7 +56,7 @@ $(function () {
rule_args.bymonth = parseInt($form.find("select[name*=yearly_bymonth]").val()); rule_args.bymonth = parseInt($form.find("select[name*=yearly_bymonth]").val());
} }
} else if (freq === 'monthly') { } else if (freq === 'monthly') {
rule_args.freq = RRule.MONTHLY; rule_args.freq = rrule.RRule.MONTHLY;
var same = $form.find("input[name*=monthly_same]:checked").val(); var same = $form.find("input[name*=monthly_same]:checked").val();
if (same === "off") { if (same === "off") {
@@ -64,7 +64,7 @@ $(function () {
rule_args.byweekday = parse_weekday($form.find("select[name*=monthly_byweekday]").val()); rule_args.byweekday = parse_weekday($form.find("select[name*=monthly_byweekday]").val());
} }
} else if (freq === 'weekly') { } else if (freq === 'weekly') {
rule_args.freq = RRule.WEEKLY; rule_args.freq = rrule.RRule.WEEKLY;
var days = []; var days = [];
$form.find("input[name*=weekly_byweekday]:checked").each(function () { $form.find("input[name*=weekly_byweekday]:checked").each(function () {
@@ -74,7 +74,7 @@ $(function () {
rule_args.byweekday = days; rule_args.byweekday = days;
} }
} else if (freq === 'daily') { } else if (freq === 'daily') {
rule_args.freq = RRule.DAILY; rule_args.freq = rrule.RRule.DAILY;
} }
var end = $form.find("input[name*=end]:checked").val(); var end = $form.find("input[name*=end]:checked").val();
@@ -83,15 +83,18 @@ $(function () {
} else { } else {
var date = $form.find("input[name*=until]").data("DateTimePicker").date(); var date = $form.find("input[name*=until]").data("DateTimePicker").date();
if (date !== null) { if (date !== null) {
rule_args.until = date.toDate(); // rrule.until is non-inclusive, whereas in pretix-backend "until" is inclusive => add 1 day
// date is a Moment-object. Moment.add() mutates, but is save to do here
date.add(1, 'days');
rule_args.until = date;
} }
} }
if ($form.find("input[name*=exclude]").prop("checked")) { if ($form.find("input[name*=exclude]").prop("checked")) {
ruleset.exrule(new RRule(rule_args)); ruleset.exrule(new rrule.RRule(rule_args));
$form.closest(".panel").addClass("panel-danger").removeClass("panel-default"); $form.closest(".panel").addClass("panel-danger").removeClass("panel-default");
} else { } else {
ruleset.rrule(new RRule(rule_args)); ruleset.rrule(new rrule.RRule(rule_args));
$form.closest(".panel").addClass("panel-default").removeClass("panel-danger"); $form.closest(".panel").addClass("panel-default").removeClass("panel-danger");
} }
}); });

File diff suppressed because it is too large Load Diff