From ac4814d28d86dd8bdef603e4472e9f14582c42b0 Mon Sep 17 00:00:00 2001 From: fabio Date: Tue, 20 Jul 2021 11:50:16 -0400 Subject: [PATCH] PMCORE-3090:UI - Task Actions (EHX) - Inbox List (and any Custom Case List that belongs to this list) Corrections CR Conection to api modals with rest service CR --- package-lock.json | 15 ++ resources/assets/js/api/Api.js | 6 +- resources/assets/js/api/Cases.js | 43 +++++ .../assets/js/components/utils/ellipsis.vue | 3 +- resources/assets/js/home/Draft/Draft.vue | 11 +- resources/assets/js/home/Inbox/Todo.vue | 83 ++++++++- resources/assets/js/home/Paused/Paused.vue | 28 ++- .../assets/js/home/Unassigned/Unassigned.vue | 30 ++-- .../assets/js/home/modal/ModalPauseCase.vue | 163 ++++++++++++++++++ .../js/home/modal/ModalReassignCase.vue | 134 ++++++++++++++ resources/assets/sass/menu.scss | 6 +- .../translations/english/processmaker.en.po | 6 + workflow/engine/data/mysql/insert.sql | 1 + 13 files changed, 499 insertions(+), 30 deletions(-) create mode 100644 resources/assets/js/home/modal/ModalPauseCase.vue create mode 100644 resources/assets/js/home/modal/ModalReassignCase.vue diff --git a/package-lock.json b/package-lock.json index 35120dc35..4236311cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10946,6 +10946,21 @@ "resolved": "https://registry.npmjs.org/vue-upload-component/-/vue-upload-component-2.8.20.tgz", "integrity": "sha512-zrnJvULu4rnZe36Ib2/AZrI/h/mmNbUJZ+acZD652PyumzbvjCOQeYHe00sGifTdYjzzS66CwhTT+ubZ2D0Aow==" }, + "vuedraggable": { + "version": "2.24.3", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", + "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==", + "requires": { + "sortablejs": "1.10.2" + }, + "dependencies": { + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + } + } + }, "vuejs-auto-complete": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/vuejs-auto-complete/-/vuejs-auto-complete-0.9.0.tgz", diff --git a/resources/assets/js/api/Api.js b/resources/assets/js/api/Api.js index 77f2c80af..44bd22d48 100644 --- a/resources/assets/js/api/Api.js +++ b/resources/assets/js/api/Api.js @@ -70,7 +70,10 @@ const services = { USERS: "/home/users", TASKS: "/home/tasks", CATEGORIES: "/home/categories", - DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}" + DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}", + PAUSE_CASE: "/cases/{app_uid}/pause", + REASSIGN_CASE: "/cases/{app_uid}/reassign-case", + REASSIGN_USERS: "/light/userstoreassign/{task_uid}" }; export default { @@ -260,6 +263,7 @@ export default { url, credentials = window.config.SYS_CREDENTIALS, workspace = window.config.SYS_WORKSPACE, + lang = window.config.SYS_LANG, server = window.config.SYS_SERVER_API; url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service); diff --git a/resources/assets/js/api/Cases.js b/resources/assets/js/api/Cases.js index abf2f188c..af84bf068 100644 --- a/resources/assets/js/api/Cases.js +++ b/resources/assets/js/api/Cases.js @@ -151,6 +151,26 @@ export let cases = { window.config.SYS_URI + `cases/ajaxListener`, params); }, + /** + * Pause case with endpoint + * @param {*} data + * @returns + */ + pauseCase(data) { + return Api.update({ + service: "PAUSE_CASE", + data: { + unpaused_date: data.unpausedDate, + unpaused_time: data.unpausedTime, + index: data.DEL_INDEX, + reason: data.reasonPause, + sendMail: data.notifyUser + }, + keys: { + app_uid: data.APP_UID + } + }); + }, /** * Unpause case with endpoint * @param {*} data @@ -165,6 +185,29 @@ export let cases = { } }); }, + getUserReassign(data) { + return Api.get({ + service: "REASSIGN_USERS", + data: {}, + keys: { + task_uid: data.TAS_UID + } + }); + }, + reassingCase(data) { + return Api.update({ + service: "REASSIGN_CASE", + data: { + usr_uid_target: data.userSelected, + del_index: data.DEL_INDEX, + reason: data.reasonReassign, + sendMail: data.notifyUser + }, + keys: { + app_uid: data.APP_UID + } + }); + }, /** * Claim case with endpoint * @param {*} data diff --git a/resources/assets/js/components/utils/ellipsis.vue b/resources/assets/js/components/utils/ellipsis.vue index ab01e2d9f..e790fb6fe 100644 --- a/resources/assets/js/components/utils/ellipsis.vue +++ b/resources/assets/js/components/utils/ellipsis.vue @@ -4,6 +4,7 @@
+ +
{{ props.row.PRIORITY }}
- +
+ +
-
- +
+
@@ -181,6 +183,10 @@ import MultiviewHeader from "../../components/headers/MultiviewHeader.vue"; import VueCardView from "../../components/dataViews/vueCardView/VueCardView.vue"; import VueListView from "../../components/dataViews/vueListView/VueListView.vue"; import defaultMixins from "./defaultMixins"; +import Ellipsis from '../../components/utils/ellipsis.vue'; +import ModalPauseCase from '../modal/ModalPauseCase.vue'; +import ModalReassignCase from '../modal/ModalReassignCase.vue'; + export default { name: "Todo", @@ -193,7 +199,10 @@ export default { CasesFilter, MultiviewHeader, VueCardView, - VueListView + VueListView, + Ellipsis, + ModalPauseCase, + ModalReassignCase, }, props: ["defaultOption", "filters"], data() { @@ -273,6 +282,10 @@ export default { PAUSED: this.$i18n.t("ID_PAUSED"), UNASSIGNED: this.$i18n.t("ID_UNASSIGNED"), }, + dataEllipsis: { + buttons: {} + }, + showEllipsis: false }; }, created() { @@ -507,6 +520,64 @@ export default { this.$refs["vueListView"].getData(); } }, + /** + * Show modal to pause a case + * @param {objec} data + */ + showModalPause(data) { + this.$refs["modal-pause-case"].data = data; + this.$refs["modal-pause-case"].show(); + }, + /** + * Show modal to reassign a case + * @param {objec} data + */ + showModalReassign(data) { + this.$refs["modal-reassign-case"].data = data; + this.$refs["modal-reassign-case"].show(); + }, + /** + * Show options in the ellipsis + * @param {objec} data + */ + updateDataEllipsis(data) { + let that = this; + this.showEllipsis = !this.showEllipsis; + if (this.showEllipsis) { + this.dataEllipsis = { + buttons: { + open: { + name: "open", + icon: "far fa-edit", + fn: function() { + that.openCase(data) + } + }, + note: { + name: "case note", + icon: "far fa-comments", + fn: function() { + that.openCaseDetail(data); + } + }, + reassign: { + name: "reassign case", + icon: "fas fa-undo", + fn: function() { + that.showModalReassign(data); + } + }, + pause: { + name: "pause case", + icon: "far fa-pause-circle", + fn: function() { + that.showModalPause(data); + } + } + } + } + } + }, }, }; diff --git a/resources/assets/js/home/Paused/Paused.vue b/resources/assets/js/home/Paused/Paused.vue index 9ad96e9de..8b284a800 100644 --- a/resources/assets/js/home/Paused/Paused.vue +++ b/resources/assets/js/home/Paused/Paused.vue @@ -2,6 +2,7 @@
+ +
@@ -179,6 +180,7 @@ import MultiviewHeader from "../../components/headers/MultiviewHeader.vue"; import VueCardView from "../../components/dataViews/vueCardView/VueCardView.vue"; import VueListView from "../../components/dataViews/vueListView/VueListView.vue"; import defaultMixins from "./defaultMixins"; +import ModalPauseCase from '../modal/ModalPauseCase.vue'; export default { name: "Unassigned", @@ -193,7 +195,8 @@ export default { Ellipsis, MultiviewHeader, VueCardView, - VueListView + VueListView, + ModalPauseCase, }, props: ["defaultOption", "filters"], data() { @@ -486,17 +489,16 @@ export default { } }, /** - * set data by default in the ellipsis component + * Show modal to pause a case + * @param {objec} data */ - setDataEllipsis() { - this.dataEllipsis = { - showNote: true, - showPause: true, - showClaim: true - } + showModalPause(data) { + this.$refs["modal-pause-case"].data = data; + this.$refs["modal-pause-case"].show(); }, /** * Show options in the ellipsis + * @param {object} data */ updateDataEllipsis(data) { let that = this; @@ -507,17 +509,23 @@ export default { note: { name: "case note", icon: "far fa-comments", - fn: function() {console.log("comments");} + fn: function() { + that.openCaseDetail(data); + } }, pause: { name: "pause case", icon: "far fa-pause-circle", - fn: function() {console.log("pause case");} + fn: function() { + that.showModalPause(data); + } }, claim: { name: "claim case", icon: "fas fa-briefcase", - fn: function() {console.log("claim case");} + fn: function() { + that.claimCase(data); + } } } } diff --git a/resources/assets/js/home/modal/ModalPauseCase.vue b/resources/assets/js/home/modal/ModalPauseCase.vue new file mode 100644 index 000000000..d950d3f55 --- /dev/null +++ b/resources/assets/js/home/modal/ModalPauseCase.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/resources/assets/js/home/modal/ModalReassignCase.vue b/resources/assets/js/home/modal/ModalReassignCase.vue new file mode 100644 index 000000000..45f2473eb --- /dev/null +++ b/resources/assets/js/home/modal/ModalReassignCase.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/resources/assets/sass/menu.scss b/resources/assets/sass/menu.scss index 8aca1871d..752ff9598 100755 --- a/resources/assets/sass/menu.scss +++ b/resources/assets/sass/menu.scss @@ -49,7 +49,7 @@ display: block; font-size: 14px; font-weight: 400; - padding: 8px; + padding: 8px 8px 8px 0px; line-height: 30px; text-decoration: none; -webkit-user-select: none; @@ -88,12 +88,12 @@ } .v-sidebar-menu .vsm--link_mobile-item { - background-color: transparent + background-color: #3397E1; } .v-sidebar-menu .vsm--link_mobile-item.vsm--link_hover, .v-sidebar-menu .vsm--link_mobile-item:hover { - background-color: transparent !important + background-color: #5aa4c4 !important; } .v-sidebar-menu .vsm--title { diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index 061fb7e9d..8b8587534 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -24563,6 +24563,12 @@ msgstr "Please select a table to export." msgid "Select a template file" msgstr "Select a template file" +# TRANSLATION +# LABEL/ID_SELECT_USER +#: LABEL/ID_SELECT_USER +msgid "Select a User" +msgstr "Select a User" + # TRANSLATION # LABEL/ID_SELECT_USER_OR_GROUP #: LABEL/ID_SELECT_USER_OR_GROUP diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 720ebe3c0..afd611e48 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -61008,6 +61008,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_SELECT_STATUS','en','Select status...','2014-01-15') , ( 'LABEL','ID_SELECT_TABLE','en','Please select a table to export.','2014-01-15') , ( 'LABEL','ID_SELECT_TEMPLATE_FILE','en','Select a template file','2014-01-15') , +( 'LABEL','ID_SELECT_USER','en','Select a User','2021-07-23') , ( 'LABEL','ID_SELECT_USER_OR_GROUP','en','Please select the name of a user or a group in the Group or User field','2017-10-19') , ( 'LABEL','ID_SELECT_VARIABLE','en','Select Variable','2017-10-27') , ( 'LABEL','ID_SELECT_WORKSPACE','en','Select a workspace','2014-01-15') ,