From 81091652ed2fec3626f9bbe3a8569a842786b57c Mon Sep 17 00:00:00 2001 From: Martin Laguna Date: Wed, 17 Aug 2022 15:53:52 -0400 Subject: [PATCH] PMCORE-3923: Review Status filter added Added translation files to commit Fixed observations Review Status Filter added to Custom Cases Fixed observations for translation files --- .../js/components/search/CasesFilter.vue | 80 +++++++++++++++++++ .../js/components/search/CustomFilter.vue | 80 ++++++++++++++++++- .../search/popovers/ReviewStatus.vue | 67 ++++++++++++++++ .../translations/english/processmaker.en.po | 24 ++++++ workflow/engine/data/mysql/insert.sql | 6 +- 5 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 resources/assets/js/components/search/popovers/ReviewStatus.vue diff --git a/resources/assets/js/components/search/CasesFilter.vue b/resources/assets/js/components/search/CasesFilter.vue index bac411417..292e5598e 100644 --- a/resources/assets/js/components/search/CasesFilter.vue +++ b/resources/assets/js/components/search/CasesFilter.vue @@ -32,6 +32,14 @@ > {{ $t("ID_BY_PROCESS_NAME") }} + + {{ $t("ID_BY_REVIEW_STATUS") }} + @@ -92,6 +100,7 @@ import CaseNumber from "./popovers/CaseNumber.vue"; import CaseTitle from "./popovers/CaseTitle.vue"; import ProcessName from "./popovers/ProcessName.vue"; import ProcessCategory from "./popovers/ProcessCategory.vue"; +import ReviewStatus from "./popovers/ReviewStatus.vue"; import DateFilter from "./popovers/DateFilter.vue"; import TaskTitle from "./popovers/TaskTitle.vue"; import CurrentUser from "./popovers/CurrentUser.vue"; @@ -106,6 +115,7 @@ export default { CaseTitle, ProcessName, ProcessCategory, + ReviewStatus, DateFilter, TaskTitle, CurrentUser, @@ -287,10 +297,50 @@ export default { return `${params.tagPrefix}: ${data[0].label || ""}`; }, }, + reviewStatus: { + type: "ReviewStatus", + id: "reviewStatus", + title: `${this.$i18n.t("ID_FILTER")}: ${this.$i18n.t( + "ID_BY_REVIEW_STATUS" + )}`, + optionLabel: this.$i18n.t("ID_BY_REVIEW_STATUS"), + detail: "", + tagText: "", + tagPrefix: this.$i18n.t("ID_SEARCH_BY_REVIEW_STATUS"), + autoShow: true, + items: [ + { + id: "reviewStatus", + value: "", + options: [ + this.$i18n.t("ID_READ_FILTER_OPTION"), + this.$i18n.t("ID_UNREAD_FILTER_OPTION") + ], + } + ], + makeTagText: function(params, data) { + let label = ""; + switch (data[0].value) { + case "READ": + label = this.items[0].options[0]; + break; + + case "UNREAD": + label = this.items[0].options[1]; + break; + + default: + label = ""; + break; + } + return `${this.tagPrefix} ${label}`; + }, + }, selected: "", itemModel: {}, byProcessName: "", byProcessCategory: "", + byReviewStatus: "", }; }, computed: { @@ -381,6 +431,23 @@ export default { ]), ]; } + if (self.byReviewStatus !== "") { + if (element !== undefined) { + this.reviewStatus.autoShow = false; + } else { + this.reviewStatus.autoShow = true; + } + initialFilters = [ + ...new Set([ + ...initialFilters, + ...this.prepareFilterItems( + this.reviewStatus.items, + self.byReviewStatus, + true + ), + ]), + ]; + } this.$emit("onUpdateFilters", { params: initialFilters, refresh: false, @@ -455,6 +522,16 @@ export default { ? self.processCategory.autoShow : true; } + if (item.fieldId === "reviewStatus") { + self.searchTags.push(self.reviewStatus.id); + self.byReviewStatus = self.reviewStatus.id; + self.itemModel[self.reviewStatus.id] = + self.reviewStatus; + self.itemModel[self.reviewStatus.id].autoShow = + typeof self.reviewStatus.autoShow !== "undefined" + ? self.reviewStatus.autoShow + : true; + } }); }, dataToFilter(id) { @@ -512,6 +589,9 @@ export default { if (tag === "processCategory") { this.byProcessCategory = ""; } + if (tag === "reviewStatus") { + this.byReviewStatus = ""; + } this.$emit("onUpdateFilters", { params: temp, refresh: true }); }, /** diff --git a/resources/assets/js/components/search/CustomFilter.vue b/resources/assets/js/components/search/CustomFilter.vue index 4299c4d27..9fe4cf4de 100644 --- a/resources/assets/js/components/search/CustomFilter.vue +++ b/resources/assets/js/components/search/CustomFilter.vue @@ -25,6 +25,14 @@ name="checkbox-1" > + + {{ $t("ID_BY_REVIEW_STATUS") }} + @@ -84,6 +92,7 @@ import CaseNumber from "./popovers/CaseNumber.vue"; import CaseTitle from "./popovers/CaseTitle.vue"; import ProcessName from "./popovers/ProcessName.vue"; import ProcessCategory from "./popovers/ProcessCategory.vue"; +import ReviewStatus from "./popovers/ReviewStatus.vue"; import DateFilter from "./popovers/DateFilter.vue"; import TaskTitle from "./popovers/TaskTitle.vue"; import CurrentUser from "./popovers/CurrentUser.vue"; @@ -100,6 +109,7 @@ export default { CaseTitle, ProcessName, ProcessCategory, + ReviewStatus, DateFilter, TaskTitle, CurrentUser, @@ -117,9 +127,47 @@ export default { itemModel: {}, byProcessName: "", byProcessCategory: "", + byReviewStatus: "", criteriaItemsRadio: [], criteriaItemsCheckbox: [], showProcessName: true, + reviewStatus: { + type: "ReviewStatus", + id: "reviewStatus", + title: `${this.$i18n.t("ID_FILTER")}: ${this.$i18n.t("ID_BY_REVIEW_STATUS")}`, + optionLabel: this.$i18n.t("ID_BY_REVIEW_STATUS"), + detail: "", + tagText: "", + tagPrefix: this.$i18n.t("ID_SEARCH_BY_REVIEW_STATUS"), + autoShow: true, + items: [ + { + id: "reviewStatus", + value: "", + options: [ + this.$i18n.t("ID_READ_FILTER_OPTION"), + this.$i18n.t("ID_UNREAD_FILTER_OPTION") + ], + } + ], + makeTagText: function(params, data) { + let label = ""; + switch (data[0].value) { + case "READ": + label = this.items[0].options[0]; + break; + + case "UNREAD": + label = this.items[0].options[1]; + break; + + default: + label = ""; + break; + } + return `${this.tagPrefix} ${label}`; + }, + }, }; }, mounted(){}, @@ -193,6 +241,23 @@ export default { initialFilters =[...new Set([...initialFilters,...this.prepareFilterItems(element, item, true)])]; } }); + if (self.byReviewStatus !== "") { + if (element !== undefined) { + this.reviewStatus.autoShow = false; + } else { + this.reviewStatus.autoShow = true; + } + initialFilters = [ + ...new Set([ + ...initialFilters, + ...this.prepareFilterItems( + this.reviewStatus.items, + self.byReviewStatus, + true + ), + ]), + ]; + } this.$emit("onUpdateFilters", { params: initialFilters, refresh: false, @@ -209,7 +274,7 @@ export default { self = this, filter, item; - _.forEach(element.items, function(value, key) { + _.forEach(element.items || element, function(value, key) { filter = _.find(self.filters, function(o) { return o.filterVar === value.id; }); @@ -251,6 +316,16 @@ export default { ? item.autoShow : true; } + if (item.fieldId === "reviewStatus") { + self.searchTags.push(self.reviewStatus.id); + self.byReviewStatus = self.reviewStatus.id; + self.itemModel[self.reviewStatus.id] = + self.reviewStatus; + self.itemModel[self.reviewStatus.id].autoShow = + typeof self.reviewStatus.autoShow !== "undefined" + ? self.reviewStatus.autoShow + : true; + } }); }, /** @@ -322,6 +397,9 @@ export default { this.byProcessName = ""; this.selectedCheckbox = []; } + if (tag === "reviewStatus") { + this.byReviewStatus = ""; + } this.$emit("onUpdateFilters", { params: temp, refresh: true }); }, /** diff --git a/resources/assets/js/components/search/popovers/ReviewStatus.vue b/resources/assets/js/components/search/popovers/ReviewStatus.vue new file mode 100644 index 000000000..6928ff3f2 --- /dev/null +++ b/resources/assets/js/components/search/popovers/ReviewStatus.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index ff4b3f2b0..ae992348d 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -3131,6 +3131,12 @@ msgstr "By Process Category" msgid "By Process Name" msgstr "By Process Name" +# TRANSLATION +# LABEL/ID_BY_REVIEW_STATUS +#: LABEL/ID_BY_REVIEW_STATUS +msgid "By Review Status" +msgstr "By Review Status" + # TRANSLATION # LABEL/ID_BY_TASK #: LABEL/ID_BY_TASK @@ -23291,6 +23297,12 @@ msgstr "Reactivate" msgid "Reactivating case..." msgstr "Reactivating case..." +# TRANSLATION +# LABEL/ID_READ_FILTER_OPTION +#: LABEL/ID_READ_FILTER_OPTION +msgid "Read" +msgstr "Read" + # TRANSLATION # LABEL/ID_READ_ONLINE_DOCUMENTATION #: LABEL/ID_READ_ONLINE_DOCUMENTATION @@ -24563,6 +24575,12 @@ msgstr "Search by Process Category:" msgid "Search by Process Name:" msgstr "Search by Process Name:" +# TRANSLATION +# LABEL/ID_SEARCH_BY_REVIEW_STATUS +#: LABEL/ID_SEARCH_BY_REVIEW_STATUS +msgid "Search by Review Status:" +msgstr "Search by Review Status:" + # TRANSLATION # LABEL/ID_SEARCH_BY_SEND_BY #: LABEL/ID_SEARCH_BY_SEND_BY @@ -27401,6 +27419,12 @@ msgstr "Unpause Time" msgid "Unpausing case..." msgstr "Unpausing case..." +# TRANSLATION +# LABEL/ID_UNREAD_FILTER_OPTION +#: LABEL/ID_UNREAD_FILTER_OPTION +msgid "Unread" +msgstr "Unread" + # TRANSLATION # LABEL/ID_UNSAVED_CHANGES_QUESTION #: LABEL/ID_UNSAVED_CHANGES_QUESTION diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 3b55e7a98..4d519d42b 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57330,11 +57330,12 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_BY_PARTICIPATION','en','By Participation','2021-07-13') , ( 'LABEL','ID_BY_PROCESS_CATEGORY','en','By Process Category','2021-07-13') , ( 'LABEL','ID_BY_PROCESS_NAME','en','By Process Name','2020-12-16') , -( 'LABEL','ID_BY_TASK','en','By Task','2020-12-16') , +( 'LABEL','ID_BY_REVIEW_STATUS','en','By Review Status','2022-08-17') , ( 'LABEL','ID_BY_ROLE','en','By Role','2020-12-15') , ( 'LABEL','ID_BY_SEND_BY','en','By Send By','2021-08-31') , ( 'LABEL','ID_BY_STATUS','en','By Status','2020-12-16') , ( 'LABEL','ID_BY_START_DATE','en','By Start Date','2020-12-16') , +( 'LABEL','ID_BY_TASK','en','By Task','2020-12-16') , ( 'LABEL','ID_CACHE_BTN_BUILD','en','Build Cache','2014-01-15') , ( 'LABEL','ID_CACHE_BTN_SETUP_PASSWRD','en','Setup Password','2014-01-15') , ( 'LABEL','ID_CACHE_BTN_SETUP_SESSION','en','Delete older session files','2014-01-15') , @@ -60799,6 +60800,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_RB_DATABASE_NAME','en','Rbac Database Name','2014-01-15') , ( 'LABEL','ID_REACTIVATE','en','Reactivate','2014-01-15') , ( 'LABEL','ID_REACTIVATING_CASE','en','Reactivating case...','2014-01-15') , +( 'LABEL','ID_READ_FILTER_OPTION','en','Read','2022-08-17') , ( 'LABEL','ID_READ_ONLINE_DOCUMENTATION','en','Read Online Documentation','2014-01-15') , ( 'LABEL','ID_REALLY_SHOULD','en','You really should do it','2014-01-15') , ( 'LABEL','ID_REASON','en','Reason','2016-10-20') , @@ -61018,6 +61020,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_SEARCH_BY_PARTICIPATION','en','Search by Participation:','2021-07-13') , ( 'LABEL','ID_SEARCH_BY_PROCESS_CATEGORY','en','Search by Process Category:','2021-07-13') , ( 'LABEL','ID_SEARCH_BY_PROCESS_NAME','en','Search by Process Name:','2020-12-16') , +( 'LABEL','ID_SEARCH_BY_REVIEW_STATUS','en','Search by Review Status:','2022-08-17') , ( 'LABEL','ID_SEARCH_BY_SEND_BY','en','Search By Send By:','2021-08-31') , ( 'LABEL','ID_SEARCH_BY_START_DATE','en','Search by Start Date:','2020-12-16') , ( 'LABEL','ID_SEARCH_BY_STATUS','en','Search by Status:','2020-12-22') , @@ -61547,6 +61550,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_UNPAUSE_DATE','en','Unpause Date','2014-01-15') , ( 'LABEL','ID_UNPAUSE_TIME','en','Unpause Time','2014-01-15') , ( 'LABEL','ID_UNPAUSING_CASE','en','Unpausing case...','2014-01-15') , +( 'LABEL','ID_UNREAD_FILTER_OPTION','en','Unread','2022-08-17') , ( 'LABEL','ID_UNSAVED_CHANGES_QUESTION','en','You are about to close a window and there may be some unsaved changes. Are you sure to continue?','2015-08-17') ; INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ) VALUES