@openinc/parse-server-opendash 2.4.100 → 2.4.102
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/dist/app_types/OpenWareTicketObject.d.ts +6 -6
- package/dist/featuremap.json +2 -0
- package/dist/functions/openinc-openservice-save-ticket-data.d.ts +2 -1
- package/dist/functions/openinc-openservice-save-ticket-data.js +145 -52
- package/dist/functions/openinc-openservice-ticket-data.d.ts +1 -1
- package/dist/functions/openinc-openservice-ticket-data.js +10 -1
- package/dist/helper/TicketData.d.ts +2 -1
- package/dist/helper/TranslationKeys.d.ts +8 -0
- package/dist/helper/TranslationKeys.js +8 -0
- package/dist/hooks/Maintenance_Message.js +19 -0
- package/dist/hooks/Maintenance_Project.d.ts +1 -0
- package/dist/hooks/Maintenance_Project.js +17 -0
- package/dist/hooks/Maintenance_Ticket_Project.d.ts +1 -0
- package/dist/hooks/Maintenance_Ticket_Project.js +78 -0
- package/dist/index.js +9 -8
- package/dist/types/Maintenance_Project.d.ts +47 -0
- package/dist/types/Maintenance_Project.js +74 -0
- package/dist/types/Maintenance_Ticket.d.ts +4 -0
- package/dist/types/Maintenance_Ticket.js +6 -0
- package/dist/types/Maintenance_Ticket_Project.d.ts +26 -0
- package/dist/types/Maintenance_Ticket_Project.js +35 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +5 -1
- package/package.json +1 -1
- package/schema/Maintenance_Project.json +85 -0
- package/schema/Maintenance_Ticket.json +5 -0
- package/schema/Maintenance_Ticket_Project.json +50 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Maintenance_Downtime, Maintenance_Frequency, Maintenance_Priority, Maintenance_Restriction, Maintenance_Ticket, Maintenance_Ticket_Issuecategory, Maintenance_Ticket_Kanban_State, Maintenance_Ticket_Source } from "../types";
|
|
2
2
|
export type OpenWareTicketObject = {
|
|
3
3
|
ticket: Maintenance_Ticket;
|
|
4
|
-
priority: Maintenance_Priority |
|
|
5
|
-
downtime: Maintenance_Downtime |
|
|
6
|
-
frequency: Maintenance_Frequency |
|
|
7
|
-
restriction: Maintenance_Restriction |
|
|
8
|
-
issuecategory: Maintenance_Ticket_Issuecategory |
|
|
9
|
-
state: Maintenance_Ticket_Kanban_State |
|
|
4
|
+
priority: Maintenance_Priority | Number;
|
|
5
|
+
downtime: Maintenance_Downtime | Number;
|
|
6
|
+
frequency: Maintenance_Frequency | Number;
|
|
7
|
+
restriction: Maintenance_Restriction | Number;
|
|
8
|
+
issuecategory: Maintenance_Ticket_Issuecategory | String;
|
|
9
|
+
state: Maintenance_Ticket_Kanban_State | String;
|
|
10
10
|
source: Maintenance_Ticket_Source;
|
|
11
11
|
};
|
package/dist/featuremap.json
CHANGED
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"OD3_Maintenance_Message_Body": "MAINTENANCE",
|
|
54
54
|
"OD3_Maintenance_Order": "MAINTENANCE",
|
|
55
55
|
"OD3_Maintenance_Priority": "MAINTENANCE",
|
|
56
|
+
"OD3_Maintenance_Project": "MAINTENANCE",
|
|
56
57
|
"OD3_Maintenance_Restriction": "MAINTENANCE",
|
|
57
58
|
"OD3_Maintenance_Schedule_Execution": "MAINTENANCE",
|
|
58
59
|
"OD3_Maintenance_Schedule_Execution_Step": "MAINTENANCE",
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
"OD3_Maintenance_Ticket_Kanban_State": "MAINTENANCE",
|
|
67
68
|
"OD3_Maintenance_Ticket_Kanban_State_Current": "MAINTENANCE",
|
|
68
69
|
"OD3_Maintenance_Ticket_Material": "MAINTENANCE",
|
|
70
|
+
"OD3_Maintenance_Ticket_Project": "MAINTENANCE",
|
|
69
71
|
"OD3_Maintenance_Ticket_Source": "MAINTENANCE",
|
|
70
72
|
"OD3_Maintenance_Ticket_Title": "MAINTENANCE",
|
|
71
73
|
"OD3_MES_Article": "MONITORING",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _User, Maintenance_Ticket } from "../types";
|
|
2
1
|
import { Material } from "../hooks/Maintenance_Ticket_Material";
|
|
2
|
+
import { _User, Maintenance_Ticket } from "../types";
|
|
3
3
|
export type MessageData = {
|
|
4
4
|
type?: "userinput" | "system";
|
|
5
5
|
translation?: {
|
|
@@ -38,6 +38,7 @@ type Values = {
|
|
|
38
38
|
state?: string;
|
|
39
39
|
dailySchedule?: string;
|
|
40
40
|
material?: Material[];
|
|
41
|
+
project?: string;
|
|
41
42
|
};
|
|
42
43
|
export declare function getUsername(user: _User | undefined): string;
|
|
43
44
|
export declare function init(name: string): Promise<void>;
|
|
@@ -55,12 +55,12 @@ async function saveTicketData(data, user) {
|
|
|
55
55
|
const ticket = await getTicketObject(data, user, fetchOptions);
|
|
56
56
|
const owticketobj = {
|
|
57
57
|
ticket: ticket,
|
|
58
|
-
priority:
|
|
59
|
-
downtime:
|
|
60
|
-
restriction:
|
|
61
|
-
frequency:
|
|
62
|
-
issuecategory:
|
|
63
|
-
state:
|
|
58
|
+
priority: 0,
|
|
59
|
+
downtime: 0,
|
|
60
|
+
restriction: 0,
|
|
61
|
+
frequency: 0,
|
|
62
|
+
issuecategory: "",
|
|
63
|
+
state: "",
|
|
64
64
|
source: new types_1.Maintenance_Ticket_Source(),
|
|
65
65
|
};
|
|
66
66
|
// needs to be the first save to save a message before data change messages are created on ticket creation
|
|
@@ -78,23 +78,75 @@ async function saveTicketData(data, user) {
|
|
|
78
78
|
const savedpriority = await savePriority(ticket, data.priority, fetchOptions);
|
|
79
79
|
owticketobj.priority = savedpriority;
|
|
80
80
|
}
|
|
81
|
+
else {
|
|
82
|
+
//Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
|
|
83
|
+
const [lastPriorityError, lastPriority] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Priority)
|
|
84
|
+
.equalTo("ticket", ticket)
|
|
85
|
+
.descending("createdAt")
|
|
86
|
+
.first(fetchOptions));
|
|
87
|
+
if (lastPriorityError) {
|
|
88
|
+
console.log("Error fetching last priority", lastPriorityError);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
owticketobj.priority = lastPriority?.get("value") ?? 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
81
94
|
if (data.downtime !== undefined) {
|
|
82
95
|
const saveddowntime = await saveDowntime(ticket, data.downtime, fetchOptions);
|
|
83
96
|
owticketobj.downtime = saveddowntime;
|
|
84
97
|
}
|
|
98
|
+
else {
|
|
99
|
+
//Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
|
|
100
|
+
const [lastDowntimeError, lastDowntime] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Downtime)
|
|
101
|
+
.equalTo("ticket", ticket)
|
|
102
|
+
.descending("createdAt")
|
|
103
|
+
.first(fetchOptions));
|
|
104
|
+
if (lastDowntimeError) {
|
|
105
|
+
console.log("Error fetching last downtime", lastDowntimeError);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
owticketobj.downtime = lastDowntime?.get("value") ?? 0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
85
111
|
if (data.frequency !== undefined) {
|
|
86
112
|
const savedfrequency = await saveFrequency(ticket, data.frequency, fetchOptions);
|
|
87
113
|
owticketobj.frequency = savedfrequency;
|
|
88
114
|
}
|
|
115
|
+
else {
|
|
116
|
+
//Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
|
|
117
|
+
const [lastFrequencyError, lastFrequency] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Frequency)
|
|
118
|
+
.equalTo("ticket", ticket)
|
|
119
|
+
.descending("createdAt")
|
|
120
|
+
.first(fetchOptions));
|
|
121
|
+
if (lastFrequencyError) {
|
|
122
|
+
console.log("Error fetching last frequency", lastFrequencyError);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
owticketobj.frequency = lastFrequency?.get("value") ?? 0;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
89
128
|
if (data.restriction !== undefined) {
|
|
90
129
|
const savedrestriction = await saveRestriction(ticket, data.restriction, fetchOptions);
|
|
91
130
|
owticketobj.restriction = savedrestriction;
|
|
92
131
|
}
|
|
132
|
+
else {
|
|
133
|
+
//Fetch last value so it won't publish a 0 value to openware and overwrite the last value with default 0
|
|
134
|
+
const [lastRestrictionError, lastRestriction] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Restriction)
|
|
135
|
+
.equalTo("ticket", ticket)
|
|
136
|
+
.descending("createdAt")
|
|
137
|
+
.first(fetchOptions));
|
|
138
|
+
if (lastRestrictionError) {
|
|
139
|
+
console.log("Error fetching last restriction", lastRestrictionError);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
owticketobj.restriction = lastRestriction?.get("value") ?? 0;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
93
145
|
if (data.issuecategory) {
|
|
94
146
|
const savedissuecategory = await saveIssueCategory(ticket, data.issuecategory, fetchOptions);
|
|
95
147
|
const [fetchedSavedIssuecategoryError, fetchedSavedIssuecategory] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Issuecategory)
|
|
96
148
|
.include("issuecategory")
|
|
97
|
-
.get(savedissuecategory.id));
|
|
149
|
+
.get(savedissuecategory.id, fetchOptions));
|
|
98
150
|
if (fetchedSavedIssuecategoryError) {
|
|
99
151
|
console.log("Error fetching saved issue category", fetchedSavedIssuecategoryError);
|
|
100
152
|
}
|
|
@@ -106,7 +158,7 @@ async function saveTicketData(data, user) {
|
|
|
106
158
|
const savedstate = await saveState(ticket, data.state, fetchOptions);
|
|
107
159
|
const [fetchedSavedStateError, fetchedSavedState] = await (0, catchError_1.catchError)(new Parse.Query(types_1.Maintenance_Ticket_Kanban_State)
|
|
108
160
|
.include("state")
|
|
109
|
-
.get(savedstate.id));
|
|
161
|
+
.get(savedstate.id, fetchOptions));
|
|
110
162
|
if (fetchedSavedStateError) {
|
|
111
163
|
console.log("Error fetching saved state", fetchedSavedStateError);
|
|
112
164
|
}
|
|
@@ -118,6 +170,8 @@ async function saveTicketData(data, user) {
|
|
|
118
170
|
await saveMedia(ticket, data.media, fetchOptions);
|
|
119
171
|
if (data.material)
|
|
120
172
|
await saveMaterial(ticket, data.material, fetchOptions);
|
|
173
|
+
if (data.project)
|
|
174
|
+
await saveTicketProject(ticket, data.project, fetchOptions);
|
|
121
175
|
// save defaults
|
|
122
176
|
if (!data.issuecategory && !data.existingTicketId)
|
|
123
177
|
await saveDefaultIssueCategory(ticket, fetchOptions);
|
|
@@ -139,7 +193,9 @@ async function saveTicketData(data, user) {
|
|
|
139
193
|
else if (ticketsource && ticketsource.get("source")) {
|
|
140
194
|
owticketobj.source = ticketsource;
|
|
141
195
|
// publish to openware
|
|
142
|
-
await publishToOpenWare(owticketobj, ticket, ticketsource.get("source").
|
|
196
|
+
await publishToOpenWare(owticketobj, ticket, ticketsource.get("source").get("tag")
|
|
197
|
+
? ticketsource.get("source").get("tag")
|
|
198
|
+
: "");
|
|
143
199
|
}
|
|
144
200
|
return ticket;
|
|
145
201
|
}
|
|
@@ -152,90 +208,112 @@ async function publishToOpenWare(owticketobj, ticket, source) {
|
|
|
152
208
|
const time = new Date().getTime();
|
|
153
209
|
const values = {
|
|
154
210
|
date: time,
|
|
155
|
-
value: Object.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
211
|
+
value: Object.entries(owticketobj).map(([key, value]) => {
|
|
212
|
+
if (key === "downtime") {
|
|
213
|
+
if (value instanceof types_1.Maintenance_Downtime) {
|
|
214
|
+
return value.get("value");
|
|
215
|
+
}
|
|
216
|
+
return value;
|
|
159
217
|
}
|
|
160
|
-
else if (
|
|
161
|
-
|
|
218
|
+
else if (key === "frequency") {
|
|
219
|
+
if (value instanceof types_1.Maintenance_Frequency) {
|
|
220
|
+
return value.get("value");
|
|
221
|
+
}
|
|
222
|
+
return value;
|
|
162
223
|
}
|
|
163
|
-
else if (
|
|
164
|
-
|
|
224
|
+
else if (key === "priority") {
|
|
225
|
+
if (value instanceof types_1.Maintenance_Priority) {
|
|
226
|
+
return value.get("value");
|
|
227
|
+
}
|
|
228
|
+
return value;
|
|
165
229
|
}
|
|
166
|
-
else if (
|
|
167
|
-
|
|
230
|
+
else if (key === "restriction") {
|
|
231
|
+
if (value instanceof types_1.Maintenance_Restriction) {
|
|
232
|
+
return value.get("value");
|
|
233
|
+
}
|
|
234
|
+
return value;
|
|
168
235
|
}
|
|
169
|
-
else if (
|
|
170
|
-
|
|
236
|
+
else if (key === "issuecategory") {
|
|
237
|
+
if (value instanceof types_1.Maintenance_Ticket_Issuecategory) {
|
|
238
|
+
return value.get("issuecategory").id;
|
|
239
|
+
}
|
|
240
|
+
return value;
|
|
171
241
|
}
|
|
172
|
-
else if (
|
|
173
|
-
|
|
242
|
+
else if (key === "state") {
|
|
243
|
+
if (value instanceof types_1.Maintenance_Ticket_Kanban_State) {
|
|
244
|
+
return value.get("state").id;
|
|
245
|
+
}
|
|
246
|
+
return value;
|
|
174
247
|
}
|
|
175
|
-
else if (
|
|
176
|
-
|
|
248
|
+
else if (key === "ticket") {
|
|
249
|
+
if (value instanceof types_1.Maintenance_Ticket) {
|
|
250
|
+
return value.id;
|
|
251
|
+
}
|
|
252
|
+
return value;
|
|
177
253
|
}
|
|
178
|
-
else if (
|
|
179
|
-
|
|
254
|
+
else if (key === "source") {
|
|
255
|
+
if (value instanceof types_1.Maintenance_Ticket_Source) {
|
|
256
|
+
return value.get("source").id;
|
|
257
|
+
}
|
|
258
|
+
return value;
|
|
180
259
|
}
|
|
181
|
-
return
|
|
182
|
-
})
|
|
183
|
-
.filter((v) => v !== undefined),
|
|
260
|
+
return value;
|
|
261
|
+
}),
|
|
184
262
|
};
|
|
185
|
-
const valueTypes = Object.
|
|
263
|
+
const valueTypes = Object.keys(owticketobj).map((key) => {
|
|
186
264
|
const tmpvaluetype = {
|
|
187
265
|
name: "",
|
|
188
266
|
unit: "",
|
|
189
267
|
type: "String",
|
|
190
268
|
};
|
|
191
|
-
if (
|
|
192
|
-
tmpvaluetype.name = types_1.Maintenance_Downtime.className;
|
|
269
|
+
if (key === "downtime") {
|
|
270
|
+
tmpvaluetype.name = types_1.Maintenance_Downtime.className.replace("OD3_Maintenance_", "");
|
|
193
271
|
tmpvaluetype.unit = "%";
|
|
194
272
|
tmpvaluetype.type = "Number";
|
|
195
273
|
}
|
|
196
|
-
else if (
|
|
197
|
-
tmpvaluetype.name = types_1.Maintenance_Frequency.className;
|
|
274
|
+
else if (key === "frequency") {
|
|
275
|
+
tmpvaluetype.name = types_1.Maintenance_Frequency.className.replace("OD3_Maintenance_", "");
|
|
198
276
|
tmpvaluetype.unit = "%";
|
|
199
277
|
tmpvaluetype.type = "Number";
|
|
200
278
|
}
|
|
201
|
-
else if (
|
|
202
|
-
tmpvaluetype.name = types_1.Maintenance_Priority.className;
|
|
279
|
+
else if (key === "priority") {
|
|
280
|
+
tmpvaluetype.name = types_1.Maintenance_Priority.className.replace("OD3_Maintenance_", "");
|
|
203
281
|
tmpvaluetype.unit = "%";
|
|
204
282
|
tmpvaluetype.type = "Number";
|
|
205
283
|
}
|
|
206
|
-
else if (
|
|
207
|
-
tmpvaluetype.name = types_1.Maintenance_Restriction.className;
|
|
284
|
+
else if (key === "restriction") {
|
|
285
|
+
tmpvaluetype.name = types_1.Maintenance_Restriction.className.replace("OD3_Maintenance_", "");
|
|
208
286
|
tmpvaluetype.unit = "%";
|
|
209
287
|
tmpvaluetype.type = "Number";
|
|
210
288
|
}
|
|
211
|
-
else if (
|
|
212
|
-
tmpvaluetype.name = types_1.Maintenance_Ticket_Issuecategory.className;
|
|
289
|
+
else if (key === "issuecategory") {
|
|
290
|
+
tmpvaluetype.name = types_1.Maintenance_Ticket_Issuecategory.className.replace("OD3_Maintenance_", "");
|
|
213
291
|
tmpvaluetype.unit = "";
|
|
214
292
|
tmpvaluetype.type = "String";
|
|
215
293
|
}
|
|
216
|
-
else if (
|
|
217
|
-
tmpvaluetype.name = types_1.Maintenance_Ticket_Kanban_State.className;
|
|
294
|
+
else if (key === "state") {
|
|
295
|
+
tmpvaluetype.name = types_1.Maintenance_Ticket_Kanban_State.className.replace("OD3_Maintenance_", "");
|
|
218
296
|
tmpvaluetype.unit = "";
|
|
219
297
|
tmpvaluetype.type = "String";
|
|
220
298
|
}
|
|
221
|
-
else if (
|
|
222
|
-
tmpvaluetype.name = types_1.Maintenance_Ticket.className;
|
|
299
|
+
else if (key === "ticket") {
|
|
300
|
+
tmpvaluetype.name = types_1.Maintenance_Ticket.className.replace("OD3_Maintenance_", "");
|
|
223
301
|
tmpvaluetype.unit = "";
|
|
224
302
|
tmpvaluetype.type = "String";
|
|
225
303
|
}
|
|
226
|
-
else if (
|
|
227
|
-
tmpvaluetype.name = types_1.Maintenance_Ticket_Source.className;
|
|
304
|
+
else if (key === "source") {
|
|
305
|
+
tmpvaluetype.name = types_1.Maintenance_Ticket_Source.className.replace("OD3_Maintenance_", "");
|
|
228
306
|
tmpvaluetype.unit = "";
|
|
229
307
|
tmpvaluetype.type = "String";
|
|
230
308
|
}
|
|
231
309
|
return tmpvaluetype;
|
|
232
310
|
});
|
|
233
311
|
const dataitem = {
|
|
234
|
-
id:
|
|
235
|
-
name: `Ticket`,
|
|
312
|
+
id: `openservice_ticket_${ticket.id}`,
|
|
313
|
+
name: `Ticket ${owticketobj.ticket.get("title")}`,
|
|
236
314
|
source: source,
|
|
237
315
|
values: [values],
|
|
238
|
-
valueTypes: valueTypes
|
|
316
|
+
valueTypes: valueTypes,
|
|
239
317
|
meta: {},
|
|
240
318
|
};
|
|
241
319
|
console.log("Publishing ticket to openware: ", dataitem, "with values", JSON.stringify(dataitem.values));
|
|
@@ -283,8 +361,6 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
|
|
|
283
361
|
.find(fetchOptions);
|
|
284
362
|
ticket.relation("assignedusers").remove(assignedUsers);
|
|
285
363
|
ticket.relation("assignedroles").remove(assignedroles);
|
|
286
|
-
await ticket.save(null, fetchOptions);
|
|
287
|
-
await ticket.save(null, fetchOptions);
|
|
288
364
|
const assignments = [];
|
|
289
365
|
const batchTime = new Date();
|
|
290
366
|
const ids = assignedTo.map((a) => a.id);
|
|
@@ -296,6 +372,7 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
|
|
|
296
372
|
.find(fetchOptions);
|
|
297
373
|
ticket.relation("assignedusers").add(newUsers);
|
|
298
374
|
ticket.relation("assignedroles").add(newRoles);
|
|
375
|
+
await ticket.save(null, fetchOptions);
|
|
299
376
|
if (newRoles.length === 0 && newUsers.length === 0) {
|
|
300
377
|
assignments.push(new types_1.Maintenance_Ticket_Assignment({
|
|
301
378
|
ticket,
|
|
@@ -550,6 +627,22 @@ async function saveMaterial(ticket, material, fetchOptions) {
|
|
|
550
627
|
});
|
|
551
628
|
await materialObject.save(null, fetchOptions);
|
|
552
629
|
}
|
|
630
|
+
async function saveTicketProject(ticket, project, fetchOptions) {
|
|
631
|
+
const projectObj = await new Parse.Query(types_1.Maintenance_Project).get(project, fetchOptions);
|
|
632
|
+
if (!projectObj)
|
|
633
|
+
throw new Error("Project not found");
|
|
634
|
+
const ticketProjectObject = new types_1.Maintenance_Ticket_Project({
|
|
635
|
+
ticket,
|
|
636
|
+
project: projectObj,
|
|
637
|
+
tenant: ticket.get("tenant"),
|
|
638
|
+
user: ticket.get("user"),
|
|
639
|
+
});
|
|
640
|
+
await ticketProjectObject.save(null, fetchOptions);
|
|
641
|
+
ticket.set("project", projectObj);
|
|
642
|
+
await ticket.save(null, fetchOptions);
|
|
643
|
+
projectObj.relation("tickets").add(ticket);
|
|
644
|
+
await projectObj.save(null, fetchOptions);
|
|
645
|
+
}
|
|
553
646
|
async function saveDefaultIssueCategory(ticket, fetchOptions) {
|
|
554
647
|
const catchAll = await new Parse.Query(types_1.Maintenance_Issuecategory)
|
|
555
648
|
.equalTo("catchall", true)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Maintenance_Ticket, Maintenance_Ticket_Material, Maintenance_Ticket_Source } from "../types";
|
|
2
2
|
type FilterParams = {
|
|
3
|
-
attribute: "objectId" | "state" | "issuecategory" | "user" | "role" | "userRole" | "createdUser" | "source";
|
|
3
|
+
attribute: "objectId" | "state" | "issuecategory" | "user" | "role" | "userRole" | "createdUser" | "source" | "project";
|
|
4
4
|
/**
|
|
5
5
|
* the objectId of the attribute to filter by
|
|
6
6
|
*/
|
|
@@ -19,7 +19,9 @@ async function handleRequest(request) {
|
|
|
19
19
|
try {
|
|
20
20
|
const queries = [];
|
|
21
21
|
for await (const config of request.params.config) {
|
|
22
|
-
let ticketQuery = new Parse.Query(types_1.Maintenance_Ticket)
|
|
22
|
+
let ticketQuery = new Parse.Query(types_1.Maintenance_Ticket)
|
|
23
|
+
.equalTo("enabled", true)
|
|
24
|
+
.includeAll();
|
|
23
25
|
// apply filters defined in the filterQueryMap depending on the request
|
|
24
26
|
if (config.filterBy?.filter.length) {
|
|
25
27
|
const filterQueries = [];
|
|
@@ -106,6 +108,7 @@ async function getTicketData(tickets) {
|
|
|
106
108
|
const dailySchedule = getDailySchedule(ticket);
|
|
107
109
|
const messages = getMessages(ticket);
|
|
108
110
|
const material = getTicketMaterial(ticket);
|
|
111
|
+
const project = ticket.get("project")?.fetch({ useMasterKey: true });
|
|
109
112
|
const dataPromises = await Promise.all([
|
|
110
113
|
downtimes,
|
|
111
114
|
duedate,
|
|
@@ -118,6 +121,7 @@ async function getTicketData(tickets) {
|
|
|
118
121
|
dailySchedule,
|
|
119
122
|
messages,
|
|
120
123
|
material,
|
|
124
|
+
project,
|
|
121
125
|
]);
|
|
122
126
|
return {
|
|
123
127
|
ticket: ticket,
|
|
@@ -133,6 +137,7 @@ async function getTicketData(tickets) {
|
|
|
133
137
|
messages: dataPromises[9]?.messages,
|
|
134
138
|
assignedTo: [...assignedusers, ...assignedroles],
|
|
135
139
|
material: dataPromises[10],
|
|
140
|
+
project: dataPromises[11],
|
|
136
141
|
};
|
|
137
142
|
});
|
|
138
143
|
return await Promise.all(ticketDataPromises);
|
|
@@ -334,6 +339,10 @@ const filterQueryMap = {
|
|
|
334
339
|
query.include("user");
|
|
335
340
|
query.equalTo("user", new Parse.User({ objectId: value }));
|
|
336
341
|
},
|
|
342
|
+
project: async (query, value) => {
|
|
343
|
+
query.include("project");
|
|
344
|
+
query.equalTo("project", new types_1.Maintenance_Project({ objectId: value }));
|
|
345
|
+
},
|
|
337
346
|
};
|
|
338
347
|
/**
|
|
339
348
|
* Creates a distinct array based on the getId function and can afterwards filter the array
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Maintenance_Ticket, Maintenance_DailySchedule, Maintenance_Downtime, Maintenance_Duedate, Maintenance_Frequency, Maintenance_Issuecategory, Maintenance_Kanban_State, Maintenance_Message, Maintenance_Priority, Maintenance_Restriction, Source, Maintenance_Ticket_Material } from "../types";
|
|
1
|
+
import { Maintenance_Ticket, Maintenance_DailySchedule, Maintenance_Downtime, Maintenance_Duedate, Maintenance_Frequency, Maintenance_Issuecategory, Maintenance_Kanban_State, Maintenance_Message, Maintenance_Priority, Maintenance_Restriction, Source, Maintenance_Ticket_Material, Maintenance_Project } from "../types";
|
|
2
2
|
export type TicketData = {
|
|
3
3
|
ticket: Maintenance_Ticket;
|
|
4
4
|
dailySchedule?: Maintenance_DailySchedule;
|
|
@@ -13,4 +13,5 @@ export type TicketData = {
|
|
|
13
13
|
source?: Source;
|
|
14
14
|
assignedTo?: Array<Parse.User | Parse.Role>;
|
|
15
15
|
material?: Maintenance_Ticket_Material;
|
|
16
|
+
project?: Maintenance_Project;
|
|
16
17
|
};
|
|
@@ -40,6 +40,10 @@ export declare class MessageTranslationKeys {
|
|
|
40
40
|
TITLE: string;
|
|
41
41
|
CONTENT: string;
|
|
42
42
|
};
|
|
43
|
+
PROJECT: {
|
|
44
|
+
TITLE: string;
|
|
45
|
+
CONTENT: string;
|
|
46
|
+
};
|
|
43
47
|
};
|
|
44
48
|
static MACHINELOG: {
|
|
45
49
|
TITLE: {
|
|
@@ -86,5 +90,9 @@ export declare class MessageTranslationKeys {
|
|
|
86
90
|
TITLE: string;
|
|
87
91
|
CONTENT: string;
|
|
88
92
|
};
|
|
93
|
+
PROJECT: {
|
|
94
|
+
TITLE: string;
|
|
95
|
+
CONTENT: string;
|
|
96
|
+
};
|
|
89
97
|
};
|
|
90
98
|
}
|
|
@@ -45,6 +45,10 @@ MessageTranslationKeys.TICKETLOG = {
|
|
|
45
45
|
TITLE: "maintenance:ticket.message.material.changed.title",
|
|
46
46
|
CONTENT: "maintenance:ticket.message.material.changed.content",
|
|
47
47
|
},
|
|
48
|
+
PROJECT: {
|
|
49
|
+
TITLE: "maintenance:ticket.message.project.changed.title",
|
|
50
|
+
CONTENT: "maintenance:ticket.message.project.changed.content",
|
|
51
|
+
},
|
|
48
52
|
};
|
|
49
53
|
MessageTranslationKeys.MACHINELOG = {
|
|
50
54
|
TITLE: {
|
|
@@ -91,4 +95,8 @@ MessageTranslationKeys.MACHINELOG = {
|
|
|
91
95
|
TITLE: "maintenance:machinelog.message.material.changed.title",
|
|
92
96
|
CONTENT: "maintenance:machinelog.message.material.changed.content",
|
|
93
97
|
},
|
|
98
|
+
PROJECT: {
|
|
99
|
+
TITLE: "maintenance:machinelog.message.project.changed.title",
|
|
100
|
+
CONTENT: "maintenance:machinelog.message.project.changed.content",
|
|
101
|
+
},
|
|
94
102
|
};
|
|
@@ -112,6 +112,7 @@ async function convertTicketDataToMessages() {
|
|
|
112
112
|
await ticketDuedateToMessage(timeMap);
|
|
113
113
|
await ticketTitleToMessage(timeMap);
|
|
114
114
|
await ticketMaterialToMessage(timeMap);
|
|
115
|
+
await ticketProjectToMessage(timeMap);
|
|
115
116
|
}
|
|
116
117
|
async function convertToMessage(config) {
|
|
117
118
|
const entries = await new Parse.Query(config.className)
|
|
@@ -473,6 +474,24 @@ async function ticketTitleToMessage(timeMap) {
|
|
|
473
474
|
isValueValid: (entry) => !!entry.get("title"),
|
|
474
475
|
});
|
|
475
476
|
}
|
|
477
|
+
async function ticketProjectToMessage(timeMap) {
|
|
478
|
+
console.log("=================================");
|
|
479
|
+
console.log("Creating ticket project messages");
|
|
480
|
+
console.log("=================================");
|
|
481
|
+
await convertToMessage({
|
|
482
|
+
className: types_1.Maintenance_Ticket_Project.className,
|
|
483
|
+
timeMap: timeMap,
|
|
484
|
+
ticketTranslation: TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PROJECT,
|
|
485
|
+
machinelogTranslation: TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PROJECT,
|
|
486
|
+
getTranslationData: (entry, prev) => {
|
|
487
|
+
return {
|
|
488
|
+
old: prev?.get("project")?.get("name") ?? "Nicht vorhanden",
|
|
489
|
+
new: entry.get("project")?.get("name") ?? "Nicht vorhanden",
|
|
490
|
+
};
|
|
491
|
+
},
|
|
492
|
+
isValueValid: (entry) => !!entry.get("ticket"),
|
|
493
|
+
});
|
|
494
|
+
}
|
|
476
495
|
async function convertScheduleExecutionToMessage() {
|
|
477
496
|
console.log("=================================");
|
|
478
497
|
console.log("Creating schedule execution messages");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
(0, __1.beforeSaveHook)(types_1.Maintenance_Project, async (request) => {
|
|
8
|
+
const { object, original, user } = request;
|
|
9
|
+
await (0, __1.defaultHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request);
|
|
11
|
+
// TODO
|
|
12
|
+
});
|
|
13
|
+
(0, __1.afterSaveHook)(types_1.Maintenance_Project, async (request) => {
|
|
14
|
+
const { object, original, user } = request;
|
|
15
|
+
// TODO
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const openinc_openservice_save_ticket_data_1 = require("../functions/openinc-openservice-save-ticket-data");
|
|
6
|
+
const openinc_openservice_ticket_data_1 = require("../functions/openinc-openservice-ticket-data");
|
|
7
|
+
const TranslationKeys_1 = require("../helper/TranslationKeys");
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
const TRANSLATION_TITLE = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PROJECT.TITLE;
|
|
10
|
+
const TRANSLATION_CONTENT = TranslationKeys_1.MessageTranslationKeys.TICKETLOG.PROJECT.CONTENT;
|
|
11
|
+
const TRANSLATION_TITLE_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PROJECT.TITLE;
|
|
12
|
+
const TRANSLATION_CONTENT_MACHINELOG = TranslationKeys_1.MessageTranslationKeys.MACHINELOG.PROJECT.CONTENT;
|
|
13
|
+
async function init() {
|
|
14
|
+
(0, __1.beforeSaveHook)(types_1.Maintenance_Ticket_Project, async (request) => {
|
|
15
|
+
const { object, original, user } = request;
|
|
16
|
+
await (0, __1.defaultHandler)(request);
|
|
17
|
+
await (0, __1.defaultAclHandler)(request);
|
|
18
|
+
});
|
|
19
|
+
(0, __1.afterSaveHook)(types_1.Maintenance_Ticket_Project, async (request) => {
|
|
20
|
+
const { object, original, user } = request;
|
|
21
|
+
const fullObj = await object.fetchWithInclude(["ticket", "project"], {
|
|
22
|
+
useMasterKey: true,
|
|
23
|
+
});
|
|
24
|
+
const previous = await new Parse.Query(types_1.Maintenance_Ticket_Project)
|
|
25
|
+
.includeAll()
|
|
26
|
+
.equalTo("ticket", fullObj.get("ticket"))
|
|
27
|
+
.notEqualTo("objectId", fullObj.id)
|
|
28
|
+
.descending("createdAt")
|
|
29
|
+
.first({ useMasterKey: true });
|
|
30
|
+
await createMessageLog(fullObj, previous, user);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async function createMessageLog(object, previous, user) {
|
|
34
|
+
new types_1.Maintenance_Message({
|
|
35
|
+
referencedObjectId: object.get("ticket")?.id,
|
|
36
|
+
classname: object.get("ticket")?.className,
|
|
37
|
+
title: TRANSLATION_TITLE,
|
|
38
|
+
content: TRANSLATION_CONTENT,
|
|
39
|
+
user,
|
|
40
|
+
tenant: user.get("tenant"),
|
|
41
|
+
data: {
|
|
42
|
+
origin: {
|
|
43
|
+
id: object.id,
|
|
44
|
+
classname: object.className,
|
|
45
|
+
},
|
|
46
|
+
translation: {
|
|
47
|
+
username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
|
|
48
|
+
ticket: object.get("ticket")?.get("title") ?? "Nicht vorhanden",
|
|
49
|
+
new: object.get("project")?.get("name") ?? "Nicht vorhanden",
|
|
50
|
+
},
|
|
51
|
+
type: "system",
|
|
52
|
+
},
|
|
53
|
+
}).save(null, { useMasterKey: true });
|
|
54
|
+
const source = (await (0, openinc_openservice_ticket_data_1.getTicketSource)(object.get("ticket")))?.get("source");
|
|
55
|
+
if (source) {
|
|
56
|
+
new types_1.Maintenance_Message({
|
|
57
|
+
referencedObjectId: source?.id,
|
|
58
|
+
classname: source.className,
|
|
59
|
+
title: TRANSLATION_TITLE_MACHINELOG,
|
|
60
|
+
content: TRANSLATION_CONTENT_MACHINELOG,
|
|
61
|
+
user,
|
|
62
|
+
tenant: user.get("tenant"),
|
|
63
|
+
data: {
|
|
64
|
+
origin: {
|
|
65
|
+
id: object.get("ticket")?.id,
|
|
66
|
+
classname: object.get("ticket")?.className,
|
|
67
|
+
},
|
|
68
|
+
translation: {
|
|
69
|
+
username: (0, openinc_openservice_save_ticket_data_1.getUsername)(user),
|
|
70
|
+
ticket: object.get("ticket")?.get("title") ?? "Nicht vorhanden",
|
|
71
|
+
new: object.get("project")?.get("name") ?? "Nicht vorhanden",
|
|
72
|
+
old: previous?.get("project")?.get("name") ?? "Nicht vorhanden",
|
|
73
|
+
},
|
|
74
|
+
type: "system",
|
|
75
|
+
},
|
|
76
|
+
}).save(null, { useMasterKey: true });
|
|
77
|
+
}
|
|
78
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -176,10 +176,14 @@ async function initDefaultData() {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
async function initPermissions() {
|
|
179
|
-
const
|
|
179
|
+
const tenants = await new Parse.Query(types_1.Tenant)
|
|
180
180
|
.descending("createdAt")
|
|
181
|
-
.
|
|
182
|
-
|
|
181
|
+
.find({ useMasterKey: true });
|
|
182
|
+
if (tenants) {
|
|
183
|
+
for await (const tenant of tenants) {
|
|
184
|
+
await registerPermissions(tenant);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
183
187
|
}
|
|
184
188
|
/**
|
|
185
189
|
* Register all permissions in the database, if not already registered.
|
|
@@ -189,6 +193,7 @@ async function registerPermissions(tenant) {
|
|
|
189
193
|
(0, registerPermissions_1.getAllPermissions)().forEach((permission) => {
|
|
190
194
|
new Parse.Query(types_1.Permission)
|
|
191
195
|
.equalTo("key", permission.key)
|
|
196
|
+
.equalTo("tenant", tenant)
|
|
192
197
|
.first({ useMasterKey: true })
|
|
193
198
|
.then((result) => {
|
|
194
199
|
if (!result) {
|
|
@@ -196,14 +201,10 @@ async function registerPermissions(tenant) {
|
|
|
196
201
|
const newPermission = new types_1.Permission();
|
|
197
202
|
newPermission.set("key", permission.key);
|
|
198
203
|
newPermission.set("label", permission.label);
|
|
204
|
+
newPermission.set("tenant", tenant);
|
|
199
205
|
newPermission.set("description", permission.description);
|
|
200
206
|
newPermission.save({}, { useMasterKey: true });
|
|
201
207
|
}
|
|
202
|
-
else if (result.get("tenant") === undefined) {
|
|
203
|
-
console.log("Update permission tenant to default tenant", permission.key);
|
|
204
|
-
result.set("tenant", tenant);
|
|
205
|
-
result.save({}, { useMasterKey: true });
|
|
206
|
-
}
|
|
207
208
|
else {
|
|
208
209
|
console.log("Permission already exists", permission.key);
|
|
209
210
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Maintenance_Ticket } from "./Maintenance_Ticket";
|
|
2
|
+
import type { Tenant } from "./Tenant";
|
|
3
|
+
import type { _Role } from "./_Role";
|
|
4
|
+
import type { _User } from "./_User";
|
|
5
|
+
export interface Maintenance_ProjectAttributes {
|
|
6
|
+
id: string;
|
|
7
|
+
objectId: string;
|
|
8
|
+
createdAt: Date;
|
|
9
|
+
updatedAt: Date;
|
|
10
|
+
assignedRoles: Parse.Relation<Maintenance_Project, _Role>;
|
|
11
|
+
assignedUsers: Parse.Relation<Maintenance_Project, _User>;
|
|
12
|
+
color?: string;
|
|
13
|
+
description: string;
|
|
14
|
+
end?: Date;
|
|
15
|
+
icon?: string;
|
|
16
|
+
name: string;
|
|
17
|
+
parent?: Maintenance_Project;
|
|
18
|
+
start?: Date;
|
|
19
|
+
tenant?: Tenant;
|
|
20
|
+
tickets: Parse.Relation<Maintenance_Project, Maintenance_Ticket>;
|
|
21
|
+
user?: _User;
|
|
22
|
+
}
|
|
23
|
+
export declare class Maintenance_Project extends Parse.Object<Maintenance_ProjectAttributes> {
|
|
24
|
+
static className: string;
|
|
25
|
+
constructor(data?: Partial<Maintenance_ProjectAttributes>);
|
|
26
|
+
get assignedRoles(): Parse.Relation<Maintenance_Project, _Role>;
|
|
27
|
+
get assignedUsers(): Parse.Relation<Maintenance_Project, _User>;
|
|
28
|
+
get color(): string | undefined;
|
|
29
|
+
set color(value: string | undefined);
|
|
30
|
+
get description(): string;
|
|
31
|
+
set description(value: string);
|
|
32
|
+
get end(): Date | undefined;
|
|
33
|
+
set end(value: Date | undefined);
|
|
34
|
+
get icon(): string | undefined;
|
|
35
|
+
set icon(value: string | undefined);
|
|
36
|
+
get name(): string;
|
|
37
|
+
set name(value: string);
|
|
38
|
+
get parent(): Maintenance_Project | undefined;
|
|
39
|
+
set parent(value: Maintenance_Project | undefined);
|
|
40
|
+
get start(): Date | undefined;
|
|
41
|
+
set start(value: Date | undefined);
|
|
42
|
+
get tenant(): Tenant | undefined;
|
|
43
|
+
set tenant(value: Tenant | undefined);
|
|
44
|
+
get tickets(): Parse.Relation<Maintenance_Project, Maintenance_Ticket>;
|
|
45
|
+
get user(): _User | undefined;
|
|
46
|
+
set user(value: _User | undefined);
|
|
47
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Maintenance_Project = void 0;
|
|
4
|
+
class Maintenance_Project extends Parse.Object {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
super("OD3_Maintenance_Project", data);
|
|
7
|
+
}
|
|
8
|
+
get assignedRoles() {
|
|
9
|
+
return super.relation("assignedRoles");
|
|
10
|
+
}
|
|
11
|
+
get assignedUsers() {
|
|
12
|
+
return super.relation("assignedUsers");
|
|
13
|
+
}
|
|
14
|
+
get color() {
|
|
15
|
+
return super.get("color");
|
|
16
|
+
}
|
|
17
|
+
set color(value) {
|
|
18
|
+
super.set("color", value);
|
|
19
|
+
}
|
|
20
|
+
get description() {
|
|
21
|
+
return super.get("description");
|
|
22
|
+
}
|
|
23
|
+
set description(value) {
|
|
24
|
+
super.set("description", value);
|
|
25
|
+
}
|
|
26
|
+
get end() {
|
|
27
|
+
return super.get("end");
|
|
28
|
+
}
|
|
29
|
+
set end(value) {
|
|
30
|
+
super.set("end", value);
|
|
31
|
+
}
|
|
32
|
+
get icon() {
|
|
33
|
+
return super.get("icon");
|
|
34
|
+
}
|
|
35
|
+
set icon(value) {
|
|
36
|
+
super.set("icon", value);
|
|
37
|
+
}
|
|
38
|
+
get name() {
|
|
39
|
+
return super.get("name");
|
|
40
|
+
}
|
|
41
|
+
set name(value) {
|
|
42
|
+
super.set("name", value);
|
|
43
|
+
}
|
|
44
|
+
get parent() {
|
|
45
|
+
return super.get("parent");
|
|
46
|
+
}
|
|
47
|
+
set parent(value) {
|
|
48
|
+
super.set("parent", value);
|
|
49
|
+
}
|
|
50
|
+
get start() {
|
|
51
|
+
return super.get("start");
|
|
52
|
+
}
|
|
53
|
+
set start(value) {
|
|
54
|
+
super.set("start", value);
|
|
55
|
+
}
|
|
56
|
+
get tenant() {
|
|
57
|
+
return super.get("tenant");
|
|
58
|
+
}
|
|
59
|
+
set tenant(value) {
|
|
60
|
+
super.set("tenant", value);
|
|
61
|
+
}
|
|
62
|
+
get tickets() {
|
|
63
|
+
return super.relation("tickets");
|
|
64
|
+
}
|
|
65
|
+
get user() {
|
|
66
|
+
return super.get("user");
|
|
67
|
+
}
|
|
68
|
+
set user(value) {
|
|
69
|
+
super.set("user", value);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.Maintenance_Project = Maintenance_Project;
|
|
73
|
+
Maintenance_Project.className = "OD3_Maintenance_Project";
|
|
74
|
+
Parse.Object.registerSubclass("OD3_Maintenance_Project", Maintenance_Project);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Maintenance_DailySchedule } from "./Maintenance_DailySchedule";
|
|
2
|
+
import type { Maintenance_Project } from "./Maintenance_Project";
|
|
2
3
|
import type { Tenant } from "./Tenant";
|
|
3
4
|
import type { _Role } from "./_Role";
|
|
4
5
|
import type { _User } from "./_User";
|
|
@@ -13,6 +14,7 @@ export interface Maintenance_TicketAttributes {
|
|
|
13
14
|
enabled: boolean;
|
|
14
15
|
id_old?: string;
|
|
15
16
|
latestPriorityValue?: number;
|
|
17
|
+
project?: Maintenance_Project;
|
|
16
18
|
tenant?: Tenant;
|
|
17
19
|
title?: string;
|
|
18
20
|
user?: _User;
|
|
@@ -30,6 +32,8 @@ export declare class Maintenance_Ticket extends Parse.Object<Maintenance_TicketA
|
|
|
30
32
|
set id_old(value: string | undefined);
|
|
31
33
|
get latestPriorityValue(): number | undefined;
|
|
32
34
|
set latestPriorityValue(value: number | undefined);
|
|
35
|
+
get project(): Maintenance_Project | undefined;
|
|
36
|
+
set project(value: Maintenance_Project | undefined);
|
|
33
37
|
get tenant(): Tenant | undefined;
|
|
34
38
|
set tenant(value: Tenant | undefined);
|
|
35
39
|
get title(): string | undefined;
|
|
@@ -35,6 +35,12 @@ class Maintenance_Ticket extends Parse.Object {
|
|
|
35
35
|
set latestPriorityValue(value) {
|
|
36
36
|
super.set("latestPriorityValue", value);
|
|
37
37
|
}
|
|
38
|
+
get project() {
|
|
39
|
+
return super.get("project");
|
|
40
|
+
}
|
|
41
|
+
set project(value) {
|
|
42
|
+
super.set("project", value);
|
|
43
|
+
}
|
|
38
44
|
get tenant() {
|
|
39
45
|
return super.get("tenant");
|
|
40
46
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Maintenance_Project } from "./Maintenance_Project";
|
|
2
|
+
import type { Maintenance_Ticket } from "./Maintenance_Ticket";
|
|
3
|
+
import type { Tenant } from "./Tenant";
|
|
4
|
+
import type { _User } from "./_User";
|
|
5
|
+
export interface Maintenance_Ticket_ProjectAttributes {
|
|
6
|
+
id: string;
|
|
7
|
+
objectId: string;
|
|
8
|
+
createdAt: Date;
|
|
9
|
+
updatedAt: Date;
|
|
10
|
+
project?: Maintenance_Project;
|
|
11
|
+
tenant?: Tenant;
|
|
12
|
+
ticket?: Maintenance_Ticket;
|
|
13
|
+
user?: _User;
|
|
14
|
+
}
|
|
15
|
+
export declare class Maintenance_Ticket_Project extends Parse.Object<Maintenance_Ticket_ProjectAttributes> {
|
|
16
|
+
static className: string;
|
|
17
|
+
constructor(data?: Partial<Maintenance_Ticket_ProjectAttributes>);
|
|
18
|
+
get project(): Maintenance_Project | undefined;
|
|
19
|
+
set project(value: Maintenance_Project | undefined);
|
|
20
|
+
get tenant(): Tenant | undefined;
|
|
21
|
+
set tenant(value: Tenant | undefined);
|
|
22
|
+
get ticket(): Maintenance_Ticket | undefined;
|
|
23
|
+
set ticket(value: Maintenance_Ticket | undefined);
|
|
24
|
+
get user(): _User | undefined;
|
|
25
|
+
set user(value: _User | undefined);
|
|
26
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Maintenance_Ticket_Project = void 0;
|
|
4
|
+
class Maintenance_Ticket_Project extends Parse.Object {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
super("OD3_Maintenance_Ticket_Project", data);
|
|
7
|
+
}
|
|
8
|
+
get project() {
|
|
9
|
+
return super.get("project");
|
|
10
|
+
}
|
|
11
|
+
set project(value) {
|
|
12
|
+
super.set("project", value);
|
|
13
|
+
}
|
|
14
|
+
get tenant() {
|
|
15
|
+
return super.get("tenant");
|
|
16
|
+
}
|
|
17
|
+
set tenant(value) {
|
|
18
|
+
super.set("tenant", value);
|
|
19
|
+
}
|
|
20
|
+
get ticket() {
|
|
21
|
+
return super.get("ticket");
|
|
22
|
+
}
|
|
23
|
+
set ticket(value) {
|
|
24
|
+
super.set("ticket", value);
|
|
25
|
+
}
|
|
26
|
+
get user() {
|
|
27
|
+
return super.get("user");
|
|
28
|
+
}
|
|
29
|
+
set user(value) {
|
|
30
|
+
super.set("user", value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.Maintenance_Ticket_Project = Maintenance_Ticket_Project;
|
|
34
|
+
Maintenance_Ticket_Project.className = "OD3_Maintenance_Ticket_Project";
|
|
35
|
+
Parse.Object.registerSubclass("OD3_Maintenance_Ticket_Project", Maintenance_Ticket_Project);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -116,6 +116,8 @@ export { Maintenance_Order } from "./Maintenance_Order";
|
|
|
116
116
|
export type { Maintenance_OrderAttributes } from "./Maintenance_Order";
|
|
117
117
|
export { Maintenance_Priority } from "./Maintenance_Priority";
|
|
118
118
|
export type { Maintenance_PriorityAttributes } from "./Maintenance_Priority";
|
|
119
|
+
export { Maintenance_Project } from "./Maintenance_Project";
|
|
120
|
+
export type { Maintenance_ProjectAttributes } from "./Maintenance_Project";
|
|
119
121
|
export { Maintenance_Restriction } from "./Maintenance_Restriction";
|
|
120
122
|
export type { Maintenance_RestrictionAttributes } from "./Maintenance_Restriction";
|
|
121
123
|
export { Maintenance_Schedule_Execution } from "./Maintenance_Schedule_Execution";
|
|
@@ -142,6 +144,8 @@ export { Maintenance_Ticket_Kanban_State_Current } from "./Maintenance_Ticket_Ka
|
|
|
142
144
|
export type { Maintenance_Ticket_Kanban_State_CurrentAttributes } from "./Maintenance_Ticket_Kanban_State_Current";
|
|
143
145
|
export { Maintenance_Ticket_Material } from "./Maintenance_Ticket_Material";
|
|
144
146
|
export type { Maintenance_Ticket_MaterialAttributes } from "./Maintenance_Ticket_Material";
|
|
147
|
+
export { Maintenance_Ticket_Project } from "./Maintenance_Ticket_Project";
|
|
148
|
+
export type { Maintenance_Ticket_ProjectAttributes } from "./Maintenance_Ticket_Project";
|
|
145
149
|
export { Maintenance_Ticket_Source } from "./Maintenance_Ticket_Source";
|
|
146
150
|
export type { Maintenance_Ticket_SourceAttributes } from "./Maintenance_Ticket_Source";
|
|
147
151
|
export { Maintenance_Ticket_Title } from "./Maintenance_Ticket_Title";
|
package/dist/types/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_DailySchedule = exports.MailTemplate = exports.ML_DataSelection = exports.MIAAS_MDSEndpoint = exports.MES_OrderPlan = exports.MES_Order = exports.MES_Article = exports.Log = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_ChatMessage = exports.Knowledge_Chat = exports.Knowledge_Category = exports.Knowledge_Article = exports.GTFS_Wheelchair_Boarding = exports.GTFS_Wheelchair_Accessible = exports.GTFS_Trip = exports.GTFS_Stop_Times = exports.GTFS_Stop = exports.GTFS_Route_Type = exports.GTFS_Route = exports.GTFS_Location_Type = exports.GTFS_Level = exports.GTFS_Direction = exports.GTFS_Calendar = exports.GTFS_Bikes_Allowed = exports.GTFS_Agency = exports.Documentation_Document = exports.Documentation_Category = exports.Dashboard = exports.Core_Token = exports.Core_Email = exports.Contact = exports.Config = exports.Company = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.Assets = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
|
|
4
|
-
exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.User_Setting = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification_Setting = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Material = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = void 0;
|
|
4
|
+
exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.User_Setting = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification_Setting = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Project = exports.Maintenance_Ticket_Material = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Restriction = exports.Maintenance_Project = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = void 0;
|
|
5
5
|
var Alarm_1 = require("./Alarm");
|
|
6
6
|
Object.defineProperty(exports, "Alarm", { enumerable: true, get: function () { return Alarm_1.Alarm; } });
|
|
7
7
|
var AlarmAction_1 = require("./AlarmAction");
|
|
@@ -120,6 +120,8 @@ var Maintenance_Order_1 = require("./Maintenance_Order");
|
|
|
120
120
|
Object.defineProperty(exports, "Maintenance_Order", { enumerable: true, get: function () { return Maintenance_Order_1.Maintenance_Order; } });
|
|
121
121
|
var Maintenance_Priority_1 = require("./Maintenance_Priority");
|
|
122
122
|
Object.defineProperty(exports, "Maintenance_Priority", { enumerable: true, get: function () { return Maintenance_Priority_1.Maintenance_Priority; } });
|
|
123
|
+
var Maintenance_Project_1 = require("./Maintenance_Project");
|
|
124
|
+
Object.defineProperty(exports, "Maintenance_Project", { enumerable: true, get: function () { return Maintenance_Project_1.Maintenance_Project; } });
|
|
123
125
|
var Maintenance_Restriction_1 = require("./Maintenance_Restriction");
|
|
124
126
|
Object.defineProperty(exports, "Maintenance_Restriction", { enumerable: true, get: function () { return Maintenance_Restriction_1.Maintenance_Restriction; } });
|
|
125
127
|
var Maintenance_Schedule_Execution_1 = require("./Maintenance_Schedule_Execution");
|
|
@@ -146,6 +148,8 @@ var Maintenance_Ticket_Kanban_State_Current_1 = require("./Maintenance_Ticket_Ka
|
|
|
146
148
|
Object.defineProperty(exports, "Maintenance_Ticket_Kanban_State_Current", { enumerable: true, get: function () { return Maintenance_Ticket_Kanban_State_Current_1.Maintenance_Ticket_Kanban_State_Current; } });
|
|
147
149
|
var Maintenance_Ticket_Material_1 = require("./Maintenance_Ticket_Material");
|
|
148
150
|
Object.defineProperty(exports, "Maintenance_Ticket_Material", { enumerable: true, get: function () { return Maintenance_Ticket_Material_1.Maintenance_Ticket_Material; } });
|
|
151
|
+
var Maintenance_Ticket_Project_1 = require("./Maintenance_Ticket_Project");
|
|
152
|
+
Object.defineProperty(exports, "Maintenance_Ticket_Project", { enumerable: true, get: function () { return Maintenance_Ticket_Project_1.Maintenance_Ticket_Project; } });
|
|
149
153
|
var Maintenance_Ticket_Source_1 = require("./Maintenance_Ticket_Source");
|
|
150
154
|
Object.defineProperty(exports, "Maintenance_Ticket_Source", { enumerable: true, get: function () { return Maintenance_Ticket_Source_1.Maintenance_Ticket_Source; } });
|
|
151
155
|
var Maintenance_Ticket_Title_1 = require("./Maintenance_Ticket_Title");
|
package/package.json
CHANGED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"assignedRoles": {
|
|
4
|
+
"type": "Relation",
|
|
5
|
+
"targetClass": "_Role",
|
|
6
|
+
"required": false
|
|
7
|
+
},
|
|
8
|
+
"assignedUsers": {
|
|
9
|
+
"type": "Relation",
|
|
10
|
+
"targetClass": "_User",
|
|
11
|
+
"required": false
|
|
12
|
+
},
|
|
13
|
+
"color": {
|
|
14
|
+
"type": "String",
|
|
15
|
+
"required": false
|
|
16
|
+
},
|
|
17
|
+
"description": {
|
|
18
|
+
"type": "String",
|
|
19
|
+
"required": false,
|
|
20
|
+
"defaultValue": ""
|
|
21
|
+
},
|
|
22
|
+
"end": {
|
|
23
|
+
"type": "Date",
|
|
24
|
+
"required": false
|
|
25
|
+
},
|
|
26
|
+
"icon": {
|
|
27
|
+
"type": "String",
|
|
28
|
+
"required": false
|
|
29
|
+
},
|
|
30
|
+
"name": {
|
|
31
|
+
"type": "String",
|
|
32
|
+
"required": true
|
|
33
|
+
},
|
|
34
|
+
"parent": {
|
|
35
|
+
"type": "Pointer",
|
|
36
|
+
"targetClass": "{{PREFIX}}Maintenance_Project",
|
|
37
|
+
"required": false
|
|
38
|
+
},
|
|
39
|
+
"start": {
|
|
40
|
+
"type": "Date",
|
|
41
|
+
"required": false
|
|
42
|
+
},
|
|
43
|
+
"tenant": {
|
|
44
|
+
"type": "Pointer",
|
|
45
|
+
"targetClass": "{{PREFIX}}Tenant",
|
|
46
|
+
"required": false
|
|
47
|
+
},
|
|
48
|
+
"tickets": {
|
|
49
|
+
"type": "Relation",
|
|
50
|
+
"targetClass": "{{PREFIX}}Maintenance_Ticket",
|
|
51
|
+
"required": false
|
|
52
|
+
},
|
|
53
|
+
"user": {
|
|
54
|
+
"type": "Pointer",
|
|
55
|
+
"targetClass": "_User",
|
|
56
|
+
"required": false
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"classLevelPermissions": {
|
|
60
|
+
"find": {
|
|
61
|
+
"*": true
|
|
62
|
+
},
|
|
63
|
+
"count": {
|
|
64
|
+
"*": true
|
|
65
|
+
},
|
|
66
|
+
"get": {
|
|
67
|
+
"*": true
|
|
68
|
+
},
|
|
69
|
+
"create": {
|
|
70
|
+
"*": true
|
|
71
|
+
},
|
|
72
|
+
"update": {
|
|
73
|
+
"*": true
|
|
74
|
+
},
|
|
75
|
+
"delete": {
|
|
76
|
+
"*": true
|
|
77
|
+
},
|
|
78
|
+
"addField": {
|
|
79
|
+
"*": true
|
|
80
|
+
},
|
|
81
|
+
"protectedFields": {
|
|
82
|
+
"*": []
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"project": {
|
|
4
|
+
"type": "Pointer",
|
|
5
|
+
"targetClass": "{{PREFIX}}Maintenance_Project",
|
|
6
|
+
"required": false
|
|
7
|
+
},
|
|
8
|
+
"tenant": {
|
|
9
|
+
"type": "Pointer",
|
|
10
|
+
"targetClass": "{{PREFIX}}Tenant",
|
|
11
|
+
"required": false
|
|
12
|
+
},
|
|
13
|
+
"ticket": {
|
|
14
|
+
"type": "Pointer",
|
|
15
|
+
"targetClass": "{{PREFIX}}Maintenance_Ticket",
|
|
16
|
+
"required": false
|
|
17
|
+
},
|
|
18
|
+
"user": {
|
|
19
|
+
"type": "Pointer",
|
|
20
|
+
"targetClass": "_User",
|
|
21
|
+
"required": false
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"classLevelPermissions": {
|
|
25
|
+
"find": {
|
|
26
|
+
"*": true
|
|
27
|
+
},
|
|
28
|
+
"count": {
|
|
29
|
+
"*": true
|
|
30
|
+
},
|
|
31
|
+
"get": {
|
|
32
|
+
"*": true
|
|
33
|
+
},
|
|
34
|
+
"create": {
|
|
35
|
+
"*": true
|
|
36
|
+
},
|
|
37
|
+
"update": {
|
|
38
|
+
"*": true
|
|
39
|
+
},
|
|
40
|
+
"delete": {
|
|
41
|
+
"*": true
|
|
42
|
+
},
|
|
43
|
+
"addField": {
|
|
44
|
+
"*": true
|
|
45
|
+
},
|
|
46
|
+
"protectedFields": {
|
|
47
|
+
"*": []
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|