@plusscommunities/pluss-maintenance-web-forms 1.1.36 → 1.1.37-beta.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/dist/index.cjs.js +217 -106
- package/dist/index.esm.js +217 -106
- package/dist/index.umd.js +217 -106
- package/package.json +1 -1
- package/src/components/AnalyticsHub.js +331 -154
- package/src/feature.config.js +0 -1
- package/src/values.config.a.js +0 -6
- package/src/values.config.default.js +0 -6
- package/src/values.config.forms.js +0 -6
- package/src/values.config.js +0 -6
package/dist/index.cjs.js
CHANGED
|
@@ -112,13 +112,7 @@ const values = {
|
|
|
112
112
|
hasHelpButton: true,
|
|
113
113
|
helpGuideURL: 'https://www.plusscommunities.com/forms-feature',
|
|
114
114
|
stringConfigJobStatus: 'maintenanceJobStatusForms',
|
|
115
|
-
stringConfigHideSeen: 'maintenanceDisableSeenForms'
|
|
116
|
-
// Comment subscription notification preference
|
|
117
|
-
notificationPreference: {
|
|
118
|
-
key: 'maintenancerequestFormsComments',
|
|
119
|
-
label: 'Forms comments',
|
|
120
|
-
permission: 'maintenanceTrackingForms'
|
|
121
|
-
}
|
|
115
|
+
stringConfigHideSeen: 'maintenanceDisableSeenForms'
|
|
122
116
|
};
|
|
123
117
|
|
|
124
118
|
// import * as PlussCore from '../../pluss-core/src';
|
|
@@ -241,8 +235,7 @@ const FeatureConfig = {
|
|
|
241
235
|
init: environment => {
|
|
242
236
|
FeatureConfig.env = environment;
|
|
243
237
|
PlussCore__namespace.Config.init(environment);
|
|
244
|
-
}
|
|
245
|
-
notificationPreference: values.notificationPreference
|
|
238
|
+
}
|
|
246
239
|
};
|
|
247
240
|
|
|
248
241
|
const JOBS_LOADED = values.actionJobsLoaded;
|
|
@@ -255,12 +248,12 @@ const JOBS_HIDE_SEEN = values.actionJobsHideSeen;
|
|
|
255
248
|
function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
256
249
|
function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
257
250
|
const {
|
|
258
|
-
Helper: Helper$
|
|
251
|
+
Helper: Helper$6,
|
|
259
252
|
Session: Session$9
|
|
260
253
|
} = PlussCore__namespace;
|
|
261
254
|
const maintenanceActions = {
|
|
262
255
|
getJobType: (site, typeId) => {
|
|
263
|
-
let url = Helper$
|
|
256
|
+
let url = Helper$6.getUrl(values.serviceKey, 'getjobtype');
|
|
264
257
|
return Session$9.authedFunction({
|
|
265
258
|
method: 'POST',
|
|
266
259
|
url,
|
|
@@ -271,7 +264,7 @@ const maintenanceActions = {
|
|
|
271
264
|
});
|
|
272
265
|
},
|
|
273
266
|
getJobTypes: (site, id) => {
|
|
274
|
-
let url = Helper$
|
|
267
|
+
let url = Helper$6.getUrl(values.serviceKey, 'getjobtypes');
|
|
275
268
|
return Session$9.authedFunction({
|
|
276
269
|
method: 'POST',
|
|
277
270
|
url,
|
|
@@ -281,7 +274,7 @@ const maintenanceActions = {
|
|
|
281
274
|
});
|
|
282
275
|
},
|
|
283
276
|
getJob: (site, id) => {
|
|
284
|
-
let url = Helper$
|
|
277
|
+
let url = Helper$6.getUrl(values.serviceKey, 'getJob');
|
|
285
278
|
return Session$9.authedFunction({
|
|
286
279
|
method: 'POST',
|
|
287
280
|
url,
|
|
@@ -292,7 +285,7 @@ const maintenanceActions = {
|
|
|
292
285
|
});
|
|
293
286
|
},
|
|
294
287
|
getJobByJobId: (site, jobId) => {
|
|
295
|
-
let url = Helper$
|
|
288
|
+
let url = Helper$6.getUrl(values.serviceKey, 'getJob');
|
|
296
289
|
return Session$9.authedFunction({
|
|
297
290
|
method: 'POST',
|
|
298
291
|
url,
|
|
@@ -307,7 +300,7 @@ const maintenanceActions = {
|
|
|
307
300
|
let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
308
301
|
return Session$9.authedFunction({
|
|
309
302
|
method: 'POST',
|
|
310
|
-
url: Helper$
|
|
303
|
+
url: Helper$6.getUrl(values.serviceKey, 'getJobs'),
|
|
311
304
|
data: {
|
|
312
305
|
site,
|
|
313
306
|
status,
|
|
@@ -330,7 +323,7 @@ const maintenanceActions = {
|
|
|
330
323
|
}
|
|
331
324
|
return Session$9.authedFunction({
|
|
332
325
|
method: 'GET',
|
|
333
|
-
url: Helper$
|
|
326
|
+
url: Helper$6.getUrl(values.serviceKey, 'get/requests', query)
|
|
334
327
|
});
|
|
335
328
|
},
|
|
336
329
|
getJobsRecursive: function (site, status, type, lastKey) {
|
|
@@ -348,14 +341,14 @@ const maintenanceActions = {
|
|
|
348
341
|
createJob: job => {
|
|
349
342
|
return Session$9.authedFunction({
|
|
350
343
|
method: 'POST',
|
|
351
|
-
url: Helper$
|
|
344
|
+
url: Helper$6.getUrl(values.serviceKey, 'sendMaintenance'),
|
|
352
345
|
data: _objectSpread$7({}, job)
|
|
353
346
|
});
|
|
354
347
|
},
|
|
355
348
|
editJob: (job, site) => {
|
|
356
349
|
return Session$9.authedFunction({
|
|
357
350
|
method: 'POST',
|
|
358
|
-
url: Helper$
|
|
351
|
+
url: Helper$6.getUrl(values.serviceKey, 'editJob'),
|
|
359
352
|
data: {
|
|
360
353
|
job,
|
|
361
354
|
site
|
|
@@ -365,7 +358,7 @@ const maintenanceActions = {
|
|
|
365
358
|
deleteJob: (site, id) => {
|
|
366
359
|
return Session$9.authedFunction({
|
|
367
360
|
method: 'POST',
|
|
368
|
-
url: Helper$
|
|
361
|
+
url: Helper$6.getUrl(values.serviceKey, 'requests/remove'),
|
|
369
362
|
data: {
|
|
370
363
|
site,
|
|
371
364
|
id
|
|
@@ -375,7 +368,7 @@ const maintenanceActions = {
|
|
|
375
368
|
editJobStatus: (id, status) => {
|
|
376
369
|
return Session$9.authedFunction({
|
|
377
370
|
method: 'POST',
|
|
378
|
-
url: Helper$
|
|
371
|
+
url: Helper$6.getUrl(values.serviceKey, 'editJobStatus'),
|
|
379
372
|
data: {
|
|
380
373
|
id,
|
|
381
374
|
status
|
|
@@ -385,7 +378,7 @@ const maintenanceActions = {
|
|
|
385
378
|
editJobPriority: (id, priority) => {
|
|
386
379
|
return Session$9.authedFunction({
|
|
387
380
|
method: 'POST',
|
|
388
|
-
url: Helper$
|
|
381
|
+
url: Helper$6.getUrl(values.serviceKey, 'update/priority'),
|
|
389
382
|
data: {
|
|
390
383
|
id,
|
|
391
384
|
priority
|
|
@@ -395,7 +388,7 @@ const maintenanceActions = {
|
|
|
395
388
|
assignJob: (jobId, userId) => {
|
|
396
389
|
return Session$9.authedFunction({
|
|
397
390
|
method: 'POST',
|
|
398
|
-
url: Helper$
|
|
391
|
+
url: Helper$6.getUrl(values.serviceKey, 'update/assign'),
|
|
399
392
|
data: {
|
|
400
393
|
id: jobId,
|
|
401
394
|
userId
|
|
@@ -405,7 +398,7 @@ const maintenanceActions = {
|
|
|
405
398
|
getAssignees: site => {
|
|
406
399
|
return Session$9.authedFunction({
|
|
407
400
|
method: 'GET',
|
|
408
|
-
url: Helper$
|
|
401
|
+
url: Helper$6.getUrl(values.serviceKey, 'get/assignees', {
|
|
409
402
|
site
|
|
410
403
|
})
|
|
411
404
|
});
|
|
@@ -413,7 +406,7 @@ const maintenanceActions = {
|
|
|
413
406
|
addNote: (jobId, note, attachments, images) => {
|
|
414
407
|
return Session$9.authedFunction({
|
|
415
408
|
method: 'POST',
|
|
416
|
-
url: Helper$
|
|
409
|
+
url: Helper$6.getUrl(values.serviceKey, 'requests/note'),
|
|
417
410
|
data: {
|
|
418
411
|
id: jobId,
|
|
419
412
|
note,
|
|
@@ -426,7 +419,7 @@ const maintenanceActions = {
|
|
|
426
419
|
editNote: (jobId, noteId, note, attachments, images) => {
|
|
427
420
|
return Session$9.authedFunction({
|
|
428
421
|
method: 'POST',
|
|
429
|
-
url: Helper$
|
|
422
|
+
url: Helper$6.getUrl(values.serviceKey, 'requests/note'),
|
|
430
423
|
data: {
|
|
431
424
|
id: jobId,
|
|
432
425
|
note,
|
|
@@ -440,7 +433,7 @@ const maintenanceActions = {
|
|
|
440
433
|
deleteNote: (jobId, noteId) => {
|
|
441
434
|
return Session$9.authedFunction({
|
|
442
435
|
method: 'POST',
|
|
443
|
-
url: Helper$
|
|
436
|
+
url: Helper$6.getUrl(values.serviceKey, 'requests/note'),
|
|
444
437
|
data: {
|
|
445
438
|
id: jobId,
|
|
446
439
|
noteId,
|
|
@@ -460,7 +453,7 @@ const maintenanceActions = {
|
|
|
460
453
|
};
|
|
461
454
|
return Session$9.authedFunction({
|
|
462
455
|
method: 'POST',
|
|
463
|
-
url: Helper$
|
|
456
|
+
url: Helper$6.getUrl(values.serviceKey, 'createJobType'),
|
|
464
457
|
data
|
|
465
458
|
});
|
|
466
459
|
},
|
|
@@ -478,14 +471,14 @@ const maintenanceActions = {
|
|
|
478
471
|
if (hasCustomFields && customFields) data.customFields = customFields;
|
|
479
472
|
return Session$9.authedFunction({
|
|
480
473
|
method: 'POST',
|
|
481
|
-
url: Helper$
|
|
474
|
+
url: Helper$6.getUrl(values.serviceKey, 'editJobType'),
|
|
482
475
|
data
|
|
483
476
|
});
|
|
484
477
|
},
|
|
485
478
|
deleteJobType: (site, id) => {
|
|
486
479
|
return Session$9.authedFunction({
|
|
487
480
|
method: 'POST',
|
|
488
|
-
url: Helper$
|
|
481
|
+
url: Helper$6.getUrl(values.serviceKey, 'deleteJobType'),
|
|
489
482
|
data: {
|
|
490
483
|
site,
|
|
491
484
|
id
|
|
@@ -495,7 +488,7 @@ const maintenanceActions = {
|
|
|
495
488
|
getExternalSync: jobId => {
|
|
496
489
|
return Session$9.authedFunction({
|
|
497
490
|
method: 'GET',
|
|
498
|
-
url: Helper$
|
|
491
|
+
url: Helper$6.getUrl(values.serviceKey, 'get/externalsync', {
|
|
499
492
|
id: jobId
|
|
500
493
|
})
|
|
501
494
|
});
|
|
@@ -503,7 +496,7 @@ const maintenanceActions = {
|
|
|
503
496
|
retrySync: jobId => {
|
|
504
497
|
return Session$9.authedFunction({
|
|
505
498
|
method: 'POST',
|
|
506
|
-
url: Helper$
|
|
499
|
+
url: Helper$6.getUrl(values.serviceKey, 'update/retrysync'),
|
|
507
500
|
data: {
|
|
508
501
|
id: jobId
|
|
509
502
|
}
|
|
@@ -512,7 +505,7 @@ const maintenanceActions = {
|
|
|
512
505
|
};
|
|
513
506
|
|
|
514
507
|
const {
|
|
515
|
-
Helper: Helper$
|
|
508
|
+
Helper: Helper$5,
|
|
516
509
|
Session: Session$8
|
|
517
510
|
} = PlussCore__namespace;
|
|
518
511
|
const reactionActions = {
|
|
@@ -530,7 +523,7 @@ const reactionActions = {
|
|
|
530
523
|
}
|
|
531
524
|
return Session$8.authedFunction({
|
|
532
525
|
method: 'POST',
|
|
533
|
-
url: Helper$
|
|
526
|
+
url: Helper$5.getUrl('reactions', 'comments/add'),
|
|
534
527
|
data
|
|
535
528
|
});
|
|
536
529
|
},
|
|
@@ -553,7 +546,7 @@ const reactionActions = {
|
|
|
553
546
|
}
|
|
554
547
|
return Session$8.authedFunction({
|
|
555
548
|
method: 'GET',
|
|
556
|
-
url: Helper$
|
|
549
|
+
url: Helper$5.getUrl('reactions', 'comments/get', query)
|
|
557
550
|
});
|
|
558
551
|
}
|
|
559
552
|
};
|
|
@@ -587,7 +580,7 @@ var jobStatusOptions = [
|
|
|
587
580
|
];
|
|
588
581
|
|
|
589
582
|
const {
|
|
590
|
-
Helper: Helper$
|
|
583
|
+
Helper: Helper$4
|
|
591
584
|
} = PlussCore__namespace;
|
|
592
585
|
const jobsUpdate = (site, isdashboard) => {
|
|
593
586
|
return dispatch => {
|
|
@@ -595,7 +588,7 @@ const jobsUpdate = (site, isdashboard) => {
|
|
|
595
588
|
type: JOBS_LOADING
|
|
596
589
|
});
|
|
597
590
|
maintenanceActions.getJobsRecursive(site).then(res => {
|
|
598
|
-
const currentSite = Helper$
|
|
591
|
+
const currentSite = Helper$4.readStorageWithCookie('site');
|
|
599
592
|
if (!___default["default"].isEmpty(res) && res[0].site === currentSite) {
|
|
600
593
|
dispatch({
|
|
601
594
|
type: JOBS_LOADED,
|
|
@@ -2732,7 +2725,7 @@ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymb
|
|
|
2732
2725
|
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2733
2726
|
const {
|
|
2734
2727
|
Apis: Apis$1,
|
|
2735
|
-
Helper: Helper$
|
|
2728
|
+
Helper: Helper$3,
|
|
2736
2729
|
Session: Session$3,
|
|
2737
2730
|
Colours: Colours$1,
|
|
2738
2731
|
Components: Components$3
|
|
@@ -3134,7 +3127,7 @@ class Job extends React.Component {
|
|
|
3134
3127
|
}
|
|
3135
3128
|
});
|
|
3136
3129
|
this.state = {
|
|
3137
|
-
jobId: Helper$
|
|
3130
|
+
jobId: Helper$3.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
|
|
3138
3131
|
job: null,
|
|
3139
3132
|
showingSelector: false,
|
|
3140
3133
|
updating: false,
|
|
@@ -3337,7 +3330,7 @@ class Job extends React.Component {
|
|
|
3337
3330
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3338
3331
|
className: "imageGrid_image",
|
|
3339
3332
|
style: {
|
|
3340
|
-
backgroundImage: "url('".concat(Helper$
|
|
3333
|
+
backgroundImage: "url('".concat(Helper$3.get1400(image), "')"),
|
|
3341
3334
|
width: size,
|
|
3342
3335
|
height: size
|
|
3343
3336
|
}
|
|
@@ -3552,7 +3545,7 @@ class Job extends React.Component {
|
|
|
3552
3545
|
}]
|
|
3553
3546
|
})), /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3554
3547
|
className: "maintenanceNote_text"
|
|
3555
|
-
}, Helper$
|
|
3548
|
+
}, Helper$3.toParagraphed(note.Note)), note.Attachments.map((a, i) => this.renderAttachment(a, i)), note.Images && note.Images.length > 0 ? this.renderImageGrid(note.Images, IMAGE_SIZE_NOTE) : null));
|
|
3556
3549
|
}
|
|
3557
3550
|
renderAssignment() {
|
|
3558
3551
|
const {
|
|
@@ -3986,7 +3979,7 @@ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t
|
|
|
3986
3979
|
const {
|
|
3987
3980
|
Actions,
|
|
3988
3981
|
Components: Components$2,
|
|
3989
|
-
Helper: Helper$
|
|
3982
|
+
Helper: Helper$2,
|
|
3990
3983
|
Session: Session$2,
|
|
3991
3984
|
Colours,
|
|
3992
3985
|
Apis
|
|
@@ -4344,7 +4337,7 @@ class AddJob extends React.Component {
|
|
|
4344
4337
|
if (___default["default"].isNil(answer) || ___default["default"].isEmpty(answer)) return true;
|
|
4345
4338
|
switch (type) {
|
|
4346
4339
|
case "email":
|
|
4347
|
-
return Helper$
|
|
4340
|
+
return Helper$2.isEmail(answer);
|
|
4348
4341
|
case "date":
|
|
4349
4342
|
return moment__default["default"](answer, "YYYY-MM-DD", true).isValid();
|
|
4350
4343
|
case "time":
|
|
@@ -4365,7 +4358,7 @@ class AddJob extends React.Component {
|
|
|
4365
4358
|
this.customImageInputs = {};
|
|
4366
4359
|
this.customDocumentInputs = {};
|
|
4367
4360
|
this.state = {
|
|
4368
|
-
jobId: Helper$
|
|
4361
|
+
jobId: Helper$2.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
|
|
4369
4362
|
job: null,
|
|
4370
4363
|
showingSelector: false,
|
|
4371
4364
|
updating: false,
|
|
@@ -4717,7 +4710,7 @@ class AddJob extends React.Component {
|
|
|
4717
4710
|
return /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4718
4711
|
className: "visitorSignIn_text-staticText",
|
|
4719
4712
|
key: fieldId
|
|
4720
|
-
}, Helper$
|
|
4713
|
+
}, Helper$2.toParagraphed(field.label, {
|
|
4721
4714
|
marginTop: 10
|
|
4722
4715
|
}));
|
|
4723
4716
|
case "date":
|
|
@@ -4972,7 +4965,7 @@ const mapStateToProps$2 = state => {
|
|
|
4972
4965
|
return {
|
|
4973
4966
|
auth,
|
|
4974
4967
|
strings: state.strings && state.strings.config || {},
|
|
4975
|
-
optionOnlyForResidents: Helper$
|
|
4968
|
+
optionOnlyForResidents: Helper$2.getSiteSettingFromState(state, values.optionOnlyForResidents)
|
|
4976
4969
|
};
|
|
4977
4970
|
};
|
|
4978
4971
|
var AddJob$1 = reactRedux.connect(mapStateToProps$2, {
|
|
@@ -4984,7 +4977,7 @@ var AddJob$1 = reactRedux.connect(mapStateToProps$2, {
|
|
|
4984
4977
|
const {
|
|
4985
4978
|
Components: Components$1,
|
|
4986
4979
|
Session: Session$1,
|
|
4987
|
-
Helper
|
|
4980
|
+
Helper: Helper$1
|
|
4988
4981
|
} = PlussCore__namespace;
|
|
4989
4982
|
const DEFAULT_FIELD = {
|
|
4990
4983
|
type: 'text',
|
|
@@ -5027,7 +5020,7 @@ class AddJobType extends React.Component {
|
|
|
5027
5020
|
const {
|
|
5028
5021
|
jobTypeEmail
|
|
5029
5022
|
} = this.state;
|
|
5030
|
-
return !___default["default"].isEmpty(jobTypeEmail) && Helper.isEmail(jobTypeEmail);
|
|
5023
|
+
return !___default["default"].isEmpty(jobTypeEmail) && Helper$1.isEmail(jobTypeEmail);
|
|
5031
5024
|
});
|
|
5032
5025
|
_defineProperty__default["default"](this, "isJobTypeValid", () => {
|
|
5033
5026
|
const {
|
|
@@ -5229,7 +5222,7 @@ class AddJobType extends React.Component {
|
|
|
5229
5222
|
}];
|
|
5230
5223
|
this.state = {
|
|
5231
5224
|
loading: false,
|
|
5232
|
-
jobTypeId: Helper.safeReadParams(this.props, 'jobTypeId') ? this.props.match.params.jobTypeId : null,
|
|
5225
|
+
jobTypeId: Helper$1.safeReadParams(this.props, 'jobTypeId') ? this.props.match.params.jobTypeId : null,
|
|
5233
5226
|
jobTypeName: '',
|
|
5234
5227
|
jobTypeEmail: '',
|
|
5235
5228
|
jobTypeDescription: '',
|
|
@@ -5781,7 +5774,8 @@ var AddJobType$1 = reactRedux.connect(mapStateToProps$1, {
|
|
|
5781
5774
|
const {
|
|
5782
5775
|
Analytics: Analytics$1,
|
|
5783
5776
|
Session,
|
|
5784
|
-
Components
|
|
5777
|
+
Components,
|
|
5778
|
+
Helper
|
|
5785
5779
|
} = PlussCore__namespace;
|
|
5786
5780
|
const getInitialState = () => ({
|
|
5787
5781
|
requests: 0,
|
|
@@ -5801,10 +5795,21 @@ const AnalyticsHub = _ref => {
|
|
|
5801
5795
|
auth,
|
|
5802
5796
|
prevText,
|
|
5803
5797
|
dayCount,
|
|
5804
|
-
strings
|
|
5798
|
+
strings,
|
|
5799
|
+
userType,
|
|
5800
|
+
userCategory,
|
|
5801
|
+
selectedSites
|
|
5805
5802
|
} = _ref;
|
|
5806
5803
|
const [analyticsData, setAnalyticsData] = React.useState(getInitialState());
|
|
5807
5804
|
const [isExportOpen, setIsExportOpen] = React.useState(false);
|
|
5805
|
+
const [failedSites, setFailedSites] = React.useState([]);
|
|
5806
|
+
const [comparisonData, setComparisonData] = React.useState({
|
|
5807
|
+
requests: [],
|
|
5808
|
+
completedRequests: [],
|
|
5809
|
+
comments: [],
|
|
5810
|
+
isLoading: true
|
|
5811
|
+
});
|
|
5812
|
+
const comparisonMode = selectedSites && selectedSites.length > 1;
|
|
5808
5813
|
const hasAccess = Session.validateAccess(auth.site, values.permissionMaintenanceTracking, auth);
|
|
5809
5814
|
if (!hasAccess) {
|
|
5810
5815
|
return null;
|
|
@@ -5816,50 +5821,120 @@ const AnalyticsHub = _ref => {
|
|
|
5816
5821
|
return strings.sideNav[key];
|
|
5817
5822
|
})();
|
|
5818
5823
|
const exportColumns = [{
|
|
5819
|
-
label:
|
|
5820
|
-
key:
|
|
5821
|
-
}, {
|
|
5822
|
-
label:
|
|
5823
|
-
key:
|
|
5824
|
+
label: "Select All",
|
|
5825
|
+
key: ""
|
|
5826
|
+
}, ...(comparisonMode ? [{
|
|
5827
|
+
label: "Site",
|
|
5828
|
+
key: "site"
|
|
5829
|
+
}] : []), {
|
|
5830
|
+
label: "Start Date",
|
|
5831
|
+
key: "startDate"
|
|
5824
5832
|
}, {
|
|
5825
|
-
label:
|
|
5826
|
-
key:
|
|
5833
|
+
label: "End Date",
|
|
5834
|
+
key: "endDate"
|
|
5827
5835
|
}, {
|
|
5828
5836
|
label: "".concat(values.textSingularName, "s"),
|
|
5829
|
-
key:
|
|
5837
|
+
key: "requests"
|
|
5830
5838
|
}, {
|
|
5831
5839
|
label: "Completed ".concat(values.textSingularName, "s"),
|
|
5832
|
-
key:
|
|
5840
|
+
key: "completedRequests"
|
|
5833
5841
|
}, {
|
|
5834
|
-
label:
|
|
5835
|
-
key:
|
|
5842
|
+
label: "Comments",
|
|
5843
|
+
key: "comments"
|
|
5836
5844
|
}];
|
|
5837
5845
|
React.useEffect(() => {
|
|
5838
5846
|
getData();
|
|
5839
|
-
}, [startTime, endTime]);
|
|
5847
|
+
}, [startTime, endTime, userType, userCategory, selectedSites]);
|
|
5840
5848
|
const getData = async () => {
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5849
|
+
if (comparisonMode) {
|
|
5850
|
+
setComparisonData({
|
|
5851
|
+
requests: [],
|
|
5852
|
+
completedRequests: [],
|
|
5853
|
+
comments: [],
|
|
5854
|
+
isLoading: true
|
|
5855
|
+
});
|
|
5856
|
+
const multiSiteResultsObj = await Analytics$1.fetchMultiSiteData(selectedSites, async site => {
|
|
5857
|
+
const {
|
|
5858
|
+
data
|
|
5859
|
+
} = await analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime, endTime, true, {
|
|
5860
|
+
userType,
|
|
5861
|
+
userCategory
|
|
5862
|
+
});
|
|
5863
|
+
return data;
|
|
5864
|
+
});
|
|
5865
|
+
const roles = auth.user.Roles;
|
|
5866
|
+
const failed = Object.entries(multiSiteResultsObj).filter(_ref2 => {
|
|
5867
|
+
let [, data] = _ref2;
|
|
5868
|
+
return data === null;
|
|
5869
|
+
}).map(_ref3 => {
|
|
5870
|
+
let [site] = _ref3;
|
|
5871
|
+
return Helper.getSiteNameFromRoles(site, roles);
|
|
5872
|
+
});
|
|
5873
|
+
setFailedSites(failed);
|
|
5874
|
+
const multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref4 => {
|
|
5875
|
+
let [, data] = _ref4;
|
|
5876
|
+
return data !== null;
|
|
5877
|
+
}).map(_ref5 => {
|
|
5878
|
+
let [site, data] = _ref5;
|
|
5879
|
+
return {
|
|
5880
|
+
site,
|
|
5881
|
+
data
|
|
5882
|
+
};
|
|
5883
|
+
});
|
|
5884
|
+
const buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
|
|
5885
|
+
name: Helper.getSiteNameFromRoles(result.site, roles),
|
|
5886
|
+
value: Analytics$1.countActivities(result.data, activityKey, countType)
|
|
5887
|
+
}));
|
|
5888
|
+
setComparisonData({
|
|
5889
|
+
requests: buildComparison("Request", "total"),
|
|
5890
|
+
completedRequests: buildComparison("RequestCompleted", "unique"),
|
|
5891
|
+
comments: buildComparison("Comment", "total"),
|
|
5892
|
+
isLoading: false
|
|
5893
|
+
});
|
|
5894
|
+
} else {
|
|
5895
|
+
setAnalyticsData(getInitialState());
|
|
5896
|
+
const site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
|
|
5897
|
+
const timeDifference = endTime - startTime;
|
|
5898
|
+
const [currentStatsResponse, prevStatsResponse] = await Promise.all([analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime, endTime, true, {
|
|
5899
|
+
userType,
|
|
5900
|
+
userCategory
|
|
5901
|
+
}), analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime - timeDifference, startTime, true, {
|
|
5902
|
+
userType,
|
|
5903
|
+
userCategory
|
|
5904
|
+
})]);
|
|
5905
|
+
const data = {
|
|
5906
|
+
requests: Analytics$1.countActivities(currentStatsResponse.data, "Request", "total"),
|
|
5907
|
+
prevRequests: Analytics$1.countActivities(prevStatsResponse.data, "Request", "total"),
|
|
5908
|
+
completedRequests: Analytics$1.countActivities(currentStatsResponse.data, "RequestCompleted", "unique"),
|
|
5909
|
+
prevCompletedRequests: Analytics$1.countActivities(prevStatsResponse.data, "RequestCompleted", "unique"),
|
|
5910
|
+
comments: Analytics$1.countActivities(currentStatsResponse.data, "Comment", "total"),
|
|
5911
|
+
prevComments: Analytics$1.countActivities(prevStatsResponse.data, "Comment", "total"),
|
|
5912
|
+
isLoading: false
|
|
5913
|
+
};
|
|
5914
|
+
setAnalyticsData(data);
|
|
5915
|
+
}
|
|
5855
5916
|
};
|
|
5856
5917
|
const isReadyToOpenCSV = () => {
|
|
5857
|
-
return !analyticsData.isLoading;
|
|
5918
|
+
return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
|
|
5858
5919
|
};
|
|
5859
5920
|
const getExportSource = () => {
|
|
5921
|
+
if (comparisonMode) {
|
|
5922
|
+
const sites = comparisonData.requests || [];
|
|
5923
|
+
return sites.map((site, i) => {
|
|
5924
|
+
var _comparisonData$compl, _comparisonData$comme;
|
|
5925
|
+
return {
|
|
5926
|
+
site: site.name,
|
|
5927
|
+
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5928
|
+
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
5929
|
+
requests: site.value,
|
|
5930
|
+
completedRequests: ((_comparisonData$compl = comparisonData.completedRequests[i]) === null || _comparisonData$compl === void 0 ? void 0 : _comparisonData$compl.value) || 0,
|
|
5931
|
+
comments: ((_comparisonData$comme = comparisonData.comments[i]) === null || _comparisonData$comme === void 0 ? void 0 : _comparisonData$comme.value) || 0
|
|
5932
|
+
};
|
|
5933
|
+
});
|
|
5934
|
+
}
|
|
5860
5935
|
return [{
|
|
5861
|
-
startDate: moment__default["default"](startTime + 1).format(
|
|
5862
|
-
endDate: moment__default["default"](endTime).format(
|
|
5936
|
+
startDate: moment__default["default"](startTime + 1).format("D-MM-YYYY"),
|
|
5937
|
+
endDate: moment__default["default"](endTime).format("D-MM-YYYY"),
|
|
5863
5938
|
requests: analyticsData.requests,
|
|
5864
5939
|
completedRequests: analyticsData.completedRequests,
|
|
5865
5940
|
comments: analyticsData.comments
|
|
@@ -5870,13 +5945,14 @@ const AnalyticsHub = _ref => {
|
|
|
5870
5945
|
return null;
|
|
5871
5946
|
}
|
|
5872
5947
|
const source = getExportSource();
|
|
5948
|
+
const filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, '-')).join('_');
|
|
5873
5949
|
return /*#__PURE__*/React__default["default"].createElement(Components.ExportCsvPopup, {
|
|
5874
5950
|
onClose: () => {
|
|
5875
5951
|
setIsExportOpen(false);
|
|
5876
5952
|
},
|
|
5877
5953
|
columns: exportColumns,
|
|
5878
5954
|
source: source,
|
|
5879
|
-
filename: "".concat(values.analyticsKey, "
|
|
5955
|
+
filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? '_comparison' : '').concat(filterSuffix ? "_".concat(filterSuffix) : '', "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
|
|
5880
5956
|
});
|
|
5881
5957
|
};
|
|
5882
5958
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -5893,33 +5969,68 @@ const AnalyticsHub = _ref => {
|
|
|
5893
5969
|
},
|
|
5894
5970
|
isActive: isReadyToOpenCSV(),
|
|
5895
5971
|
leftIcon: "file-code-o"
|
|
5896
|
-
}, "Export CSV")), /*#__PURE__*/React__default["default"].createElement(
|
|
5972
|
+
}, "Export CSV")), failedSites.length > 0 && /*#__PURE__*/React__default["default"].createElement(Components.Text, {
|
|
5973
|
+
type: "help",
|
|
5974
|
+
style: {
|
|
5975
|
+
color: '#c02743'
|
|
5976
|
+
}
|
|
5977
|
+
}, "Data unavailable for: ", failedSites.join(', ')), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
5897
5978
|
className: "analyticsSection dashboardSection_content"
|
|
5898
|
-
},
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
5916
|
-
|
|
5917
|
-
|
|
5918
|
-
|
|
5919
|
-
|
|
5920
|
-
|
|
5921
|
-
|
|
5922
|
-
|
|
5979
|
+
}, (() => {
|
|
5980
|
+
const chartSuffix = [selectedSites && selectedSites.length > 0 ? "&sites=".concat(selectedSites.join(",")) : "", userType ? "&userType=".concat(encodeURIComponent(userType)) : "", userCategory ? "&userCategory=".concat(encodeURIComponent(userCategory)) : ""].join("");
|
|
5981
|
+
if (comparisonMode) {
|
|
5982
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
5983
|
+
style: {
|
|
5984
|
+
display: "flex",
|
|
5985
|
+
flexDirection: "column",
|
|
5986
|
+
gap: 16
|
|
5987
|
+
}
|
|
5988
|
+
}, /*#__PURE__*/React__default["default"].createElement(Components.ComparisonStatBox, {
|
|
5989
|
+
title: "".concat(featureTitle, " Requests"),
|
|
5990
|
+
data: comparisonData.requests,
|
|
5991
|
+
prevText: prevText,
|
|
5992
|
+
viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
|
|
5993
|
+
isLoading: comparisonData.isLoading
|
|
5994
|
+
}), /*#__PURE__*/React__default["default"].createElement(Components.ComparisonStatBox, {
|
|
5995
|
+
title: "Completed ".concat(featureTitle, " Requests"),
|
|
5996
|
+
data: comparisonData.completedRequests,
|
|
5997
|
+
prevText: prevText,
|
|
5998
|
+
viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount).concat(chartSuffix),
|
|
5999
|
+
isLoading: comparisonData.isLoading
|
|
6000
|
+
}), /*#__PURE__*/React__default["default"].createElement(Components.ComparisonStatBox, {
|
|
6001
|
+
title: "".concat(featureTitle, " Comments"),
|
|
6002
|
+
data: comparisonData.comments,
|
|
6003
|
+
prevText: prevText,
|
|
6004
|
+
viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
|
|
6005
|
+
isLoading: comparisonData.isLoading
|
|
6006
|
+
}));
|
|
6007
|
+
}
|
|
6008
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Components.StatBox, {
|
|
6009
|
+
title: "".concat(featureTitle, " Requests"),
|
|
6010
|
+
icon: freeSolidSvgIcons.faWrench,
|
|
6011
|
+
value: analyticsData.requests,
|
|
6012
|
+
previousValue: analyticsData.prevRequests,
|
|
6013
|
+
prevText: prevText,
|
|
6014
|
+
viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
|
|
6015
|
+
isLoading: analyticsData.isLoading
|
|
6016
|
+
}), /*#__PURE__*/React__default["default"].createElement(Components.StatBox, {
|
|
6017
|
+
title: "Completed ".concat(featureTitle, " Requests"),
|
|
6018
|
+
icon: freeSolidSvgIcons.faCircleCheck,
|
|
6019
|
+
value: analyticsData.completedRequests,
|
|
6020
|
+
previousValue: analyticsData.prevCompletedRequests,
|
|
6021
|
+
prevText: prevText,
|
|
6022
|
+
viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount).concat(chartSuffix),
|
|
6023
|
+
isLoading: analyticsData.isLoading
|
|
6024
|
+
}), /*#__PURE__*/React__default["default"].createElement(Components.StatBox, {
|
|
6025
|
+
title: "".concat(featureTitle, " Comments"),
|
|
6026
|
+
icon: freeSolidSvgIcons.faComment,
|
|
6027
|
+
value: analyticsData.comments,
|
|
6028
|
+
previousValue: analyticsData.prevComments,
|
|
6029
|
+
prevText: prevText,
|
|
6030
|
+
viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
|
|
6031
|
+
isLoading: analyticsData.isLoading
|
|
6032
|
+
}));
|
|
6033
|
+
})()));
|
|
5923
6034
|
};
|
|
5924
6035
|
const mapStateToProps = state => {
|
|
5925
6036
|
const {
|