diff --git a/resources/assets/js/api/Api.js b/resources/assets/js/api/Api.js index c73177d1b..fc21c1b74 100644 --- a/resources/assets/js/api/Api.js +++ b/resources/assets/js/api/Api.js @@ -61,7 +61,10 @@ const services = { DRAFT_LIST: "/home/draft", PAUSED_LIST: "/home/paused", UNASSIGNED_LIST: "/home/unassigned", - + MY_FILTERS: "/cases/advanced-search/filters", + POST_MY_FILTERS: "/cases/advanced-search/filter", + DELETE_MY_FILTERS: "/cases/advanced-search/filter/", + SEARCH: "/home/search", }; export default { @@ -135,5 +138,48 @@ export default { "Authorization": `Bearer ` + credentials.accessToken } }); + }, + post(options) { + let service = options.service || "", + params = options.params || {}, + data = options.data || {}, + keys = options.keys || {}, + url, + credentials = window.config.SYS_CREDENTIALS, + workspace = window.config.SYS_WORKSPACE, + server = window.config.SYS_SERVER; + url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service); + + return axios({ + method: "post", + url: url, + params, + data, + headers: { + "Accept": "application/json", + "Content-Type": "application/json", + "Authorization": `Bearer ` + credentials.accessToken + } + }); + }, + delete(options) { + let service = options.service || "", + id = options.id || {}, + keys = options.keys || {}, + url, + credentials = window.config.SYS_CREDENTIALS, + workspace = window.config.SYS_WORKSPACE, + server = window.config.SYS_SERVER; + url = this.getUrl(_.extend(keys, credentials, { server }, { workspace }), service); + + return axios({ + method: "delete", + url: url + id, + headers: { + "Accept": "application/json", + "Content-Type": "application/json", + "Authorization": `Bearer ` + credentials.accessToken + } + }); } }; diff --git a/resources/assets/js/api/Cases.js b/resources/assets/js/api/Cases.js index 7403620aa..90ae31ea6 100644 --- a/resources/assets/js/api/Cases.js +++ b/resources/assets/js/api/Cases.js @@ -118,14 +118,31 @@ export let cases = { window.config.SYS_URI + `cases/ajaxListener`, params); }, - //remove this section - search(data) { - return new Promise((resolutionFunc, rejectionFunc) => { - - resolutionFunc(startedCasesFaker); - - }); + /** + * Service to jump a case by it's number + * @param {object} dt + */ + jump(dt) { + var params = new URLSearchParams(); + params.append('action', 'previusJump'); + params.append('appNumber', dt.APP_NUMBER); + params.append('actionFromList', dt.ACTION_FROM_LIST); + return axios.post(window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/cases_Ajax.php`, params); + }, + /** + * Make a search request to the Api service + * @param {object} dt - filter parameters + */ + search(dt) { + return Api.get({ + service: "SEARCH", + params: dt, + keys: {} + }) } + }; export let casesHeader = { diff --git a/resources/assets/js/api/Filters.js b/resources/assets/js/api/Filters.js new file mode 100644 index 000000000..192e21665 --- /dev/null +++ b/resources/assets/js/api/Filters.js @@ -0,0 +1,68 @@ +import axios from "axios"; +import Api from "./Api.js"; +export let filters = { + get(data) { + return Api.get({ + service: "MY_FILTERS", + params: { + filter: data.params, + }, + keys: {}, + }); + }, + post(data) { + return Api.post({ + service: "POST_MY_FILTERS", + data, + keys: {}, + }); + }, + delete(data) { + return Api.delete({ + service: "DELETE_MY_FILTERS", + + id: data.id, + + keys: {}, + }); + }, + /** + * Service to generate a jump case URL + */ + jumpCase() { + var params = new URLSearchParams(); + params.append("action", "startCase"); + return axios.post( + window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/casesStartPage_Ajax.php`, + params + ); + }, + /** + * Service to get the process list + */ + processList(query) { + return axios.post( + window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/casesList_Ajax?actionAjax=processListExtJs&action=search`, + { + query, + } + ); + }, + /** + * Service to get the users list + */ + userValues(query) { + return axios.post( + window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/casesList_Ajax?actionAjax=userValues&action=search`, + { + query, + } + ); + }, +}; diff --git a/resources/assets/js/api/index.js b/resources/assets/js/api/index.js index 096b8f419..c4d2b47d6 100644 --- a/resources/assets/js/api/index.js +++ b/resources/assets/js/api/index.js @@ -4,6 +4,7 @@ import { cases, casesHeader } from "./Cases"; import { caseNotes } from "./CaseNotes"; import { process } from "./Process"; +import { filters } from "./Filters"; export default { @@ -11,5 +12,6 @@ export default { cases, casesHeader, process, - caseNotes + caseNotes, + filters }; \ No newline at end of file diff --git a/resources/assets/js/components/menu/CustomSidebar.vue b/resources/assets/js/components/menu/CustomSidebar.vue index 9427fe3ea..5a93a31f4 100644 --- a/resources/assets/js/components/menu/CustomSidebar.vue +++ b/resources/assets/js/components/menu/CustomSidebar.vue @@ -20,13 +20,12 @@ + diff --git a/resources/assets/js/components/search/popovers/CaseNumber.vue b/resources/assets/js/components/search/popovers/CaseNumber.vue index 82960262d..edc0789e0 100644 --- a/resources/assets/js/components/search/popovers/CaseNumber.vue +++ b/resources/assets/js/components/search/popovers/CaseNumber.vue @@ -2,8 +2,10 @@
@@ -47,26 +45,46 @@ export default { props: ["tag", "info"], data() { return { - from: "", - to: "", + value: "", + valueState: null, + showPopover: false, }; }, computed: { tagText: function() { - return `From: ${this.from} To: ${this.to}`; + return `${this.$i18n.t("ID_IUD")}: ${this.value} `; }, }, methods: { - onClose() {}, - onOk() { - this.$emit("updateSearchTag", { from: this.from, to: this.to }); + onClose() { + this.showPopover = true; + }, + checkFormValidity() { + const regex = /^((\d+?)|(\d+?)(?:\-(\d+?))?)(?:\, ((\d+?)|(\d+?)(?:\-(\d+?))?))*$/; + regex.test(this.value); + this.valueState = regex.test(this.value); + return this.valueState; + }, + handleSubmit() { + let self = this; + // Exit when the form isn't valid + if (!this.checkFormValidity()) { + return; + } + // Hide the modal manually + this.$nextTick(() => { + this.$emit("updateSearchTag", { + filterCases: self.value.replace(/ /g, ""), + }); + self.$root.$emit("bv::hide::popover"); + }); + }, + onOk() { + this.handleSubmit(); }, - onRemoveTag() {}, onClickTag(tag) { this.$root.$emit("bv::hide::popover"); - }, - handler() { - }, + } }, }; diff --git a/resources/assets/js/components/search/popovers/CasePriority.vue b/resources/assets/js/components/search/popovers/CasePriority.vue index 69e68b7a8..d4a1c5aee 100644 --- a/resources/assets/js/components/search/popovers/CasePriority.vue +++ b/resources/assets/js/components/search/popovers/CasePriority.vue @@ -1,10 +1,6 @@