@plusscommunities/pluss-maintenance-web-a 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
|
@@ -2738,7 +2738,7 @@ class Job extends React.Component {
|
|
|
2738
2738
|
res.data.location = res.data.site;
|
|
2739
2739
|
this.setJob(res.data);
|
|
2740
2740
|
} catch (error) {
|
|
2741
|
-
console.error(
|
|
2741
|
+
console.error("getJob", error);
|
|
2742
2742
|
}
|
|
2743
2743
|
});
|
|
2744
2744
|
_defineProperty__default["default"](this, "getAssignees", async () => {
|
|
@@ -2748,7 +2748,7 @@ class Job extends React.Component {
|
|
|
2748
2748
|
assignees: res.data.Users
|
|
2749
2749
|
});
|
|
2750
2750
|
} catch (error) {
|
|
2751
|
-
console.error(
|
|
2751
|
+
console.error("getAssignees", error);
|
|
2752
2752
|
}
|
|
2753
2753
|
});
|
|
2754
2754
|
_defineProperty__default["default"](this, "getExternalSync", async () => {
|
|
@@ -2764,7 +2764,7 @@ class Job extends React.Component {
|
|
|
2764
2764
|
} catch (error) {
|
|
2765
2765
|
// 404 is expected if no sync - don't show error
|
|
2766
2766
|
if (error && error.response && error.response.status !== 404) {
|
|
2767
|
-
console.error(
|
|
2767
|
+
console.error("getExternalSync", error);
|
|
2768
2768
|
}
|
|
2769
2769
|
this.setState({
|
|
2770
2770
|
loadingExternalSync: false
|
|
@@ -2789,8 +2789,8 @@ class Job extends React.Component {
|
|
|
2789
2789
|
retrySyncInitiated: true
|
|
2790
2790
|
});
|
|
2791
2791
|
} catch (error) {
|
|
2792
|
-
console.error(
|
|
2793
|
-
const errorMessage = error && error.response && error.response.data && error.response.data.error ||
|
|
2792
|
+
console.error("onRetrySync", error);
|
|
2793
|
+
const errorMessage = error && error.response && error.response.data && error.response.data.error || "Failed to retry sync. Please try again.";
|
|
2794
2794
|
this.setState({
|
|
2795
2795
|
retryingSync: false,
|
|
2796
2796
|
retrySyncError: errorMessage
|
|
@@ -2812,16 +2812,16 @@ class Job extends React.Component {
|
|
|
2812
2812
|
});
|
|
2813
2813
|
_defineProperty__default["default"](this, "setJob", job => {
|
|
2814
2814
|
if (___default["default"].isEmpty(job.lastActivity)) {
|
|
2815
|
-
job.lastActivity =
|
|
2815
|
+
job.lastActivity = "-- --";
|
|
2816
2816
|
job.noActivity = true;
|
|
2817
2817
|
}
|
|
2818
2818
|
if (___default["default"].isEmpty(job.status)) {
|
|
2819
|
-
job.status =
|
|
2819
|
+
job.status = "Unassigned";
|
|
2820
2820
|
job.notStatus = true;
|
|
2821
2821
|
}
|
|
2822
2822
|
if (___default["default"].isEmpty(job.audience)) {
|
|
2823
2823
|
job.audience = [{
|
|
2824
|
-
displayName:
|
|
2824
|
+
displayName: "Unassigned",
|
|
2825
2825
|
isEmpty: true
|
|
2826
2826
|
}];
|
|
2827
2827
|
}
|
|
@@ -2859,7 +2859,7 @@ class Job extends React.Component {
|
|
|
2859
2859
|
editingNote: null
|
|
2860
2860
|
};
|
|
2861
2861
|
if (!!this.state.editingNote) {
|
|
2862
|
-
newState.noteInput =
|
|
2862
|
+
newState.noteInput = "";
|
|
2863
2863
|
newState.noteAttachments = [];
|
|
2864
2864
|
newState.noteImages = [];
|
|
2865
2865
|
}
|
|
@@ -2901,7 +2901,7 @@ class Job extends React.Component {
|
|
|
2901
2901
|
noteAttachments: [...this.state.noteAttachments]
|
|
2902
2902
|
});
|
|
2903
2903
|
});
|
|
2904
|
-
event.target.value =
|
|
2904
|
+
event.target.value = "";
|
|
2905
2905
|
});
|
|
2906
2906
|
_defineProperty__default["default"](this, "onRemoveAttachment", a => {
|
|
2907
2907
|
const index = this.state.noteAttachments.indexOf(a);
|
|
@@ -2938,7 +2938,7 @@ class Job extends React.Component {
|
|
|
2938
2938
|
}
|
|
2939
2939
|
this.onCloseSelectAssignee();
|
|
2940
2940
|
} catch (error) {
|
|
2941
|
-
console.error(
|
|
2941
|
+
console.error("onConfirmAssignee", error);
|
|
2942
2942
|
}
|
|
2943
2943
|
this.setState({
|
|
2944
2944
|
confirmingAssignee: false
|
|
@@ -2950,7 +2950,7 @@ class Job extends React.Component {
|
|
|
2950
2950
|
const res = await maintenanceActions.assignJob(this.state.jobId, userId);
|
|
2951
2951
|
this.getJob();
|
|
2952
2952
|
} catch (err) {
|
|
2953
|
-
console.error(
|
|
2953
|
+
console.error("onAssignUser", err);
|
|
2954
2954
|
}
|
|
2955
2955
|
});
|
|
2956
2956
|
_defineProperty__default["default"](this, "onConfirmAddNote", async () => {
|
|
@@ -2974,7 +2974,7 @@ class Job extends React.Component {
|
|
|
2974
2974
|
job: res.data.job,
|
|
2975
2975
|
submittingNote: false,
|
|
2976
2976
|
addNoteOpen: false,
|
|
2977
|
-
noteInput:
|
|
2977
|
+
noteInput: "",
|
|
2978
2978
|
noteAttachments: [],
|
|
2979
2979
|
noteImages: [],
|
|
2980
2980
|
editingNote: null
|
|
@@ -2982,7 +2982,7 @@ class Job extends React.Component {
|
|
|
2982
2982
|
this.props.jobsLoaded([this.state.job]);
|
|
2983
2983
|
});
|
|
2984
2984
|
} catch (err) {
|
|
2985
|
-
console.error(
|
|
2985
|
+
console.error("onConfirmAddNote", err);
|
|
2986
2986
|
}
|
|
2987
2987
|
});
|
|
2988
2988
|
_defineProperty__default["default"](this, "onDeleteNote", n => {
|
|
@@ -3005,7 +3005,7 @@ class Job extends React.Component {
|
|
|
3005
3005
|
this.setState({
|
|
3006
3006
|
noteAttachments: n.Attachments || [],
|
|
3007
3007
|
noteImages: n.Images || [],
|
|
3008
|
-
noteInput: n.Note ||
|
|
3008
|
+
noteInput: n.Note || "",
|
|
3009
3009
|
addNoteOpen: true,
|
|
3010
3010
|
editingNote: n.Id,
|
|
3011
3011
|
noteMenuOpen: null
|
|
@@ -3028,15 +3028,15 @@ class Job extends React.Component {
|
|
|
3028
3028
|
const update = {
|
|
3029
3029
|
id: job.id,
|
|
3030
3030
|
seen: true,
|
|
3031
|
-
status: job.status ||
|
|
3031
|
+
status: job.status || "Unassigned"
|
|
3032
3032
|
};
|
|
3033
3033
|
await maintenanceActions.editJob(update, auth.site);
|
|
3034
3034
|
} catch (error) {
|
|
3035
3035
|
this.setState({
|
|
3036
3036
|
updating: false
|
|
3037
3037
|
});
|
|
3038
|
-
console.log(
|
|
3039
|
-
alert(
|
|
3038
|
+
console.log("markSeen error", error);
|
|
3039
|
+
alert("Something went wrong with the request. Please try again.");
|
|
3040
3040
|
}
|
|
3041
3041
|
});
|
|
3042
3042
|
});
|
|
@@ -3056,19 +3056,19 @@ class Job extends React.Component {
|
|
|
3056
3056
|
} = this.state;
|
|
3057
3057
|
try {
|
|
3058
3058
|
this.setState({
|
|
3059
|
-
commentInput:
|
|
3059
|
+
commentInput: ""
|
|
3060
3060
|
});
|
|
3061
3061
|
const res = await reactionActions.addComment(jobId, values.commentKey, job.title, job.site, commentInput);
|
|
3062
3062
|
this.setState({
|
|
3063
3063
|
comments: [...comments, res.data]
|
|
3064
3064
|
});
|
|
3065
3065
|
} catch (error) {
|
|
3066
|
-
console.error(
|
|
3066
|
+
console.error("onAddComment", error);
|
|
3067
3067
|
}
|
|
3068
3068
|
});
|
|
3069
3069
|
_defineProperty__default["default"](this, "onHandleChange", event => {
|
|
3070
3070
|
var stateChange = {};
|
|
3071
|
-
stateChange[event.target.getAttribute(
|
|
3071
|
+
stateChange[event.target.getAttribute("id")] = event.target.value;
|
|
3072
3072
|
this.setState(stateChange);
|
|
3073
3073
|
});
|
|
3074
3074
|
_defineProperty__default["default"](this, "onTogglePriorityChanger", () => {
|
|
@@ -3093,7 +3093,7 @@ class Job extends React.Component {
|
|
|
3093
3093
|
job
|
|
3094
3094
|
});
|
|
3095
3095
|
} catch (error) {
|
|
3096
|
-
console.error(
|
|
3096
|
+
console.error("onSelectPriority", error);
|
|
3097
3097
|
}
|
|
3098
3098
|
});
|
|
3099
3099
|
_defineProperty__default["default"](this, "onToggleStatusChanger", () => {
|
|
@@ -3118,22 +3118,22 @@ class Job extends React.Component {
|
|
|
3118
3118
|
job
|
|
3119
3119
|
});
|
|
3120
3120
|
} catch (error) {
|
|
3121
|
-
console.error(
|
|
3121
|
+
console.error("onSelectStatus", error);
|
|
3122
3122
|
}
|
|
3123
3123
|
});
|
|
3124
3124
|
this.state = {
|
|
3125
|
-
jobId: Helper$2.safeReadParams(props,
|
|
3125
|
+
jobId: Helper$2.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
|
|
3126
3126
|
job: null,
|
|
3127
3127
|
showingSelector: false,
|
|
3128
3128
|
updating: false,
|
|
3129
3129
|
comments: [],
|
|
3130
|
-
commentInput:
|
|
3130
|
+
commentInput: "",
|
|
3131
3131
|
loadingComments: false,
|
|
3132
3132
|
priorityChangerOpen: false,
|
|
3133
3133
|
statusChangerOpen: false,
|
|
3134
3134
|
addNoteOpen: false,
|
|
3135
3135
|
noteAttachments: [],
|
|
3136
|
-
noteInput:
|
|
3136
|
+
noteInput: "",
|
|
3137
3137
|
noteImages: [],
|
|
3138
3138
|
assignees: [],
|
|
3139
3139
|
externalSync: null,
|
|
@@ -3157,7 +3157,7 @@ class Job extends React.Component {
|
|
|
3157
3157
|
}
|
|
3158
3158
|
checkSetImage() {
|
|
3159
3159
|
if (this.imageInput && !___default["default"].isEmpty(this.state.noteImages)) {
|
|
3160
|
-
this.imageInput.
|
|
3160
|
+
this.imageInput.setValue(this.state.noteImages);
|
|
3161
3161
|
} else {
|
|
3162
3162
|
setTimeout(this.checkSetImage, 100);
|
|
3163
3163
|
}
|
|
@@ -3297,7 +3297,7 @@ class Job extends React.Component {
|
|
|
3297
3297
|
}, this.state.comments.map(c => this.renderComment(c))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3298
3298
|
className: "commentReply"
|
|
3299
3299
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3300
|
-
className: "commentReply_button".concat(!___default["default"].isEmpty(this.state.commentInput) ?
|
|
3300
|
+
className: "commentReply_button".concat(!___default["default"].isEmpty(this.state.commentInput) ? " commentReply_button-active" : ""),
|
|
3301
3301
|
onClick: this.onAddComment
|
|
3302
3302
|
}, /*#__PURE__*/React__default["default"].createElement(FontAwesome__default["default"], {
|
|
3303
3303
|
className: "commentReply_icon",
|
|
@@ -3360,29 +3360,29 @@ class Job extends React.Component {
|
|
|
3360
3360
|
const {
|
|
3361
3361
|
customFields
|
|
3362
3362
|
} = job;
|
|
3363
|
-
const labelClass =
|
|
3364
|
-
const answerClass =
|
|
3363
|
+
const labelClass = "fieldLabel";
|
|
3364
|
+
const answerClass = "fontRegular fontSize-16 text-dark marginTop-5";
|
|
3365
3365
|
const renderAnswer = field => {
|
|
3366
3366
|
switch (field.type) {
|
|
3367
|
-
case
|
|
3367
|
+
case "date":
|
|
3368
3368
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3369
3369
|
className: answerClass
|
|
3370
|
-
}, field.answer ? moment__default["default"](field.answer,
|
|
3371
|
-
case
|
|
3370
|
+
}, field.answer ? moment__default["default"](field.answer, "YYYY-MM-DD").format("DD-MMM-YYYY") : "");
|
|
3371
|
+
case "time":
|
|
3372
3372
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3373
3373
|
className: answerClass
|
|
3374
|
-
}, field.answer ? moment__default["default"](field.answer,
|
|
3375
|
-
case
|
|
3374
|
+
}, field.answer ? moment__default["default"](field.answer, "HH:mm").format("h:mm a") : "");
|
|
3375
|
+
case "yn":
|
|
3376
3376
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3377
3377
|
className: answerClass
|
|
3378
|
-
}, field.answer ?
|
|
3379
|
-
case
|
|
3378
|
+
}, field.answer ? "Yes" : "No");
|
|
3379
|
+
case "checkbox":
|
|
3380
3380
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3381
3381
|
className: answerClass
|
|
3382
|
-
}, field.answer && Array.isArray(field.answer) ? field.answer.join(
|
|
3383
|
-
case
|
|
3382
|
+
}, field.answer && Array.isArray(field.answer) ? field.answer.join(", ") : "");
|
|
3383
|
+
case "image":
|
|
3384
3384
|
return this.renderImageGrid(field.answer);
|
|
3385
|
-
case
|
|
3385
|
+
case "document":
|
|
3386
3386
|
return this.renderDocumentGrid(field.answer);
|
|
3387
3387
|
default:
|
|
3388
3388
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3393,8 +3393,8 @@ class Job extends React.Component {
|
|
|
3393
3393
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3394
3394
|
className: "padding-60 paddingVertical-40 bottomDivideBorder"
|
|
3395
3395
|
}, customFields.map((field, index) => {
|
|
3396
|
-
if ([
|
|
3397
|
-
if (___default["default"].isNil(field.answer) || field.answer ===
|
|
3396
|
+
if (["staticTitle", "staticText"].includes(field.type)) return null;
|
|
3397
|
+
if (___default["default"].isNil(field.answer) || field.answer === "" || field.answer.length === 0) return null;
|
|
3398
3398
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3399
3399
|
key: index,
|
|
3400
3400
|
className: "marginTop-16"
|
|
@@ -3424,27 +3424,27 @@ class Job extends React.Component {
|
|
|
3424
3424
|
}, values.textEntityName, " #", this.state.job.jobId), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3425
3425
|
className: "marginTop-16"
|
|
3426
3426
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3427
|
-
className:
|
|
3427
|
+
className: "fieldLabel"
|
|
3428
3428
|
}, "Submission date"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3429
|
-
className:
|
|
3430
|
-
}, moment__default["default"].utc(this.state.job.createdTime).local().format(
|
|
3429
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3430
|
+
}, moment__default["default"].utc(this.state.job.createdTime).local().format("D MMM YY"))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3431
3431
|
className: "marginTop-16"
|
|
3432
3432
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3433
|
-
className:
|
|
3433
|
+
className: "fieldLabel"
|
|
3434
3434
|
}, "Type"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3435
|
-
className:
|
|
3435
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3436
3436
|
}, this.state.job.type)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3437
3437
|
className: "marginTop-16"
|
|
3438
3438
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3439
|
-
className:
|
|
3439
|
+
className: "fieldLabel"
|
|
3440
3440
|
}, "Address"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3441
|
-
className:
|
|
3441
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3442
3442
|
}, this.state.job.room)), hasCustomFields ? null : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3443
3443
|
className: "marginTop-16"
|
|
3444
3444
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3445
|
-
className:
|
|
3446
|
-
}, "Description ", this.state.job.image ?
|
|
3447
|
-
className:
|
|
3445
|
+
className: "fieldLabel"
|
|
3446
|
+
}, "Description ", this.state.job.image ? "- (image supplied)" : ""), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3447
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3448
3448
|
}, this.state.job.description))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3449
3449
|
className: "padding-60 paddingVertical-40 bottomDivideBorder"
|
|
3450
3450
|
}, /*#__PURE__*/React__default["default"].createElement(Components$3.Text, {
|
|
@@ -3453,27 +3453,27 @@ class Job extends React.Component {
|
|
|
3453
3453
|
}, "Contact Details"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3454
3454
|
className: "marginTop-16"
|
|
3455
3455
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3456
|
-
className:
|
|
3456
|
+
className: "fieldLabel"
|
|
3457
3457
|
}, "Name"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3458
|
-
className:
|
|
3458
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3459
3459
|
}, this.state.job.userName)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3460
3460
|
className: "marginTop-16"
|
|
3461
3461
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3462
|
-
className:
|
|
3462
|
+
className: "fieldLabel"
|
|
3463
3463
|
}, "Contact number"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3464
|
-
className:
|
|
3465
|
-
}, ___default["default"].isEmpty(this.state.job.phone) ?
|
|
3464
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3465
|
+
}, ___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", {
|
|
3466
3466
|
className: "marginTop-16"
|
|
3467
3467
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3468
|
-
className:
|
|
3468
|
+
className: "fieldLabel"
|
|
3469
3469
|
}, "Should person be home?"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3470
|
-
className:
|
|
3471
|
-
}, this.state.job.isHome ?
|
|
3470
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3471
|
+
}, this.state.job.isHome ? "Yes" : "No")), this.state.job.isHome && this.state.job.homeText && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3472
3472
|
className: "marginTop-16"
|
|
3473
3473
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3474
|
-
className:
|
|
3474
|
+
className: "fieldLabel"
|
|
3475
3475
|
}, "When"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3476
|
-
className:
|
|
3476
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3477
3477
|
}, this.state.job.homeText)))), hasCustomFields ? null : this.renderImages(), hasCustomFields ? this.renderCustomFields() : null, this.renderCommentSection());
|
|
3478
3478
|
}
|
|
3479
3479
|
renderHistoryEntry(e, i) {
|
|
@@ -3482,7 +3482,7 @@ class Job extends React.Component {
|
|
|
3482
3482
|
} = this.state;
|
|
3483
3483
|
const entryToUse = e || {
|
|
3484
3484
|
timestamp: job.createdTime,
|
|
3485
|
-
status:
|
|
3485
|
+
status: "Unassigned",
|
|
3486
3486
|
user: {
|
|
3487
3487
|
displayName: job.userName,
|
|
3488
3488
|
id: job.userID,
|
|
@@ -3495,7 +3495,7 @@ class Job extends React.Component {
|
|
|
3495
3495
|
key: i
|
|
3496
3496
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3497
3497
|
className: "ticketHistoryEntry_timestamp"
|
|
3498
|
-
}, moment__default["default"].utc(entryToUse.timestamp).local().format(
|
|
3498
|
+
}, moment__default["default"].utc(entryToUse.timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3499
3499
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3500
3500
|
style: {
|
|
3501
3501
|
backgroundColor: statusType.color
|
|
@@ -3510,10 +3510,10 @@ class Job extends React.Component {
|
|
|
3510
3510
|
key: index
|
|
3511
3511
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3512
3512
|
className: "ticketHistoryEntry_timestamp"
|
|
3513
|
-
}, moment__default["default"].utc(note.Timestamp).local().format(
|
|
3513
|
+
}, moment__default["default"].utc(note.Timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3514
3514
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3515
3515
|
style: {
|
|
3516
|
-
backgroundColor:
|
|
3516
|
+
backgroundColor: "#6e79c5"
|
|
3517
3517
|
}
|
|
3518
3518
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
3519
3519
|
className: "statusLabel_text"
|
|
@@ -3530,12 +3530,12 @@ class Job extends React.Component {
|
|
|
3530
3530
|
className: "maintenanceNote_name"
|
|
3531
3531
|
}, note.User.displayName), this.state.noteMenuOpen === index && /*#__PURE__*/React__default["default"].createElement(Components$3.MoreMenu, {
|
|
3532
3532
|
options: [{
|
|
3533
|
-
key:
|
|
3534
|
-
text:
|
|
3533
|
+
key: "edit",
|
|
3534
|
+
text: "Edit",
|
|
3535
3535
|
onPress: () => this.onOpenEditNote(note)
|
|
3536
3536
|
}, {
|
|
3537
|
-
key:
|
|
3538
|
-
text:
|
|
3537
|
+
key: "delete",
|
|
3538
|
+
text: "Delete",
|
|
3539
3539
|
onPress: () => this.onDeleteNote(note)
|
|
3540
3540
|
}]
|
|
3541
3541
|
})), /*#__PURE__*/React__default["default"].createElement("p", {
|
|
@@ -3557,12 +3557,12 @@ class Job extends React.Component {
|
|
|
3557
3557
|
}, "Assignment")), /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3558
3558
|
className: "marginTop-16"
|
|
3559
3559
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3560
|
-
className:
|
|
3560
|
+
className: "fieldLabel"
|
|
3561
3561
|
}, "Assigned to"), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3562
|
-
className:
|
|
3562
|
+
className: "fontRegular fontSize-16 text-dark marginTop-5"
|
|
3563
3563
|
}, job.Assignee ? /*#__PURE__*/React__default["default"].createElement(Components$3.UserListing, {
|
|
3564
3564
|
user: job.Assignee
|
|
3565
|
-
}) :
|
|
3565
|
+
}) : "Unassigned"))));
|
|
3566
3566
|
}
|
|
3567
3567
|
renderAssignmentEntry(e, i) {
|
|
3568
3568
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3570,17 +3570,17 @@ class Job extends React.Component {
|
|
|
3570
3570
|
key: i
|
|
3571
3571
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3572
3572
|
className: "ticketHistoryEntry_timestamp"
|
|
3573
|
-
}, moment__default["default"].utc(e.timestamp).local().format(
|
|
3573
|
+
}, moment__default["default"].utc(e.timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3574
3574
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3575
3575
|
style: {
|
|
3576
3576
|
backgroundColor: Colours$1.COLOUR_DUSK
|
|
3577
3577
|
}
|
|
3578
3578
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
3579
3579
|
className: "statusLabel_text"
|
|
3580
|
-
}, e.user.displayName, " assigned the ", values.textSingularName, " to ", e.assignedUser ? e.assignedUser.displayName :
|
|
3580
|
+
}, e.user.displayName, " assigned the ", values.textSingularName, " to", " ", e.assignedUser ? e.assignedUser.displayName : "Unassigned")));
|
|
3581
3581
|
}
|
|
3582
3582
|
renderExternalSyncEntry(e, i) {
|
|
3583
|
-
const isSuccess = e.EntryType ===
|
|
3583
|
+
const isSuccess = e.EntryType === "ExternalIDSet";
|
|
3584
3584
|
const backgroundColor = isSuccess ? Colours$1.COLOUR_GREEN : Colours$1.COLOUR_RED; // Green for success, red for failure
|
|
3585
3585
|
|
|
3586
3586
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3588,14 +3588,14 @@ class Job extends React.Component {
|
|
|
3588
3588
|
key: i
|
|
3589
3589
|
}, /*#__PURE__*/React__default["default"].createElement("p", {
|
|
3590
3590
|
className: "ticketHistoryEntry_timestamp"
|
|
3591
|
-
}, moment__default["default"].utc(e.timestamp).local().format(
|
|
3591
|
+
}, moment__default["default"].utc(e.timestamp).local().format("D MMM YYYY h:mma")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3592
3592
|
className: "statusLabel statusLabel-large statusLabel-full",
|
|
3593
3593
|
style: {
|
|
3594
3594
|
backgroundColor
|
|
3595
3595
|
}
|
|
3596
3596
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
3597
3597
|
className: "statusLabel_text"
|
|
3598
|
-
}, isSuccess ? "Synced to ".concat(e.systemType ||
|
|
3598
|
+
}, 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) : ""))));
|
|
3599
3599
|
}
|
|
3600
3600
|
renderPriority() {
|
|
3601
3601
|
const {
|
|
@@ -3617,8 +3617,8 @@ class Job extends React.Component {
|
|
|
3617
3617
|
} = this.state;
|
|
3618
3618
|
if (!job || !job.history) return false;
|
|
3619
3619
|
const history = job.history || [];
|
|
3620
|
-
const hasSuccess = history.some(entry => entry.EntryType ===
|
|
3621
|
-
const hasFailure = history.some(entry => entry.EntryType ===
|
|
3620
|
+
const hasSuccess = history.some(entry => entry.EntryType === "ExternalIDSet");
|
|
3621
|
+
const hasFailure = history.some(entry => entry.EntryType === "ExternalIDSetFailed");
|
|
3622
3622
|
return hasFailure && !hasSuccess;
|
|
3623
3623
|
}
|
|
3624
3624
|
renderRetrySyncButton() {
|
|
@@ -3687,7 +3687,7 @@ class Job extends React.Component {
|
|
|
3687
3687
|
style: {
|
|
3688
3688
|
color: Colours$1.COLOUR_GREEN
|
|
3689
3689
|
}
|
|
3690
|
-
}), " Sync retry initiated. Check back shortly for results.");
|
|
3690
|
+
}), " ", "Sync retry initiated. Check back shortly for results.");
|
|
3691
3691
|
}
|
|
3692
3692
|
|
|
3693
3693
|
// Show failure message with instruction
|
|
@@ -3700,7 +3700,7 @@ class Job extends React.Component {
|
|
|
3700
3700
|
style: {
|
|
3701
3701
|
color: Colours$1.COLOUR_RED
|
|
3702
3702
|
}
|
|
3703
|
-
}), " External sync failed. Use the retry button to attempt again.");
|
|
3703
|
+
}), " ", "External sync failed. Use the retry button to attempt again.");
|
|
3704
3704
|
}
|
|
3705
3705
|
return null;
|
|
3706
3706
|
}
|
|
@@ -3734,7 +3734,7 @@ class Job extends React.Component {
|
|
|
3734
3734
|
}, /*#__PURE__*/React__default["default"].createElement("strong", null, "External ID:"), " ", externalSync.externalId), externalSync.syncedAt && /*#__PURE__*/React__default["default"].createElement(Components$3.Text, {
|
|
3735
3735
|
type: "body",
|
|
3736
3736
|
className: "marginBottom-8"
|
|
3737
|
-
}, /*#__PURE__*/React__default["default"].createElement("strong", null, "Synced:"), " ", moment__default["default"].utc(externalSync.syncedAt).local().format(
|
|
3737
|
+
}, /*#__PURE__*/React__default["default"].createElement("strong", null, "Synced:"), " ", moment__default["default"].utc(externalSync.syncedAt).local().format("D MMM YYYY h:mma"))) : this.renderExternalSyncStatus()));
|
|
3738
3738
|
}
|
|
3739
3739
|
renderOverview() {
|
|
3740
3740
|
const {
|
|
@@ -3743,14 +3743,14 @@ class Job extends React.Component {
|
|
|
3743
3743
|
if (!job || !job.history) return null;
|
|
3744
3744
|
const source = ___default["default"].sortBy([...job.history.map(e => {
|
|
3745
3745
|
return _objectSpread$4(_objectSpread$4({}, e), {}, {
|
|
3746
|
-
EntryType: e.EntryType ||
|
|
3746
|
+
EntryType: e.EntryType || "status"
|
|
3747
3747
|
});
|
|
3748
3748
|
}), ...(job.Notes || []).map(e => {
|
|
3749
3749
|
return _objectSpread$4(_objectSpread$4({}, e), {}, {
|
|
3750
3750
|
timestamp: e.Timestamp,
|
|
3751
|
-
EntryType:
|
|
3751
|
+
EntryType: "note"
|
|
3752
3752
|
});
|
|
3753
|
-
})],
|
|
3753
|
+
})], "timestamp");
|
|
3754
3754
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3755
3755
|
className: "padding-32 paddingVertical-40 bottomDivideBorder relative"
|
|
3756
3756
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
@@ -3760,14 +3760,14 @@ class Job extends React.Component {
|
|
|
3760
3760
|
className: "flex-1"
|
|
3761
3761
|
}, "Status History")), this.renderHistoryEntry(null, -1), ___default["default"].map(source, (e, i) => {
|
|
3762
3762
|
switch (e.EntryType) {
|
|
3763
|
-
case
|
|
3763
|
+
case "status":
|
|
3764
3764
|
return this.renderHistoryEntry(e, i);
|
|
3765
|
-
case
|
|
3765
|
+
case "note":
|
|
3766
3766
|
return this.renderNote(e, i);
|
|
3767
|
-
case
|
|
3767
|
+
case "assignment":
|
|
3768
3768
|
return this.renderAssignmentEntry(e, i);
|
|
3769
|
-
case
|
|
3770
|
-
case
|
|
3769
|
+
case "ExternalIDSet":
|
|
3770
|
+
case "ExternalIDSetFailed":
|
|
3771
3771
|
return this.renderExternalSyncEntry(e, i);
|
|
3772
3772
|
}
|
|
3773
3773
|
}));
|
|
@@ -3820,20 +3820,20 @@ class Job extends React.Component {
|
|
|
3820
3820
|
})));
|
|
3821
3821
|
}
|
|
3822
3822
|
return /*#__PURE__*/React__default["default"].createElement(Components$3.Popup, {
|
|
3823
|
-
title: "".concat(this.state.editingNote ?
|
|
3823
|
+
title: "".concat(this.state.editingNote ? "Edit" : "Add", " Note"),
|
|
3824
3824
|
onClose: this.onCloseAddNote,
|
|
3825
3825
|
maxWidth: 600,
|
|
3826
3826
|
hasPadding: true,
|
|
3827
3827
|
buttons: [{
|
|
3828
|
-
type:
|
|
3828
|
+
type: "primary",
|
|
3829
3829
|
onClick: this.onConfirmAddNote,
|
|
3830
3830
|
isActive: this.isReadyToSaveNote(),
|
|
3831
|
-
text:
|
|
3831
|
+
text: "Save"
|
|
3832
3832
|
}, {
|
|
3833
|
-
type:
|
|
3833
|
+
type: "tertiary",
|
|
3834
3834
|
onClick: this.onCloseAddNote,
|
|
3835
3835
|
isActive: true,
|
|
3836
|
-
text:
|
|
3836
|
+
text: "Cancel"
|
|
3837
3837
|
}]
|
|
3838
3838
|
}, /*#__PURE__*/React__default["default"].createElement(Components$3.GenericInput, {
|
|
3839
3839
|
id: "noteInput",
|
|
@@ -3935,15 +3935,15 @@ class Job extends React.Component {
|
|
|
3935
3935
|
maxWidth: 600,
|
|
3936
3936
|
hasPadding: true,
|
|
3937
3937
|
buttons: [{
|
|
3938
|
-
type:
|
|
3938
|
+
type: "primary",
|
|
3939
3939
|
onClick: this.onConfirmAssignee,
|
|
3940
3940
|
isActive: !!this.state.selectedAssignee,
|
|
3941
|
-
text:
|
|
3941
|
+
text: "Confirm"
|
|
3942
3942
|
}, {
|
|
3943
|
-
type:
|
|
3943
|
+
type: "tertiary",
|
|
3944
3944
|
onClick: this.onCloseSelectAssignee,
|
|
3945
3945
|
isActive: true,
|
|
3946
|
-
text:
|
|
3946
|
+
text: "Cancel"
|
|
3947
3947
|
}]
|
|
3948
3948
|
}, this.renderUsers());
|
|
3949
3949
|
}
|
|
@@ -4009,13 +4009,13 @@ class AddJob extends React.Component {
|
|
|
4009
4009
|
this.checkSetImages(this.imageInput, res.data.images);
|
|
4010
4010
|
if (customFields) {
|
|
4011
4011
|
customFields.forEach((field, index) => {
|
|
4012
|
-
if (field.type ===
|
|
4012
|
+
if (field.type === "image" && field.answer) {
|
|
4013
4013
|
this.checkSetImages(this.customImageInputs[index], field.answer);
|
|
4014
4014
|
}
|
|
4015
4015
|
});
|
|
4016
4016
|
}
|
|
4017
4017
|
} catch (error) {
|
|
4018
|
-
console.error(
|
|
4018
|
+
console.error("getJob", error);
|
|
4019
4019
|
}
|
|
4020
4020
|
});
|
|
4021
4021
|
_defineProperty__default["default"](this, "getJobTypes", async () => {
|
|
@@ -4026,7 +4026,7 @@ class AddJob extends React.Component {
|
|
|
4026
4026
|
});
|
|
4027
4027
|
this.getDefaultJob();
|
|
4028
4028
|
} catch (error) {
|
|
4029
|
-
console.error(
|
|
4029
|
+
console.error("getJobTypes", error);
|
|
4030
4030
|
}
|
|
4031
4031
|
});
|
|
4032
4032
|
_defineProperty__default["default"](this, "getUsers", async () => {
|
|
@@ -4036,16 +4036,16 @@ class AddJob extends React.Component {
|
|
|
4036
4036
|
if (res.data != null && !___default["default"].isEmpty(res.data.results.Items)) {
|
|
4037
4037
|
let items = res.data.results.Items;
|
|
4038
4038
|
if (this.props.optionOnlyForResidents) {
|
|
4039
|
-
items = ___default["default"].filter(items, u => u.category ===
|
|
4039
|
+
items = ___default["default"].filter(items, u => u.category === "resident");
|
|
4040
4040
|
}
|
|
4041
4041
|
this.setState({
|
|
4042
4042
|
users: ___default["default"].sortBy(items, u => {
|
|
4043
|
-
return (u.displayName ||
|
|
4043
|
+
return (u.displayName || "").toLowerCase();
|
|
4044
4044
|
})
|
|
4045
4045
|
});
|
|
4046
4046
|
}
|
|
4047
4047
|
} catch (error) {
|
|
4048
|
-
console.error(
|
|
4048
|
+
console.error("getUsers", error);
|
|
4049
4049
|
}
|
|
4050
4050
|
});
|
|
4051
4051
|
_defineProperty__default["default"](this, "getDefaultJob", () => {
|
|
@@ -4062,7 +4062,7 @@ class AddJob extends React.Component {
|
|
|
4062
4062
|
});
|
|
4063
4063
|
} else {
|
|
4064
4064
|
this.setState({
|
|
4065
|
-
type:
|
|
4065
|
+
type: "General"
|
|
4066
4066
|
});
|
|
4067
4067
|
}
|
|
4068
4068
|
}
|
|
@@ -4080,14 +4080,14 @@ class AddJob extends React.Component {
|
|
|
4080
4080
|
type: selectedType.typeName,
|
|
4081
4081
|
customFields: hasPrevCustomFields ? prevCustomFileds : selectedType.hasCustomFields ? selectedType.customFields : []
|
|
4082
4082
|
};
|
|
4083
|
-
if (!___default["default"].isEmpty(update.customFields) && !___default["default"].some(update.customFields,
|
|
4084
|
-
update.title = this.state.selectedUser ? this.state.selectedUser.displayName :
|
|
4083
|
+
if (!___default["default"].isEmpty(update.customFields) && !___default["default"].some(update.customFields, "isTitle")) {
|
|
4084
|
+
update.title = this.state.selectedUser ? this.state.selectedUser.displayName : "";
|
|
4085
4085
|
}
|
|
4086
4086
|
this.setState(update);
|
|
4087
4087
|
});
|
|
4088
4088
|
_defineProperty__default["default"](this, "onHandleChange", event => {
|
|
4089
4089
|
var stateChange = {};
|
|
4090
|
-
stateChange[event.target.getAttribute(
|
|
4090
|
+
stateChange[event.target.getAttribute("id")] = event.target.value;
|
|
4091
4091
|
this.setState(stateChange);
|
|
4092
4092
|
});
|
|
4093
4093
|
_defineProperty__default["default"](this, "onOpenUserSelector", () => {
|
|
@@ -4107,7 +4107,7 @@ class AddJob extends React.Component {
|
|
|
4107
4107
|
userName: user.displayName,
|
|
4108
4108
|
userFilterOpen: false
|
|
4109
4109
|
};
|
|
4110
|
-
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields,
|
|
4110
|
+
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields, "isTitle")) {
|
|
4111
4111
|
update.title = user.displayName;
|
|
4112
4112
|
}
|
|
4113
4113
|
|
|
@@ -4135,19 +4135,19 @@ class AddJob extends React.Component {
|
|
|
4135
4135
|
}).catch(error => {
|
|
4136
4136
|
// Permission denied (403) or other error - continue without auto-population
|
|
4137
4137
|
// Staff can still create the request, just need to enter contact details manually
|
|
4138
|
-
console.log(
|
|
4138
|
+
console.log("Could not fetch user details for auto-population:", error);
|
|
4139
4139
|
});
|
|
4140
4140
|
});
|
|
4141
4141
|
_defineProperty__default["default"](this, "onUnselectUser", () => {
|
|
4142
4142
|
const update = {
|
|
4143
4143
|
selectedUser: null,
|
|
4144
|
-
userID:
|
|
4145
|
-
userName:
|
|
4146
|
-
phone:
|
|
4147
|
-
room:
|
|
4144
|
+
userID: "",
|
|
4145
|
+
userName: "",
|
|
4146
|
+
phone: "",
|
|
4147
|
+
room: ""
|
|
4148
4148
|
};
|
|
4149
|
-
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields,
|
|
4150
|
-
update.title =
|
|
4149
|
+
if (!___default["default"].isEmpty(this.state.customFields) && !___default["default"].some(this.state.customFields, "isTitle")) {
|
|
4150
|
+
update.title = "";
|
|
4151
4151
|
}
|
|
4152
4152
|
this.setState(update);
|
|
4153
4153
|
});
|
|
@@ -4175,7 +4175,7 @@ class AddJob extends React.Component {
|
|
|
4175
4175
|
};
|
|
4176
4176
|
const field = update.customFields[qId];
|
|
4177
4177
|
field.answer = ___default["default"].xor(field.answer || [], [answer]);
|
|
4178
|
-
if (field.isTitle) update.title = field.answer.join(
|
|
4178
|
+
if (field.isTitle) update.title = field.answer.join(", ");
|
|
4179
4179
|
this.setState(update);
|
|
4180
4180
|
});
|
|
4181
4181
|
_defineProperty__default["default"](this, "onChangeDateAnswer", function (qId, answer) {
|
|
@@ -4185,7 +4185,7 @@ class AddJob extends React.Component {
|
|
|
4185
4185
|
};
|
|
4186
4186
|
const field = update.customFields[qId];
|
|
4187
4187
|
field.answer = answer;
|
|
4188
|
-
if (field.isTitle) update.title = moment__default["default"](field.answer,
|
|
4188
|
+
if (field.isTitle) update.title = moment__default["default"](field.answer, "YYYY-MM-DD").format("DD-MMM-YYYY");
|
|
4189
4189
|
_this.setState(update);
|
|
4190
4190
|
if (togglePicker) _this.onToggleDatePicker(qId);
|
|
4191
4191
|
});
|
|
@@ -4195,7 +4195,7 @@ class AddJob extends React.Component {
|
|
|
4195
4195
|
};
|
|
4196
4196
|
const field = update.customFields[qId];
|
|
4197
4197
|
field.answer = answer;
|
|
4198
|
-
if (field.isTitle) update.title = moment__default["default"](field.answer,
|
|
4198
|
+
if (field.isTitle) update.title = moment__default["default"](field.answer, "HH:mm").format("h:mm a");
|
|
4199
4199
|
this.setState(update);
|
|
4200
4200
|
});
|
|
4201
4201
|
_defineProperty__default["default"](this, "onChangeImageAnswer", (qId, answer) => {
|
|
@@ -4222,7 +4222,7 @@ class AddJob extends React.Component {
|
|
|
4222
4222
|
};
|
|
4223
4223
|
const field = update.customFields[qId];
|
|
4224
4224
|
const attachments = field.answer || [];
|
|
4225
|
-
const [name, ext] = file.name.split(
|
|
4225
|
+
const [name, ext] = file.name.split(".");
|
|
4226
4226
|
const newAttachment = {
|
|
4227
4227
|
uploading: true,
|
|
4228
4228
|
name,
|
|
@@ -4240,7 +4240,7 @@ class AddJob extends React.Component {
|
|
|
4240
4240
|
delete newAttachment.uploading;
|
|
4241
4241
|
this.setState(update);
|
|
4242
4242
|
});
|
|
4243
|
-
event.target.value =
|
|
4243
|
+
event.target.value = "";
|
|
4244
4244
|
});
|
|
4245
4245
|
_defineProperty__default["default"](this, "onToggleDatePicker", qId => {
|
|
4246
4246
|
const showDate = _objectSpread$3({}, this.state.showDate);
|
|
@@ -4290,7 +4290,7 @@ class AddJob extends React.Component {
|
|
|
4290
4290
|
this.setState({
|
|
4291
4291
|
updating: false
|
|
4292
4292
|
});
|
|
4293
|
-
alert(
|
|
4293
|
+
alert("Something went wrong with the request. Please try again.");
|
|
4294
4294
|
});
|
|
4295
4295
|
} else {
|
|
4296
4296
|
// Create New Job
|
|
@@ -4304,7 +4304,7 @@ class AddJob extends React.Component {
|
|
|
4304
4304
|
this.setState({
|
|
4305
4305
|
updating: false
|
|
4306
4306
|
});
|
|
4307
|
-
alert(
|
|
4307
|
+
alert("Something went wrong with the request. Please try again.");
|
|
4308
4308
|
});
|
|
4309
4309
|
}
|
|
4310
4310
|
});
|
|
@@ -4314,15 +4314,15 @@ class AddJob extends React.Component {
|
|
|
4314
4314
|
type,
|
|
4315
4315
|
answer
|
|
4316
4316
|
} = field;
|
|
4317
|
-
if ([
|
|
4317
|
+
if (["staticTitle", "staticText"].includes(type)) return true;
|
|
4318
4318
|
const checkMandatory = () => {
|
|
4319
4319
|
if (!mandatory) return true;
|
|
4320
4320
|
switch (type) {
|
|
4321
|
-
case
|
|
4321
|
+
case "yn":
|
|
4322
4322
|
return ___default["default"].isBoolean(answer);
|
|
4323
|
-
case
|
|
4324
|
-
case
|
|
4325
|
-
case
|
|
4323
|
+
case "image":
|
|
4324
|
+
case "document":
|
|
4325
|
+
case "checkbox":
|
|
4326
4326
|
return ___default["default"].isArray(answer) && answer.length > 0;
|
|
4327
4327
|
default:
|
|
4328
4328
|
return !___default["default"].isNil(answer) && !___default["default"].isEmpty(answer);
|
|
@@ -4331,12 +4331,12 @@ class AddJob extends React.Component {
|
|
|
4331
4331
|
const checkFormat = () => {
|
|
4332
4332
|
if (___default["default"].isNil(answer) || ___default["default"].isEmpty(answer)) return true;
|
|
4333
4333
|
switch (type) {
|
|
4334
|
-
case
|
|
4334
|
+
case "email":
|
|
4335
4335
|
return Helper$1.isEmail(answer);
|
|
4336
|
-
case
|
|
4337
|
-
return moment__default["default"](answer,
|
|
4338
|
-
case
|
|
4339
|
-
return moment__default["default"](answer,
|
|
4336
|
+
case "date":
|
|
4337
|
+
return moment__default["default"](answer, "YYYY-MM-DD", true).isValid();
|
|
4338
|
+
case "time":
|
|
4339
|
+
return moment__default["default"](answer, "HH:mm", true).isValid();
|
|
4340
4340
|
default:
|
|
4341
4341
|
return true;
|
|
4342
4342
|
}
|
|
@@ -4347,13 +4347,13 @@ class AddJob extends React.Component {
|
|
|
4347
4347
|
_defineProperty__default["default"](this, "getFieldContainerClass", function () {
|
|
4348
4348
|
let isValid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
4349
4349
|
const showError = _this.state.showWarnings && !isValid;
|
|
4350
|
-
return "genericInputContainer ".concat(isValid ?
|
|
4350
|
+
return "genericInputContainer ".concat(isValid ? "genericInput-valid" : "", " ").concat(showError ? "genericInput-error" : "").trim();
|
|
4351
4351
|
});
|
|
4352
4352
|
this.imageInput = null;
|
|
4353
4353
|
this.customImageInputs = {};
|
|
4354
4354
|
this.customDocumentInputs = {};
|
|
4355
4355
|
this.state = {
|
|
4356
|
-
jobId: Helper$1.safeReadParams(this.props,
|
|
4356
|
+
jobId: Helper$1.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
|
|
4357
4357
|
job: null,
|
|
4358
4358
|
showingSelector: false,
|
|
4359
4359
|
updating: false,
|
|
@@ -4361,21 +4361,21 @@ class AddJob extends React.Component {
|
|
|
4361
4361
|
types: [],
|
|
4362
4362
|
users: [],
|
|
4363
4363
|
images: [],
|
|
4364
|
-
userSearch:
|
|
4364
|
+
userSearch: "",
|
|
4365
4365
|
userFilterOpen: false,
|
|
4366
4366
|
selectedUser: null,
|
|
4367
4367
|
id: null,
|
|
4368
|
-
userID:
|
|
4369
|
-
userName:
|
|
4370
|
-
room:
|
|
4371
|
-
phone:
|
|
4368
|
+
userID: "",
|
|
4369
|
+
userName: "",
|
|
4370
|
+
room: "",
|
|
4371
|
+
phone: "",
|
|
4372
4372
|
location: this.props.auth.site,
|
|
4373
|
-
title:
|
|
4374
|
-
description:
|
|
4373
|
+
title: "",
|
|
4374
|
+
description: "",
|
|
4375
4375
|
isHome: false,
|
|
4376
|
-
homeText:
|
|
4377
|
-
prevType:
|
|
4378
|
-
type:
|
|
4376
|
+
homeText: "",
|
|
4377
|
+
prevType: "General",
|
|
4378
|
+
type: "General",
|
|
4379
4379
|
image: null,
|
|
4380
4380
|
thumbnail: null,
|
|
4381
4381
|
showWarnings: false,
|
|
@@ -4397,7 +4397,7 @@ class AddJob extends React.Component {
|
|
|
4397
4397
|
checkSetImages(imageRef, images) {
|
|
4398
4398
|
if (imageRef) {
|
|
4399
4399
|
if (!___default["default"].isEmpty(images)) {
|
|
4400
|
-
imageRef.
|
|
4400
|
+
imageRef.setValue(images);
|
|
4401
4401
|
}
|
|
4402
4402
|
} else {
|
|
4403
4403
|
setTimeout(() => {
|
|
@@ -4425,9 +4425,9 @@ class AddJob extends React.Component {
|
|
|
4425
4425
|
if (!this.state.success) return null;
|
|
4426
4426
|
const title = this.props.strings["".concat(values.featureKey, "_textTitleRequests")] || values.textTitleRequests;
|
|
4427
4427
|
return /*#__PURE__*/React__default["default"].createElement(Components$2.SuccessPopup, {
|
|
4428
|
-
text: "".concat(values.textEntityName, " has been ").concat(this.state.id != null ?
|
|
4428
|
+
text: "".concat(values.textEntityName, " has been ").concat(this.state.id != null ? "edited" : "added"),
|
|
4429
4429
|
buttons: [{
|
|
4430
|
-
type:
|
|
4430
|
+
type: "outlined",
|
|
4431
4431
|
onClick: () => {
|
|
4432
4432
|
window.history.back();
|
|
4433
4433
|
},
|
|
@@ -4555,13 +4555,13 @@ class AddJob extends React.Component {
|
|
|
4555
4555
|
label: "Person must be home during work?",
|
|
4556
4556
|
isActive: this.state.isHome,
|
|
4557
4557
|
options: [{
|
|
4558
|
-
Label:
|
|
4558
|
+
Label: "No",
|
|
4559
4559
|
Value: false,
|
|
4560
4560
|
onChange: () => this.setState({
|
|
4561
4561
|
isHome: false
|
|
4562
4562
|
})
|
|
4563
4563
|
}, {
|
|
4564
|
-
Label:
|
|
4564
|
+
Label: "Yes",
|
|
4565
4565
|
Value: true,
|
|
4566
4566
|
onChange: () => this.setState({
|
|
4567
4567
|
isHome: true
|
|
@@ -4592,7 +4592,7 @@ class AddJob extends React.Component {
|
|
|
4592
4592
|
}
|
|
4593
4593
|
renderField(field, fieldId) {
|
|
4594
4594
|
switch (field.type) {
|
|
4595
|
-
case
|
|
4595
|
+
case "yn":
|
|
4596
4596
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4597
4597
|
key: fieldId,
|
|
4598
4598
|
className: "visitorSignIn_question ".concat(this.getFieldContainerClass(this.isFieldValid(field))),
|
|
@@ -4608,16 +4608,16 @@ class AddJob extends React.Component {
|
|
|
4608
4608
|
noHoverHighlight: true,
|
|
4609
4609
|
highlightColour: this.props.colour,
|
|
4610
4610
|
options: [{
|
|
4611
|
-
Label:
|
|
4611
|
+
Label: "Yes",
|
|
4612
4612
|
Value: true,
|
|
4613
4613
|
onChange: this.onChangeToggleAnswer.bind(this, fieldId, true)
|
|
4614
4614
|
}, {
|
|
4615
|
-
Label:
|
|
4615
|
+
Label: "No",
|
|
4616
4616
|
Value: false,
|
|
4617
4617
|
onChange: this.onChangeToggleAnswer.bind(this, fieldId, false)
|
|
4618
4618
|
}]
|
|
4619
4619
|
}));
|
|
4620
|
-
case
|
|
4620
|
+
case "multichoice":
|
|
4621
4621
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4622
4622
|
key: fieldId,
|
|
4623
4623
|
className: "visitorSignIn_question ".concat(this.getFieldContainerClass(this.isFieldValid(field))),
|
|
@@ -4640,14 +4640,14 @@ class AddJob extends React.Component {
|
|
|
4640
4640
|
};
|
|
4641
4641
|
}),
|
|
4642
4642
|
rowStyle: {
|
|
4643
|
-
flexDirection:
|
|
4643
|
+
flexDirection: "column"
|
|
4644
4644
|
},
|
|
4645
4645
|
buttonStyle: {
|
|
4646
|
-
marginTop:
|
|
4647
|
-
marginBottom:
|
|
4646
|
+
marginTop: "5px",
|
|
4647
|
+
marginBottom: "5px"
|
|
4648
4648
|
}
|
|
4649
4649
|
}));
|
|
4650
|
-
case
|
|
4650
|
+
case "checkbox":
|
|
4651
4651
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4652
4652
|
key: fieldId,
|
|
4653
4653
|
className: this.getFieldContainerClass(this.isFieldValid(field)),
|
|
@@ -4662,7 +4662,7 @@ class AddJob extends React.Component {
|
|
|
4662
4662
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4663
4663
|
className: "fieldLabel",
|
|
4664
4664
|
style: {
|
|
4665
|
-
marginBottom:
|
|
4665
|
+
marginBottom: "5px",
|
|
4666
4666
|
color: this.props.colour
|
|
4667
4667
|
}
|
|
4668
4668
|
}, field.label), field.values.map((option, optionIndex) => {
|
|
@@ -4675,9 +4675,9 @@ class AddJob extends React.Component {
|
|
|
4675
4675
|
onChange: () => this.onChangeCheckboxAnswer(fieldId, option)
|
|
4676
4676
|
});
|
|
4677
4677
|
})));
|
|
4678
|
-
case
|
|
4679
|
-
case
|
|
4680
|
-
case
|
|
4678
|
+
case "text":
|
|
4679
|
+
case "email":
|
|
4680
|
+
case "phone":
|
|
4681
4681
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4682
4682
|
key: fieldId
|
|
4683
4683
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
@@ -4690,10 +4690,10 @@ class AddJob extends React.Component {
|
|
|
4690
4690
|
isRequired: field.mandatory,
|
|
4691
4691
|
isValid: () => this.isFieldValid(field),
|
|
4692
4692
|
showError: () => this.state.showWarnings && !this.isFieldValid(field),
|
|
4693
|
-
errorMessage: field.type ===
|
|
4693
|
+
errorMessage: field.type === "email" ? "Not a valid email" : undefined,
|
|
4694
4694
|
alwaysShowLabel: true
|
|
4695
4695
|
}));
|
|
4696
|
-
case
|
|
4696
|
+
case "staticTitle":
|
|
4697
4697
|
return /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4698
4698
|
className: "visitorSignIn_text-staticTitle",
|
|
4699
4699
|
style: {
|
|
@@ -4701,21 +4701,21 @@ class AddJob extends React.Component {
|
|
|
4701
4701
|
},
|
|
4702
4702
|
key: fieldId
|
|
4703
4703
|
}, field.label);
|
|
4704
|
-
case
|
|
4704
|
+
case "staticText":
|
|
4705
4705
|
return /*#__PURE__*/React__default["default"].createElement("p", {
|
|
4706
4706
|
className: "visitorSignIn_text-staticText",
|
|
4707
4707
|
key: fieldId
|
|
4708
4708
|
}, Helper$1.toParagraphed(field.label, {
|
|
4709
4709
|
marginTop: 10
|
|
4710
4710
|
}));
|
|
4711
|
-
case
|
|
4711
|
+
case "date":
|
|
4712
4712
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4713
4713
|
key: fieldId
|
|
4714
4714
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4715
4715
|
id: fieldId,
|
|
4716
4716
|
label: field.label,
|
|
4717
|
-
placeholder:
|
|
4718
|
-
value: field.answer ? moment__default["default"](field.answer,
|
|
4717
|
+
placeholder: "DD-MMM-YYYY",
|
|
4718
|
+
value: field.answer ? moment__default["default"](field.answer, "YYYY-MM-DD").format("DD-MMM-YYYY") : "",
|
|
4719
4719
|
onClick: e => this.onToggleDatePicker(fieldId),
|
|
4720
4720
|
isRequired: field.mandatory,
|
|
4721
4721
|
isValid: () => this.isFieldValid(field),
|
|
@@ -4733,14 +4733,14 @@ class AddJob extends React.Component {
|
|
|
4733
4733
|
selectedDate: field.answer,
|
|
4734
4734
|
selectDate: date => this.onChangeDateAnswer(fieldId, date)
|
|
4735
4735
|
}));
|
|
4736
|
-
case
|
|
4736
|
+
case "time":
|
|
4737
4737
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4738
4738
|
key: fieldId
|
|
4739
4739
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4740
4740
|
id: fieldId,
|
|
4741
4741
|
label: field.label,
|
|
4742
|
-
placeholder:
|
|
4743
|
-
value: field.answer ? moment__default["default"](field.answer,
|
|
4742
|
+
placeholder: "--:-- --",
|
|
4743
|
+
value: field.answer ? moment__default["default"](field.answer, "HH:mm").format("h:mm a") : "",
|
|
4744
4744
|
type: "time",
|
|
4745
4745
|
isRequired: field.mandatory,
|
|
4746
4746
|
isValid: () => this.isFieldValid(field),
|
|
@@ -4753,7 +4753,7 @@ class AddJob extends React.Component {
|
|
|
4753
4753
|
className: "timepicker-condensed",
|
|
4754
4754
|
callbackFormat: "HH:mm",
|
|
4755
4755
|
style: {
|
|
4756
|
-
width:
|
|
4756
|
+
width: "100%"
|
|
4757
4757
|
}
|
|
4758
4758
|
}),
|
|
4759
4759
|
rightContent: !___default["default"].isEmpty(field.answer) && /*#__PURE__*/React__default["default"].createElement(Components$2.SVGIcon, {
|
|
@@ -4763,7 +4763,7 @@ class AddJob extends React.Component {
|
|
|
4763
4763
|
onClick: () => this.onChangeTimeAnswer(fieldId, undefined)
|
|
4764
4764
|
})
|
|
4765
4765
|
}));
|
|
4766
|
-
case
|
|
4766
|
+
case "image":
|
|
4767
4767
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4768
4768
|
key: fieldId,
|
|
4769
4769
|
className: this.getFieldContainerClass(this.isFieldValid(field)),
|
|
@@ -4783,7 +4783,7 @@ class AddJob extends React.Component {
|
|
|
4783
4783
|
multiple: true,
|
|
4784
4784
|
refreshCallback: images => this.onChangeImageAnswer(fieldId, images)
|
|
4785
4785
|
})));
|
|
4786
|
-
case
|
|
4786
|
+
case "document":
|
|
4787
4787
|
const documents = field.answer || [];
|
|
4788
4788
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4789
4789
|
key: fieldId,
|
|
@@ -4847,7 +4847,7 @@ class AddJob extends React.Component {
|
|
|
4847
4847
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.Text, {
|
|
4848
4848
|
type: "formTitleLarge",
|
|
4849
4849
|
className: "marginBottom-24"
|
|
4850
|
-
}, this.state.infoId == null ?
|
|
4850
|
+
}, this.state.infoId == null ? "New" : "Edit", " ", values.textSingularName), this.renderSelectUser(), /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4851
4851
|
id: "phone",
|
|
4852
4852
|
type: "text",
|
|
4853
4853
|
label: "Contact number",
|
|
@@ -4904,10 +4904,10 @@ class AddJob extends React.Component {
|
|
|
4904
4904
|
hasPadding: true,
|
|
4905
4905
|
onClose: this.onCloseUserSelector,
|
|
4906
4906
|
buttons: [{
|
|
4907
|
-
type:
|
|
4907
|
+
type: "tertiary",
|
|
4908
4908
|
onClick: this.onCloseUserSelector,
|
|
4909
4909
|
isActive: true,
|
|
4910
|
-
text:
|
|
4910
|
+
text: "Cancel"
|
|
4911
4911
|
}]
|
|
4912
4912
|
}, /*#__PURE__*/React__default["default"].createElement(Components$2.GenericInput, {
|
|
4913
4913
|
id: "userSearch",
|
|
@@ -4941,16 +4941,16 @@ class AddJob extends React.Component {
|
|
|
4941
4941
|
}
|
|
4942
4942
|
const styles$4 = {
|
|
4943
4943
|
userLabelContainer: {
|
|
4944
|
-
display:
|
|
4945
|
-
flexDirection:
|
|
4946
|
-
alignItems:
|
|
4944
|
+
display: "flex",
|
|
4945
|
+
flexDirection: "row",
|
|
4946
|
+
alignItems: "center",
|
|
4947
4947
|
marginBottom: 0,
|
|
4948
|
-
justifyContent:
|
|
4948
|
+
justifyContent: "space-between"
|
|
4949
4949
|
},
|
|
4950
4950
|
fieldContainer: {
|
|
4951
|
-
display:
|
|
4952
|
-
flexDirection:
|
|
4953
|
-
alignItems:
|
|
4951
|
+
display: "flex",
|
|
4952
|
+
flexDirection: "row",
|
|
4953
|
+
alignItems: "center"
|
|
4954
4954
|
}
|
|
4955
4955
|
};
|
|
4956
4956
|
const mapStateToProps$2 = state => {
|