@plusscommunities/pluss-maintenance-web 1.1.32 → 1.1.33
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 +186 -186
- package/dist/index.esm.js +186 -186
- package/dist/index.umd.js +186 -186
- package/package.json +1 -1
- package/src/screens/AddJob.js +1126 -970
- package/src/screens/Job.js +1521 -1261
package/dist/index.cjs.js
CHANGED
|
@@ -2749,7 +2749,7 @@ class Job extends React.Component {
|
|
|
2749
2749
|
res.data.location = res.data.site;
|
|
2750
2750
|
this.setJob(res.data);
|
|
2751
2751
|
} catch (error) {
|
|
2752
|
-
console.error(
|
|
2752
|
+
console.error("getJob", error);
|
|
2753
2753
|
}
|
|
2754
2754
|
});
|
|
2755
2755
|
_defineProperty__default["default"](this, "getAssignees", async () => {
|
|
@@ -2759,7 +2759,7 @@ class Job extends React.Component {
|
|
|
2759
2759
|
assignees: res.data.Users
|
|
2760
2760
|
});
|
|
2761
2761
|
} catch (error) {
|
|
2762
|
-
console.error(
|
|
2762
|
+
console.error("getAssignees", error);
|
|
2763
2763
|
}
|
|
2764
2764
|
});
|
|
2765
2765
|
_defineProperty__default["default"](this, "getExternalSync", async () => {
|
|
@@ -2775,7 +2775,7 @@ class Job extends React.Component {
|
|
|
2775
2775
|
} catch (error) {
|
|
2776
2776
|
// 404 is expected if no sync - don't show error
|
|
2777
2777
|
if (error && error.response && error.response.status !== 404) {
|
|
2778
|
-
console.error(
|
|
2778
|
+
console.error("getExternalSync", error);
|
|
2779
2779
|
}
|
|
2780
2780
|
this.setState({
|
|
2781
2781
|
loadingExternalSync: false
|
|
@@ -2800,8 +2800,8 @@ class Job extends React.Component {
|
|
|
2800
2800
|
retrySyncInitiated: true
|
|
2801
2801
|
});
|
|
2802
2802
|
} catch (error) {
|
|
2803
|
-
console.error(
|
|
2804
|
-
const errorMessage = error && error.response && error.response.data && error.response.data.error ||
|
|
2803
|
+
console.error("onRetrySync", error);
|
|
2804
|
+
const errorMessage = error && error.response && error.response.data && error.response.data.error || "Failed to retry sync. Please try again.";
|
|
2805
2805
|
this.setState({
|
|
2806
2806
|
retryingSync: false,
|
|
2807
2807
|
retrySyncError: errorMessage
|
|
@@ -2823,16 +2823,16 @@ class Job extends React.Component {
|
|
|
2823
2823
|
});
|
|
2824
2824
|
_defineProperty__default["default"](this, "setJob", job => {
|
|
2825
2825
|
if (___default["default"].isEmpty(job.lastActivity)) {
|
|
2826
|
-
job.lastActivity =
|
|
2826
|
+
job.lastActivity = "-- --";
|
|
2827
2827
|
job.noActivity = true;
|
|
2828
2828
|
}
|
|
2829
2829
|
if (___default["default"].isEmpty(job.status)) {
|
|
2830
|
-
job.status =
|
|
2830
|
+
job.status = "Unassigned";
|
|
2831
2831
|
job.notStatus = true;
|
|
2832
2832
|
}
|
|
2833
2833
|
if (___default["default"].isEmpty(job.audience)) {
|
|
2834
2834
|
job.audience = [{
|
|
2835
|
-
displayName:
|
|
2835
|
+
displayName: "Unassigned",
|
|
2836
2836
|
isEmpty: true
|
|
2837
2837
|
}];
|
|
2838
2838
|
}
|
|
@@ -2870,7 +2870,7 @@ class Job extends React.Component {
|
|
|
2870
2870
|
editingNote: null
|
|
2871
2871
|
};
|
|
2872
2872
|
if (!!this.state.editingNote) {
|
|
2873
|
-
newState.noteInput =
|
|
2873
|
+
newState.noteInput = "";
|
|
2874
2874
|
newState.noteAttachments = [];
|
|
2875
2875
|
newState.noteImages = [];
|
|
2876
2876
|
}
|
|
@@ -2912,7 +2912,7 @@ class Job extends React.Component {
|
|
|
2912
2912
|
noteAttachments: [...this.state.noteAttachments]
|
|
2913
2913
|
});
|
|
2914
2914
|
});
|
|
2915
|
-
event.target.value =
|
|
2915
|
+
event.target.value = "";
|
|
2916
2916
|
});
|
|
2917
2917
|
_defineProperty__default["default"](this, "onRemoveAttachment", a => {
|
|
2918
2918
|
const index = this.state.noteAttachments.indexOf(a);
|
|
@@ -2949,7 +2949,7 @@ class Job extends React.Component {
|
|
|
2949
2949
|
}
|
|
2950
2950
|
this.onCloseSelectAssignee();
|
|
2951
2951
|
} catch (error) {
|
|
2952
|
-
console.error(
|
|
2952
|
+
console.error("onConfirmAssignee", error);
|
|
2953
2953
|
}
|
|
2954
2954
|
this.setState({
|
|
2955
2955
|
confirmingAssignee: false
|
|
@@ -2961,7 +2961,7 @@ class Job extends React.Component {
|
|
|
2961
2961
|
const res = await maintenanceActions.assignJob(this.state.jobId, userId);
|
|
2962
2962
|
this.getJob();
|
|
2963
2963
|
} catch (err) {
|
|
2964
|
-
console.error(
|
|
2964
|
+
console.error("onAssignUser", err);
|
|
2965
2965
|
}
|
|
2966
2966
|
});
|
|
2967
2967
|
_defineProperty__default["default"](this, "onConfirmAddNote", async () => {
|
|
@@ -2985,7 +2985,7 @@ class Job extends React.Component {
|
|
|
2985
2985
|
job: res.data.job,
|
|
2986
2986
|
submittingNote: false,
|
|
2987
2987
|
addNoteOpen: false,
|
|
2988
|
-
noteInput:
|
|
2988
|
+
noteInput: "",
|
|
2989
2989
|
noteAttachments: [],
|
|
2990
2990
|
noteImages: [],
|
|
2991
2991
|
editingNote: null
|
|
@@ -2993,7 +2993,7 @@ class Job extends React.Component {
|
|
|
2993
2993
|
this.props.jobsLoaded([this.state.job]);
|
|
2994
2994
|
});
|
|
2995
2995
|
} catch (err) {
|
|
2996
|
-
console.error(
|
|
2996
|
+
console.error("onConfirmAddNote", err);
|
|
2997
2997
|
}
|
|
2998
2998
|
});
|
|
2999
2999
|
_defineProperty__default["default"](this, "onDeleteNote", n => {
|
|
@@ -3016,7 +3016,7 @@ class Job extends React.Component {
|
|
|
3016
3016
|
this.setState({
|
|
3017
3017
|
noteAttachments: n.Attachments || [],
|
|
3018
3018
|
noteImages: n.Images || [],
|
|
3019
|
-
noteInput: n.Note ||
|
|
3019
|
+
noteInput: n.Note || "",
|
|
3020
3020
|
addNoteOpen: true,
|
|
3021
3021
|
editingNote: n.Id,
|
|
3022
3022
|
noteMenuOpen: null
|
|
@@ -3039,15 +3039,15 @@ class Job extends React.Component {
|
|
|
3039
3039
|
const update = {
|
|
3040
3040
|
id: job.id,
|
|
3041
3041
|
seen: true,
|
|
3042
|
-
status: job.status ||
|
|
3042
|
+
status: job.status || "Unassigned"
|
|
3043
3043
|
};
|
|
3044
3044
|
await maintenanceActions.editJob(update, auth.site);
|
|
3045
3045
|
} catch (error) {
|
|
3046
3046
|
this.setState({
|
|
3047
3047
|
updating: false
|
|
3048
3048
|
});
|
|
3049
|
-
console.log(
|
|
3050
|
-
alert(
|
|
3049
|
+
console.log("markSeen error", error);
|
|
3050
|
+
alert("Something went wrong with the request. Please try again.");
|
|
3051
3051
|
}
|
|
3052
3052
|
});
|
|
3053
3053
|
});
|
|
@@ -3067,19 +3067,19 @@ class Job extends React.Component {
|
|
|
3067
3067
|
} = this.state;
|
|
3068
3068
|
try {
|
|
3069
3069
|
this.setState({
|
|
3070
|
-
commentInput:
|
|
3070
|
+
commentInput: ""
|
|
3071
3071
|
});
|
|
3072
3072
|
const res = await reactionActions.addComment(jobId, values.commentKey, job.title, job.site, commentInput);
|
|
3073
3073
|
this.setState({
|
|
3074
3074
|
comments: [...comments, res.data]
|
|
3075
3075
|
});
|
|
3076
3076
|
} catch (error) {
|
|
3077
|
-
console.error(
|
|
3077
|
+
console.error("onAddComment", error);
|
|
3078
3078
|
}
|
|
3079
3079
|
});
|
|
3080
3080
|
_defineProperty__default["default"](this, "onHandleChange", event => {
|
|
3081
3081
|
var stateChange = {};
|
|
3082
|
-
stateChange[event.target.getAttribute(
|
|
3082
|
+
stateChange[event.target.getAttribute("id")] = event.target.value;
|
|
3083
3083
|
this.setState(stateChange);
|
|
3084
3084
|
});
|
|
3085
3085
|
_defineProperty__default["default"](this, "onTogglePriorityChanger", () => {
|
|
@@ -3104,7 +3104,7 @@ class Job extends React.Component {
|
|
|
3104
3104
|
job
|
|
3105
3105
|
});
|
|
3106
3106
|
} catch (error) {
|
|
3107
|
-
console.error(
|
|
3107
|
+
console.error("onSelectPriority", error);
|
|
3108
3108
|
}
|
|
3109
3109
|
});
|
|
3110
3110
|
_defineProperty__default["default"](this, "onToggleStatusChanger", () => {
|
|
@@ -3129,22 +3129,22 @@ class Job extends React.Component {
|
|
|
3129
3129
|
job
|
|
3130
3130
|
});
|
|
3131
3131
|
} catch (error) {
|
|
3132
|
-
console.error(
|
|
3132
|
+
console.error("onSelectStatus", error);
|
|
3133
3133
|
}
|
|
3134
3134
|
});
|
|
3135
3135
|
this.state = {
|
|
3136
|
-
jobId: Helper$2.safeReadParams(props,
|
|
3136
|
+
jobId: Helper$2.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
|
|
3137
3137
|
job: null,
|
|
3138
3138
|
showingSelector: false,
|
|
3139
3139
|
updating: false,
|
|
3140
3140
|
comments: [],
|
|
3141
|
-
commentInput:
|
|
3141
|
+
commentInput: "",
|
|
3142
3142
|
loadingComments: false,
|
|
3143
3143
|
priorityChangerOpen: false,
|
|
3144
3144
|
statusChangerOpen: false,
|
|
3145
3145
|
addNoteOpen: false,
|
|
3146
3146
|
noteAttachments: [],
|
|
3147
|
-
noteInput:
|
|
3147
|
+
noteInput: "",
|
|
3148
3148
|
noteImages: [],
|
|
3149
3149
|
assignees: [],
|
|
3150
3150
|
externalSync: null,
|
|
@@ -3168,7 +3168,7 @@ class Job extends React.Component {
|
|
|
3168
3168
|
}
|
|
3169
3169
|
checkSetImage() {
|
|
3170
3170
|
if (this.imageInput && !___default["default"].isEmpty(this.state.noteImages)) {
|
|
3171
|
-
this.imageInput.
|
|
3171
|
+
this.imageInput.setValue(this.state.noteImages);
|
|
3172
3172
|
} else {
|
|
3173
3173
|
setTimeout(this.checkSetImage, 100);
|
|
3174
3174
|
}
|
|
@@ -3308,7 +3308,7 @@ class Job extends React.Component {
|
|
|
3308
3308
|
}, this.state.comments.map(c => this.renderComment(c))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3309
3309
|
className: "commentReply"
|
|
3310
3310
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3311
|
-
className: "commentReply_button".concat(!___default["default"].isEmpty(this.state.commentInput) ?
|
|
3311
|
+
className: "commentReply_button".concat(!___default["default"].isEmpty(this.state.commentInput) ? " commentReply_button-active" : ""),
|
|
3312
3312
|
onClick: this.onAddComment
|
|
3313
3313
|
}, /*#__PURE__*/React__default["default"].createElement(FontAwesome__default["default"], {
|
|
3314
3314
|
className: "commentReply_icon",
|
|
@@ -3371,29 +3371,29 @@ class Job extends React.Component {
|
|
|
3371
3371
|
const {
|
|
3372
3372
|
customFields
|
|
3373
3373
|
} = job;
|
|
3374
|
-
const labelClass =
|
|
3375
|
-
const answerClass =
|
|
3374
|
+
const labelClass = "fieldLabel";
|
|
3375
|
+
const answerClass = "fontRegular fontSize-16 text-dark marginTop-5";
|
|
3376
3376
|
const renderAnswer = field => {
|
|
3377
3377
|
switch (field.type) {
|
|
3378
|
-
case
|
|
3378
|
+
case "date":
|
|
3379
3379
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3380
3380
|
className: answerClass
|
|
3381
|
-
}, field.answer ? moment__default["default"](field.answer,
|
|
3382
|
-
case
|
|
3381
|
+
}, field.answer ? moment__default["default"](field.answer, "YYYY-MM-DD").format("DD-MMM-YYYY") : "");
|
|
3382
|
+
case "time":
|
|
3383
3383
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3384
3384
|
className: answerClass
|
|
3385
|
-
}, field.answer ? moment__default["default"](field.answer,
|
|
3386
|
-
case
|
|
3385
|
+
}, field.answer ? moment__default["default"](field.answer, "HH:mm").format("h:mm a") : "");
|
|
3386
|
+
case "yn":
|
|
3387
3387
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3388
3388
|
className: answerClass
|
|
3389
|
-
}, field.answer ?
|
|
3390
|
-
case
|
|
3389
|
+
}, field.answer ? "Yes" : "No");
|
|
3390
|
+
case "checkbox":
|
|
3391
3391
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3392
3392
|
className: answerClass
|
|
3393
|
-
}, field.answer && Array.isArray(field.answer) ? field.answer.join(
|
|
3394
|
-
case
|
|
3393
|
+
}, field.answer && Array.isArray(field.answer) ? field.answer.join(", ") : "");
|
|
3394
|
+
case "image":
|
|
3395
3395
|
return this.renderImageGrid(field.answer);
|
|
3396
|
-
case
|
|
3396
|
+
case "document":
|
|
3397
3397
|
return this.renderDocumentGrid(field.answer);
|
|
3398
3398
|
default:
|
|
3399
3399
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3404,8 +3404,8 @@ class Job extends React.Component {
|
|
|
3404
3404
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3405
3405
|
className: "padding-60 paddingVertical-40 bottomDivideBorder"
|
|
3406
3406
|
}, customFields.map((field, index) => {
|
|
3407
|
-
if ([
|
|
3408
|
-
if (___default["default"].isNil(field.answer) || field.answer ===
|
|
3407
|
+
if (["staticTitle", "staticText"].includes(field.type)) return null;
|
|
3408
|
+
if (___default["default"].isNil(field.answer) || field.answer === "" || field.answer.length === 0) return null;
|
|
3409
3409
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3410
3410
|
key: index,
|
|
3411
3411
|
className: "marginTop-16"
|
|
@@ -3435,27 +3435,27 @@ class Job extends React.Component {
|
|
|
3435
3435
|
}, values.textEntityName, " #", this.state.job.jobId), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3436
3436
|
className: "marginTop-16"
|
|
3437
3437
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3438
|
-
className:
|
|
3438
|
+
className: "fieldLabel"
|
|
3439
3439
|
}, "Submission date"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3440
|
-
className:
|
|
3441
|
-
}, moment__default["default"].utc(this.state.job.createdTime).local().format(
|
|
3440
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3441
|
+
}, moment__default["default"].utc(this.state.job.createdTime).local().format("D MMM YY"))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3442
3442
|
className: "marginTop-16"
|
|
3443
3443
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3444
|
-
className:
|
|
3444
|
+
className: "fieldLabel"
|
|
3445
3445
|
}, "Type"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3446
|
-
className:
|
|
3446
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3447
3447
|
}, this.state.job.type)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3448
3448
|
className: "marginTop-16"
|
|
3449
3449
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3450
|
-
className:
|
|
3450
|
+
className: "fieldLabel"
|
|
3451
3451
|
}, "Address"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3452
|
-
className:
|
|
3452
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3453
3453
|
}, this.state.job.room)), hasCustomFields ? null : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3454
3454
|
className: "marginTop-16"
|
|
3455
3455
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3456
|
-
className:
|
|
3457
|
-
}, "Description ", this.state.job.image ?
|
|
3458
|
-
className:
|
|
3456
|
+
className: "fieldLabel"
|
|
3457
|
+
}, "Description ", this.state.job.image ? "- (image supplied)" : ""), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3458
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3459
3459
|
}, this.state.job.description))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3460
3460
|
className: "padding-60 paddingVertical-40 bottomDivideBorder"
|
|
3461
3461
|
}, /*#__PURE__*/React__default["default"].createElement(Components$3.Text, {
|
|
@@ -3464,27 +3464,27 @@ class Job extends React.Component {
|
|
|
3464
3464
|
}, "Contact Details"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3465
3465
|
className: "marginTop-16"
|
|
3466
3466
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3467
|
-
className:
|
|
3467
|
+
className: "fieldLabel"
|
|
3468
3468
|
}, "Name"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3469
|
-
className:
|
|
3469
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3470
3470
|
}, this.state.job.userName)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3471
3471
|
className: "marginTop-16"
|
|
3472
3472
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3473
|
-
className:
|
|
3473
|
+
className: "fieldLabel"
|
|
3474
3474
|
}, "Contact number"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3475
|
-
className:
|
|
3476
|
-
}, ___default["default"].isEmpty(this.state.job.phone) ?
|
|
3475
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3476
|
+
}, ___default["default"].isEmpty(this.state.job.phone) ? "No phone provided" : this.state.job.phone)), hasCustomFields ? null : /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3477
3477
|
className: "marginTop-16"
|
|
3478
3478
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3479
|
-
className:
|
|
3479
|
+
className: "fieldLabel"
|
|
3480
3480
|
}, "Should person be home?"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3481
|
-
className:
|
|
3482
|
-
}, this.state.job.isHome ?
|
|
3481
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3482
|
+
}, this.state.job.isHome ? "Yes" : "No")), this.state.job.isHome && this.state.job.homeText && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3483
3483
|
className: "marginTop-16"
|
|
3484
3484
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3485
|
-
className:
|
|
3485
|
+
className: "fieldLabel"
|
|
3486
3486
|
}, "When"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3487
|
-
className:
|
|
3487
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3488
3488
|
}, this.state.job.homeText)))), hasCustomFields ? null : this.renderImages(), hasCustomFields ? this.renderCustomFields() : null, this.renderCommentSection());
|
|
3489
3489
|
}
|
|
3490
3490
|
renderHistoryEntry(e, i) {
|
|
@@ -3493,7 +3493,7 @@ class Job extends React.Component {
|
|
|
3493
3493
|
} = this.state;
|
|
3494
3494
|
const entryToUse = e || {
|
|
3495
3495
|
timestamp: job.createdTime,
|
|
3496
|
-
status:
|
|
3496
|
+
status: "Unassigned",
|
|
3497
3497
|
user: {
|
|
3498
3498
|
displayName: job.userName,
|
|
3499
3499
|
id: job.userID,
|
|
@@ -3506,7 +3506,7 @@ class Job extends React.Component {
|
|
|
3506
3506
|
key: i
|
|
3507
3507
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3508
3508
|
className: "ticketHistoryEntry_timestamp"
|
|
3509
|
-
}, moment__default["default"].utc(entryToUse.timestamp).local().format(
|
|
3509
|
+
}, moment__default["default"].utc(entryToUse.timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3510
3510
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3511
3511
|
style: {
|
|
3512
3512
|
backgroundColor: statusType.color
|
|
@@ -3521,10 +3521,10 @@ class Job extends React.Component {
|
|
|
3521
3521
|
key: index
|
|
3522
3522
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3523
3523
|
className: "ticketHistoryEntry_timestamp"
|
|
3524
|
-
}, moment__default["default"].utc(note.Timestamp).local().format(
|
|
3524
|
+
}, moment__default["default"].utc(note.Timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3525
3525
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3526
3526
|
style: {
|
|
3527
|
-
backgroundColor:
|
|
3527
|
+
backgroundColor: "#6e79c5"
|
|
3528
3528
|
}
|
|
3529
3529
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
3530
3530
|
className: "statusLabel_text"
|
|
@@ -3541,12 +3541,12 @@ class Job extends React.Component {
|
|
|
3541
3541
|
className: "maintenanceNote_name"
|
|
3542
3542
|
}, note.User.displayName), this.state.noteMenuOpen === index && /*#__PURE__*/React__default["default"].createElement(Components$3.MoreMenu, {
|
|
3543
3543
|
options: [{
|
|
3544
|
-
key:
|
|
3545
|
-
text:
|
|
3544
|
+
key: "edit",
|
|
3545
|
+
text: "Edit",
|
|
3546
3546
|
onPress: () => this.onOpenEditNote(note)
|
|
3547
3547
|
}, {
|
|
3548
|
-
key:
|
|
3549
|
-
text:
|
|
3548
|
+
key: "delete",
|
|
3549
|
+
text: "Delete",
|
|
3550
3550
|
onPress: () => this.onDeleteNote(note)
|
|
3551
3551
|
}]
|
|
3552
3552
|
})), /*#__PURE__*/React__default["default"].createElement("p", {
|
|
@@ -3568,12 +3568,12 @@ class Job extends React.Component {
|
|
|
3568
3568
|
}, "Assignment")), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3569
3569
|
className: "marginTop-16"
|
|
3570
3570
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3571
|
-
className:
|
|
3571
|
+
className: "fieldLabel"
|
|
3572
3572
|
}, "Assigned to"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3573
|
-
className:
|
|
3573
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3574
3574
|
}, job.Assignee ? /*#__PURE__*/React__default["default"].createElement(Components$3.UserListing, {
|
|
3575
3575
|
user: job.Assignee
|
|
3576
|
-
}) :
|
|
3576
|
+
}) : "Unassigned"))));
|
|
3577
3577
|
}
|
|
3578
3578
|
renderAssignmentEntry(e, i) {
|
|
3579
3579
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3581,17 +3581,17 @@ class Job extends React.Component {
|
|
|
3581
3581
|
key: i
|
|
3582
3582
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3583
3583
|
className: "ticketHistoryEntry_timestamp"
|
|
3584
|
-
}, moment__default["default"].utc(e.timestamp).local().format(
|
|
3584
|
+
}, moment__default["default"].utc(e.timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3585
3585
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3586
3586
|
style: {
|
|
3587
3587
|
backgroundColor: Colours$1.COLOUR_DUSK
|
|
3588
3588
|
}
|
|
3589
3589
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
3590
3590
|
className: "statusLabel_text"
|
|
3591
|
-
}, e.user.displayName, " assigned the ", values.textSingularName, " to ", e.assignedUser ? e.assignedUser.displayName :
|
|
3591
|
+
}, e.user.displayName, " assigned the ", values.textSingularName, " to", " ", e.assignedUser ? e.assignedUser.displayName : "Unassigned")));
|
|
3592
3592
|
}
|
|
3593
3593
|
renderExternalSyncEntry(e, i) {
|
|
3594
|
-
const isSuccess = e.EntryType ===
|
|
3594
|
+
const isSuccess = e.EntryType === "ExternalIDSet";
|
|
3595
3595
|
const backgroundColor = isSuccess ? Colours$1.COLOUR_GREEN : Colours$1.COLOUR_RED; // Green for success, red for failure
|
|
3596
3596
|
|
|
3597
3597
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3599,14 +3599,14 @@ class Job extends React.Component {
|
|
|
3599
3599
|
key: i
|
|
3600
3600
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3601
3601
|
className: "ticketHistoryEntry_timestamp"
|
|
3602
|
-
}, moment__default["default"].utc(e.timestamp).local().format(
|
|
3602
|
+
}, moment__default["default"].utc(e.timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3603
3603
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3604
3604
|
style: {
|
|
3605
3605
|
backgroundColor
|
|
3606
3606
|
}
|
|
3607
3607
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
3608
3608
|
className: "statusLabel_text"
|
|
3609
|
-
}, isSuccess ? "Synced to ".concat(e.systemType ||
|
|
3609
|
+
}, isSuccess ? "Synced to ".concat(e.systemType || "external system").concat(e.externalId ? " (ID: ".concat(e.externalId, ")") : "") : "Failed to sync to ".concat(e.systemType || "external system").concat(e.error ? ": ".concat(e.error) : ""))));
|
|
3610
3610
|
}
|
|
3611
3611
|
renderPriority() {
|
|
3612
3612
|
const {
|
|
@@ -3628,8 +3628,8 @@ class Job extends React.Component {
|
|
|
3628
3628
|
} = this.state;
|
|
3629
3629
|
if (!job || !job.history) return false;
|
|
3630
3630
|
const history = job.history || [];
|
|
3631
|
-
const hasSuccess = history.some(entry => entry.EntryType ===
|
|
3632
|
-
const hasFailure = history.some(entry => entry.EntryType ===
|
|
3631
|
+
const hasSuccess = history.some(entry => entry.EntryType === "ExternalIDSet");
|
|
3632
|
+
const hasFailure = history.some(entry => entry.EntryType === "ExternalIDSetFailed");
|
|
3633
3633
|
return hasFailure && !hasSuccess;
|
|
3634
3634
|
}
|
|
3635
3635
|
renderRetrySyncButton() {
|
|
@@ -3698,7 +3698,7 @@ class Job extends React.Component {
|
|
|
3698
3698
|
style: {
|
|
3699
3699
|
color: Colours$1.COLOUR_GREEN
|
|
3700
3700
|
}
|
|
3701
|
-
}), " Sync retry initiated. Check back shortly for results.");
|
|
3701
|
+
}), " ", "Sync retry initiated. Check back shortly for results.");
|
|
3702
3702
|
}
|
|
3703
3703
|
|
|
3704
3704
|
// Show failure message with instruction
|
|
@@ -3711,7 +3711,7 @@ class Job extends React.Component {
|
|
|
3711
3711
|
style: {
|
|
3712
3712
|
color: Colours$1.COLOUR_RED
|
|
3713
3713
|
}
|
|
3714
|
-
}), " External sync failed. Use the retry button to attempt again.");
|
|
3714
|
+
}), " ", "External sync failed. Use the retry button to attempt again.");
|
|
3715
3715
|
}
|
|
3716
3716
|
return null;
|
|
3717
3717
|
}
|
|
@@ -3745,7 +3745,7 @@ class Job extends React.Component {
|
|
|
3745
3745
|
}, /*#__PURE__*/React__default["default"].createElement("strong", null, "External ID:"), " ", externalSync.externalId), externalSync.syncedAt && /*#__PURE__*/React__default["default"].createElement(Components$3.Text, {
|
|
3746
3746
|
type: "body",
|
|
3747
3747
|
className: "marginBottom-8"
|
|
3748
|
-
}, /*#__PURE__*/React__default["default"].createElement("strong", null, "Synced:"), " ", moment__default["default"].utc(externalSync.syncedAt).local().format(
|
|
3748
|
+
}, /*#__PURE__*/React__default["default"].createElement("strong", null, "Synced:"), " ", moment__default["default"].utc(externalSync.syncedAt).local().format("D MMM YYYY h:mma"))) : this.renderExternalSyncStatus()));
|
|
3749
3749
|
}
|
|
3750
3750
|
renderOverview() {
|
|
3751
3751
|
const {
|
|
@@ -3754,14 +3754,14 @@ class Job extends React.Component {
|
|
|
3754
3754
|
if (!job || !job.history) return null;
|
|
3755
3755
|
const source = ___default["default"].sortBy([...job.history.map(e => {
|
|
3756
3756
|
return _objectSpread$4(_objectSpread$4({}, e), {}, {
|
|
3757
|
-
EntryType: e.EntryType ||
|
|
3757
|
+
EntryType: e.EntryType || "status"
|
|
3758
3758
|
});
|
|
3759
3759
|
}), ...(job.Notes || []).map(e => {
|
|
3760
3760
|
return _objectSpread$4(_objectSpread$4({}, e), {}, {
|
|
3761
3761
|
timestamp: e.Timestamp,
|
|
3762
|
-
EntryType:
|
|
3762
|
+
EntryType: "note"
|
|
3763
3763
|
});
|
|
3764
|
-
})],
|
|
3764
|
+
})], "timestamp");
|
|
3765
3765
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3766
3766
|
className: "padding-32 paddingVertical-40 bottomDivideBorder relative"
|
|
3767
3767
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3771,14 +3771,14 @@ class Job extends React.Component {
|
|
|
3771
3771
|
className: "flex-1"
|
|
3772
3772
|
}, "Status History")), this.renderHistoryEntry(null, -1), ___default["default"].map(source, (e, i) => {
|
|
3773
3773
|
switch (e.EntryType) {
|
|
3774
|
-
case
|
|
3774
|
+
case "status":
|
|
3775
3775
|
return this.renderHistoryEntry(e, i);
|
|
3776
|
-
case
|
|
3776
|
+
case "note":
|
|
3777
3777
|
return this.renderNote(e, i);
|
|
3778
|
-
case
|
|
3778
|
+
case "assignment":
|
|
3779
3779
|
return this.renderAssignmentEntry(e, i);
|
|
3780
|
-
case
|
|
3781
|
-
case
|
|
3780
|
+
case "ExternalIDSet":
|
|
3781
|
+
case "ExternalIDSetFailed":
|
|
3782
3782
|
return this.renderExternalSyncEntry(e, i);
|
|
3783
3783
|
}
|
|
3784
3784
|
}));
|
|
@@ -3831,20 +3831,20 @@ class Job extends React.Component {
|
|
|
3831
3831
|
})));
|
|
3832
3832
|
}
|
|
3833
3833
|
return /*#__PURE__*/React__default["default"].createElement(Components$3.Popup, {
|
|
3834
|
-
title: "".concat(this.state.editingNote ?
|
|
3834
|
+
title: "".concat(this.state.editingNote ? "Edit" : "Add", " Note"),
|
|
3835
3835
|
onClose: this.onCloseAddNote,
|
|
3836
3836
|
maxWidth: 600,
|
|
3837
3837
|
hasPadding: true,
|
|
3838
3838
|
buttons: [{
|
|
3839
|
-
type:
|
|
3839
|
+
type: "primary",
|
|
3840
3840
|
onClick: this.onConfirmAddNote,
|
|
3841
3841
|
isActive: this.isReadyToSaveNote(),
|
|
3842
|
-
text:
|
|
3842
|
+
text: "Save"
|
|
3843
3843
|
}, {
|
|
3844
|
-
type:
|
|
3844
|
+
type: "tertiary",
|
|
3845
3845
|
onClick: this.onCloseAddNote,
|
|
3846
3846
|
isActive: true,
|
|
3847
|
-
text:
|
|
3847
|
+
text: "Cancel"
|
|
3848
3848
|
}]
|
|
3849
3849
|
}, /*#__PURE__*/React__default["default"].createElement(Components$3.GenericInput, {
|
|
3850
3850
|
id: "noteInput",
|
|
@@ -3946,15 +3946,15 @@ class Job extends React.Component {
|
|
|
3946
3946
|
maxWidth: 600,
|
|
3947
3947
|
hasPadding: true,
|
|
3948
3948
|
buttons: [{
|
|
3949
|
-
type:
|
|
3949
|
+
type: "primary",
|
|
3950
3950
|
onClick: this.onConfirmAssignee,
|
|
3951
3951
|
isActive: !!this.state.selectedAssignee,
|
|
3952
|
-
text:
|
|
3952
|
+
text: "Confirm"
|
|
3953
3953
|
}, {
|
|
3954
|
-
type:
|
|
3954
|
+
type: "tertiary",
|
|
3955
3955
|
onClick: this.onCloseSelectAssignee,
|
|
3956
3956
|
isActive: true,
|
|
3957
|
-
text:
|
|
3957
|
+
text: "Cancel"
|
|
3958
3958
|
}]
|
|
3959
3959
|
}, this.renderUsers());
|
|
3960
3960
|
}
|
|
@@ -4020,13 +4020,13 @@ class AddJob extends React.Component {
|
|
|
4020
4020
|
this.checkSetImages(this.imageInput, res.data.images);
|
|
4021
4021
|
if (customFields) {
|
|
4022
4022
|
customFields.forEach((field, index) => {
|
|
4023
|
-
if (field.type ===
|
|
4023
|
+
if (field.type === "image" && field.answer) {
|
|
4024
4024
|
this.checkSetImages(this.customImageInputs[index], field.answer);
|
|
4025
4025
|
}
|
|
4026
4026
|
});
|
|
4027
4027
|
}
|
|
4028
4028
|
} catch (error) {
|
|
4029
|
-
console.error(
|
|
4029
|
+
console.error("getJob", error);
|
|
4030
4030
|
}
|
|
4031
4031
|
});
|
|
4032
4032
|
_defineProperty__default["default"](this, "getJobTypes", async () => {
|
|
@@ -4037,7 +4037,7 @@ class AddJob extends React.Component {
|
|
|
4037
4037
|
});
|
|
4038
4038
|
this.getDefaultJob();
|
|
4039
4039
|
} catch (error) {
|
|
4040
|
-
console.error(
|
|
4040
|
+
console.error("getJobTypes", error);
|
|
4041
4041
|
}
|
|
4042
4042
|
});
|
|
4043
4043
|
_defineProperty__default["default"](this, "getUsers", async () => {
|
|
@@ -4047,16 +4047,16 @@ class AddJob extends React.Component {
|
|
|
4047
4047
|
if (res.data != null && !___default["default"].isEmpty(res.data.results.Items)) {
|
|
4048
4048
|
let items = res.data.results.Items;
|
|
4049
4049
|
if (this.props.optionOnlyForResidents) {
|
|
4050
|
-
items = ___default["default"].filter(items, u => u.category ===
|
|
4050
|
+
items = ___default["default"].filter(items, u => u.category === "resident");
|
|
4051
4051
|
}
|
|
4052
4052
|
this.setState({
|
|
4053
4053
|
users: ___default["default"].sortBy(items, u => {
|
|
4054
|
-
return (u.displayName ||
|
|
4054
|
+
return (u.displayName || "").toLowerCase();
|
|
4055
4055
|
})
|
|
4056
4056
|
});
|
|
4057
4057
|
}
|
|
4058
4058
|
} catch (error) {
|
|
4059
|
-
console.error(
|
|
4059
|
+
console.error("getUsers", error);
|
|
4060
4060
|
}
|
|
4061
4061
|
});
|
|
4062
4062
|
_defineProperty__default["default"](this, "getDefaultJob", () => {
|
|
@@ -4073,7 +4073,7 @@ class AddJob extends React.Component {
|
|
|
4073
4073
|
});
|
|
4074
4074
|
} else {
|
|
4075
4075
|
this.setState({
|
|
4076
|
-
type:
|
|
4076
|
+
type: "General"
|
|
4077
4077
|
});
|
|
4078
4078
|
}
|
|
4079
4079
|
}
|
|
@@ -4091,14 +4091,14 @@ class AddJob extends React.Component {
|
|
|
4091
4091
|
type: selectedType.typeName,
|
|
4092
4092
|
customFields: hasPrevCustomFields ? prevCustomFileds : selectedType.hasCustomFields ? selectedType.customFields : []
|
|
4093
4093
|
};
|
|
4094
|
-
if (!___default["default"].isEmpty(update.customFields) && !___default["default"].some(update.customFields,
|
|
4095
|
-
update.title = this.state.selectedUser ? this.state.selectedUser.displayName :
|
|
4094
|
+
if (!___default["default"].isEmpty(update.customFields) && !___default["default"].some(update.customFields, "isTitle")) {
|
|
4095
|
+
update.title = this.state.selectedUser ? this.state.selectedUser.displayName : "";
|
|
4096
4096
|
}
|
|
4097
4097
|
this.setState(update);
|
|
4098
4098
|
});
|
|
4099
4099
|
_defineProperty__default["default"](this, "onHandleChange", event => {
|
|
4100
4100
|
var stateChange = {};
|
|
4101
|
-
stateChange[event.target.getAttribute(
|
|
4101
|
+
stateChange[event.target.getAttribute("id")] = event.target.value;
|
|
4102
4102
|
this.setState(stateChange);
|
|
4103
4103
|
});
|
|
4104
4104
|
_defineProperty__default["default"](this, "onOpenUserSelector", () => {
|
|
@@ -4118,7 +4118,7 @@ class AddJob extends React.Component {
|
|
|
4118
4118
|
userName: user.displayName,
|
|
4119
4119
|
userFilterOpen: false
|
|
4120
4120
|
};
|
|
4121
|
-
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields,
|
|
4121
|
+
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields, "isTitle")) {
|
|
4122
4122
|
update.title = user.displayName;
|
|
4123
4123
|
}
|
|
4124
4124
|
|
|
@@ -4146,19 +4146,19 @@ class AddJob extends React.Component {
|
|
|
4146
4146
|
}).catch(error => {
|
|
4147
4147
|
// Permission denied (403) or other error - continue without auto-population
|
|
4148
4148
|
// Staff can still create the request, just need to enter contact details manually
|
|
4149
|
-
console.log(
|
|
4149
|
+
console.log("Could not fetch user details for auto-population:", error);
|
|
4150
4150
|
});
|
|
4151
4151
|
});
|
|
4152
4152
|
_defineProperty__default["default"](this, "onUnselectUser", () => {
|
|
4153
4153
|
const update = {
|
|
4154
4154
|
selectedUser: null,
|
|
4155
|
-
userID:
|
|
4156
|
-
userName:
|
|
4157
|
-
phone:
|
|
4158
|
-
room:
|
|
4155
|
+
userID: "",
|
|
4156
|
+
userName: "",
|
|
4157
|
+
phone: "",
|
|
4158
|
+
room: ""
|
|
4159
4159
|
};
|
|
4160
|
-
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields,
|
|
4161
|
-
update.title =
|
|
4160
|
+
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields, "isTitle")) {
|
|
4161
|
+
update.title = "";
|
|
4162
4162
|
}
|
|
4163
4163
|
this.setState(update);
|
|
4164
4164
|
});
|
|
@@ -4186,7 +4186,7 @@ class AddJob extends React.Component {
|
|
|
4186
4186
|
};
|
|
4187
4187
|
const field = update.customFields[qId];
|
|
4188
4188
|
field.answer = ___default["default"].xor(field.answer || [], [answer]);
|
|
4189
|
-
if (field.isTitle) update.title = field.answer.join(
|
|
4189
|
+
if (field.isTitle) update.title = field.answer.join(", ");
|
|
4190
4190
|
this.setState(update);
|
|
4191
4191
|
});
|
|
4192
4192
|
_defineProperty__default["default"](this, "onChangeDateAnswer", function (qId, answer) {
|
|
@@ -4196,7 +4196,7 @@ class AddJob extends React.Component {
|
|
|
4196
4196
|
};
|
|
4197
4197
|
const field = update.customFields[qId];
|
|
4198
4198
|
field.answer = answer;
|
|
4199
|
-
if (field.isTitle) update.title = moment__default["default"](field.answer,
|
|
4199
|
+
if (field.isTitle) update.title = moment__default["default"](field.answer, "YYYY-MM-DD").format("DD-MMM-YYYY");
|
|
4200
4200
|
_this.setState(update);
|
|
4201
4201
|
if (togglePicker) _this.onToggleDatePicker(qId);
|
|
4202
4202
|
});
|
|
@@ -4206,7 +4206,7 @@ class AddJob extends React.Component {
|
|
|
4206
4206
|
};
|
|
4207
4207
|
const field = update.customFields[qId];
|
|
4208
4208
|
field.answer = answer;
|
|
4209
|
-
if (field.isTitle) update.title = moment__default["default"](field.answer,
|
|
4209
|
+
if (field.isTitle) update.title = moment__default["default"](field.answer, "HH:mm").format("h:mm a");
|
|
4210
4210
|
this.setState(update);
|
|
4211
4211
|
});
|
|
4212
4212
|
_defineProperty__default["default"](this, "onChangeImageAnswer", (qId, answer) => {
|
|
@@ -4233,7 +4233,7 @@ class AddJob extends React.Component {
|
|
|
4233
4233
|
};
|
|
4234
4234
|
const field = update.customFields[qId];
|
|
4235
4235
|
const attachments = field.answer || [];
|
|
4236
|
-
const [name, ext] = file.name.split(
|
|
4236
|
+
const [name, ext] = file.name.split(".");
|
|
4237
4237
|
const newAttachment = {
|
|
4238
4238
|
uploading: true,
|
|
4239
4239
|
name,
|
|
@@ -4251,7 +4251,7 @@ class AddJob extends React.Component {
|
|
|
4251
4251
|
delete newAttachment.uploading;
|
|
4252
4252
|
this.setState(update);
|
|
4253
4253
|
});
|
|
4254
|
-
event.target.value =
|
|
4254
|
+
event.target.value = "";
|
|
4255
4255
|
});
|
|
4256
4256
|
_defineProperty__default["default"](this, "onToggleDatePicker", qId => {
|
|
4257
4257
|
const showDate = _objectSpread$3({}, this.state.showDate);
|
|
@@ -4301,7 +4301,7 @@ class AddJob extends React.Component {
|
|
|
4301
4301
|
this.setState({
|
|
4302
4302
|
updating: false
|
|
4303
4303
|
});
|
|
4304
|
-
alert(
|
|
4304
|
+
alert("Something went wrong with the request. Please try again.");
|
|
4305
4305
|
});
|
|
4306
4306
|
} else {
|
|
4307
4307
|
// Create New Job
|
|
@@ -4315,7 +4315,7 @@ class AddJob extends React.Component {
|
|
|
4315
4315
|
this.setState({
|
|
4316
4316
|
updating: false
|
|
4317
4317
|
});
|
|
4318
|
-
alert(
|
|
4318
|
+
alert("Something went wrong with the request. Please try again.");
|
|
4319
4319
|
});
|
|
4320
4320
|
}
|
|
4321
4321
|
});
|
|
@@ -4325,15 +4325,15 @@ class AddJob extends React.Component {
|
|
|
4325
4325
|
type,
|
|
4326
4326
|
answer
|
|
4327
4327
|
} = field;
|
|
4328
|
-
if ([
|
|
4328
|
+
if (["staticTitle", "staticText"].includes(type)) return true;
|
|
4329
4329
|
const checkMandatory = () => {
|
|
4330
4330
|
if (!mandatory) return true;
|
|
4331
4331
|
switch (type) {
|
|
4332
|
-
case
|
|
4332
|
+
case "yn":
|
|
4333
4333
|
return ___default["default"].isBoolean(answer);
|
|
4334
|
-
case
|
|
4335
|
-
case
|
|
4336
|
-
case
|
|
4334
|
+
case "image":
|
|
4335
|
+
case "document":
|
|
4336
|
+
case "checkbox":
|
|
4337
4337
|
return ___default["default"].isArray(answer) && answer.length > 0;
|
|
4338
4338
|
default:
|
|
4339
4339
|
return !___default["default"].isNil(answer) && !___default["default"].isEmpty(answer);
|
|
@@ -4342,12 +4342,12 @@ class AddJob extends React.Component {
|
|
|
4342
4342
|
const checkFormat = () => {
|
|
4343
4343
|
if (___default["default"].isNil(answer) || ___default["default"].isEmpty(answer)) return true;
|
|
4344
4344
|
switch (type) {
|
|
4345
|
-
case
|
|
4345
|
+
case "email":
|
|
4346
4346
|
return Helper$1.isEmail(answer);
|
|
4347
|
-
case
|
|
4348
|
-
return moment__default["default"](answer,
|
|
4349
|
-
case
|
|
4350
|
-
return moment__default["default"](answer,
|
|
4347
|
+
case "date":
|
|
4348
|
+
return moment__default["default"](answer, "YYYY-MM-DD", true).isValid();
|
|
4349
|
+
case "time":
|
|
4350
|
+
return moment__default["default"](answer, "HH:mm", true).isValid();
|
|
4351
4351
|
default:
|
|
4352
4352
|
return true;
|
|
4353
4353
|
}
|
|
@@ -4358,13 +4358,13 @@ class AddJob extends React.Component {
|
|
|
4358
4358
|
_defineProperty__default["default"](this, "getFieldContainerClass", function () {
|
|
4359
4359
|
let isValid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
4360
4360
|
const showError = _this.state.showWarnings && !isValid;
|
|
4361
|
-
return "genericInputContainer ".concat(isValid ?
|
|
4361
|
+
return "genericInputContainer ".concat(isValid ? "genericInput-valid" : "", " ").concat(showError ? "genericInput-error" : "").trim();
|
|
4362
4362
|
});
|
|
4363
4363
|
this.imageInput = null;
|
|
4364
4364
|
this.customImageInputs = {};
|
|
4365
4365
|
this.customDocumentInputs = {};
|
|
4366
4366
|
this.state = {
|
|
4367
|
-
jobId: Helper$1.safeReadParams(this.props,
|
|
4367
|
+
jobId: Helper$1.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
|
|
4368
4368
|
job: null,
|
|
4369
4369
|
showingSelector: false,
|
|
4370
4370
|
updating: false,
|
|
@@ -4372,21 +4372,21 @@ class AddJob extends React.Component {
|
|
|
4372
4372
|
types: [],
|
|
4373
4373
|
users: [],
|
|
4374
4374
|
images: [],
|
|
4375
|
-
userSearch:
|
|
4375
|
+
userSearch: "",
|
|
4376
4376
|
userFilterOpen: false,
|
|
4377
4377
|
selectedUser: null,
|
|
4378
4378
|
id: null,
|
|
4379
|
-
userID:
|
|
4380
|
-
userName:
|
|
4381
|
-
room:
|
|
4382
|
-
phone:
|
|
4379
|
+
userID: "",
|
|
4380
|
+
userName: "",
|
|
4381
|
+
room: "",
|
|
4382
|
+
phone: "",
|
|
4383
4383
|
location: this.props.auth.site,
|
|
4384
|
-
title:
|
|
4385
|
-
description:
|
|
4384
|
+
title: "",
|
|
4385
|
+
description: "",
|
|
4386
4386
|
isHome: false,
|
|
4387
|
-
homeText:
|
|
4388
|
-
prevType:
|
|
4389
|
-
type:
|
|
4387
|
+
homeText: "",
|
|
4388
|
+
prevType: "General",
|
|
4389
|
+
type: "General",
|
|
4390
4390
|
image: null,
|
|
4391
4391
|
thumbnail: null,
|
|
4392
4392
|
showWarnings: false,
|
|
@@ -4408,7 +4408,7 @@ class AddJob extends React.Component {
|
|
|
4408
4408
|
checkSetImages(imageRef, images) {
|
|
4409
4409
|
if (imageRef) {
|
|
4410
4410
|
if (!___default["default"].isEmpty(images)) {
|
|
4411
|
-
imageRef.
|
|
4411
|
+
imageRef.setValue(images);
|
|
4412
4412
|
}
|
|
4413
4413
|
} else {
|
|
4414
4414
|
setTimeout(() => {
|
|
@@ -4436,9 +4436,9 @@ class AddJob extends React.Component {
|
|
|
4436
4436
|
if (!this.state.success) return null;
|
|
4437
4437
|
const title = this.props.strings["".concat(values.featureKey, "_textTitleRequests")] || values.textTitleRequests;
|
|
4438
4438
|
return /*#__PURE__*/React__default["default"].createElement(Components$2.SuccessPopup, {
|
|
4439
|
-
text: "".concat(values.textEntityName, " has been ").concat(this.state.id != null ?
|
|
4439
|
+
text: "".concat(values.textEntityName, " has been ").concat(this.state.id != null ? "edited" : "added"),
|
|
4440
4440
|
buttons: [{
|
|
4441
|
-
type:
|
|
4441
|
+
type: "outlined",
|
|
4442
4442
|
onClick: () => {
|
|
4443
4443
|
window.history.back();
|
|
4444
4444
|
},
|
|
@@ -4566,13 +4566,13 @@ class AddJob extends React.Component {
|
|
|
4566
4566
|
label: "Person must be home during work?",
|
|
4567
4567
|
isActive: this.state.isHome,
|
|
4568
4568
|
options: [{
|
|
4569
|
-
Label:
|
|
4569
|
+
Label: "No",
|
|
4570
4570
|
Value: false,
|
|
4571
4571
|
onChange: () => this.setState({
|
|
4572
4572
|
isHome: false
|
|
4573
4573
|
})
|
|
4574
4574
|
}, {
|
|
4575
|
-
Label:
|
|
4575
|
+
Label: "Yes",
|
|
4576
4576
|
Value: true,
|
|
4577
4577
|
onChange: () => this.setState({
|
|
4578
4578
|
isHome: true
|
|
@@ -4603,7 +4603,7 @@ class AddJob extends React.Component {
|
|
|
4603
4603
|
}
|
|
4604
4604
|
renderField(field, fieldId) {
|
|
4605
4605
|
switch (field.type) {
|
|
4606
|
-
case
|
|
4606
|
+
case "yn":
|
|
4607
4607
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4608
4608
|
key: fieldId,
|
|
4609
4609
|
className: "visitorSignIn_question ".concat(this.getFieldContainerClass(this.isFieldValid(field))),
|
|
@@ -4619,16 +4619,16 @@ class AddJob extends React.Component {
|
|
|
4619
4619
|
noHoverHighlight: true,
|
|
4620
4620
|
highlightColour: this.props.colour,
|
|
4621
4621
|
options: [{
|
|
4622
|
-
Label:
|
|
4622
|
+
Label: "Yes",
|
|
4623
4623
|
Value: true,
|
|
4624
4624
|
onChange: this.onChangeToggleAnswer.bind(this, fieldId, true)
|
|
4625
4625
|
}, {
|
|
4626
|
-
Label:
|
|
4626
|
+
Label: "No",
|
|
4627
4627
|
Value: false,
|
|
4628
4628
|
onChange: this.onChangeToggleAnswer.bind(this, fieldId, false)
|
|
4629
4629
|
}]
|
|
4630
4630
|
}));
|
|
4631
|
-
case
|
|
4631
|
+
case "multichoice":
|
|
4632
4632
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4633
4633
|
key: fieldId,
|
|
4634
4634
|
className: "visitorSignIn_question ".concat(this.getFieldContainerClass(this.isFieldValid(field))),
|
|
@@ -4651,14 +4651,14 @@ class AddJob extends React.Component {
|
|
|
4651
4651
|
};
|
|
4652
4652
|
}),
|
|
4653
4653
|
rowStyle: {
|
|
4654
|
-
flexDirection:
|
|
4654
|
+
flexDirection: "column"
|
|
4655
4655
|
},
|
|
4656
4656
|
buttonStyle: {
|
|
4657
|
-
marginTop:
|
|
4658
|
-
marginBottom:
|
|
4657
|
+
marginTop: "5px",
|
|
4658
|
+
marginBottom: "5px"
|
|
4659
4659
|
}
|
|
4660
4660
|
}));
|
|
4661
|
-
case
|
|
4661
|
+
case "checkbox":
|
|
4662
4662
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4663
4663
|
key: fieldId,
|
|
4664
4664
|
className: this.getFieldContainerClass(this.isFieldValid(field)),
|
|
@@ -4673,7 +4673,7 @@ class AddJob extends React.Component {
|
|
|
4673
4673
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4674
4674
|
className: "fieldLabel",
|
|
4675
4675
|
style: {
|
|
4676
|
-
marginBottom:
|
|
4676
|
+
marginBottom: "5px",
|
|
4677
4677
|
color: this.props.colour
|
|
4678
4678
|
}
|
|
4679
4679
|
}, field.label), field.values.map((option, optionIndex) => {
|
|
@@ -4686,9 +4686,9 @@ class AddJob extends React.Component {
|
|
|
4686
4686
|
onChange: () => this.onChangeCheckboxAnswer(fieldId, option)
|
|
4687
4687
|
});
|
|
4688
4688
|
})));
|
|
4689
|
-
case
|
|
4690
|
-
case
|
|
4691
|
-
case
|
|
4689
|
+
case "text":
|
|
4690
|
+
case "email":
|
|
4691
|
+
case "phone":
|
|
4692
4692
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4693
4693
|
key: fieldId
|
|
4694
4694
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
@@ -4701,10 +4701,10 @@ class AddJob extends React.Component {
|
|
|
4701
4701
|
isRequired: field.mandatory,
|
|
4702
4702
|
isValid: () => this.isFieldValid(field),
|
|
4703
4703
|
showError: () => this.state.showWarnings && !this.isFieldValid(field),
|
|
4704
|
-
errorMessage: field.type ===
|
|
4704
|
+
errorMessage: field.type === "email" ? "Not a valid email" : undefined,
|
|
4705
4705
|
alwaysShowLabel: true
|
|
4706
4706
|
}));
|
|
4707
|
-
case
|
|
4707
|
+
case "staticTitle":
|
|
4708
4708
|
return /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4709
4709
|
className: "visitorSignIn_text-staticTitle",
|
|
4710
4710
|
style: {
|
|
@@ -4712,21 +4712,21 @@ class AddJob extends React.Component {
|
|
|
4712
4712
|
},
|
|
4713
4713
|
key: fieldId
|
|
4714
4714
|
}, field.label);
|
|
4715
|
-
case
|
|
4715
|
+
case "staticText":
|
|
4716
4716
|
return /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4717
4717
|
className: "visitorSignIn_text-staticText",
|
|
4718
4718
|
key: fieldId
|
|
4719
4719
|
}, Helper$1.toParagraphed(field.label, {
|
|
4720
4720
|
marginTop: 10
|
|
4721
4721
|
}));
|
|
4722
|
-
case
|
|
4722
|
+
case "date":
|
|
4723
4723
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4724
4724
|
key: fieldId
|
|
4725
4725
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4726
4726
|
id: fieldId,
|
|
4727
4727
|
label: field.label,
|
|
4728
|
-
placeholder:
|
|
4729
|
-
value: field.answer ? moment__default["default"](field.answer,
|
|
4728
|
+
placeholder: "DD-MMM-YYYY",
|
|
4729
|
+
value: field.answer ? moment__default["default"](field.answer, "YYYY-MM-DD").format("DD-MMM-YYYY") : "",
|
|
4730
4730
|
onClick: e => this.onToggleDatePicker(fieldId),
|
|
4731
4731
|
isRequired: field.mandatory,
|
|
4732
4732
|
isValid: () => this.isFieldValid(field),
|
|
@@ -4744,14 +4744,14 @@ class AddJob extends React.Component {
|
|
|
4744
4744
|
selectedDate: field.answer,
|
|
4745
4745
|
selectDate: date => this.onChangeDateAnswer(fieldId, date)
|
|
4746
4746
|
}));
|
|
4747
|
-
case
|
|
4747
|
+
case "time":
|
|
4748
4748
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4749
4749
|
key: fieldId
|
|
4750
4750
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4751
4751
|
id: fieldId,
|
|
4752
4752
|
label: field.label,
|
|
4753
|
-
placeholder:
|
|
4754
|
-
value: field.answer ? moment__default["default"](field.answer,
|
|
4753
|
+
placeholder: "--:-- --",
|
|
4754
|
+
value: field.answer ? moment__default["default"](field.answer, "HH:mm").format("h:mm a") : "",
|
|
4755
4755
|
type: "time",
|
|
4756
4756
|
isRequired: field.mandatory,
|
|
4757
4757
|
isValid: () => this.isFieldValid(field),
|
|
@@ -4764,7 +4764,7 @@ class AddJob extends React.Component {
|
|
|
4764
4764
|
className: "timepicker-condensed",
|
|
4765
4765
|
callbackFormat: "HH:mm",
|
|
4766
4766
|
style: {
|
|
4767
|
-
width:
|
|
4767
|
+
width: "100%"
|
|
4768
4768
|
}
|
|
4769
4769
|
}),
|
|
4770
4770
|
rightContent: !___default["default"].isEmpty(field.answer) && /*#__PURE__*/React__default["default"].createElement(Components$2.SVGIcon, {
|
|
@@ -4774,7 +4774,7 @@ class AddJob extends React.Component {
|
|
|
4774
4774
|
onClick: () => this.onChangeTimeAnswer(fieldId, undefined)
|
|
4775
4775
|
})
|
|
4776
4776
|
}));
|
|
4777
|
-
case
|
|
4777
|
+
case "image":
|
|
4778
4778
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4779
4779
|
key: fieldId,
|
|
4780
4780
|
className: this.getFieldContainerClass(this.isFieldValid(field)),
|
|
@@ -4794,7 +4794,7 @@ class AddJob extends React.Component {
|
|
|
4794
4794
|
multiple: true,
|
|
4795
4795
|
refreshCallback: images => this.onChangeImageAnswer(fieldId, images)
|
|
4796
4796
|
})));
|
|
4797
|
-
case
|
|
4797
|
+
case "document":
|
|
4798
4798
|
const documents = field.answer || [];
|
|
4799
4799
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4800
4800
|
key: fieldId,
|
|
@@ -4858,7 +4858,7 @@ class AddJob extends React.Component {
|
|
|
4858
4858
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.Text, {
|
|
4859
4859
|
type: "formTitleLarge",
|
|
4860
4860
|
className: "marginBottom-24"
|
|
4861
|
-
}, this.state.infoId == null ?
|
|
4861
|
+
}, this.state.infoId == null ? "New" : "Edit", " ", values.textSingularName), this.renderSelectUser(), /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4862
4862
|
id: "phone",
|
|
4863
4863
|
type: "text",
|
|
4864
4864
|
label: "Contact number",
|
|
@@ -4915,10 +4915,10 @@ class AddJob extends React.Component {
|
|
|
4915
4915
|
hasPadding: true,
|
|
4916
4916
|
onClose: this.onCloseUserSelector,
|
|
4917
4917
|
buttons: [{
|
|
4918
|
-
type:
|
|
4918
|
+
type: "tertiary",
|
|
4919
4919
|
onClick: this.onCloseUserSelector,
|
|
4920
4920
|
isActive: true,
|
|
4921
|
-
text:
|
|
4921
|
+
text: "Cancel"
|
|
4922
4922
|
}]
|
|
4923
4923
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4924
4924
|
id: "userSearch",
|
|
@@ -4952,16 +4952,16 @@ class AddJob extends React.Component {
|
|
|
4952
4952
|
}
|
|
4953
4953
|
const styles$4 = {
|
|
4954
4954
|
userLabelContainer: {
|
|
4955
|
-
display:
|
|
4956
|
-
flexDirection:
|
|
4957
|
-
alignItems:
|
|
4955
|
+
display: "flex",
|
|
4956
|
+
flexDirection: "row",
|
|
4957
|
+
alignItems: "center",
|
|
4958
4958
|
marginBottom: 0,
|
|
4959
|
-
justifyContent:
|
|
4959
|
+
justifyContent: "space-between"
|
|
4960
4960
|
},
|
|
4961
4961
|
fieldContainer: {
|
|
4962
|
-
display:
|
|
4963
|
-
flexDirection:
|
|
4964
|
-
alignItems:
|
|
4962
|
+
display: "flex",
|
|
4963
|
+
flexDirection: "row",
|
|
4964
|
+
alignItems: "center"
|
|
4965
4965
|
}
|
|
4966
4966
|
};
|
|
4967
4967
|
const mapStateToProps$2 = state => {
|