@oneuptime/common 7.0.3038 → 7.0.3040
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/ScheduledMaintenance.ts +70 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1725975175669-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1725976810107-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/IncidentService.ts +45 -0
- package/Server/Services/IncidentStateService.ts +47 -6
- package/Server/Services/ScheduledMaintenanceService.ts +307 -0
- package/Types/Database/DatabaseProperty.ts +6 -3
- package/Types/Events/Recurring.ts +86 -41
- package/Types/SerializableObjectDictionary.ts +2 -0
- package/UI/Components/Events/RecurringArrayFieldElement.tsx +104 -0
- package/UI/Components/Events/RecurringArrayViewElement.tsx +37 -0
- package/UI/Components/Events/RecurringViewElement.tsx +2 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +73 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +36 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725975175669-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725975175669-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725976810107-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1725976810107-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +34 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateService.js +25 -2
- package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +208 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
- package/build/dist/Types/Events/Recurring.js +47 -20
- package/build/dist/Types/Events/Recurring.js.map +1 -1
- package/build/dist/Types/SerializableObjectDictionary.js +2 -0
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/UI/Components/Events/RecurringArrayFieldElement.js +49 -0
- package/build/dist/UI/Components/Events/RecurringArrayFieldElement.js.map +1 -0
- package/build/dist/UI/Components/Events/RecurringArrayViewElement.js +18 -0
- package/build/dist/UI/Components/Events/RecurringArrayViewElement.js.map +1 -0
- package/build/dist/UI/Components/Events/RecurringViewElement.js +2 -1
- package/build/dist/UI/Components/Events/RecurringViewElement.js.map +1 -1
- package/package.json +2 -2
|
@@ -12,34 +12,41 @@ export default class Recurring extends DatabaseProperty {
|
|
|
12
12
|
intervalCount: new PositiveNumber(1),
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
static
|
|
15
|
+
static getNextDateInterval(startDate, rotation, getDateInThePast) {
|
|
16
16
|
const intervalType = rotation.intervalType;
|
|
17
17
|
const intervalCount = rotation.intervalCount;
|
|
18
|
+
// past or present date.
|
|
19
|
+
const multiplier = getDateInThePast ? -1 : 1;
|
|
20
|
+
let nextDate = OneUptimeDate.fromString(startDate);
|
|
21
|
+
switch (intervalType) {
|
|
22
|
+
case EventInterval.Hour:
|
|
23
|
+
nextDate = OneUptimeDate.addRemoveHours(nextDate, intervalCount.toNumber() * multiplier);
|
|
24
|
+
break;
|
|
25
|
+
case EventInterval.Day:
|
|
26
|
+
nextDate = OneUptimeDate.addRemoveDays(nextDate, intervalCount.toNumber() * multiplier);
|
|
27
|
+
break;
|
|
28
|
+
case EventInterval.Week:
|
|
29
|
+
nextDate = OneUptimeDate.addRemoveDays(nextDate, intervalCount.toNumber() * 7 * multiplier);
|
|
30
|
+
break;
|
|
31
|
+
case EventInterval.Month:
|
|
32
|
+
nextDate = OneUptimeDate.addRemoveMonths(nextDate, intervalCount.toNumber() * multiplier);
|
|
33
|
+
break;
|
|
34
|
+
case EventInterval.Year:
|
|
35
|
+
nextDate = OneUptimeDate.addRemoveYears(nextDate, intervalCount.toNumber() * multiplier);
|
|
36
|
+
break;
|
|
37
|
+
default:
|
|
38
|
+
throw new BadDataException("Invalid Interval Type: " + intervalType);
|
|
39
|
+
}
|
|
40
|
+
return nextDate;
|
|
41
|
+
}
|
|
42
|
+
static getNextDate(startDate, rotation) {
|
|
18
43
|
let nextDate = OneUptimeDate.fromString(startDate);
|
|
19
44
|
const dateNow = OneUptimeDate.getCurrentDate();
|
|
20
45
|
// If the start date is in the past, we need to find the next date. The next date is the first date that is greater than the current date.
|
|
21
46
|
// If the start date is in the future, return the start date.
|
|
22
47
|
if (nextDate.getTime() <= dateNow.getTime()) {
|
|
23
48
|
while (nextDate.getTime() <= dateNow.getTime()) {
|
|
24
|
-
|
|
25
|
-
case EventInterval.Hour:
|
|
26
|
-
nextDate = OneUptimeDate.addRemoveHours(nextDate, intervalCount.toNumber());
|
|
27
|
-
break;
|
|
28
|
-
case EventInterval.Day:
|
|
29
|
-
nextDate = OneUptimeDate.addRemoveDays(nextDate, intervalCount.toNumber());
|
|
30
|
-
break;
|
|
31
|
-
case EventInterval.Week:
|
|
32
|
-
nextDate = OneUptimeDate.addRemoveDays(nextDate, intervalCount.toNumber() * 7);
|
|
33
|
-
break;
|
|
34
|
-
case EventInterval.Month:
|
|
35
|
-
nextDate = OneUptimeDate.addRemoveMonths(nextDate, intervalCount.toNumber());
|
|
36
|
-
break;
|
|
37
|
-
case EventInterval.Year:
|
|
38
|
-
nextDate = OneUptimeDate.addRemoveYears(nextDate, intervalCount.toNumber());
|
|
39
|
-
break;
|
|
40
|
-
default:
|
|
41
|
-
throw new BadDataException("Invalid Interval Type: " + intervalType);
|
|
42
|
-
}
|
|
49
|
+
nextDate = this.getNextDateInterval(startDate, rotation);
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
52
|
return nextDate;
|
|
@@ -74,6 +81,13 @@ export default class Recurring extends DatabaseProperty {
|
|
|
74
81
|
},
|
|
75
82
|
});
|
|
76
83
|
}
|
|
84
|
+
static fromJSONArray(json) {
|
|
85
|
+
const arrayToReturn = [];
|
|
86
|
+
for (const item of json) {
|
|
87
|
+
arrayToReturn.push(this.fromJSON(item));
|
|
88
|
+
}
|
|
89
|
+
return arrayToReturn;
|
|
90
|
+
}
|
|
77
91
|
static fromJSON(json) {
|
|
78
92
|
if (json instanceof Recurring) {
|
|
79
93
|
return json;
|
|
@@ -100,7 +114,17 @@ export default class Recurring extends DatabaseProperty {
|
|
|
100
114
|
};
|
|
101
115
|
return rotation;
|
|
102
116
|
}
|
|
117
|
+
static toJSONArray(recurrings) {
|
|
118
|
+
const arrayToReturn = [];
|
|
119
|
+
for (const item of recurrings) {
|
|
120
|
+
arrayToReturn.push(item.toJSON());
|
|
121
|
+
}
|
|
122
|
+
return arrayToReturn;
|
|
123
|
+
}
|
|
103
124
|
static toDatabase(value) {
|
|
125
|
+
if (Array.isArray(value)) {
|
|
126
|
+
return this.toJSONArray(value);
|
|
127
|
+
}
|
|
104
128
|
if (value && value instanceof Recurring) {
|
|
105
129
|
return value.toJSON();
|
|
106
130
|
}
|
|
@@ -110,6 +134,9 @@ export default class Recurring extends DatabaseProperty {
|
|
|
110
134
|
return null;
|
|
111
135
|
}
|
|
112
136
|
static fromDatabase(value) {
|
|
137
|
+
if (Array.isArray(value)) {
|
|
138
|
+
return Recurring.fromJSONArray(value);
|
|
139
|
+
}
|
|
113
140
|
if (value) {
|
|
114
141
|
return Recurring.fromJSON(value);
|
|
115
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Recurring.js","sourceRoot":"","sources":["../../../../Types/Events/Recurring.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"Recurring.js","sourceRoot":"","sources":["../../../../Types/Events/Recurring.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ import Color from "./Color";
|
|
|
16
16
|
import OneUptimeDate from "./Date";
|
|
17
17
|
import Domain from "./Domain";
|
|
18
18
|
import Email from "./Email";
|
|
19
|
+
import Recurring from "./Events/Recurring";
|
|
19
20
|
import HashedString from "./HashedString";
|
|
20
21
|
import IP from "./IP/IP";
|
|
21
22
|
import { ObjectType } from "./JSON";
|
|
@@ -58,6 +59,7 @@ const SerializableObjectDictionary = {
|
|
|
58
59
|
[ObjectType.Includes]: Includes,
|
|
59
60
|
[ObjectType.NotNull]: NotNull,
|
|
60
61
|
[ObjectType.IsNull]: IsNull,
|
|
62
|
+
[ObjectType.Recurring]: Recurring,
|
|
61
63
|
};
|
|
62
64
|
export default SerializableObjectDictionary;
|
|
63
65
|
//# sourceMappingURL=SerializableObjectDictionary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializableObjectDictionary.js","sourceRoot":"","sources":["../../../Types/SerializableObjectDictionary.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SerializableObjectDictionary.js","sourceRoot":"","sources":["../../../Types/SerializableObjectDictionary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import EventInterval from "Common/Types/Events/EventInterval";
|
|
2
|
+
import Recurring from "Common/Types/Events/Recurring";
|
|
3
|
+
import PositiveNumber from "Common/Types/PositiveNumber";
|
|
4
|
+
import React, { useState } from "react";
|
|
5
|
+
import RecurringFieldElement from "./RecurringFieldElement";
|
|
6
|
+
import Button, { ButtonSize, ButtonStyleType } from "../Button/Button";
|
|
7
|
+
import IconProp from "../../../Types/Icon/IconProp";
|
|
8
|
+
const RecurringArrayFieldElement = (props) => {
|
|
9
|
+
const [recurrings, setRecurrings] = useState(props.initialValue && props.initialValue.length > 0
|
|
10
|
+
? Recurring.fromJSONArray(props.initialValue)
|
|
11
|
+
: undefined);
|
|
12
|
+
const updateRecurrings = (recurring, index) => {
|
|
13
|
+
const existingRecurrings = [...(recurrings || [])];
|
|
14
|
+
existingRecurrings[index] = recurring;
|
|
15
|
+
setRecurrings(existingRecurrings);
|
|
16
|
+
if (props.onChange) {
|
|
17
|
+
props.onChange(existingRecurrings);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return (React.createElement("div", null,
|
|
21
|
+
recurrings &&
|
|
22
|
+
recurrings.map((recurring, index) => {
|
|
23
|
+
return (React.createElement("div", { key: index, className: "flex" },
|
|
24
|
+
React.createElement("div", { className: "" },
|
|
25
|
+
React.createElement(RecurringFieldElement, { initialValue: recurring, onChange: (recurring) => {
|
|
26
|
+
updateRecurrings(recurring, index);
|
|
27
|
+
} })),
|
|
28
|
+
React.createElement("div", null,
|
|
29
|
+
React.createElement(Button, { dataTestId: `delete-${index}`, title: "Delete", buttonStyle: ButtonStyleType.ICON, icon: IconProp.Trash, onClick: () => {
|
|
30
|
+
const newData = [...(recurrings || [])];
|
|
31
|
+
newData.splice(index, 1);
|
|
32
|
+
setRecurrings(newData);
|
|
33
|
+
props.onChange && props.onChange(newData);
|
|
34
|
+
} }))));
|
|
35
|
+
}),
|
|
36
|
+
React.createElement("div", { className: "flex space-x-3 mt-3 -ml-3" },
|
|
37
|
+
React.createElement(Button, { dataTestId: `add-recurring`, title: "Add", buttonStyle: ButtonStyleType.NORMAL, buttonSize: ButtonSize.Small, icon: IconProp.Add, onClick: () => {
|
|
38
|
+
const newData = [...(recurrings || [])];
|
|
39
|
+
const recurring = new Recurring();
|
|
40
|
+
recurring.intervalCount = new PositiveNumber(1);
|
|
41
|
+
recurring.intervalType = EventInterval.Day;
|
|
42
|
+
newData.push(recurring);
|
|
43
|
+
setRecurrings(newData);
|
|
44
|
+
props.onChange && props.onChange(newData);
|
|
45
|
+
} })),
|
|
46
|
+
props.error && (React.createElement("p", { "data-testid": "error-message", className: "mt-1 text-sm text-red-400" }, props.error))));
|
|
47
|
+
};
|
|
48
|
+
export default RecurringArrayFieldElement;
|
|
49
|
+
//# sourceMappingURL=RecurringArrayFieldElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecurringArrayFieldElement.js","sourceRoot":"","sources":["../../../../../UI/Components/Events/RecurringArrayFieldElement.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Recurring from "Common/Types/Events/Recurring";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import RecurringViewElement from "./RecurringViewElement";
|
|
4
|
+
const RecurringArrayViewElement = (props) => {
|
|
5
|
+
if (!props.value) {
|
|
6
|
+
return React.createElement("p", null, "-");
|
|
7
|
+
}
|
|
8
|
+
const items = Recurring.fromJSONArray(props.value);
|
|
9
|
+
return (React.createElement("div", { className: "space-y-2" },
|
|
10
|
+
items &&
|
|
11
|
+
items.length > 0 &&
|
|
12
|
+
items.map((item, index) => {
|
|
13
|
+
return (React.createElement(RecurringViewElement, { key: index, value: item, postfix: props.postfix }));
|
|
14
|
+
}),
|
|
15
|
+
(!items || items.length === 0) && React.createElement("p", null, "-")));
|
|
16
|
+
};
|
|
17
|
+
export default RecurringArrayViewElement;
|
|
18
|
+
//# sourceMappingURL=RecurringArrayViewElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecurringArrayViewElement.js","sourceRoot":"","sources":["../../../../../UI/Components/Events/RecurringArrayViewElement.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAA0C,MAAM,OAAO,CAAC;AAC/D,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAO1D,MAAM,yBAAyB,GAAsC,CACnE,KAAqB,EACP,EAAE;IAChB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,mCAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAqB,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAErE,OAAO,CACL,6BAAK,SAAS,EAAC,WAAW;QACvB,KAAK;YACJ,KAAK,CAAC,MAAM,GAAG,CAAC;YAChB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAe,EAAE,KAAa,EAAE,EAAE;gBAC3C,OAAO,CACL,oBAAC,oBAAoB,IACnB,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,KAAK,CAAC,OAAO,GACtB,CACH,CAAC;YACJ,CAAC,CAAC;QACH,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,mCAAQ,CACvC,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -11,7 +11,8 @@ const RecurringViewElement = (props) => {
|
|
|
11
11
|
_a.toString(),
|
|
12
12
|
" ", (_b = EventInterval[value.intervalType]) === null || _b === void 0 ? void 0 :
|
|
13
13
|
_b.toString(),
|
|
14
|
-
value.intervalCount && value.intervalCount.toNumber() > 1 ? "s" : ""
|
|
14
|
+
value.intervalCount && value.intervalCount.toNumber() > 1 ? "s" : "",
|
|
15
|
+
props.postfix || ""));
|
|
15
16
|
};
|
|
16
17
|
export default RecurringViewElement;
|
|
17
18
|
//# sourceMappingURL=RecurringViewElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecurringViewElement.js","sourceRoot":"","sources":["../../../../../UI/Components/Events/RecurringViewElement.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RecurringViewElement.js","sourceRoot":"","sources":["../../../../../UI/Components/Events/RecurringViewElement.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,mCAAmC,CAAC;AAC9D,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,MAAM,oBAAoB,GAAsC,CAC9D,KAAqB,EACP,EAAE;;IAChB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,mCAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAc,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzD,OAAO,CACL,+BACG,MAAA,KAAK,CAAC,aAAa;WAAE,QAAQ,EAAE;QAAE,GAAG,EACpC,MAAA,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;WAAE,QAAQ,EAAE;QAC7C,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpE,KAAK,CAAC,OAAO,IAAI,EAAE,CAClB,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneuptime/common",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.3040",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"airtable": "^0.12.2",
|
|
78
78
|
"axios": "^1.7.2",
|
|
79
79
|
"bullmq": "^5.3.3",
|
|
80
|
-
"Common": "npm:@oneuptime/common@7.0.
|
|
80
|
+
"Common": "npm:@oneuptime/common@7.0.3040",
|
|
81
81
|
"cookie-parser": "^1.4.6",
|
|
82
82
|
"cors": "^2.8.5",
|
|
83
83
|
"cron-parser": "^4.8.1",
|