fix(maintenance): Control the date before processing

This commit is contained in:
Ionys 2025-06-11 11:58:09 +02:00
parent c46772dafc
commit a462945a45
2 changed files with 7 additions and 5 deletions

View file

@ -158,12 +158,14 @@ class Maintenance extends BeanModel {
bean.active = obj.active;
if (obj.dateRange[0]) {
new Date(obj.dateRange[0]); // Ensure it's a valid date
bean.start_date = obj.dateRange[0];
} else {
bean.start_date = null;
}
if (obj.dateRange[1]) {
new Date(obj.dateRange[1]); // Ensure it's a valid date
bean.end_date = obj.dateRange[1];
} else {
bean.end_date = null;
@ -192,7 +194,7 @@ class Maintenance extends BeanModel {
* @returns {void}
*/
static validateCron(cron) {
let job = new Cron(cron, () => {});
let job = new Cron(cron, () => { });
job.stop();
}
@ -254,7 +256,7 @@ class Maintenance extends BeanModel {
if (this.strategy === "recurring-interval") {
// For recurring-interval, Croner needs to have interval and startAt
const startDate = dayjs(this.startDate);
const [ hour, minute ] = this.startTime.split(":");
const [hour, minute] = this.startTime.split(":");
const startDateTime = startDate.hour(hour).minute(minute);
this.beanMeta.job = new Cron(this.cron, {
timezone: await this.getTimezone(),
@ -445,7 +447,7 @@ class Maintenance extends BeanModel {
}
// Remove duplicate
dayList = [ ...new Set(dayList) ];
dayList = [...new Set(dayList)];
this.cron = minute + " " + hour + " " + dayList.join(",") + " * *";
this.duration = this.calcDuration();

View file

@ -223,12 +223,12 @@
<div class="row">
<div class="col">
<div class="mb-2">{{ $t("startDateTime") }}</div>
<input v-model="maintenance.dateRange[0]" type="datetime-local" class="form-control" :required="maintenance.strategy === 'single'">
<input v-model="maintenance.dateRange[0]" type="datetime-local" max="9999-12-31T23:59" class="form-control" :required="maintenance.strategy === 'single'">
</div>
<div class="col">
<div class="mb-2">{{ $t("endDateTime") }}</div>
<input v-model="maintenance.dateRange[1]" type="datetime-local" class="form-control" :required="maintenance.strategy === 'single'">
<input v-model="maintenance.dateRange[1]" type="datetime-local" max="9999-12-31T23:59" class="form-control" :required="maintenance.strategy === 'single'">
</div>
</div>
</div>