@plusscommunities/pluss-maintenance-app 6.0.5-auth.0 → 6.1.1-beta.0
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/module/actions/types.js +4 -3
- package/dist/module/actions/types.js.map +1 -1
- package/dist/module/apis/{maintenanceActions.js → generalActions.js} +51 -33
- package/dist/module/apis/generalActions.js.map +1 -0
- package/dist/module/apis/index.js +1 -1
- package/dist/module/apis/index.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +12 -48
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +19 -52
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +13 -8
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/components/MaintenanceWidgetItem.js +9 -4
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
- package/dist/module/components/StatusSelectorPopup.js +1 -2
- package/dist/module/components/StatusSelectorPopup.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +10 -7
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/feature.config.js +18 -33
- package/dist/module/feature.config.js.map +1 -1
- package/dist/module/helper.js +2 -10
- package/dist/module/helper.js.map +1 -1
- package/dist/module/index.js +15 -10
- package/dist/module/index.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +2 -2
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/dist/module/screens/JobTypePicker.js +2 -2
- package/dist/module/screens/MaintenancePage.js +9 -5
- package/dist/module/screens/MaintenancePage.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +39 -128
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +8 -7
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/screens/ServiceRequest.js +12 -9
- package/dist/module/screens/ServiceRequest.js.map +1 -1
- package/dist/module/values.config.a.js +28 -0
- package/dist/module/values.config.a.js.map +1 -0
- package/dist/module/values.config.b.js +28 -0
- package/dist/module/values.config.b.js.map +1 -0
- package/dist/module/values.config.c.js +28 -0
- package/dist/module/values.config.c.js.map +1 -0
- package/dist/module/values.config.d.js +28 -0
- package/dist/module/values.config.d.js.map +1 -0
- package/dist/module/values.config.default.js +28 -0
- package/dist/module/values.config.default.js.map +1 -0
- package/dist/module/values.config.js +28 -0
- package/dist/module/values.config.js.map +1 -0
- package/package.json +13 -9
- package/src/actions/types.js +5 -3
- package/src/apis/{maintenanceActions.js → generalActions.js} +50 -30
- package/src/apis/index.js +1 -1
- package/src/components/FilterPopupMenu.js +7 -39
- package/src/components/MaintenanceList.js +21 -59
- package/src/components/MaintenanceListItem.js +7 -6
- package/src/components/MaintenanceWidgetItem.js +3 -2
- package/src/components/StatusSelectorPopup.js +1 -2
- package/src/components/WidgetSmall.js +7 -4
- package/src/feature.config.js +18 -30
- package/src/helper.js +2 -11
- package/src/index.js +15 -8
- package/src/screens/MaintenancePage.js +5 -4
- package/src/screens/RequestDetail.js +16 -122
- package/src/screens/RequestNotes.js +6 -5
- package/src/screens/ServiceRequest.js +8 -6
- package/src/values.config.a.js +28 -0
- package/src/values.config.b.js +28 -0
- package/src/values.config.c.js +28 -0
- package/src/values.config.d.js +28 -0
- package/src/values.config.default.js +28 -0
- package/src/values.config.js +28 -0
- package/dist/module/apis/maintenanceActions.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["values","featureKey","aliases","reducerKey","serviceKey","updateKey","actionJobsLoaded","actionJobAdded","actionJobsAdded","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","permissionMaintenanceTracking","iconGridMenu","iconAddMenu","iconKioskAction","orderAddMenu","orderMoreMenu","orderKioskAction","textFeatureTitle","textAddMenuTitle","textMoreMenuTitle","textKioskActionTitle"],"sources":["values.config.d.js"],"sourcesContent":["const values = {\n featureKey: 'maintenanceD',\n aliases: ['maintenanceRequestD'],\n reducerKey: 'jobsD',\n serviceKey: 'maintenanceD',\n updateKey: 'jobsD',\n actionJobsLoaded: 'JOBS_LOADEDD',\n actionJobAdded: 'JOB_ADDEDD',\n actionJobsAdded: 'JOBS_ADDEDD',\n screenMaintenance: 'maintenanceD',\n screenRequestDetail: 'requestDetailD',\n screenServiceRequest: 'serviceRequestD',\n screenJobTypePicker: 'jobTypePickerD',\n screenRequestNotes: 'requestNotesD',\n permissionMaintenanceTracking: 'maintenanceTrackingD',\n iconGridMenu: 'maintenance',\n iconAddMenu: 'request',\n iconKioskAction: 'wrench',\n orderAddMenu: 5,\n orderMoreMenu: 4,\n orderKioskAction: 1,\n textFeatureTitle: 'Request D',\n textAddMenuTitle: 'Request D',\n textMoreMenuTitle: 'Request D',\n textKioskActionTitle: 'Request D',\n};\n\nexport { values };\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG;EACbC,UAAU,EAAE,cAAc;EAC1BC,OAAO,EAAE,CAAC,qBAAqB,CAAC;EAChCC,UAAU,EAAE,OAAO;EACnBC,UAAU,EAAE,cAAc;EAC1BC,SAAS,EAAE,OAAO;EAClBC,gBAAgB,EAAE,cAAc;EAChCC,cAAc,EAAE,YAAY;EAC5BC,eAAe,EAAE,aAAa;EAC9BC,iBAAiB,EAAE,cAAc;EACjCC,mBAAmB,EAAE,gBAAgB;EACrCC,oBAAoB,EAAE,iBAAiB;EACvCC,mBAAmB,EAAE,gBAAgB;EACrCC,kBAAkB,EAAE,eAAe;EACnCC,6BAA6B,EAAE,sBAAsB;EACrDC,YAAY,EAAE,aAAa;EAC3BC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,QAAQ;EACzBC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,WAAW;EAC7BC,gBAAgB,EAAE,WAAW;EAC7BC,iBAAiB,EAAE,WAAW;EAC9BC,oBAAoB,EAAE;AACxB,CAAC;AAED,SAASxB,MAAM","ignoreList":[]}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
const values = {
|
2
|
+
featureKey: 'maintenance',
|
3
|
+
aliases: ['maintenanceRequest'],
|
4
|
+
reducerKey: 'jobs',
|
5
|
+
serviceKey: 'maintenance',
|
6
|
+
updateKey: 'jobs',
|
7
|
+
actionJobsLoaded: 'JOBS_LOADED',
|
8
|
+
actionJobAdded: 'JOB_ADDED',
|
9
|
+
actionJobsAdded: 'JOBS_ADDED',
|
10
|
+
screenMaintenance: 'maintenance',
|
11
|
+
screenRequestDetail: 'requestDetail',
|
12
|
+
screenServiceRequest: 'serviceRequest',
|
13
|
+
screenJobTypePicker: 'jobTypePicker',
|
14
|
+
screenRequestNotes: 'requestNotes',
|
15
|
+
permissionMaintenanceTracking: 'maintenanceTracking',
|
16
|
+
iconGridMenu: 'maintenance',
|
17
|
+
iconAddMenu: 'request',
|
18
|
+
iconKioskAction: 'wrench',
|
19
|
+
orderAddMenu: 5,
|
20
|
+
orderMoreMenu: 4,
|
21
|
+
orderKioskAction: 1,
|
22
|
+
textFeatureTitle: 'Request',
|
23
|
+
textAddMenuTitle: 'Request',
|
24
|
+
textMoreMenuTitle: 'Request',
|
25
|
+
textKioskActionTitle: 'Request'
|
26
|
+
};
|
27
|
+
export { values };
|
28
|
+
//# sourceMappingURL=values.config.default.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["values","featureKey","aliases","reducerKey","serviceKey","updateKey","actionJobsLoaded","actionJobAdded","actionJobsAdded","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","permissionMaintenanceTracking","iconGridMenu","iconAddMenu","iconKioskAction","orderAddMenu","orderMoreMenu","orderKioskAction","textFeatureTitle","textAddMenuTitle","textMoreMenuTitle","textKioskActionTitle"],"sources":["values.config.default.js"],"sourcesContent":["const values = {\n featureKey: 'maintenance',\n aliases: ['maintenanceRequest'],\n reducerKey: 'jobs',\n serviceKey: 'maintenance',\n updateKey: 'jobs',\n actionJobsLoaded: 'JOBS_LOADED',\n actionJobAdded: 'JOB_ADDED',\n actionJobsAdded: 'JOBS_ADDED',\n screenMaintenance: 'maintenance',\n screenRequestDetail: 'requestDetail',\n screenServiceRequest: 'serviceRequest',\n screenJobTypePicker: 'jobTypePicker',\n screenRequestNotes: 'requestNotes',\n permissionMaintenanceTracking: 'maintenanceTracking',\n iconGridMenu: 'maintenance',\n iconAddMenu: 'request',\n iconKioskAction: 'wrench',\n orderAddMenu: 5,\n orderMoreMenu: 4,\n orderKioskAction: 1,\n textFeatureTitle: 'Request',\n textAddMenuTitle: 'Request',\n textMoreMenuTitle: 'Request',\n textKioskActionTitle: 'Request',\n};\n\nexport { values };\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG;EACbC,UAAU,EAAE,aAAa;EACzBC,OAAO,EAAE,CAAC,oBAAoB,CAAC;EAC/BC,UAAU,EAAE,MAAM;EAClBC,UAAU,EAAE,aAAa;EACzBC,SAAS,EAAE,MAAM;EACjBC,gBAAgB,EAAE,aAAa;EAC/BC,cAAc,EAAE,WAAW;EAC3BC,eAAe,EAAE,YAAY;EAC7BC,iBAAiB,EAAE,aAAa;EAChCC,mBAAmB,EAAE,eAAe;EACpCC,oBAAoB,EAAE,gBAAgB;EACtCC,mBAAmB,EAAE,eAAe;EACpCC,kBAAkB,EAAE,cAAc;EAClCC,6BAA6B,EAAE,qBAAqB;EACpDC,YAAY,EAAE,aAAa;EAC3BC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,QAAQ;EACzBC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,SAAS;EAC3BC,gBAAgB,EAAE,SAAS;EAC3BC,iBAAiB,EAAE,SAAS;EAC5BC,oBAAoB,EAAE;AACxB,CAAC;AAED,SAASxB,MAAM","ignoreList":[]}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
const values = {
|
2
|
+
featureKey: 'maintenance',
|
3
|
+
aliases: ['maintenanceRequest'],
|
4
|
+
reducerKey: 'jobs',
|
5
|
+
serviceKey: 'maintenance',
|
6
|
+
updateKey: 'jobs',
|
7
|
+
actionJobsLoaded: 'JOBS_LOADED',
|
8
|
+
actionJobAdded: 'JOB_ADDED',
|
9
|
+
actionJobsAdded: 'JOBS_ADDED',
|
10
|
+
screenMaintenance: 'maintenance',
|
11
|
+
screenRequestDetail: 'requestDetail',
|
12
|
+
screenServiceRequest: 'serviceRequest',
|
13
|
+
screenJobTypePicker: 'jobTypePicker',
|
14
|
+
screenRequestNotes: 'requestNotes',
|
15
|
+
permissionMaintenanceTracking: 'maintenanceTracking',
|
16
|
+
iconGridMenu: 'maintenance',
|
17
|
+
iconAddMenu: 'request',
|
18
|
+
iconKioskAction: 'wrench',
|
19
|
+
orderAddMenu: 5,
|
20
|
+
orderMoreMenu: 4,
|
21
|
+
orderKioskAction: 1,
|
22
|
+
textFeatureTitle: 'Request',
|
23
|
+
textAddMenuTitle: 'Request',
|
24
|
+
textMoreMenuTitle: 'Request',
|
25
|
+
textKioskActionTitle: 'Request'
|
26
|
+
};
|
27
|
+
export { values };
|
28
|
+
//# sourceMappingURL=values.config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["values","featureKey","aliases","reducerKey","serviceKey","updateKey","actionJobsLoaded","actionJobAdded","actionJobsAdded","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","permissionMaintenanceTracking","iconGridMenu","iconAddMenu","iconKioskAction","orderAddMenu","orderMoreMenu","orderKioskAction","textFeatureTitle","textAddMenuTitle","textMoreMenuTitle","textKioskActionTitle"],"sources":["values.config.js"],"sourcesContent":["const values = {\n featureKey: 'maintenance',\n aliases: ['maintenanceRequest'],\n reducerKey: 'jobs',\n serviceKey: 'maintenance',\n updateKey: 'jobs',\n actionJobsLoaded: 'JOBS_LOADED',\n actionJobAdded: 'JOB_ADDED',\n actionJobsAdded: 'JOBS_ADDED',\n screenMaintenance: 'maintenance',\n screenRequestDetail: 'requestDetail',\n screenServiceRequest: 'serviceRequest',\n screenJobTypePicker: 'jobTypePicker',\n screenRequestNotes: 'requestNotes',\n permissionMaintenanceTracking: 'maintenanceTracking',\n iconGridMenu: 'maintenance',\n iconAddMenu: 'request',\n iconKioskAction: 'wrench',\n orderAddMenu: 5,\n orderMoreMenu: 4,\n orderKioskAction: 1,\n textFeatureTitle: 'Request',\n textAddMenuTitle: 'Request',\n textMoreMenuTitle: 'Request',\n textKioskActionTitle: 'Request',\n};\n\nexport { values };\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG;EACbC,UAAU,EAAE,aAAa;EACzBC,OAAO,EAAE,CAAC,oBAAoB,CAAC;EAC/BC,UAAU,EAAE,MAAM;EAClBC,UAAU,EAAE,aAAa;EACzBC,SAAS,EAAE,MAAM;EACjBC,gBAAgB,EAAE,aAAa;EAC/BC,cAAc,EAAE,WAAW;EAC3BC,eAAe,EAAE,YAAY;EAC7BC,iBAAiB,EAAE,aAAa;EAChCC,mBAAmB,EAAE,eAAe;EACpCC,oBAAoB,EAAE,gBAAgB;EACtCC,mBAAmB,EAAE,eAAe;EACpCC,kBAAkB,EAAE,cAAc;EAClCC,6BAA6B,EAAE,qBAAqB;EACpDC,YAAY,EAAE,aAAa;EAC3BC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,QAAQ;EACzBC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,SAAS;EAC3BC,gBAAgB,EAAE,SAAS;EAC3BC,iBAAiB,EAAE,SAAS;EAC5BC,oBAAoB,EAAE;AACxB,CAAC;AAED,SAASxB,MAAM","ignoreList":[]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-app",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.1.1-beta.0",
|
4
4
|
"description": "Extension package to enable maintenance on Pluss Communities Platform",
|
5
5
|
"main": "dist/module/index.js",
|
6
6
|
"module": "dist/module/index.js",
|
@@ -15,17 +15,19 @@
|
|
15
15
|
"patch": "npm version patch",
|
16
16
|
"betaupload": "npm run build && npm publish --access public --tag beta",
|
17
17
|
"betaupload:p": "npm run betapatch && npm run betaupload",
|
18
|
-
"authpatch": "npm version prepatch --preid=auth",
|
19
|
-
"authupload": "npm run build && npm publish --access public --tag auth",
|
20
|
-
"authupload:p": "npm run authpatch && npm run authupload",
|
21
18
|
"upload": "npm run build && npm publish --access public",
|
22
|
-
"upload:p": "npm run patch && npm run upload"
|
19
|
+
"upload:p": "npm run patch && npm run upload",
|
20
|
+
"copy:add": "run(){ ext=${1:-default}; test -f src/values.config.$ext.js || cp src/values.config.default.js src/values.config.$ext.js; }; run",
|
21
|
+
"copy:get": "echo $npm_package_name",
|
22
|
+
"copy:set": "run(){ target='\\@plusscommunities\\/pluss-maintenance-app'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f src/values.config.$ext.js && cp -f src/values.config.$ext.js src/values.config.js; sed -i '' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
|
23
|
+
"copy:uploadnopatch": "for file in `ls ./src/values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run upload; done; npm run copy:set;",
|
24
|
+
"copy:upload": "npm run patch; npm run copy:uploadnopatch;",
|
25
|
+
"copy:betaupload": "npm run betapatch; for file in `ls ./src/values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;"
|
23
26
|
},
|
24
27
|
"author": "Thorbjorn Kappel Davis",
|
25
28
|
"license": "ISC",
|
26
|
-
"dependencies": {
|
27
|
-
|
28
|
-
"@plusscommunities/pluss-core-app": "^6.0.10-auth.0",
|
29
|
+
"dependencies": {
|
30
|
+
"@plusscommunities/pluss-core-app": "^6.0.3",
|
29
31
|
"axios": "^1.6.8",
|
30
32
|
"lodash": "^4.17.4",
|
31
33
|
"moment": "^2.30.1",
|
@@ -34,7 +36,9 @@
|
|
34
36
|
"react-native-elements": "^0.17.0",
|
35
37
|
"react-native-iphone-x-helper": "^1.3.1",
|
36
38
|
"react-native-webview": "13.6.4",
|
37
|
-
"react-redux": "^7.2.6"
|
39
|
+
"react-redux": "^7.2.6"
|
40
|
+
},
|
41
|
+
"peerDependencies": {
|
38
42
|
"redux-persist": "^6.0.0"
|
39
43
|
},
|
40
44
|
"devDependencies": {
|
package/src/actions/types.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
export const
|
1
|
+
import { values } from '../values.config';
|
2
|
+
|
3
|
+
export const JOBS_LOADED = values.actionJobsLoaded;
|
4
|
+
export const JOB_ADDED = values.actionJobAdded;
|
5
|
+
export const JOBS_ADDED = values.actionJobsAdded;
|
@@ -1,24 +1,28 @@
|
|
1
|
+
// import axios from 'axios';
|
2
|
+
// import { getUrl } from './helper';
|
3
|
+
// import { authedFunction } from '../js';
|
1
4
|
import { Helper, Session } from '../core.config';
|
5
|
+
import { values } from '../values.config';
|
2
6
|
|
3
|
-
export const
|
7
|
+
export const generalActions = {
|
4
8
|
getJob: (site, id) => {
|
5
9
|
return Session.authedFunction({
|
6
10
|
method: 'POST',
|
7
|
-
url: Helper.getUrl(
|
11
|
+
url: Helper.getUrl(values.serviceKey, 'getJob'),
|
8
12
|
data: { site, id },
|
9
13
|
});
|
10
14
|
},
|
11
15
|
getJobByJobId: (site, jobId) => {
|
12
16
|
return Session.authedFunction({
|
13
17
|
method: 'POST',
|
14
|
-
url: Helper.getUrl(
|
18
|
+
url: Helper.getUrl(values.serviceKey, 'getJob'),
|
15
19
|
data: { site, jobId },
|
16
20
|
});
|
17
21
|
},
|
18
22
|
getJobs: (site, status = '', type = '') => {
|
19
23
|
return Session.authedFunction({
|
20
24
|
method: 'POST',
|
21
|
-
url: Helper.getUrl(
|
25
|
+
url: Helper.getUrl(values.serviceKey, 'getJobs'),
|
22
26
|
data: { site, status, type },
|
23
27
|
});
|
24
28
|
},
|
@@ -35,24 +39,24 @@ export const maintenanceActions = {
|
|
35
39
|
}
|
36
40
|
return Session.authedFunction({
|
37
41
|
method: 'GET',
|
38
|
-
url: Helper.getUrl(
|
42
|
+
url: Helper.getUrl(values.serviceKey, 'get/requests', query),
|
39
43
|
});
|
40
44
|
},
|
41
45
|
getJobsRecursive: (site, status, type, lastKey, jobs = []) => {
|
42
46
|
return new Promise(resolve => {
|
43
|
-
|
47
|
+
generalActions.getJobs2(site, status, type, lastKey).then(jobRes => {
|
44
48
|
const newJobs = [...jobs, ...jobRes.data.Items];
|
45
49
|
if (!jobRes.data.LastKey) {
|
46
50
|
return resolve(newJobs);
|
47
51
|
}
|
48
|
-
return resolve(
|
52
|
+
return resolve(generalActions.getJobsRecursive(site, status, type, jobRes.data.LastKey, newJobs));
|
49
53
|
});
|
50
54
|
});
|
51
55
|
},
|
52
56
|
sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText) => {
|
53
57
|
const request = {
|
54
58
|
method: 'POST',
|
55
|
-
url: Helper.getUrl(
|
59
|
+
url: Helper.getUrl(values.serviceKey, 'sendMaintenance'),
|
56
60
|
data: {
|
57
61
|
userID,
|
58
62
|
userName,
|
@@ -73,37 +77,21 @@ export const maintenanceActions = {
|
|
73
77
|
editJob: (job, site) => {
|
74
78
|
return Session.authedFunction({
|
75
79
|
method: 'POST',
|
76
|
-
url: Helper.getUrl(
|
80
|
+
url: Helper.getUrl(values.serviceKey, 'editJob'),
|
77
81
|
data: { job, site },
|
78
82
|
});
|
79
83
|
},
|
80
84
|
editJobStatus: (id, status) => {
|
81
85
|
return Session.authedFunction({
|
82
86
|
method: 'POST',
|
83
|
-
url: Helper.getUrl(
|
87
|
+
url: Helper.getUrl(values.serviceKey, 'editJobStatus'),
|
84
88
|
data: { id, status },
|
85
89
|
});
|
86
90
|
},
|
87
|
-
assignJob: (jobId, userId) => {
|
88
|
-
return Session.authedFunction({
|
89
|
-
method: 'POST',
|
90
|
-
url: Helper.getUrl('maintenance', 'update/assign'),
|
91
|
-
data: {
|
92
|
-
id: jobId,
|
93
|
-
userId,
|
94
|
-
},
|
95
|
-
});
|
96
|
-
},
|
97
|
-
getAssignees: site => {
|
98
|
-
return Session.authedFunction({
|
99
|
-
method: 'GET',
|
100
|
-
url: Helper.getUrl('maintenance', 'get/assignees', { site }),
|
101
|
-
});
|
102
|
-
},
|
103
91
|
addNote: (jobId, note, attachments) => {
|
104
92
|
return Session.authedFunction({
|
105
93
|
method: 'POST',
|
106
|
-
url: Helper.getUrl(
|
94
|
+
url: Helper.getUrl(values.serviceKey, 'requests/note'),
|
107
95
|
data: {
|
108
96
|
id: jobId,
|
109
97
|
note,
|
@@ -115,7 +103,7 @@ export const maintenanceActions = {
|
|
115
103
|
editNote: (jobId, noteId, note, attachments) => {
|
116
104
|
return Session.authedFunction({
|
117
105
|
method: 'POST',
|
118
|
-
url: Helper.getUrl(
|
106
|
+
url: Helper.getUrl(values.serviceKey, 'requests/note'),
|
119
107
|
data: {
|
120
108
|
id: jobId,
|
121
109
|
note,
|
@@ -128,7 +116,7 @@ export const maintenanceActions = {
|
|
128
116
|
deleteNote: (jobId, noteId) => {
|
129
117
|
return Session.authedFunction({
|
130
118
|
method: 'POST',
|
131
|
-
url: Helper.getUrl(
|
119
|
+
url: Helper.getUrl(values.serviceKey, 'requests/note'),
|
132
120
|
data: {
|
133
121
|
id: jobId,
|
134
122
|
noteId,
|
@@ -136,12 +124,44 @@ export const maintenanceActions = {
|
|
136
124
|
},
|
137
125
|
});
|
138
126
|
},
|
127
|
+
// getWeeklyMenu: async time => {
|
128
|
+
// //deprecated
|
129
|
+
// return null;
|
130
|
+
// },
|
139
131
|
getJobTypes: async site => {
|
140
|
-
const url = Helper.getUrl(
|
132
|
+
const url = Helper.getUrl(values.serviceKey, 'getjobtypes');
|
141
133
|
return Session.authedFunction({
|
142
134
|
method: 'POST',
|
143
135
|
url,
|
144
136
|
data: { site },
|
145
137
|
});
|
146
138
|
},
|
139
|
+
// sendBookingRequest: async bookingInfo => {
|
140
|
+
// return authedFunction({
|
141
|
+
// method: 'POST',
|
142
|
+
// data: {
|
143
|
+
// bookingInfo,
|
144
|
+
// },
|
145
|
+
// url: getUrl('utility', 'sendBookingRequest'),
|
146
|
+
// });
|
147
|
+
// },
|
148
|
+
// getString: async (site, id, useDefault) => {
|
149
|
+
// return axios({
|
150
|
+
// method: 'GET',
|
151
|
+
// url: getUrl('strings', `get/${site}_${id}`, useDefault ? { useDefault } : undefined),
|
152
|
+
// }).catch(error => {
|
153
|
+
// console.log('getString error', error);
|
154
|
+
// throw error;
|
155
|
+
// });
|
156
|
+
// },
|
157
|
+
// getGeneralTerms: async () => {
|
158
|
+
// return axios({
|
159
|
+
// method: 'GET',
|
160
|
+
// url: 'https://pluss.plussapp.com.au/strings-prd/get/plussSpace_termsofuse',
|
161
|
+
// });
|
162
|
+
// },
|
163
|
+
// declineTerms: async (site, userID) => {
|
164
|
+
// //deprecated
|
165
|
+
// return null;
|
166
|
+
// },
|
147
167
|
};
|
package/src/apis/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export * from './
|
1
|
+
export * from './generalActions';
|
@@ -1,12 +1,10 @@
|
|
1
1
|
import React, { Component } from 'react';
|
2
|
-
import { View, Text, TouchableOpacity, Modal
|
2
|
+
import { View, Text, TouchableOpacity, Modal } from 'react-native';
|
3
3
|
import { connect } from 'react-redux';
|
4
4
|
import _ from 'lodash';
|
5
|
-
import {
|
5
|
+
import { generalActions } from '../apis';
|
6
6
|
import { Colours, Helper } from '../core.config';
|
7
7
|
|
8
|
-
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
9
|
-
|
10
8
|
class FilterPopupMenu extends Component {
|
11
9
|
constructor(props) {
|
12
10
|
super(props);
|
@@ -15,8 +13,6 @@ class FilterPopupMenu extends Component {
|
|
15
13
|
types: props.types || [],
|
16
14
|
selectedStatus: props.status || '',
|
17
15
|
selectedType: props.type || '',
|
18
|
-
selectedAssignee: props.assignee || '',
|
19
|
-
assignees: [],
|
20
16
|
};
|
21
17
|
this.statusOptions = [
|
22
18
|
{
|
@@ -28,7 +24,7 @@ class FilterPopupMenu extends Component {
|
|
28
24
|
value: 'Unassigned|In Progress',
|
29
25
|
},
|
30
26
|
{
|
31
|
-
label: '
|
27
|
+
label: 'Unassigned',
|
32
28
|
value: 'Unassigned',
|
33
29
|
},
|
34
30
|
{
|
@@ -43,7 +39,6 @@ class FilterPopupMenu extends Component {
|
|
43
39
|
}
|
44
40
|
|
45
41
|
componentDidMount() {
|
46
|
-
this.getAssignees();
|
47
42
|
if (_.isEmpty(this.state.types)) this.refreshTypes();
|
48
43
|
}
|
49
44
|
|
@@ -53,30 +48,8 @@ class FilterPopupMenu extends Component {
|
|
53
48
|
}
|
54
49
|
}
|
55
50
|
|
56
|
-
getAssignees = async () => {
|
57
|
-
try {
|
58
|
-
const res = await maintenanceActions.getAssignees(this.props.site);
|
59
|
-
let assignees = res.data.Users.map(t => {
|
60
|
-
return { label: t.displayName, value: t.id };
|
61
|
-
});
|
62
|
-
assignees = _.orderBy(assignees, 'label');
|
63
|
-
|
64
|
-
assignees.splice(0, 0, { label: 'All', value: '' });
|
65
|
-
|
66
|
-
const newState = { assignees };
|
67
|
-
|
68
|
-
if (!assignees.some(a => a.value === this.state.selectedAssignee)) {
|
69
|
-
newState.selectedAssignee = '';
|
70
|
-
}
|
71
|
-
// console.log('refreshassignees', assignees);
|
72
|
-
this.setState(newState);
|
73
|
-
} catch (error) {
|
74
|
-
console.error('getAssignees', error);
|
75
|
-
}
|
76
|
-
};
|
77
|
-
|
78
51
|
refreshTypes = async () => {
|
79
|
-
const { data } = await
|
52
|
+
const { data } = await generalActions.getJobTypes(Helper.getSite(this.props.site));
|
80
53
|
const types = data.map(t => {
|
81
54
|
return { label: t.typeName, value: t.typeName };
|
82
55
|
});
|
@@ -93,14 +66,11 @@ class FilterPopupMenu extends Component {
|
|
93
66
|
|
94
67
|
onDone = () => {
|
95
68
|
const { onClose } = this.props;
|
96
|
-
const { selectedStatus, selectedType
|
69
|
+
const { selectedStatus, selectedType } = this.state;
|
97
70
|
if (onClose)
|
98
71
|
onClose({
|
99
72
|
status: selectedStatus,
|
100
|
-
statusText: this.statusOptions.find(o => o.value === selectedStatus)?.label,
|
101
73
|
type: selectedType,
|
102
|
-
assignee: selectedAssignee,
|
103
|
-
assigneeName: this.state.assignees.find(a => a.value === selectedAssignee)?.label,
|
104
74
|
});
|
105
75
|
};
|
106
76
|
|
@@ -153,11 +123,10 @@ class FilterPopupMenu extends Component {
|
|
153
123
|
<View style={styles.container}>
|
154
124
|
<View style={styles.menu}>
|
155
125
|
{this.renderTitle()}
|
156
|
-
<
|
126
|
+
<View style={styles.optionContent}>
|
157
127
|
{this.renderOptions('Status', this.statusOptions, 'selectedStatus')}
|
158
128
|
{this.renderOptions('Type', this.state.types, 'selectedType')}
|
159
|
-
|
160
|
-
</ScrollView>
|
129
|
+
</View>
|
161
130
|
{this.renderCancel()}
|
162
131
|
</View>
|
163
132
|
</View>
|
@@ -184,7 +153,6 @@ const styles = {
|
|
184
153
|
backgroundColor: '#fff',
|
185
154
|
borderTopLeftRadius: 12,
|
186
155
|
borderTopRightRadius: 12,
|
187
|
-
maxHeight: SCREEN_HEIGHT * 0.8,
|
188
156
|
},
|
189
157
|
cancelContainer: {
|
190
158
|
paddingVertical: 16,
|
@@ -2,18 +2,18 @@ import React, { Component } from 'react';
|
|
2
2
|
import { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';
|
3
3
|
import _ from 'lodash';
|
4
4
|
import { connect } from 'react-redux';
|
5
|
-
import {
|
5
|
+
import { generalActions } from '../apis';
|
6
6
|
import { jobsLoaded, jobAdded, jobsAdded } from '../actions';
|
7
7
|
import MaintenanceListItem from '../components/MaintenanceListItem';
|
8
8
|
import FilterPopupMenu from './FilterPopupMenu';
|
9
9
|
import { Components, Colours, Config, Helper } from '../core.config';
|
10
|
+
import { values } from '../values.config';
|
10
11
|
|
11
12
|
class MaintenanceList extends Component {
|
12
13
|
constructor(props) {
|
13
14
|
super(props);
|
14
15
|
|
15
16
|
this.initialStatus = props.hasPermission ? 'Unassigned|In Progress' : '';
|
16
|
-
this.initialStatusText = props.hasPermission ? 'Incomplete' : '';
|
17
17
|
|
18
18
|
this.state = {
|
19
19
|
types: [],
|
@@ -22,10 +22,7 @@ class MaintenanceList extends Component {
|
|
22
22
|
searchText: '',
|
23
23
|
showFilterPopup: false,
|
24
24
|
selectedStatus: this.initialStatus,
|
25
|
-
selectedStatusText: this.initialStatusText,
|
26
25
|
selectedType: '',
|
27
|
-
selectedAssignee: '',
|
28
|
-
selectedAssigneeName: '',
|
29
26
|
};
|
30
27
|
}
|
31
28
|
|
@@ -46,8 +43,8 @@ class MaintenanceList extends Component {
|
|
46
43
|
try {
|
47
44
|
const { selectedStatus, selectedType } = this.state;
|
48
45
|
// console.log('filters', { selectedStatus, selectedType });
|
49
|
-
const res = await
|
50
|
-
// console.log('refresh', res
|
46
|
+
const res = await generalActions.getJobsRecursive(this.props.site, selectedStatus, selectedType);
|
47
|
+
// console.log('refresh', JSON.stringify(res, null, 2));
|
51
48
|
if (selectedStatus !== this.initialStatus || !_.isEmpty(selectedType)) {
|
52
49
|
this.props.jobsAdded(res);
|
53
50
|
} else {
|
@@ -62,7 +59,7 @@ class MaintenanceList extends Component {
|
|
62
59
|
};
|
63
60
|
|
64
61
|
refreshTypes = async () => {
|
65
|
-
const { data } = await
|
62
|
+
const { data } = await generalActions.getJobTypes(Helper.getSite(this.props.site));
|
66
63
|
const types = data.map(t => {
|
67
64
|
return { label: t.typeName, value: t.typeName };
|
68
65
|
});
|
@@ -76,7 +73,7 @@ class MaintenanceList extends Component {
|
|
76
73
|
|
77
74
|
this.onLoadingChanged(true, async () => {
|
78
75
|
try {
|
79
|
-
const job = await
|
76
|
+
const job = await generalActions.getJobByJobId(this.props.site, jobId);
|
80
77
|
// console.log('fetchJob', job?.data);
|
81
78
|
this.props.jobAdded(job.data);
|
82
79
|
} catch (error) {
|
@@ -95,7 +92,7 @@ class MaintenanceList extends Component {
|
|
95
92
|
}
|
96
93
|
|
97
94
|
resetDataSource = (source = '') => {
|
98
|
-
const { searchText, selectedStatus, selectedType
|
95
|
+
const { searchText, selectedStatus, selectedType } = this.state;
|
99
96
|
const { jobs } = this.props;
|
100
97
|
|
101
98
|
let filteredList = jobs;
|
@@ -112,7 +109,6 @@ class MaintenanceList extends Component {
|
|
112
109
|
}
|
113
110
|
if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
|
114
111
|
if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
|
115
|
-
if (selectedAssignee) filteredList = filteredList.filter(j => selectedAssignee.includes(j.AssigneeId));
|
116
112
|
if (jobIdMatch) {
|
117
113
|
const jobIndex = filteredList.indexOf(jobIdMatch);
|
118
114
|
if (jobIndex > -1) {
|
@@ -147,38 +143,10 @@ class MaintenanceList extends Component {
|
|
147
143
|
};
|
148
144
|
|
149
145
|
onSelectFilter = selected => {
|
150
|
-
this.setState(
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
selectedType: selected.type,
|
155
|
-
selectedAssignee: selected.assignee,
|
156
|
-
selectedAssigneeName: selected.assigneeName,
|
157
|
-
},
|
158
|
-
() => {
|
159
|
-
this.resetDataSource();
|
160
|
-
this.onToggleFilter();
|
161
|
-
},
|
162
|
-
);
|
163
|
-
};
|
164
|
-
|
165
|
-
getFilterButtonText = () => {
|
166
|
-
const { selectedStatus, selectedStatusText, selectedType, selectedAssignee, selectedAssigneeName } = this.state;
|
167
|
-
const filterTexts = [];
|
168
|
-
if (!_.isEmpty(selectedStatus)) {
|
169
|
-
filterTexts.push(selectedStatusText);
|
170
|
-
}
|
171
|
-
|
172
|
-
if (!_.isEmpty(selectedType)) {
|
173
|
-
filterTexts.push(selectedType);
|
174
|
-
}
|
175
|
-
if (!_.isEmpty(selectedAssignee)) {
|
176
|
-
filterTexts.push(selectedAssigneeName);
|
177
|
-
}
|
178
|
-
if (_.isEmpty(filterTexts)) {
|
179
|
-
return 'Filter';
|
180
|
-
}
|
181
|
-
return `Filtering by ${filterTexts.join(', ')}`;
|
146
|
+
this.setState({ selectedStatus: selected.status, selectedType: selected.type }, () => {
|
147
|
+
this.resetDataSource();
|
148
|
+
this.onToggleFilter();
|
149
|
+
});
|
182
150
|
};
|
183
151
|
|
184
152
|
renderEmptyList() {
|
@@ -189,7 +157,7 @@ class MaintenanceList extends Component {
|
|
189
157
|
return (
|
190
158
|
<TouchableOpacity onPress={this.onToggleFilter}>
|
191
159
|
<View style={styles.filterButton}>
|
192
|
-
<Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>
|
160
|
+
<Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>Filter</Text>
|
193
161
|
</View>
|
194
162
|
</TouchableOpacity>
|
195
163
|
);
|
@@ -218,7 +186,7 @@ class MaintenanceList extends Component {
|
|
218
186
|
const { ListHeaderComponent } = this.props;
|
219
187
|
return (
|
220
188
|
<View>
|
221
|
-
{ListHeaderComponent ? ListHeaderComponent : <View style={{ height:
|
189
|
+
{ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 32 }} />}
|
222
190
|
{this.renderFilterButton()}
|
223
191
|
{this.renderSearch()}
|
224
192
|
</View>
|
@@ -243,18 +211,11 @@ class MaintenanceList extends Component {
|
|
243
211
|
}
|
244
212
|
|
245
213
|
renderFilterPopup() {
|
246
|
-
const { showFilterPopup, types, selectedStatus, selectedType
|
214
|
+
const { showFilterPopup, types, selectedStatus, selectedType } = this.state;
|
247
215
|
if (!showFilterPopup) return null;
|
248
216
|
|
249
217
|
return (
|
250
|
-
<FilterPopupMenu
|
251
|
-
site={this.props.site}
|
252
|
-
types={types}
|
253
|
-
status={selectedStatus}
|
254
|
-
assignee={selectedAssignee}
|
255
|
-
type={selectedType}
|
256
|
-
onClose={this.onSelectFilter}
|
257
|
-
/>
|
218
|
+
<FilterPopupMenu site={this.props.site} types={types} status={selectedStatus} type={selectedType} onClose={this.onSelectFilter} />
|
258
219
|
);
|
259
220
|
}
|
260
221
|
|
@@ -305,9 +266,9 @@ const styles = StyleSheet.create({
|
|
305
266
|
paddingHorizontal: 16,
|
306
267
|
},
|
307
268
|
filterButton: {
|
308
|
-
|
309
|
-
|
310
|
-
|
269
|
+
position: 'absolute',
|
270
|
+
right: 20,
|
271
|
+
top: -32,
|
311
272
|
},
|
312
273
|
filterButtonText: {
|
313
274
|
fontFamily: 'sf-semibold',
|
@@ -316,7 +277,8 @@ const styles = StyleSheet.create({
|
|
316
277
|
});
|
317
278
|
|
318
279
|
const mapStateToProps = state => {
|
319
|
-
const { user,
|
280
|
+
const { user, notifications } = state;
|
281
|
+
const jobs = state[values.reducerKey];
|
320
282
|
const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);
|
321
283
|
const hasPermission = _.includes(user.permissions, 'maintenanceTracking');
|
322
284
|
|
@@ -326,7 +288,7 @@ const mapStateToProps = state => {
|
|
326
288
|
site: user.site,
|
327
289
|
userCategory: user.category,
|
328
290
|
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
329
|
-
dataUpdated: notifications.dataUpdated[
|
291
|
+
dataUpdated: notifications.dataUpdated[values.updateKey],
|
330
292
|
};
|
331
293
|
};
|
332
294
|
|
@@ -19,10 +19,11 @@ import moment from 'moment';
|
|
19
19
|
import { getJobStatusProps, jobStatusOptions } from '../helper';
|
20
20
|
import { Services } from '../feature.config';
|
21
21
|
import { Helper, Colours } from '../core.config';
|
22
|
+
import { values } from '../values.config';
|
22
23
|
|
23
24
|
class MaintenanceListItem extends Component {
|
24
25
|
onPressJob = () => {
|
25
|
-
Services.navigation.navigate(
|
26
|
+
Services.navigation.navigate(values.screenRequestDetail, { job: this.props.job });
|
26
27
|
};
|
27
28
|
|
28
29
|
renderCommentCount() {
|
@@ -63,7 +64,7 @@ class MaintenanceListItem extends Component {
|
|
63
64
|
const { job } = this.props;
|
64
65
|
const createdTime = moment(job.createdUnix);
|
65
66
|
const createdTimeText = `${createdTime.format('ddd, D MMMM')} • ${createdTime.format('h:mma')}`;
|
66
|
-
const
|
67
|
+
const activityTimeText = job.expectedDate ? moment(job.expectedDate).format('D MMMM') : '--';
|
67
68
|
const { statusText, statusColor } = getJobStatusProps(job.status);
|
68
69
|
|
69
70
|
return (
|
@@ -92,14 +93,14 @@ class MaintenanceListItem extends Component {
|
|
92
93
|
<Text style={styles.jobCreatedText}>{createdTimeText}</Text>
|
93
94
|
<View style={styles.jobActivityContainer}>
|
94
95
|
<View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>
|
95
|
-
|
96
|
+
<Icon name="wrench" type="font-awesome" iconStyle={styles.jobStatusIcon} />
|
96
97
|
<Text style={styles.jobStatusText}>{statusText}</Text>
|
97
98
|
</View>
|
98
99
|
<View style={[styles.jobStatusLine, { borderColor: statusColor }]}>
|
99
100
|
<View style={styles.jobStatusLineMask} />
|
100
101
|
</View>
|
101
102
|
<View style={[styles.jobStatusCircle, { backgroundColor: statusColor }]} />
|
102
|
-
<Text style={styles.jobStatusDateText}>{
|
103
|
+
<Text style={styles.jobStatusDateText}>{activityTimeText}</Text>
|
103
104
|
</View>
|
104
105
|
</View>
|
105
106
|
</View>
|
@@ -227,7 +228,7 @@ const styles = StyleSheet.create({
|
|
227
228
|
jobStatusContainer: {
|
228
229
|
flexDirection: 'row',
|
229
230
|
alignItems: 'center',
|
230
|
-
justifyContent: '
|
231
|
+
justifyContent: 'space-between',
|
231
232
|
width: 105,
|
232
233
|
height: 30,
|
233
234
|
paddingHorizontal: 8,
|
@@ -265,7 +266,7 @@ const styles = StyleSheet.create({
|
|
265
266
|
jobStatusDateText: {
|
266
267
|
flex: 1,
|
267
268
|
textAlign: 'right',
|
268
|
-
fontFamily: 'sf-
|
269
|
+
fontFamily: 'sf-bold',
|
269
270
|
fontSize: 14,
|
270
271
|
color: Colours.TEXT_DARK,
|
271
272
|
},
|