@pipedream/upkeep 0.0.1
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/LICENSE +7 -0
- package/actions/common/common-purchase-order.mjs +93 -0
- package/actions/create-purchase-order/create-purchase-order.mjs +28 -0
- package/actions/create-request/create-request.mjs +80 -0
- package/actions/create-work-order/create-work-order.mjs +133 -0
- package/actions/find-asset/find-asset.mjs +92 -0
- package/actions/find-location/find-location.mjs +54 -0
- package/actions/find-part/find-part.mjs +60 -0
- package/actions/find-user/find-user.mjs +43 -0
- package/actions/find-vendor/find-vendor.mjs +36 -0
- package/actions/update-purchase-order/update-purchase-order.mjs +36 -0
- package/common/utils.mjs +84 -0
- package/package.json +19 -0
- package/sources/common/common.mjs +83 -0
- package/sources/common/eventTypes.mjs +82 -0
- package/sources/custom-events/custom-events.mjs +36 -0
- package/sources/new-purchase-order/new-purchase-order.mjs +33 -0
- package/sources/new-request/new-request.mjs +33 -0
- package/sources/new-work-order/new-work-order.mjs +33 -0
- package/sources/purchase-order-status-changed/purchase-order-status-change.mjs +36 -0
- package/sources/request-approved/request-approved.mjs +33 -0
- package/sources/work-order-status-change/work-order-status-change.mjs +33 -0
- package/upkeep.app.mjs +340 -0
package/common/utils.mjs
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const pageSize = 25;
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
parseOne(obj) {
|
|
5
|
+
let parsed;
|
|
6
|
+
try {
|
|
7
|
+
parsed = JSON.parse(obj);
|
|
8
|
+
} catch (e) {
|
|
9
|
+
parsed = obj;
|
|
10
|
+
}
|
|
11
|
+
return parsed;
|
|
12
|
+
},
|
|
13
|
+
parseObject(obj) {
|
|
14
|
+
if (typeof obj === "string")
|
|
15
|
+
obj = JSON.parse(obj);
|
|
16
|
+
let parsed = {};
|
|
17
|
+
for (let key in obj) {
|
|
18
|
+
if (typeof obj[key] != "object" && typeof obj[key] != "number")
|
|
19
|
+
parsed[key] = this.parseOne(obj[key].replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, "\"$2\": ")); //replacing single quotes with doubles
|
|
20
|
+
else
|
|
21
|
+
parsed[key] = obj[key];
|
|
22
|
+
}
|
|
23
|
+
return parsed;
|
|
24
|
+
},
|
|
25
|
+
parseArray(arr) {
|
|
26
|
+
const result = [];
|
|
27
|
+
if (!arr)
|
|
28
|
+
return arr;
|
|
29
|
+
for (let obj of arr) {
|
|
30
|
+
result.push(this.parseOne(obj));
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
},
|
|
34
|
+
async asyncPropHandler({
|
|
35
|
+
resourceFn, page, labelVal,
|
|
36
|
+
} = {}) {
|
|
37
|
+
let resp;
|
|
38
|
+
try {
|
|
39
|
+
resp = await resourceFn({
|
|
40
|
+
params: {
|
|
41
|
+
offset: page * pageSize,
|
|
42
|
+
limit: (page + 1) * pageSize,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
} catch (err) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
return resp.results.map((item) => ({
|
|
49
|
+
label: typeof labelVal.label == "string" ?
|
|
50
|
+
item[labelVal.label] :
|
|
51
|
+
labelVal.label(item),
|
|
52
|
+
value: item[labelVal.value],
|
|
53
|
+
}));
|
|
54
|
+
},
|
|
55
|
+
async *getResourcesStream({
|
|
56
|
+
resourceFn,
|
|
57
|
+
resourceFnArgs,
|
|
58
|
+
resourceLimit,
|
|
59
|
+
}) {
|
|
60
|
+
let page = 0, resourceCount = 0;
|
|
61
|
+
while (true) {
|
|
62
|
+
try {
|
|
63
|
+
const nextResources = await resourceFn({
|
|
64
|
+
...resourceFnArgs,
|
|
65
|
+
params: {
|
|
66
|
+
...resourceFnArgs?.params,
|
|
67
|
+
offset: page * pageSize,
|
|
68
|
+
limit: ++page * pageSize,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
if (!nextResources?.results?.length)
|
|
72
|
+
return;
|
|
73
|
+
for (const resource of nextResources.results) {
|
|
74
|
+
if (resourceLimit && resourceLimit < ++resourceCount)
|
|
75
|
+
return;
|
|
76
|
+
else
|
|
77
|
+
yield resource;
|
|
78
|
+
}
|
|
79
|
+
} catch (err) { //sometimes the API returns an empty list, sometimes it returns a 404
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pipedream/upkeep",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Pipedream Upkeep Components",
|
|
5
|
+
"main": "upkeep.app.mjs",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"pipedream",
|
|
8
|
+
"upkeep"
|
|
9
|
+
],
|
|
10
|
+
"homepage": "https://pipedream.com/apps/upkeep",
|
|
11
|
+
"author": "Pipedream <support@pipedream.com> (https://pipedream.com/)",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@pipedream/platform": "^1.1.1"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import app from "../../upkeep.app.mjs";
|
|
2
|
+
import utils from "../../common/utils.mjs";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
props: {
|
|
6
|
+
app,
|
|
7
|
+
http: {
|
|
8
|
+
type: "$.interface.http",
|
|
9
|
+
customResponse: true,
|
|
10
|
+
},
|
|
11
|
+
db: "$.service.db",
|
|
12
|
+
},
|
|
13
|
+
methods: {
|
|
14
|
+
_getHookID() {
|
|
15
|
+
return this.db.get("hookId");
|
|
16
|
+
},
|
|
17
|
+
_setHookID(hookID) {
|
|
18
|
+
this.db.set("hookId", hookID);
|
|
19
|
+
},
|
|
20
|
+
getEvents() {
|
|
21
|
+
throw new Error("getEvents is not implemented!");
|
|
22
|
+
},
|
|
23
|
+
getTitle() {
|
|
24
|
+
throw new Error("getTitle is not implemented!");
|
|
25
|
+
},
|
|
26
|
+
getSummary() {
|
|
27
|
+
throw new Error("getSummary is not implemented!");
|
|
28
|
+
},
|
|
29
|
+
getTime() {
|
|
30
|
+
throw new Error("getTime is not implemented!");
|
|
31
|
+
},
|
|
32
|
+
getHistoricalEventsFn() {
|
|
33
|
+
return false;
|
|
34
|
+
},
|
|
35
|
+
processMeta(item) {
|
|
36
|
+
return {
|
|
37
|
+
summary: this.getSummary(item),
|
|
38
|
+
id: item?.id,
|
|
39
|
+
ts: this.getTime(item),
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
hooks: {
|
|
44
|
+
async activate() {
|
|
45
|
+
const { webhookId } = await this.app.createWebhook({
|
|
46
|
+
title: this.getTitle(),
|
|
47
|
+
endpoint: this.http.endpoint,
|
|
48
|
+
events: this.getEvents(),
|
|
49
|
+
});
|
|
50
|
+
this._setHookID(webhookId);
|
|
51
|
+
console.log(`Created webhook. (Hook ID: ${webhookId}, endpoint: ${this.http.endpoint})`);
|
|
52
|
+
},
|
|
53
|
+
async deploy() {
|
|
54
|
+
const resourceFn = this.getHistoricalEventsFn();
|
|
55
|
+
if (!resourceFn)
|
|
56
|
+
return;
|
|
57
|
+
const resourcesStream = utils.getResourcesStream({
|
|
58
|
+
resourceFn,
|
|
59
|
+
resourceLimit: 10,
|
|
60
|
+
});
|
|
61
|
+
for await (const item of resourcesStream) {
|
|
62
|
+
this.$emit(
|
|
63
|
+
item,
|
|
64
|
+
this.processMeta(item),
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
async deactivate() {
|
|
69
|
+
await this.app.deleteWebhook({
|
|
70
|
+
webhookId: this._getHookID(),
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
async run(event) {
|
|
75
|
+
this.http.respond({
|
|
76
|
+
status: 200,
|
|
77
|
+
});
|
|
78
|
+
this.$emit(
|
|
79
|
+
event,
|
|
80
|
+
this.processMeta(event.body),
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export default [
|
|
2
|
+
{
|
|
3
|
+
label: "Work Order Created",
|
|
4
|
+
value: "WORK_ORDER_CREATED",
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
label: "Work Order Updated",
|
|
8
|
+
value: "WORK_ORDER_UPDATED",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
label: "Work Order Status Updated",
|
|
12
|
+
value: "WORK_ORDER_STATUS_UPDATED",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
label: "Work Order Deleted",
|
|
16
|
+
value: "WORK_ORDER_DELETED",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: "PM Work Order Created",
|
|
20
|
+
value: "PM_WORK_ORDER_CREATED",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: "PM Work Order Updated",
|
|
24
|
+
value: "PM_WORK_ORDER_UPDATED",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: "PM Work Order Deleted",
|
|
28
|
+
value: "PM_WORK_ORDER_DELETED",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: "Work Order Schedule Created",
|
|
32
|
+
value: "WORK_ORDER_SCHEDULE_CREATED",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: "Work Order Schedule Updated",
|
|
36
|
+
value: "WORK_ORDER_SCHEDULE_UPDATED",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: "Work Order Schedule Status Updated",
|
|
40
|
+
value: "WORK_ORDER_SCHEDULE_STATUS_UPDATED",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
label: "Work Order Schedule Deleted",
|
|
44
|
+
value: "WORK_ORDER_SCHEDULE_DELETED",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: "Purchase Order Updated",
|
|
48
|
+
value: "PURCHASE_ORDER_UPDATED",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: "Purchase Order Created",
|
|
52
|
+
value: "PURCHASE_ORDER_CREATED",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
label: "Purchase Order Deleted",
|
|
56
|
+
value: "PURCHASE_ORDER_DELETED",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
label: "Purchase Order Approved",
|
|
60
|
+
value: "PURCHASE_ORDER_APPROVED",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: "Purchase Order Declined",
|
|
64
|
+
value: "PURCHASE_ORDER_DECLINED",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
label: "Request Created",
|
|
68
|
+
value: "REQUEST_CREATED",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: "Request Updated",
|
|
72
|
+
value: "REQUEST_UPDATED",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
label: "Request Approved",
|
|
76
|
+
value: "REQUEST_APPROVED",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
label: "Request Rejected",
|
|
80
|
+
value: "REQUEST_REJECTED",
|
|
81
|
+
},
|
|
82
|
+
];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
import eventTypes from "../common/eventTypes.mjs";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
key: "upkeep-new-custom-events",
|
|
6
|
+
name: "New Custom Event",
|
|
7
|
+
description: "Emit new event when a configured event occurs.",
|
|
8
|
+
version: "0.0.1",
|
|
9
|
+
type: "source",
|
|
10
|
+
dedupe: "unique",
|
|
11
|
+
...common,
|
|
12
|
+
props: {
|
|
13
|
+
...common.props,
|
|
14
|
+
events: {
|
|
15
|
+
type: "string[]",
|
|
16
|
+
label: "Event types",
|
|
17
|
+
description: "Select from available UpKeep event types.",
|
|
18
|
+
options: eventTypes,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
methods: {
|
|
22
|
+
...common.methods,
|
|
23
|
+
getTitle() {
|
|
24
|
+
return "Pipedream - New Events";
|
|
25
|
+
},
|
|
26
|
+
getEvents() {
|
|
27
|
+
return this.events;
|
|
28
|
+
},
|
|
29
|
+
getSummary(item) {
|
|
30
|
+
return `New custom event (ITEM ID:${item?.id})`;
|
|
31
|
+
},
|
|
32
|
+
getTime() {
|
|
33
|
+
return new Date().getTime();
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "upkeep-new-purchase-order",
|
|
5
|
+
name: "New Purchase Order Event",
|
|
6
|
+
description: "Emit new event when a purchase order is created.",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "source",
|
|
9
|
+
dedupe: "unique",
|
|
10
|
+
...common,
|
|
11
|
+
methods: {
|
|
12
|
+
...common.methods,
|
|
13
|
+
getTitle() {
|
|
14
|
+
return "Pipedream - New Purchase Order";
|
|
15
|
+
},
|
|
16
|
+
getEvents() {
|
|
17
|
+
return [
|
|
18
|
+
"PURCHASE_ORDER_CREATED",
|
|
19
|
+
];
|
|
20
|
+
},
|
|
21
|
+
getSummary(item) {
|
|
22
|
+
return `New purchase order(ID:${item?.id}, TITLE:${item?.title})`;
|
|
23
|
+
},
|
|
24
|
+
getTime(item) {
|
|
25
|
+
return item?.createdAt ?
|
|
26
|
+
new Date(item?.createdAt).getTime() :
|
|
27
|
+
new Date().getTime();
|
|
28
|
+
},
|
|
29
|
+
getHistoricalEventsFn() {
|
|
30
|
+
return this.app.getPurchaseOrders;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "upkeep-new-request",
|
|
5
|
+
name: "New Request Event",
|
|
6
|
+
description: "Emit new event when a request is created.",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "source",
|
|
9
|
+
dedupe: "unique",
|
|
10
|
+
...common,
|
|
11
|
+
methods: {
|
|
12
|
+
...common.methods,
|
|
13
|
+
getTitle() {
|
|
14
|
+
return "Pipedream - New Request";
|
|
15
|
+
},
|
|
16
|
+
getEvents() {
|
|
17
|
+
return [
|
|
18
|
+
"REQUEST_CREATED",
|
|
19
|
+
];
|
|
20
|
+
},
|
|
21
|
+
getSummary(item) {
|
|
22
|
+
return `New request (ID:${item?.id}, TITLE:${item?.title})`;
|
|
23
|
+
},
|
|
24
|
+
getTime(item) {
|
|
25
|
+
return item?.createdAt ?
|
|
26
|
+
new Date(item?.createdAt).getTime() :
|
|
27
|
+
new Date().getTime();
|
|
28
|
+
},
|
|
29
|
+
getHistoricalEventsFn() {
|
|
30
|
+
return this.app.getRequests;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "upkeep-new-work-order",
|
|
5
|
+
name: "New Work Order Event",
|
|
6
|
+
description: "Emit new event when a work order is created.",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "source",
|
|
9
|
+
dedupe: "unique",
|
|
10
|
+
...common,
|
|
11
|
+
methods: {
|
|
12
|
+
...common.methods,
|
|
13
|
+
getTitle() {
|
|
14
|
+
return "Pipedream - New Work Order";
|
|
15
|
+
},
|
|
16
|
+
getEvents() {
|
|
17
|
+
return [
|
|
18
|
+
"WORK_ORDER_CREATED",
|
|
19
|
+
];
|
|
20
|
+
},
|
|
21
|
+
getSummary(item) {
|
|
22
|
+
return `New work order(ID:${item?.id}, TITLE:${item?.title})`;
|
|
23
|
+
},
|
|
24
|
+
getTime(item) {
|
|
25
|
+
return item?.createdAt ?
|
|
26
|
+
new Date(item?.createdAt).getTime() :
|
|
27
|
+
new Date().getTime();
|
|
28
|
+
},
|
|
29
|
+
getHistoricalEventsFn() {
|
|
30
|
+
return this.app.getWorkOrders;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "upkeep-purchase-order-status-change",
|
|
5
|
+
name: "New Purchase Order Status Change Event",
|
|
6
|
+
description: "Emit new event when a purchase order status is changed.",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "source",
|
|
9
|
+
dedupe: "unique",
|
|
10
|
+
...common,
|
|
11
|
+
methods: {
|
|
12
|
+
...common.methods,
|
|
13
|
+
getTitle() {
|
|
14
|
+
return "Pipedream - Purchase Order Status Change";
|
|
15
|
+
},
|
|
16
|
+
getEvents() {
|
|
17
|
+
return [
|
|
18
|
+
"PURCHASE_ORDER_APPROVED",
|
|
19
|
+
"PURCHASE_ORDER_DECLINED",
|
|
20
|
+
];
|
|
21
|
+
},
|
|
22
|
+
getSummary(item) {
|
|
23
|
+
// eslint-disable-next-line multiline-ternary
|
|
24
|
+
return `Purchase order(ID:${item?.id}, TITLE:${item?.title}) was ${item?.approvedAt ? "approved" : "declined"} at ${item?.approvedAt ?? item?.declinedAt}`;
|
|
25
|
+
},
|
|
26
|
+
getTime(item) {
|
|
27
|
+
const date = item?.approvedAt || item?.declinedAt;
|
|
28
|
+
return date ?
|
|
29
|
+
new Date(date).getTime() :
|
|
30
|
+
new Date().getTime();
|
|
31
|
+
},
|
|
32
|
+
getHistoricalEventsFn() {
|
|
33
|
+
return this.app.getPurchaseOrders;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "upkeep-request-approved",
|
|
5
|
+
name: "New Request Approved Event",
|
|
6
|
+
description: "Emit new event when a request is approved.",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "source",
|
|
9
|
+
dedupe: "unique",
|
|
10
|
+
...common,
|
|
11
|
+
methods: {
|
|
12
|
+
...common.methods,
|
|
13
|
+
getTitle() {
|
|
14
|
+
return "Pipedream - Request Approved";
|
|
15
|
+
},
|
|
16
|
+
getEvents() {
|
|
17
|
+
return [
|
|
18
|
+
"REQUEST_APPROVED",
|
|
19
|
+
];
|
|
20
|
+
},
|
|
21
|
+
getSummary(item) {
|
|
22
|
+
return `Request(ID:${item?.id}, TITLE:${item?.title}) has been approved at ${item?.updatedAt}`;
|
|
23
|
+
},
|
|
24
|
+
getTime(item) {
|
|
25
|
+
return item?.updatedAt ?
|
|
26
|
+
new Date(item?.updatedAt).getTime() :
|
|
27
|
+
new Date().getTime();
|
|
28
|
+
},
|
|
29
|
+
getHistoricalEventsFn() {
|
|
30
|
+
return this.app.getRequests;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import common from "../common/common.mjs";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
key: "upkeep-work-order-status-change",
|
|
5
|
+
name: "New Work Order Status Change Event",
|
|
6
|
+
description: "Emit new event when a work order status is changed.",
|
|
7
|
+
version: "0.0.1",
|
|
8
|
+
type: "source",
|
|
9
|
+
dedupe: "unique",
|
|
10
|
+
...common,
|
|
11
|
+
methods: {
|
|
12
|
+
...common.methods,
|
|
13
|
+
getTitle() {
|
|
14
|
+
return "Pipedream - Work Order Status Change";
|
|
15
|
+
},
|
|
16
|
+
getEvents() {
|
|
17
|
+
return [
|
|
18
|
+
"WORK_ORDER_STATUS_UPDATED",
|
|
19
|
+
];
|
|
20
|
+
},
|
|
21
|
+
getSummary(item) {
|
|
22
|
+
return `Work order(ID:${item?.id}, TITLE:${item?.title}) status has been changed to ${item?.status}`;
|
|
23
|
+
},
|
|
24
|
+
getTime(item) {
|
|
25
|
+
return item?.updatedAt ?
|
|
26
|
+
new Date(item?.updatedAt).getTime() :
|
|
27
|
+
new Date().getTime();
|
|
28
|
+
},
|
|
29
|
+
getHistoricalEventsFn() {
|
|
30
|
+
return this.app.getWorkOrders;
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|