mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-07-24 07:21:09 -04:00
[WIP] Add/Edit Maintenance with new UI and recurring
This commit is contained in:
parent
9d99c39f30
commit
f11dfc8f43
5 changed files with 179 additions and 12 deletions
|
@ -4,6 +4,8 @@ let timezone = require("dayjs/plugin/timezone");
|
|||
dayjs.extend(utc);
|
||||
dayjs.extend(timezone);
|
||||
const { BeanModel } = require("redbean-node/dist/bean-model");
|
||||
const { parseVueDatePickerTimeFormat, parseTimeFormatFromVueDatePicker } = require("../../src/util");
|
||||
const { isArray } = require("chart.js/helpers");
|
||||
|
||||
class Maintenance extends BeanModel {
|
||||
|
||||
|
@ -13,15 +15,52 @@ class Maintenance extends BeanModel {
|
|||
* @returns {Object}
|
||||
*/
|
||||
async toPublicJSON() {
|
||||
return {
|
||||
|
||||
let dateTimeRange = [];
|
||||
if (this.start_datetime) {
|
||||
dateTimeRange.push( this.start_datetime);
|
||||
if (this.end_datetime) {
|
||||
dateTimeRange.push( this.end_datetime);
|
||||
}
|
||||
}
|
||||
|
||||
let dateRange = [];
|
||||
if (this.start_date) {
|
||||
dateRange.push( this.start_date);
|
||||
if (this.end_date) {
|
||||
dateRange.push( this.end_date);
|
||||
}
|
||||
}
|
||||
|
||||
let timeRange = [];
|
||||
let startTime = parseVueDatePickerTimeFormat(this.start_time);
|
||||
timeRange.push(startTime);
|
||||
let endTime = parseVueDatePickerTimeFormat(this.end_time);
|
||||
timeRange.push(endTime);
|
||||
|
||||
let obj = {
|
||||
id: this.id,
|
||||
title: this.title,
|
||||
description: this.description,
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
strategy: this.strategy,
|
||||
intervalDay: this.interval_day,
|
||||
active: !!this.active,
|
||||
dateTimeRange: dateTimeRange,
|
||||
dateRange: dateRange,
|
||||
timeRange: timeRange,
|
||||
weekdays: (this.weekdays) ? JSON.parse(this.weekdays) : [],
|
||||
daysOfMonth: (this.days_of_month) ? JSON.parse(this.days_of_month) : [],
|
||||
};
|
||||
|
||||
if (!isArray(obj.weekdays)) {
|
||||
obj.weekdays = [];
|
||||
}
|
||||
|
||||
if (!isArray(obj.daysOfMonth)) {
|
||||
obj.daysOfMonth = [];
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -31,6 +70,42 @@ class Maintenance extends BeanModel {
|
|||
async toJSON() {
|
||||
return this.toPublicJSON();
|
||||
}
|
||||
|
||||
static jsonToBean(bean, obj) {
|
||||
if (obj.id) {
|
||||
bean.id = obj.id;
|
||||
}
|
||||
|
||||
bean.title = obj.title;
|
||||
bean.description = obj.description;
|
||||
bean.strategy = obj.strategy;
|
||||
bean.interval_day = obj.intervalDay;
|
||||
bean.active = obj.active;
|
||||
|
||||
if (obj.dateRange[0]) {
|
||||
bean.start_date = obj.dateRange[0];
|
||||
|
||||
if (obj.dateRange[1]) {
|
||||
bean.end_date = obj.dateRange[1];
|
||||
}
|
||||
}
|
||||
|
||||
if (obj.dateTimeRange[0]) {
|
||||
bean.start_datetime = obj.dateTimeRange[0];
|
||||
|
||||
if (obj.dateTimeRange[1]) {
|
||||
bean.end_datetime = obj.dateTimeRange[1];
|
||||
}
|
||||
}
|
||||
|
||||
bean.start_time = parseTimeFormatFromVueDatePicker(obj.timeRange[0]);
|
||||
bean.end_time = parseTimeFormatFromVueDatePicker(obj.timeRange[1]);
|
||||
|
||||
bean.weekdays = JSON.stringify(obj.weekdays);
|
||||
bean.days_of_month = JSON.stringify(obj.daysOfMonth);
|
||||
|
||||
return bean;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Maintenance;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue