diff --git a/resources/assets/js/api/Api.js b/resources/assets/js/api/Api.js index d8024421a..1d3430769 100644 --- a/resources/assets/js/api/Api.js +++ b/resources/assets/js/api/Api.js @@ -68,7 +68,8 @@ const services = { SEARCH: "/home/search", PROCESSES: "/home/processes", USERS: "/home/users", - TASKS: "/home/tasks" + TASKS: "/home/tasks", + DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}" }; export default { diff --git a/resources/assets/js/api/Cases.js b/resources/assets/js/api/Cases.js index d890f5851..54b789ebd 100644 --- a/resources/assets/js/api/Cases.js +++ b/resources/assets/js/api/Cases.js @@ -45,6 +45,16 @@ export let cases = { keys: {} }); }, + openSummary(data) { + var params = new FormData(); + params.append('appUid', data.APP_UID); + params.append('delIndex', data.DEL_INDEX); + params.append('action', 'todo'); + + return axios.post(window.config.SYS_SERVER + + window.config.SYS_URI + + `appProxy/requestOpenSummary`, params); + }, inputdocuments(data) { var params = new FormData(); params.append('appUid', data.APP_UID); @@ -73,7 +83,11 @@ export let cases = { return axios.post(window.config.SYS_SERVER + window.config.SYS_URI + - `appProxy/getSummary`, params); + `appProxy/getSummary`, params, { + headers: { + 'Cache-Control': 'no-cache' + } + }); }, casenotes(data) { var params = new FormData(); @@ -125,6 +139,14 @@ export let cases = { window.config.SYS_URI + `cases/ajaxListener`, params); }, + actions(data) { + var params = new URLSearchParams(); + params.append('action', 'getCaseMenu'); + params.append('app_status', 'TO_DO'); + return axios.post(window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/ajaxListener`, params); + }, unpause(data) { var params = new URLSearchParams(); params.append('action', 'unpauseCase'); @@ -164,8 +186,49 @@ export let cases = { keys: {}, paged: dt.paged }) - } - + }, + /** + * Make a search request to the Api service + * @param {object} dt - filter parameters + */ + debugStatus(dt) { + return Api.get({ + service: "DEBUG_STATUS", + params: {}, + keys: { + prj_uid: dt.PRO_UID + } + }) + }, + /** + * Get debug Vars in ajax service + * @param {*} data + */ + debugVars(data) { + var params; + if (data.filter === "all") { + return axios.get(window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/debug_vars`); + } else { + params = new URLSearchParams(); + params.append('filter', data.filter); + return axios.post(window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/debug_vars`, params); + } + }, + /** + * Get triggers debug Vars in ajax service + * @param {*} data + */ + debugVarsTriggers(data) { + let dc = _.random(0, 10000000000), + r = _.random(1.0, 100.0); + return axios.get(window.config.SYS_SERVER + + window.config.SYS_URI + + `cases/debug_triggers?r=${r}&_dc=${dc}`); + }, }; export let casesHeader = { diff --git a/resources/assets/js/api/Filters.js b/resources/assets/js/api/Filters.js index 8117c4881..d7527475f 100644 --- a/resources/assets/js/api/Filters.js +++ b/resources/assets/js/api/Filters.js @@ -72,11 +72,12 @@ export let filters = { /** * Service to get the users list */ - taskList(query) { + taskList(params) { return Api.get({ service: "TASKS", params: { - text: query, + text: params.query, + proId: params.proId }, keys: {}, }); diff --git a/resources/assets/js/components/home/HeaderCounter.vue b/resources/assets/js/components/home/HeaderCounter.vue index f91950526..8176792fa 100644 --- a/resources/assets/js/components/home/HeaderCounter.vue +++ b/resources/assets/js/components/home/HeaderCounter.vue @@ -80,4 +80,16 @@ export default { display: flex; justify-content: space-between; } + +.btn-warning { + color: white; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:hover { + color: white; + background-color: #e0a800; + border-color: #d39e00; +} diff --git a/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue b/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue index ec8a5e28a..24d07a698 100644 --- a/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue +++ b/resources/assets/js/components/home/caseDetail/AttachedDocuments.vue @@ -5,7 +5,7 @@
diff --git a/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue b/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue index 473df42e0..c39a75f28 100644 --- a/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue +++ b/resources/assets/js/components/home/caseDetail/AttachedDocumentsEdit.vue @@ -5,7 +5,7 @@
diff --git a/resources/assets/js/components/home/caseDetail/CaseComments.vue b/resources/assets/js/components/home/caseDetail/CaseComments.vue index 51f6c868f..25f71bce7 100644 --- a/resources/assets/js/components/home/caseDetail/CaseComments.vue +++ b/resources/assets/js/components/home/caseDetail/CaseComments.vue @@ -123,18 +123,22 @@ export default { onDropFile(e) { e.preventDefault(); e.stopPropagation(); + if(this.data.noPerms === 1){ + return; + } let that = this, fls = []; _.each(e.dataTransfer.files, (f) => { that.files.push(f); }); - + that.files = that.files.slice(0,5); _.each(that.files, (f) => { fls.push({ data: f, title: f.name, extension: f.name.split(".").pop(), onClick: () => {}, + id: _.random(1000000) }); }); @@ -143,6 +147,9 @@ export default { }, onDragOver(e) { e.preventDefault(); + if(this.data.noPerms === 1){ + return; + } if (!this.showMaskDrop) { this.showMaskDrop = true; } diff --git a/resources/assets/js/components/home/caseDetail/CaseSummary.vue b/resources/assets/js/components/home/caseDetail/CaseSummary.vue index 29b3bfcf0..0dd0e9301 100644 --- a/resources/assets/js/components/home/caseDetail/CaseSummary.vue +++ b/resources/assets/js/components/home/caseDetail/CaseSummary.vue @@ -52,8 +52,9 @@

+
{{ data.titleActions }}
-
+
-
-
diff --git a/resources/assets/js/components/home/caseDetail/MoreInformation.vue b/resources/assets/js/components/home/caseDetail/MoreInformation.vue new file mode 100644 index 000000000..7fcd239ed --- /dev/null +++ b/resources/assets/js/components/home/caseDetail/MoreInformation.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/resources/assets/js/components/home/debugger/Debugger.vue b/resources/assets/js/components/home/debugger/Debugger.vue new file mode 100644 index 000000000..4a641892a --- /dev/null +++ b/resources/assets/js/components/home/debugger/Debugger.vue @@ -0,0 +1,300 @@ + + + + + \ 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 ebdd91fc0..3e9ea43eb 100644 --- a/resources/assets/js/components/menu/CustomSidebar.vue +++ b/resources/assets/js/components/menu/CustomSidebar.vue @@ -30,7 +30,7 @@ export default { isOnMobile: false, hideToggle: true, selectedTheme: "", - sidebarWidth: "310px", + sidebarWidth: "260px", }; }, computed: { @@ -42,7 +42,6 @@ export default { }, mounted() { this.onResize(); - window.addEventListener("resize", this.onResize); }, methods: { /** diff --git a/resources/assets/js/components/search/AdvancedFilter.vue b/resources/assets/js/components/search/AdvancedFilter.vue index 5faf578ad..5dcb415be 100644 --- a/resources/assets/js/components/search/AdvancedFilter.vue +++ b/resources/assets/js/components/search/AdvancedFilter.vue @@ -127,6 +127,7 @@ {{ tagContent(tag) }}
{ this.taks = response.data; this.isLoading = false; @@ -64,6 +67,13 @@ export default { console.error(err); }); }, + /** + * Get the process id to manage the dependency + */ + getProcess() { + let component = _.find(this.filters, function(o) { return o.fieldId === "processName"; }); + return component ? component.value : null; + }, /** * Form validations review */ diff --git a/resources/assets/js/components/vuetable/CurrentUserCell.vue b/resources/assets/js/components/vuetable/CurrentUserCell.vue new file mode 100644 index 000000000..86f9ea2ad --- /dev/null +++ b/resources/assets/js/components/vuetable/CurrentUserCell.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/resources/assets/js/components/vuetable/GroupedCell.vue b/resources/assets/js/components/vuetable/GroupedCell.vue index 6a70ea752..2291ea6db 100644 --- a/resources/assets/js/components/vuetable/GroupedCell.vue +++ b/resources/assets/js/components/vuetable/GroupedCell.vue @@ -1,22 +1,46 @@ @@ -29,6 +53,8 @@ export default { return { //Color map for ["In Progress", "overdue", "inDraft", "paused", "unnasigned"] colorMap: ["green", "red", "orange", "aqua", "silver"], + id: "avatar-" + _.random(1000000), + statusId: "status-" + _.random(1000000) }; }, methods: { @@ -40,13 +66,20 @@ export default { activeColor: function(codeColor) { return this.colorMap[codeColor - 1]; }, + mailto: function(email) { + return "mailto:" + email; + } } }; - diff --git a/resources/assets/js/home/AdvancedSearch.vue b/resources/assets/js/home/AdvancedSearch.vue index 0f760cd46..588f25c4d 100644 --- a/resources/assets/js/home/AdvancedSearch.vue +++ b/resources/assets/js/home/AdvancedSearch.vue @@ -30,6 +30,7 @@ :columns="columns" :options="options" ref="vueTable" + @row-click="onRowClick" >
-
-
- {{ item.USER_DATA }} -
-
+
{{ props.row.START_DATE }} @@ -86,9 +83,10 @@ import ButtonFleft from "../components/home/ButtonFleft.vue"; import ModalNewRequest from "./ModalNewRequest.vue"; import AdvancedFilter from "../components/search/AdvancedFilter"; import TaskCell from "../components/vuetable/TaskCell.vue"; +import CurrentUserCell from "../components/vuetable/CurrentUserCell.vue"; import ModalComments from "./modal/ModalComments.vue"; import api from "./../api/index"; -import { Event } from "vue-tables-2"; +import utils from "./../utils/utils"; export default { name: "AdvancedSearch", @@ -97,6 +95,7 @@ export default { ButtonFleft, ModalNewRequest, TaskCell, + CurrentUserCell, ModalComments }, props: ["id", "name", "filters"], @@ -120,7 +119,6 @@ export default { }, }, columns: [ - "info", "case_number", "case_title", "process_name", @@ -159,7 +157,16 @@ export default { }, customFilters: ["myfilter"], }, - pmDateFormat: window.config.FORMATS.dateFormat + pmDateFormat: window.config.FORMATS.dateFormat, + clickCount: 0, + singleClickTimer: null, + statusTitle: { + "ON_TIME": this.$i18n.t("ID_IN_PROGRESS"), + "OVERDUE": this.$i18n.t("ID_TASK_OVERDUE"), + "DRAFT": this.$i18n.t("ID_IN_DRAFT"), + "PAUSED": this.$i18n.t("ID_PAUSED"), + "UNASSIGNED": this.$i18n.t("ID_UNASSIGNED") + } }; }, watch: { @@ -168,6 +175,23 @@ export default { }, }, methods: { + /** + * Row click event handler + * @param {object} event + */ + onRowClick(event) { + let self = this; + self.clickCount += 1; + if (self.clickCount === 1) { + self.singleClickTimer = setTimeout(function() { + self.clickCount = 0; + }, 400); + } else if (self.clickCount === 2) { + clearTimeout(self.singleClickTimer); + self.clickCount = 0; + self.openCaseDetail(event.row); + } + }, /** * Get cases data by header */ @@ -212,7 +236,7 @@ export default { CASE_TITLE: v.DEL_TITLE, PROCESS_NAME: v.PRO_TITLE, TASK: this.formatTasks(v.THREAD_TASKS), - USER: this.formatUser(v.THREAD_USERS), + USER_DATA: this.formatUser(v.THREAD_USERS), START_DATE: v.APP_CREATE_DATE_LABEL, FINISH_DATE: v.APP_FINISH_DATE_LABEL, DURATION: v.DURATION, @@ -235,58 +259,35 @@ export default { dataFormat.push({ TITLE: data[i].tas_title, CODE_COLOR: data[i].tas_color, + DELAYED_TITLE: data[i].tas_status === "OVERDUE" ? + this.$i18n.t("ID_DELAYED") + ":" : this.statusTitle[data[i].tas_status], + DELAYED_MSG: data[i].tas_status === "OVERDUE" ? data[i].delay : "" + }); } return dataFormat; + }, formatUser(data) { var i, dataFormat = []; for (i = 0; i < data.length; i += 1) { dataFormat.push({ - USER_DATA: this.nameFormatCases( - data[i].usr_firstname, - data[i].usr_lastname, - data[i].usr_username - ) + USERNAME_DISPLAY_FORMAT: utils.userNameDisplayFormat({ + userName: data[i].usr_firstname, + firstName: data[i].usr_lastname, + lastName: data[i].usr_username, + format: window.config.FORMATS.format || null + }), + EMAIL: data[i].user_tooltip.usr_email, + POSITION: data[i].user_tooltip.usr_position, + AVATAR: window.config.SYS_SERVER + + window.config.SYS_URI + + `users/users_ViewPhotoGrid?pUID=${data[i].user_id}` }); } return dataFormat; }, - /** - * Get for user format name configured in Processmaker Environment Settings - * - * @param {string} name - * @param {string} lastName - * @param {string} userName - * @return {string} nameFormat - */ - nameFormatCases(name, lastName, userName) { - let nameFormat = ""; - if (/^\s*$/.test(name) && /^\s*$/.test(lastName)) { - return nameFormat; - } - if (this.nameFormat === "@firstName @lastName") { - nameFormat = name + " " + lastName; - } else if (this.nameFormat === "@firstName @lastName (@userName)") { - nameFormat = name + " " + lastName + " (" + userName + ")"; - } else if (this.nameFormat === "@userName") { - nameFormat = userName; - } else if (this.nameFormat === "@userName (@firstName @lastName)") { - nameFormat = userName + " (" + name + " " + lastName + ")"; - } else if (this.nameFormat === "@lastName @firstName") { - nameFormat = lastName + " " + name; - } else if (this.nameFormat === "@lastName, @firstName") { - nameFormat = lastName + ", " + name; - } else if ( - this.nameFormat === "@lastName, @firstName (@userName)" - ) { - nameFormat = lastName + ", " + name + " (" + userName + ")"; - } else { - nameFormat = name + " " + lastName; - } - return nameFormat; - }, /** * Convert string to date format * diff --git a/resources/assets/js/home/CaseDetail.vue b/resources/assets/js/home/CaseDetail.vue index 0bd9e9e45..55c709a00 100644 --- a/resources/assets/js/home/CaseDetail.vue +++ b/resources/assets/js/home/CaseDetail.vue @@ -107,8 +107,9 @@ import ButtonFleft from "../components/home/ButtonFleft.vue"; import ModalCancelCase from "../home/modal/ModalCancelCase.vue"; import ModalNewRequest from "./ModalNewRequest.vue"; import TaskCell from "../components/vuetable/TaskCell.vue"; - +import utils from "./../utils/utils"; import Api from "../api/index"; + export default { name: "CaseDetail", components: { @@ -155,7 +156,7 @@ export default { headings: { task: this.$i18n.t("ID_TASK"), case_title: this.$i18n.t("ID_CASE_TITLE"), - assignee: this.$i18n.t("ID_ASSIGNEE"), + assignee: this.$i18n.t("ID_CURRENT_USER"), status: this.$i18n.t("ID_STATUS"), due_date: this.$i18n.t("ID_DUE_DATE"), actions: this.$i18n.t("ID_ACTIONS"), @@ -201,6 +202,7 @@ export default { this.getInputDocuments(); this.getOutputDocuments(); this.getCasesNotes(); + this.requestOpenSummary(); }, methods: { postComment(comment, send, files) { @@ -241,7 +243,9 @@ export default { this.dataAttachedDocuments.items = att; }, getDataCaseSummary() { - let that = this; + let action, + option, + that = this; Api.cases .casesummary(this.dataCase) .then((response) => { @@ -252,9 +256,7 @@ export default { titleActions: this.$i18n.t("ID_ACTIONS"), btnLabel: this.$i18n.t("ID_CANCEL_CASE"), btnType: false, - onClick: () => { - that.$refs["modal-cancel-case"].show(); - }, + onClick: null, label: { numberCase: data[2].label, process: data[0].label, @@ -274,6 +276,19 @@ export default { duration: response.data[11].value.split(" ")[1], }, }; + // Hack for identify the cancel case button + Api.cases + .actions(this.dataCase).then((response)=>{ + action = _.find(response.data, function(o) { return o.id == "ACTIONS"; }); + if(action){ + option = _.find(action.options, function(o) { return o.fn == "cancelCase"; }); + if(option && !option.hide){ + that.dataCaseSummary.onClick = () => { + that.$refs["modal-cancel-case"].show(); + }; + } + } + }); }) .catch((err) => { throw new Error(err); @@ -387,6 +402,7 @@ export default { let that = this, notesArray = []; _.each(notes, (n) => { + n.id = _.random(1000000); notesArray.push({ user: that.nameFormatCases( n.USR_FIRSTNAME, @@ -451,7 +467,13 @@ export default { COLOR: v.TAS_COLOR_LABEL, }], CASE_TITLE: v.DEL_TITLE, - ASSIGNEE: v.USR_FIRSTNAME + " " + v.USR_LASTNAME, + ASSIGNEE: v.USR_ID !== 0 ? + utils.userNameDisplayFormat({ + userName: v.USR_USERNAME, + firstName: v.USR_LASTNAME, + lastName: v.USR_LASTNAME, + format: window.config.FORMATS.format || null + }) : this.$i18n.t("ID_UNASSIGNED"), STATUS: v.DEL_THREAD_STATUS, DUE_DATE: v.DEL_TASK_DUE_DATE, TASK_COLOR: v.TAS_COLOR_LABEL, @@ -490,7 +512,24 @@ export default { ACTION: "todo", }); this.$emit("onUpdatePage", "XCase"); - } + }, + /** + * Verify if the case has the permission Summary Form + * to add dynUid in dataCase + */ + requestOpenSummary() { + Api.cases + .openSummary(this.dataCase) + .then((response) => { + var data = response.data; + if (data.dynUid !== "") { + this.dataCase.DYN_UID = data.dynUid; + } + }) + .catch((e) => { + console.error(e); + }); + }, }, }; diff --git a/resources/assets/js/home/Draft.vue b/resources/assets/js/home/Draft.vue index e8e78b600..99bd65bdd 100644 --- a/resources/assets/js/home/Draft.vue +++ b/resources/assets/js/home/Draft.vue @@ -13,6 +13,7 @@ :columns="columns" :options="options" ref="vueTable" + @row-click="onRowClick" >
@@ -48,6 +49,7 @@ import ModalNewRequest from "./ModalNewRequest.vue"; import CasesFilter from "../components/search/CasesFilter"; import TaskCell from "../components/vuetable/TaskCell.vue"; import api from "./../api/index"; +import utils from "./../utils/utils"; export default { name: "Draft", @@ -58,7 +60,7 @@ export default { TaskCell, CasesFilter, }, - props: {}, + props: ["defaultOption"], data() { return { newCase: { @@ -101,9 +103,20 @@ export default { }, }, pmDateFormat: "Y-m-d H:i:s", + clickCount: 0, + singleClickTimer: null, + statusTitle: { + "ON_TIME": this.$i18n.t("ID_IN_PROGRESS"), + "OVERDUE": this.$i18n.t("ID_TASK_OVERDUE"), + "DRAFT": this.$i18n.t("ID_IN_DRAFT"), + "PAUSED": this.$i18n.t("ID_PAUSED"), + "UNASSIGNED": this.$i18n.t("ID_UNASSIGNED") + } }; }, - mounted() {}, + mounted() { + this.openDefaultCase(); + }, watch: {}, computed: { /** @@ -116,6 +129,38 @@ export default { updated() {}, beforeCreate() {}, methods: { + /** + * Open a case when the component was mounted + */ + openDefaultCase() { + let params; + if(this.defaultOption) { + params = utils.getAllUrlParams(this.defaultOption); + if (params && params.app_uid && params.del_index) { + this.openCase({ + APP_UID: params.app_uid, + DEL_INDEX: params.del_index + }); + } + } + }, + /** + * On row click event handler + * @param {object} event + */ + onRowClick(event) { + let self = this; + self.clickCount += 1; + if (self.clickCount === 1) { + self.singleClickTimer = setTimeout(function() { + self.clickCount = 0; + }, 400); + } else if (self.clickCount === 2) { + clearTimeout(self.singleClickTimer); + self.clickCount = 0; + self.openCase(event.row); + } + }, /** * Get cases todo data */ @@ -164,6 +209,9 @@ export default { TITLE: v.TAS_TITLE, CODE_COLOR: v.TAS_COLOR, COLOR: v.TAS_COLOR_LABEL, + DELAYED_TITLE: v.TAS_STATUS === "OVERDUE" ? + this.$i18n.t("ID_DELAYED") + ":" : this.statusTitle[v.TAS_STATUS], + DELAYED_MSG: v.TAS_STATUS === "OVERDUE" ? v.DELAY : "" }], PRIORITY: v.DEL_PRIORITY_LABEL, PRO_UID: v.PRO_UID, @@ -196,15 +244,17 @@ export default { */ openCaseDetail(item) { let that = this; - api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { - that.$emit("onUpdateDataCase", { - APP_UID: item.APP_UID, - DEL_INDEX: item.DEL_INDEX, - PRO_UID: item.PRO_UID, - TAS_UID: item.TAS_UID, - APP_NUMBER: item.CASE_NUMBER, + api.cases.open(_.extend({ ACTION: "todo" }, item)).then(() => { + api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { + that.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + APP_NUMBER: item.CASE_NUMBER, + }); + that.$emit("onUpdatePage", "case-detail"); }); - that.$emit("onUpdatePage", "case-detail"); }); }, onRemoveFilter(data) {}, diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index 97aa7d525..f272713b8 100644 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -24,6 +24,7 @@ :id="pageId" :pageUri="pageUri" :name="pageName" + :defaultOption="defaultOption" @onSubmitFilter="onSubmitFilter" @onRemoveFilter="onRemoveFilter" @onUpdatePage="onUpdatePage" @@ -78,7 +79,7 @@ export default { collapsed: false, selectedTheme: "", isOnMobile: false, - sidebarWidth: "310px", + sidebarWidth: "260px", pageId: null, pageName: null, pageUri: null, @@ -93,12 +94,12 @@ export default { CONSOLIDATED_CASES: "batch-routing", CASES_TO_REASSIGN: "task-reassignments", CASES_FOLDERS: "my-documents" - } + }, + defaultOption: window.config.defaultOption || '' }; }, mounted() { this.onResize(); - window.addEventListener("resize", this.onResize); this.getMenu(); this.listenerIframe(); window.setInterval( @@ -136,7 +137,7 @@ export default { .get() .then((response) => { this.setDefaultCasesMenu(response.data); - this.menu = this.mappingMenu(response.data); + this.menu = this.mappingMenu(this.setDefaultIcon(response.data)); this.setCounter(); }) .catch((e) => { @@ -174,6 +175,19 @@ export default { } return newData; }, + /** + * Set a default icon if the item doesn't have one + */ + setDefaultIcon(data){ + var i, + auxData = data; + for (i = 0; i < auxData.length; i += 1) { + if (auxData[i].icon !== undefined && auxData[i].icon === "") { + auxData[i].icon = "fas fa-bars"; + } + } + return auxData; + }, OnClickSidebarItem(item) { if (item.item.page && item.item.page === "/advanced-search") { this.page = "advanced-search"; @@ -312,7 +326,7 @@ export default { + \ No newline at end of file diff --git a/resources/assets/js/home/Paused.vue b/resources/assets/js/home/Paused.vue index 9c322de8d..ff5e01d0f 100644 --- a/resources/assets/js/home/Paused.vue +++ b/resources/assets/js/home/Paused.vue @@ -13,6 +13,7 @@ :columns="columns" :options="options" ref="vueTable" + @row-click="onRowClick" >
@@ -33,15 +34,8 @@
- {{ - nameFormatCases( - props.row.USR_FIRSTNAME, - props.row.USR_LASTNAME, - props.row.USR_USERNAME - ) - }} + {{ props.row.USERNAME_DISPLAY_FORMAT }}
-
{{ props.row.DUE_DATE }}
@@ -70,6 +64,7 @@ import CasesFilter from "../components/search/CasesFilter"; import TaskCell from "../components/vuetable/TaskCell.vue"; import ModalUnpauseCase from "./modal/ModalUnpauseCase.vue"; import api from "./../api/index"; +import utils from "./../utils/utils"; export default { name: "Paused", @@ -97,7 +92,6 @@ export default { "case_title", "process_name", "task", - "current_user", "due_date", "delegation_date", "priority", @@ -132,6 +126,15 @@ export default { }, }, pmDateFormat: "Y-m-d H:i:s", + clickCount: 0, + singleClickTimer: null, + statusTitle: { + "ON_TIME": this.$i18n.t("ID_IN_PROGRESS"), + "OVERDUE": this.$i18n.t("ID_TASK_OVERDUE"), + "DRAFT": this.$i18n.t("ID_IN_DRAFT"), + "PAUSED": this.$i18n.t("ID_PAUSED"), + "UNASSIGNED": this.$i18n.t("ID_UNASSIGNED") + } }; }, mounted() {}, @@ -147,6 +150,23 @@ export default { updated() {}, beforeCreate() {}, methods: { + /** + * On row click event handler + * @param {object} event + */ + onRowClick(event) { + let self = this; + self.clickCount += 1; + if (self.clickCount === 1) { + self.singleClickTimer = setTimeout(function() { + self.clickCount = 0; + }, 400); + } else if (self.clickCount === 2) { + clearTimeout(self.singleClickTimer); + self.clickCount = 0; + self.showModalUnpauseCase(event.row); + } + }, /** * Get cases todo data */ @@ -195,10 +215,16 @@ export default { TITLE: v.TAS_TITLE, CODE_COLOR: v.TAS_COLOR, COLOR: v.TAS_COLOR_LABEL, + DELAYED_TITLE: v.TAS_STATUS === "OVERDUE" ? + this.$i18n.t("ID_DELAYED") + ":" : this.statusTitle[v.TAS_STATUS], + DELAYED_MSG: v.TAS_STATUS === "OVERDUE" ? v.DELAY : "" }], - USR_FIRSTNAME: v.USR_FIRSTNAME, - USR_LASTNAME: v.USR_LASTNAME, - USR_USERNAME: v.USR_USERNAME, + USERNAME_DISPLAY_FORMAT: utils.userNameDisplayFormat({ + userName: v.USR_LASTNAME, + firstName: v.USR_LASTNAME, + lastName: v.USR_LASTNAME, + format: window.config.FORMATS.format || null + }), DUE_DATE: v.DEL_TASK_DUE_DATE_LABEL, DELEGATION_DATE: v.DEL_DELEGATE_DATE_LABEL, PRIORITY: v.DEL_PRIORITY_LABEL, @@ -210,38 +236,6 @@ export default { }); return data; }, - /** - * Get for user format name configured in Processmaker Environment Settings - * - * @param {string} name - * @param {string} lastName - * @param {string} userName - * @return {string} nameFormat - */ - nameFormatCases(name, lastName, userName) { - let nameFormat = ""; - if (/^\s*$/.test(name) && /^\s*$/.test(lastName)) { - return nameFormat; - } - if (this.nameFormat === "@firstName @lastName") { - nameFormat = name + " " + lastName; - } else if (this.nameFormat === "@firstName @lastName (@userName)") { - nameFormat = name + " " + lastName + " (" + userName + ")"; - } else if (this.nameFormat === "@userName") { - nameFormat = userName; - } else if (this.nameFormat === "@userName (@firstName @lastName)") { - nameFormat = userName + " (" + name + " " + lastName + ")"; - } else if (this.nameFormat === "@lastName @firstName") { - nameFormat = lastName + " " + name; - } else if (this.nameFormat === "@lastName, @firstName") { - nameFormat = lastName + ", " + name; - } else if (this.nameFormat === "@lastName, @firstName (@userName)") { - nameFormat = lastName + ", " + name + " (" + userName + ")"; - } else { - nameFormat = name + " " + lastName; - } - return nameFormat; - }, /** * Open case detail * @@ -249,15 +243,17 @@ export default { */ openCaseDetail(item) { let that = this; - api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { - that.$emit("onUpdateDataCase", { - APP_UID: item.APP_UID, - DEL_INDEX: item.DEL_INDEX, - PRO_UID: item.PRO_UID, - TAS_UID: item.TAS_UID, - APP_NUMBER: item.CASE_NUMBER, + api.cases.open(_.extend({ ACTION: "todo" }, item)).then(() => { + api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { + that.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + APP_NUMBER: item.CASE_NUMBER, + }); + that.$emit("onUpdatePage", "case-detail"); }); - that.$emit("onUpdatePage", "case-detail"); }); }, showModalUnpauseCase(item) { diff --git a/resources/assets/js/home/TabsCaseDetail.vue b/resources/assets/js/home/TabsCaseDetail.vue index 605a06899..003939e57 100644 --- a/resources/assets/js/home/TabsCaseDetail.vue +++ b/resources/assets/js/home/TabsCaseDetail.vue @@ -4,6 +4,10 @@ + + + + @@ -25,6 +29,7 @@ import PmCaseSummary from "./../components/home/caseDetail/PmCaseSummary.vue"; import ProcessMap from "./../components/home/caseDetail/ProcessMap.vue"; import CaseHistory from "./../components/home/caseDetail/CaseHistory.vue"; import ChangeLog from "./../components/home/caseDetail/ChangeLog.vue"; +import MoreInformation from './../components/home/caseDetail/MoreInformation.vue'; import Api from "../api/index"; export default { @@ -36,6 +41,7 @@ export default { PmCaseSummary, CaseHistory, ChangeLog, + MoreInformation }, props: { dataCase: Object, diff --git a/resources/assets/js/home/Todo.vue b/resources/assets/js/home/Todo.vue index cebeb6bed..3f41dd609 100644 --- a/resources/assets/js/home/Todo.vue +++ b/resources/assets/js/home/Todo.vue @@ -13,6 +13,7 @@ :columns="columns" :options="options" ref="vueTable" + @row-click="onRowClick" >
@@ -33,15 +34,8 @@
- {{ - nameFormatCases( - props.row.USR_FIRSTNAME, - props.row.USR_LASTNAME, - props.row.USR_USERNAME - ) - }} + {{ props.row.USERNAME_DISPLAY_FORMAT}}
-
{{ props.row.DUE_DATE }}
@@ -65,6 +59,7 @@ import ModalNewRequest from "./ModalNewRequest.vue"; import TaskCell from "../components/vuetable/TaskCell.vue"; import CasesFilter from "../components/search/CasesFilter"; import api from "./../api/index"; +import utils from "./../utils/utils"; export default { name: "Todo", @@ -75,6 +70,7 @@ export default { TaskCell, CasesFilter, }, + props: ["defaultOption"], data() { return { newCase: { @@ -90,7 +86,6 @@ export default { "case_title", "process_name", "task", - "current_user", "due_date", "delegation_date", "priority", @@ -124,6 +119,15 @@ export default { }, }, pmDateFormat: "Y-m-d H:i:s", + clickCount: 0, + singleClickTimer: null, + statusTitle: { + "ON_TIME": this.$i18n.t("ID_IN_PROGRESS"), + "OVERDUE": this.$i18n.t("ID_TASK_OVERDUE"), + "DRAFT": this.$i18n.t("ID_IN_DRAFT"), + "PAUSED": this.$i18n.t("ID_PAUSED"), + "UNASSIGNED": this.$i18n.t("ID_UNASSIGNED") + } }; }, mounted() {}, @@ -139,6 +143,38 @@ export default { updated() {}, beforeCreate() {}, methods: { + /** + * Open a case when the component was mounted + */ + openDefaultCase() { + let params; + if(this.defaultOption) { + params = utils.getAllUrlParams(this.defaultOption); + if (params && params.app_uid && params.del_index) { + this.openCase({ + APP_UID: params.app_uid, + DEL_INDEX: params.del_index + }); + } + } + }, + /** + * On row click event handler + * @param {object} event + */ + onRowClick(event) { + let self = this; + self.clickCount += 1; + if (self.clickCount === 1) { + self.singleClickTimer = setTimeout(function() { + self.clickCount = 0; + }, 400); + } else if (self.clickCount === 2) { + clearTimeout(self.singleClickTimer); + self.clickCount = 0; + self.openCase(event.row); + } + }, /** * Get cases todo data */ @@ -187,10 +223,16 @@ export default { TITLE: v.TAS_TITLE, CODE_COLOR: v.TAS_COLOR, COLOR: v.TAS_COLOR_LABEL, + DELAYED_TITLE: v.TAS_STATUS === "OVERDUE" ? + this.$i18n.t("ID_DELAYED") + ":" : this.statusTitle[v.TAS_STATUS], + DELAYED_MSG: v.TAS_STATUS === "OVERDUE" ? v.DELAY : "" }], - USR_FIRSTNAME: v.USR_FIRSTNAME, - USR_LASTNAME: v.USR_LASTNAME, - USR_USERNAME: v.USR_USERNAME, + USERNAME_DISPLAY_FORMAT: utils.userNameDisplayFormat({ + userName: v.USR_LASTNAME, + firstName: v.USR_LASTNAME, + lastName: v.USR_LASTNAME, + format: window.config.FORMATS.format || null + }), DUE_DATE: v.DEL_TASK_DUE_DATE_LABEL, DELEGATION_DATE: v.DEL_DELEGATE_DATE_LABEL, PRIORITY: v.DEL_PRIORITY_LABEL, @@ -202,38 +244,6 @@ export default { }); return data; }, - /** - * Get for user format name configured in Processmaker Environment Settings - * - * @param {string} name - * @param {string} lastName - * @param {string} userName - * @return {string} nameFormat - */ - nameFormatCases(name, lastName, userName) { - let nameFormat = ""; - if (/^\s*$/.test(name) && /^\s*$/.test(lastName)) { - return nameFormat; - } - if (this.nameFormat === "@firstName @lastName") { - nameFormat = name + " " + lastName; - } else if (this.nameFormat === "@firstName @lastName (@userName)") { - nameFormat = name + " " + lastName + " (" + userName + ")"; - } else if (this.nameFormat === "@userName") { - nameFormat = userName; - } else if (this.nameFormat === "@userName (@firstName @lastName)") { - nameFormat = userName + " (" + name + " " + lastName + ")"; - } else if (this.nameFormat === "@lastName @firstName") { - nameFormat = lastName + " " + name; - } else if (this.nameFormat === "@lastName, @firstName") { - nameFormat = lastName + ", " + name; - } else if (this.nameFormat === "@lastName, @firstName (@userName)") { - nameFormat = lastName + ", " + name + " (" + userName + ")"; - } else { - nameFormat = name + " " + lastName; - } - return nameFormat; - }, /** * Open selected cases in the inbox * @@ -256,16 +266,18 @@ export default { */ openCaseDetail(item) { let that = this; - api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { - that.$emit("onUpdateDataCase", { - APP_UID: item.APP_UID, - DEL_INDEX: item.DEL_INDEX, - PRO_UID: item.PRO_UID, - TAS_UID: item.TAS_UID, - APP_NUMBER: item.CASE_NUMBER, + api.cases.open(_.extend({ ACTION: "todo" }, item)).then(() => { + api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { + that.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + APP_NUMBER: item.CASE_NUMBER, + }); + that.$emit("onUpdatePage", "case-detail"); }); - that.$emit("onUpdatePage", "case-detail"); - }); + }); }, onRemoveFilter(data) {}, onUpdateFilters(data) { diff --git a/resources/assets/js/home/Unassigned.vue b/resources/assets/js/home/Unassigned.vue index 08b5f428e..3ceaed225 100644 --- a/resources/assets/js/home/Unassigned.vue +++ b/resources/assets/js/home/Unassigned.vue @@ -13,6 +13,7 @@ :columns="columns" :options="options" ref="vueTable" + @row-click="onRowClick" >
@@ -32,16 +33,6 @@
-
- {{ - nameFormatCases( - props.row.USR_FIRSTNAME, - props.row.USR_LASTNAME, - props.row.USR_USERNAME - ) - }} -
-
{{ props.row.DUE_DATE }}
@@ -94,7 +85,6 @@ export default { "case_title", "process_name", "task", - "current_user", "due_date", "delegation_date", "priority", @@ -129,6 +119,15 @@ export default { }, }, pmDateFormat: "Y-m-d H:i:s", + clickCount: 0, + singleClickTimer: null, + statusTitle: { + "ON_TIME": this.$i18n.t("ID_IN_PROGRESS"), + "OVERDUE": this.$i18n.t("ID_TASK_OVERDUE"), + "DRAFT": this.$i18n.t("ID_IN_DRAFT"), + "PAUSED": this.$i18n.t("ID_PAUSED"), + "UNASSIGNED": this.$i18n.t("ID_UNASSIGNED") + } }; }, mounted() {}, @@ -144,6 +143,23 @@ export default { updated() {}, beforeCreate() {}, methods: { + /** + * On row click event handler + * @param {object} event + */ + onRowClick(event) { + let self = this; + self.clickCount += 1; + if (self.clickCount === 1) { + self.singleClickTimer = setTimeout(function() { + self.clickCount = 0; + }, 400); + } else if (self.clickCount === 2) { + clearTimeout(self.singleClickTimer); + self.clickCount = 0; + self.claimCase(event.row); + } + }, /** * Get cases unassigned data */ @@ -192,10 +208,10 @@ export default { TITLE: v.TAS_TITLE, CODE_COLOR: v.TAS_COLOR, COLOR: v.TAS_COLOR_LABEL, + DELAYED_TITLE: v.TAS_STATUS === "OVERDUE" ? + this.$i18n.t("ID_DELAYED") + ":" : this.statusTitle[v.TAS_STATUS], + DELAYED_MSG: v.TAS_STATUS === "OVERDUE" ? v.DELAY : "" }], - USR_FIRSTNAME: v.USR_FIRSTNAME, - USR_LASTNAME: v.USR_LASTNAME, - USR_USERNAME: v.USR_USERNAME, DUE_DATE: v.DEL_TASK_DUE_DATE_LABEL, DELEGATION_DATE: v.DEL_DELEGATE_DATE_LABEL, PRIORITY: v.DEL_PRIORITY_LABEL, @@ -207,42 +223,6 @@ export default { }); return data; }, - /** - * Get for user format name configured in Processmaker Environment Settings - * - * @param {string} name - * @param {string} lastName - * @param {string} userName - * @return {string} nameFormat - */ - nameFormatCases(name, lastName, userName) { - let nameFormat = ""; - if (!(name && lastName && userName)) { - return ""; - } - - if (/^\s*$/.test(name) && /^\s*$/.test(lastName)) { - return nameFormat; - } - if (this.nameFormat === "@firstName @lastName") { - nameFormat = name + " " + lastName; - } else if (this.nameFormat === "@firstName @lastName (@userName)") { - nameFormat = name + " " + lastName + " (" + userName + ")"; - } else if (this.nameFormat === "@userName") { - nameFormat = userName; - } else if (this.nameFormat === "@userName (@firstName @lastName)") { - nameFormat = userName + " (" + name + " " + lastName + ")"; - } else if (this.nameFormat === "@lastName @firstName") { - nameFormat = lastName + " " + name; - } else if (this.nameFormat === "@lastName, @firstName") { - nameFormat = lastName + ", " + name; - } else if (this.nameFormat === "@lastName, @firstName (@userName)") { - nameFormat = lastName + ", " + name + " (" + userName + ")"; - } else { - nameFormat = name + " " + lastName; - } - return nameFormat; - }, /** * Claim case * @@ -251,8 +231,10 @@ export default { claimCase(item) { let that = this; api.cases.open(_.extend({ ACTION: "unassigned" }, item)).then(() => { - that.$refs["modal-claim-case"].data = item; - that.$refs["modal-claim-case"].show(); + api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { + that.$refs["modal-claim-case"].data = item; + that.$refs["modal-claim-case"].show(); + }); }); }, /** @@ -262,15 +244,17 @@ export default { */ openCaseDetail(item) { let that = this; - api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { - that.$emit("onUpdateDataCase", { - APP_UID: item.APP_UID, - DEL_INDEX: item.DEL_INDEX, - PRO_UID: item.PRO_UID, - TAS_UID: item.TAS_UID, - APP_NUMBER: item.CASE_NUMBER, + api.cases.open(_.extend({ ACTION: "todo" }, item)).then(() => { + api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { + that.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + APP_NUMBER: item.CASE_NUMBER, + }); + that.$emit("onUpdatePage", "case-detail"); }); - that.$emit("onUpdatePage", "case-detail"); }); }, onRemoveFilter(data) {}, diff --git a/resources/assets/js/home/XCase.vue b/resources/assets/js/home/XCase.vue index 03c0c51fa..5bdc05094 100644 --- a/resources/assets/js/home/XCase.vue +++ b/resources/assets/js/home/XCase.vue @@ -1,5 +1,5 @@ diff --git a/resources/assets/js/home/main.js b/resources/assets/js/home/main.js index b71b8c9d7..a03029bde 100644 --- a/resources/assets/js/home/main.js +++ b/resources/assets/js/home/main.js @@ -3,7 +3,7 @@ import VueRouter from "vue-router"; import VueSidebarMenu from "vue-sidebar-menu"; import VueI18n from 'vue-i18n'; import { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'; -import { ServerTable, Event} from 'vue-tables-2'; +import { ServerTable, Event, ClientTable} from 'vue-tables-2'; import "@fortawesome/fontawesome-free/css/all.css"; import "@fortawesome/fontawesome-free/js/all.js"; import 'bootstrap/dist/css/bootstrap-grid.css'; @@ -11,13 +11,13 @@ import 'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap-vue/dist/bootstrap-vue.css' import Home from "./Home"; - Vue.use(VueRouter); Vue.use(VueSidebarMenu); Vue.use(BootstrapVue); Vue.use(BootstrapVueIcons); Vue.use(VueI18n); Vue.use(ServerTable, {}, false, 'bootstrap3', {}); +Vue.use(ClientTable, {}, false, 'bootstrap3', {}); window.ProcessMaker = { apiClient: require('axios') }; diff --git a/resources/assets/js/home/modal/ModalComments.vue b/resources/assets/js/home/modal/ModalComments.vue index d74e170d5..5ee283941 100644 --- a/resources/assets/js/home/modal/ModalComments.vue +++ b/resources/assets/js/home/modal/ModalComments.vue @@ -52,6 +52,7 @@ export default { mounted() {}, data() { return { + permission: true, dataAlert: { dismissSecs: 5, dismissCountDown: 0, @@ -114,18 +115,33 @@ export default { return "btn v-btn-request " + cls; }, show() { - this.getCasesNotes(); - this.$refs["modal-comments"].show(); + let that = this; + //Clean the data attached documents for ever + this.dataAttachedDocuments.items = []; + this.getCasesNotes((response) => { + if (that.permission) { + that.$refs["modal-comments"].show(); + } else { + that.$parent.showAlert( + that.$i18n.t("ID_CASES_NOTES_NO_PERMISSIONS"), + "danger" + ); + } + }); }, cancel() { this.$refs["modal-comments"].hide(); }, - getCasesNotes() { + getCasesNotes(callback) { let that = this; Api.cases .casenotes(this.dataCase) .then((response) => { that.formatResponseCaseNotes(response.data.notes); + that.permission = response.data.noPerms == 1 ? false : true; + if (_.isFunction(callback)) { + callback(response); + } }) .catch((err) => { throw new Error(err); @@ -138,6 +154,7 @@ export default { let that = this, notesArray = []; _.each(notes, (n) => { + n.id = _.random(1000000); notesArray.push({ user: that.nameFormatCases( n.USR_FIRSTNAME, @@ -154,6 +171,7 @@ export default { }, dropFiles(files) { this.attachDocuments = true; + this.dataAttachedDocuments.items = []; this.dataAttachedDocuments.items = files; }, /** diff --git a/resources/assets/js/utils/utils.js b/resources/assets/js/utils/utils.js new file mode 100644 index 000000000..3b42aad92 --- /dev/null +++ b/resources/assets/js/utils/utils.js @@ -0,0 +1,91 @@ +import _ from "lodash"; +export default { + /** + * Environment Formats function for full name + * @param {object} params + */ + userNameDisplayFormat(params) { + let aux; + let defaultValues = { + userName: '', + firstName: '', + lastName: '', + format: '(@lastName, @firstName) @userName' + }; + _.assignIn(defaultValues, params); + aux = defaultValues.format; + aux = aux.replace('@userName',defaultValues.userName); + aux = aux.replace('@firstName',defaultValues.firstName); + aux = aux.replace('@lastName',defaultValues.lastName); + return aux; + }, + /** + * Parse an url string and prepare an object of the parameters + * @param {string} url + * @returns {object} + */ + getAllUrlParams(url) { + + // get query string from url (optional) or window + var queryString = url ? url.split('?')[1] : window.location.search.slice(1); + + // we'll store the parameters here + var obj = {}; + + // if query string exists + if (queryString) { + + // stuff after # is not part of query string, so get rid of it + queryString = queryString.split('#')[0]; + + // split our query string into its component parts + var arr = queryString.split('&'); + + for (var i = 0; i < arr.length; i++) { + // separate the keys and the values + var a = arr[i].split('='); + + // set parameter name and value (use 'true' if empty) + var paramName = a[0]; + var paramValue = typeof (a[1]) === 'undefined' ? true : a[1]; + + // (optional) keep case consistent + paramName = paramName.toLowerCase(); + if (typeof paramValue === 'string') paramValue = paramValue.toLowerCase(); + + // if the paramName ends with square brackets, e.g. colors[] or colors[2] + if (paramName.match(/\[(\d+)?\]$/)) { + + // create key if it doesn't exist + var key = paramName.replace(/\[(\d+)?\]/, ''); + if (!obj[key]) obj[key] = []; + + // if it's an indexed array e.g. colors[2] + if (paramName.match(/\[\d+\]$/)) { + // get the index value and add the entry at the appropriate position + var index = /\[(\d+)\]/.exec(paramName)[1]; + obj[key][index] = paramValue; + } else { + // otherwise add the value to the end of the array + obj[key].push(paramValue); + } + } else { + // we're dealing with a string + if (!obj[paramName]) { + // if it doesn't exist, create property + obj[paramName] = paramValue; + } else if (obj[paramName] && typeof obj[paramName] === 'string'){ + // if property does exist and it's a string, convert it to an array + obj[paramName] = [obj[paramName]]; + obj[paramName].push(paramValue); + } else { + // otherwise add the property + obj[paramName].push(paramValue); + } + } + } + } + + return obj; + } +} \ No newline at end of file diff --git a/resources/assets/sass/menu.scss b/resources/assets/sass/menu.scss index 10b3a699e..a5dccea64 100755 --- a/resources/assets/sass/menu.scss +++ b/resources/assets/sass/menu.scss @@ -405,5 +405,5 @@ } .vsm--mobile-item { - max-width: 200px !important; + max-width: 210px !important; } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 81547d3bb..7ba3cf716 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -63,6 +63,9 @@ $_SESSION['__SYSTEM_UTC_TIME_ZONE__'] = (int) (env('MAIN_SYSTEM_UTC_TIME_ZONE', ini_set('date.timezone', $_SESSION['__SYSTEM_UTC_TIME_ZONE__'] ? 'UTC' : env('MAIN_TIME_ZONE', 'America/New_York')); define('TIME_ZONE', ini_get('date.timezone')); +// Only test async routing +define('DISABLE_TASK_MANAGER_ROUTING_ASYNC', false); + //This path includes PM tables model classes set_include_path(get_include_path() . PATH_SEPARATOR . PATH_DB . SYS_SYS . "/"); diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php index ccaaedec5..4efac1a0f 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/SupervisingTest.php @@ -550,15 +550,5 @@ class SupervisingTest extends TestCase $res = $supervising->getPagingCounters(); $this->assertEquals(3, $res); - - $delegation = Delegation::select()->where('USR_ID', $cases->USR_ID)->first(); - - $supervising->setCaseNumber($delegation->APP_NUMBER); - $supervising->setProcessId($delegation->PRO_ID); - $supervising->setTaskId($delegation->TAS_ID); - $supervising->setCaseUid($delegation->APP_UID); - - $res = $supervising->getPagingCounters(); - $this->assertEquals(1, $res); } } diff --git a/tests/unit/workflow/engine/src/ProcessMaker/Model/UserTest.php b/tests/unit/workflow/engine/src/ProcessMaker/Model/UserTest.php index 7336334f5..d9333eb82 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/Model/UserTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/Model/UserTest.php @@ -154,4 +154,24 @@ class UserTest extends TestCase $results = User::getId(G::generateUniqueID()); $this->assertEquals(0, $results); } + + /** + * It test get the user information + * + * @covers \ProcessMaker\Model\User::scopeUserId() + * @covers \ProcessMaker\Model\User::getInformation() + * @test + */ + public function it_get_information() + { + $user = factory(User::class)->create(); + // When the user exist + $results = User::getInformation($user->USR_ID); + $this->assertNotEmpty($results); + $this->assertArrayHasKey('usr_username', $results); + $this->assertArrayHasKey('usr_firstname', $results); + $this->assertArrayHasKey('usr_lastname', $results); + $this->assertArrayHasKey('usr_email', $results); + $this->assertArrayHasKey('usr_position', $results); + } } \ No newline at end of file diff --git a/tests/unit/workflow/engine/src/ProcessMaker/Util/Helpers/ApplyMaskDateEnvironmentTest.php b/tests/unit/workflow/engine/src/ProcessMaker/Util/Helpers/ApplyMaskDateEnvironmentTest.php index acb7877e7..14282e5c8 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/Util/Helpers/ApplyMaskDateEnvironmentTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/Util/Helpers/ApplyMaskDateEnvironmentTest.php @@ -17,4 +17,16 @@ class ApplyMaskDateEnvironmentTest extends TestCase $expected = '2020/11/12'; $this->assertEquals($expected, applyMaskDateEnvironment($date1, 'Y/m/d')); } + + /** + * When the mask is empty will return the same date + * + * @test + */ + public function it_should_return_date_without_mask() + { + $date1 = date("2020-11-12 09:09:10"); + $expected = '2020-11-12 09:09:10'; + $this->assertEquals($expected, applyMaskDateEnvironment($date1)); + } } \ No newline at end of file diff --git a/workflow/engine/classes/LdapAdvanced.php b/workflow/engine/classes/LdapAdvanced.php index a98db7041..07f0fcdf4 100644 --- a/workflow/engine/classes/LdapAdvanced.php +++ b/workflow/engine/classes/LdapAdvanced.php @@ -927,9 +927,14 @@ class LdapAdvanced $arrayData['countUser']++; if ((is_array($username) && !empty($username)) || trim($username) != '') { + $dataUserLdap = $this->getUserDataFromAttribute($username, $arrayUserLdap); + $dataUserLdap["usrRole"] = ""; + if (!empty($arrayAuthSourceData['AUTH_SOURCE_DATA']['USR_ROLE'])) { + $dataUserLdap["usrRole"] = $arrayAuthSourceData['AUTH_SOURCE_DATA']['USR_ROLE']; + } $arrayData = $this->groupSynchronizeUser( $groupUid, - $this->getUserDataFromAttribute($username, $arrayUserLdap), + $dataUserLdap, $arrayData ); } @@ -1631,7 +1636,14 @@ class LdapAdvanced } } - public function automaticRegister($aAuthSource, $strUser, $strPass) + /** + * Automatic register. + * @param array $authSource + * @param string $strUser + * @param string $strPass + * @return bool + */ + public function automaticRegister($authSource, $strUser, $strPass) { $rbac = RBAC::getSingleton(); @@ -1645,52 +1657,56 @@ class LdapAdvanced $user = $this->searchUserByUid($strUser); - $res = 0; + $result = 0; if (!empty($user)) { if ($this->VerifyLogin($user['sUsername'], $strPass) === true) { - $res = 1; + $result = 1; } - if ($res == 0 && $this->VerifyLogin($user['sDN'], $strPass) === true) { - $res = 1; + if ($result == 0 && $this->VerifyLogin($user['sDN'], $strPass) === true) { + $result = 1; } } else { - return $res; + return $result; } - if ($res == 0) { - $aAuthSource = $rbac->authSourcesObj->load($this->sAuthSource); - $aAttributes = array(); + if ($result == 0) { + $authSource = $rbac->authSourcesObj->load($this->sAuthSource); + $attributes = []; - if (isset($aAuthSource['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE'])) { - $aAttributes = $aAuthSource['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE']; + if (isset($authSource['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE'])) { + $attributes = $authSource['AUTH_SOURCE_DATA']['AUTH_SOURCE_GRID_ATTRIBUTE']; } - $aData = array(); - $aData['USR_USERNAME'] = $user['sUsername']; - $aData["USR_PASSWORD"] = "00000000000000000000000000000000"; - $aData['USR_FIRSTNAME'] = $user['sFirstname']; - $aData['USR_LASTNAME'] = $user['sLastname']; - $aData['USR_EMAIL'] = $user['sEmail']; - $aData['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); - $aData['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); - $aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); - $aData['USR_BIRTHDAY'] = date('Y-m-d'); - $aData['USR_STATUS'] = (isset($user['USR_STATUS'])) ? (($user['USR_STATUS'] == 'ACTIVE') ? 1 : 0) : 1; - $aData['USR_AUTH_TYPE'] = strtolower($aAuthSource['AUTH_SOURCE_PROVIDER']); - $aData['UID_AUTH_SOURCE'] = $aAuthSource['AUTH_SOURCE_UID']; - $aData['USR_AUTH_USER_DN'] = $user['sDN']; - $aData['USR_ROLE'] = 'PROCESSMAKER_OPERATOR'; + $usrRole = 'PROCESSMAKER_OPERATOR'; + if (!empty($authSource['AUTH_SOURCE_DATA']['USR_ROLE'])) { + $usrRole = $authSource['AUTH_SOURCE_DATA']['USR_ROLE']; + } + $data = []; + $data['USR_USERNAME'] = $user['sUsername']; + $data["USR_PASSWORD"] = "00000000000000000000000000000000"; + $data['USR_FIRSTNAME'] = $user['sFirstname']; + $data['USR_LASTNAME'] = $user['sLastname']; + $data['USR_EMAIL'] = $user['sEmail']; + $data['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); + $data['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); + $data['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); + $data['USR_BIRTHDAY'] = date('Y-m-d'); + $data['USR_STATUS'] = (isset($user['USR_STATUS'])) ? (($user['USR_STATUS'] == 'ACTIVE') ? 1 : 0) : 1; + $data['USR_AUTH_TYPE'] = strtolower($authSource['AUTH_SOURCE_PROVIDER']); + $data['UID_AUTH_SOURCE'] = $authSource['AUTH_SOURCE_UID']; + $data['USR_AUTH_USER_DN'] = $user['sDN']; + $data['USR_ROLE'] = $usrRole; - if (!empty($aAttributes)) { - foreach ($aAttributes as $value) { + if (!empty($attributes)) { + foreach ($attributes as $value) { if (isset($user[$value['attributeUser']])) { - $aData[$value['attributeUser']] = str_replace("*", "'", $user[$value['attributeUser']]); + $data[$value['attributeUser']] = str_replace("*", "'", $user[$value['attributeUser']]); if ($value['attributeUser'] == 'USR_STATUS') { - $evalValue = $aData[$value['attributeUser']]; + $evalValue = $data[$value['attributeUser']]; $statusValue = (isset($user['USR_STATUS'])) ? $user['USR_STATUS'] : 'ACTIVE'; - $aData[$value['attributeUser']] = $statusValue; + $data[$value['attributeUser']] = $statusValue; } } } @@ -1698,23 +1714,23 @@ class LdapAdvanced //req - accountexpires if (isset($user["USR_DUE_DATE"]) && $user["USR_DUE_DATE"] != '') { - $aData["USR_DUE_DATE"] = $this->convertDateADtoPM($user["USR_DUE_DATE"]); + $data["USR_DUE_DATE"] = $this->convertDateADtoPM($user["USR_DUE_DATE"]); } //end - $sUserUID = $rbac->createUser($aData, 'PROCESSMAKER_OPERATOR'); - $aData['USR_UID'] = $sUserUID; + $userUid = $rbac->createUser($data, $usrRole); + $data['USR_UID'] = $userUid; require_once 'classes/model/Users.php'; - $oUser = new Users(); - $aData['USR_STATUS'] = (isset($user['USR_STATUS'])) ? $user['USR_STATUS'] : 'ACTIVE'; - $oUser->create($aData); + $users = new Users(); + $data['USR_STATUS'] = (isset($user['USR_STATUS'])) ? $user['USR_STATUS'] : 'ACTIVE'; + $users->create($data); $this->log(null, "Automatic Register for user $strUser "); - $res = 1; + $result = 1; } - return $res; + return $result; } /** @@ -2260,15 +2276,15 @@ class LdapAdvanced } /** - * creates an users using the data send in the array $aUsers + * creates an users using the data send in the array $user * and then add the user to specific department * this function is used in cron only * - * @param array $aUser info taken from ldap + * @param array $user info taken from ldap * @param string $depUid the department UID * @return boolean */ - public function createUserAndActivate($aUser, $depUid) + public function createUserAndActivate($user, $depUid) { $rbac = RBAC::getSingleton(); @@ -2284,41 +2300,42 @@ class LdapAdvanced $rbac->usersRolesObj = new UsersRoles(); } - $sUsername = $aUser['sUsername']; - $sFullname = $aUser['sFullname']; - $sFirstname = $aUser['sFirstname']; - $sLastname = $aUser['sLastname']; - $sEmail = $aUser['sEmail']; - $sDn = $aUser['sDN']; + $sUsername = $user['sUsername']; + $sFullname = $user['sFullname']; + $sFirstname = $user['sFirstname']; + $sLastname = $user['sLastname']; + $sEmail = $user['sEmail']; + $sDn = $user['sDN']; + $usrRole = empty($user['usrRole']) ? 'PROCESSMAKER_OPERATOR' : $user['usrRole']; - $aData = array(); - $aData['USR_USERNAME'] = $sUsername; - $aData["USR_PASSWORD"] = "00000000000000000000000000000000"; - $aData['USR_FIRSTNAME'] = $sFirstname; - $aData['USR_LASTNAME'] = $sLastname; - $aData['USR_EMAIL'] = $sEmail; - $aData['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); - $aData['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); - $aData['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); - $aData['USR_BIRTHDAY'] = date('Y-m-d'); - $aData['USR_STATUS'] = 1; - $aData['USR_AUTH_TYPE'] = 'ldapadvanced'; - $aData['UID_AUTH_SOURCE'] = $this->sAuthSource; - $aData['USR_AUTH_USER_DN'] = $sDn; + $data = []; + $data['USR_USERNAME'] = $sUsername; + $data["USR_PASSWORD"] = "00000000000000000000000000000000"; + $data['USR_FIRSTNAME'] = $sFirstname; + $data['USR_LASTNAME'] = $sLastname; + $data['USR_EMAIL'] = $sEmail; + $data['USR_DUE_DATE'] = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 2)); + $data['USR_CREATE_DATE'] = date('Y-m-d H:i:s'); + $data['USR_UPDATE_DATE'] = date('Y-m-d H:i:s'); + $data['USR_BIRTHDAY'] = date('Y-m-d'); + $data['USR_STATUS'] = 1; + $data['USR_AUTH_TYPE'] = 'ldapadvanced'; + $data['UID_AUTH_SOURCE'] = $this->sAuthSource; + $data['USR_AUTH_USER_DN'] = $sDn; - $sUserUID = $rbac->createUser($aData, "PROCESSMAKER_OPERATOR"); + $userUid = $rbac->createUser($data, $usrRole); - $aData['USR_STATUS'] = 'ACTIVE'; - $aData['USR_UID'] = $sUserUID; - $aData['DEP_UID'] = $depUid; - $aData['USR_ROLE'] = 'PROCESSMAKER_OPERATOR'; + $data['USR_STATUS'] = 'ACTIVE'; + $data['USR_UID'] = $userUid; + $data['DEP_UID'] = $depUid; + $data['USR_ROLE'] = $usrRole; require_once 'classes/model/Users.php'; - $oUser = new Users(); - $oUser->create($aData); + $users = new Users(); + $users->create($data); - return $sUserUID; + return $userUid; } public function synchronizeManagers($managersHierarchy) diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po index d0d718698..8f9fb761b 100755 --- a/workflow/engine/content/translations/english/processmaker.en.po +++ b/workflow/engine/content/translations/english/processmaker.en.po @@ -4643,6 +4643,12 @@ msgstr "Config Directory" msgid "Confirm" msgstr "Confirm" +# TRANSLATION +# LABEL/ID_CONFIRMATION +#: LABEL/ID_CONFIRMATION +msgid "Confirmation" +msgstr "Confirmation" + # TRANSLATION # LABEL/ID_CONFIRM_ADHOCUSER_CASE #: LABEL/ID_CONFIRM_ADHOCUSER_CASE @@ -5909,6 +5915,12 @@ msgstr "Definition" msgid "Delay Field" msgstr "Delay Field" +# TRANSLATION +# LABEL/ID_DELAYED +#: LABEL/ID_DELAYED +msgid "Delayed" +msgstr "Delayed" + # TRANSLATION # LABEL/ID_DELEGATE_DATE_FROM #: LABEL/ID_DELEGATE_DATE_FROM @@ -6899,6 +6911,12 @@ msgstr "Duplicate category name." msgid "Duplicate entry for primary key" msgstr "Duplicate entry for primary key" +# TRANSLATION +# LABEL/ID_DURATION +#: LABEL/ID_DURATION +msgid "Duration" +msgstr "Duration" + # TRANSLATION # LABEL/ID_DYANFORM_CREATED #: LABEL/ID_DYANFORM_CREATED @@ -10709,6 +10727,12 @@ msgstr "Invalid value for '{0}'. It must be a string." msgid "Invalid value for \"{0}\". This value must be an array." msgstr "Invalid value for \"{0}\". This value must be an array." +# TRANSLATION +# LABEL/ID_IN_DRAFT +#: LABEL/ID_IN_DRAFT +msgid "In Draft" +msgstr "In Draft" + # TRANSLATION # LABEL/ID_IN_PROGRESS #: LABEL/ID_IN_PROGRESS diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index 07d0adafd..38f288b44 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -57593,6 +57593,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_CONFIGURE','en','Configure','2014-01-15') , ( 'LABEL','ID_CONFIG_DIRECTORY','en','Config Directory','2014-01-15') , ( 'LABEL','ID_CONFIRM','en','Confirm','2014-01-15') , +( 'LABEL','ID_CONFIRMATION','en','Confirmation','2020-01-15') , ( 'LABEL','ID_CONFIRM_ADHOCUSER_CASE','en','Are you sure you want to do it?','2014-01-15') , ( 'LABEL','ID_CONFIRM_ASSIGNED_GRID','en','Do you want to delete the data in the row you just created?','2015-01-16') , ( 'LABEL','ID_CONFIRM_CANCEL_CASE','en','Are you sure you want to cancel this case?','2014-01-15') , @@ -57810,6 +57811,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_DEFAULT_SKIN','en','Default Skin','2014-01-15') , ( 'LABEL','ID_DEFINITION','en','Definition','2014-01-15') , ( 'LABEL','ID_DELAY_FIELD','en','Delay Field','2014-01-15') , +( 'LABEL','ID_DELAYED','en','Delayed','2021-01-20') , ( 'LABEL','ID_DELEGATE_DATE_FROM','en','Date from','2017-10-18') , ( 'LABEL','ID_DELEGATE_DATE_TO','en','to','2014-01-15') , ( 'LABEL','ID_DELEGATE_USER','en','Delegated User','2014-01-15') , @@ -57979,6 +57981,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_DUPLICATE_CASE_SCHEDULER_NAME','en','Duplicate Case Scheduler name.','2014-01-15') , ( 'LABEL','ID_DUPLICATE_CATEGORY_NAME','en','Duplicate category name.','2014-01-15') , ( 'LABEL','ID_DUPLICATE_ENTRY_PRIMARY_KEY','en','Duplicate entry for primary key','2014-01-15') , +( 'LABEL','ID_DURATION','en','Duration','2021-01-20') , ( 'LABEL','ID_DYANFORM_CREATED','en','Dynaform has been created successfully','2014-01-15') , ( 'LABEL','ID_DYANFORM_REMOVE','en','Dynaform has been removed successfully from Process','2014-01-15') , ( 'LABEL','ID_DYNADOC','en','My Case Forms and Documents','2014-01-15') , @@ -58641,6 +58644,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE ( 'LABEL','ID_INVALID_VALUE_ONLY_ACCEPTS_VALUES','en','Invalid value for "{0}". It only accepts values: "{1}".','2014-10-21') , ( 'LABEL','ID_INVALID_VALUE_STRING','en','Invalid value for ''{0}''. It must be a string.','2014-10-21') , ( 'LABEL','ID_INVALID_VALUE_THIS_MUST_BE_ARRAY','en','Invalid value for "{0}". This value must be an array.','2014-10-21') , +( 'LABEL','ID_IN_DRAFT','en','In Draft','2021-01-20') , ( 'LABEL','ID_IN_PROGRESS','en','In Progress','2014-01-15') , ( 'LABEL','ID_IP','en','IP Client','2014-10-08') , ( 'LABEL','ID_ISNT_LICENSE','en','This isn''t the correct license.','2014-01-15') , diff --git a/workflow/engine/methods/authenticationSources/package-lock.json b/workflow/engine/methods/authenticationSources/package-lock.json index 0f01db9e1..63b3afedf 100644 --- a/workflow/engine/methods/authenticationSources/package-lock.json +++ b/workflow/engine/methods/authenticationSources/package-lock.json @@ -97,49 +97,6 @@ "xss": "^1.0.6" } }, - "@ava/babel": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@ava/babel/-/babel-1.0.1.tgz", - "integrity": "sha512-mGKpGeT6J4UjK2sxPjvwWl/GtsF9+eNyn2HHa7OknWWWYuw+rof/UaTAn1CA0z4sTw4Mruik/ihEasMw+JM6aQ==", - "dev": true, - "requires": { - "@ava/require-precompiled": "^1.0.0", - "@babel/core": "^7.8.4", - "@babel/generator": "^7.8.4", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", - "@babel/plugin-transform-modules-commonjs": "^7.8.3", - "babel-plugin-espower": "^3.0.1", - "concordance": "^4.0.0", - "convert-source-map": "^1.7.0", - "dot-prop": "^5.2.0", - "empower-core": "^1.2.0", - "escape-string-regexp": "^2.0.0", - "find-up": "^4.1.0", - "is-plain-object": "^3.0.0", - "md5-hex": "^3.0.1", - "package-hash": "^4.0.0", - "pkg-conf": "^3.1.0", - "source-map-support": "^0.5.16", - "strip-bom-buf": "^2.0.0", - "write-file-atomic": "^3.0.1" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "@ava/require-precompiled": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ava/require-precompiled/-/require-precompiled-1.0.0.tgz", - "integrity": "sha512-N7w4g+P/SUL8SF+HC4Z4e/ctV6nQ5AERC90K90r4xZQ8WVrJux9albvfyYAzygyU47CSqMWh6yJwFs8DYaeWmg==", - "dev": true - }, "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", @@ -918,14 +875,13 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", - "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", + "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-module-imports": "^7.12.5", "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", "semver": "^5.5.1" } }, @@ -2065,41 +2021,23 @@ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" }, "@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow==", "dev": true, "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -2116,12 +2054,6 @@ "strip-ansi": "^4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -2134,19 +2066,21 @@ } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -2502,9 +2436,9 @@ } }, "@types/webpack": { - "version": "4.41.24", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.24.tgz", - "integrity": "sha512-1A0MXPwZiMOD3DPMuOKUKcpkdPo8Lq33UGggZ7xio6wJ/jV1dAu5cXDrOfGDnldUroPIRLsr/DT43/GqOA4RFQ==", + "version": "4.41.25", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", + "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", "dev": true, "requires": { "@types/anymatch": "*", @@ -2537,9 +2471,9 @@ } }, "@types/webpack-sources": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", - "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", "dev": true, "requires": { "@types/node": "*", @@ -2581,13 +2515,14 @@ "dev": true }, "@vue/babel-plugin-jsx": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.0-rc.3.tgz", - "integrity": "sha512-/Ibq0hoKsidnHWPhgRpjcjYhYcHpqEm2fiKVAPO88OXZNHGwaGgS4yXkC6TDEvlZep4mBDo+2S5T81wpbVh90Q==", + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.0-rc.4.tgz", + "integrity": "sha512-ifzYc0jfLqiQebfqzKrJGfmQFE1lIgFlE9Ive8hQMJS/GC9Y+mNtHpqmWyqljbFGsqmsxmMRNFdAUgz0HZN1rg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", "@vue/babel-helper-vue-transform-on": "^1.0.0-rc.2", @@ -2619,9 +2554,9 @@ } }, "@vue/babel-preset-app": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.8.tgz", - "integrity": "sha512-efCBo2HY8Jcs6+SyCnvWl8jGeF1Fl38reFL35AjO4SBcro0ol/qjPkeeJLjzvXUxrHAsM9DMfL/DvPa/hBmZwQ==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.9.tgz", + "integrity": "sha512-d2H4hFnJsGnZtJAAZIbo1dmQJ2SI1MYix1Tc9/etlnJtCDPRHeCNodCSeuLgDwnoAyT3unzyHmTtaO56KRDuOQ==", "dev": true, "requires": { "@babel/core": "^7.11.0", @@ -2833,20 +2768,20 @@ } }, "@vue/cli-overlay": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.8.tgz", - "integrity": "sha512-M6q4QPKQfErHk54ycxBASgBadgdsK45f6v2NWUTAiFXdTtqv1Z7gR8JAbQhiXbni/m9571bLJnZFv5c8uhAHnw==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.9.tgz", + "integrity": "sha512-E2PWv6tCdUz+eEDj2Th2oxiKmzMe02qi0PcxiNaO7oaqggmEOrp1rLgop7DWpiLDBiqUZk2x0vjK/q2Tz8z/eg==", "dev": true }, "@vue/cli-plugin-babel": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.8.tgz", - "integrity": "sha512-2quuLuCZq2vH29xfp66L5YfUxQvyMX9te5jMslfQGVzvUmFpPbz8ceioZYW9+VqWjg8pzqSuBE+ANJLWdy2RtQ==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.9.tgz", + "integrity": "sha512-2tzaJU5yqAfXVhg1aYyd/Yfif6brv+tDZ49D1aOk7ZgMIwH5YUa0yo5HPcPOcmfpoVoNYcpqVYRfyT4EXIYSpg==", "dev": true, "requires": { "@babel/core": "^7.11.0", - "@vue/babel-preset-app": "^4.5.8", - "@vue/cli-shared-utils": "^4.5.8", + "@vue/babel-preset-app": "^4.5.9", + "@vue/cli-shared-utils": "^4.5.9", "babel-loader": "^8.1.0", "cache-loader": "^4.1.0", "thread-loader": "^2.1.3", @@ -2854,12 +2789,12 @@ } }, "@vue/cli-plugin-eslint": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.8.tgz", - "integrity": "sha512-1lg3K2D/harXbN4FvRoA1b0X9947H+G4Ql/43rxJY39OqswfK/d1ck438Fo9M4l1+zhBSUNDmcjn7Q2EH6qWmA==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.9.tgz", + "integrity": "sha512-wTsWRiRWPW5ik4bgtlh4P4h63Zgjsyvqx2FY0kcj+bSAnQGPJ3bKUOMU9KQP5EyNH6pAXMVGh2LEXK9WwJMf1w==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.8", + "@vue/cli-shared-utils": "^4.5.9", "eslint-loader": "^2.2.1", "globby": "^9.2.0", "inquirer": "^7.1.0", @@ -2868,24 +2803,24 @@ } }, "@vue/cli-plugin-router": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.8.tgz", - "integrity": "sha512-tJwVLdX4jj0Ia/1hsBejRbo4gs0hb2z1z5ert+4Ve5RNdpOKUG69OaPQgXPqvuYSQh9MW7bqG0iJmYtVD+KBNw==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.9.tgz", + "integrity": "sha512-eBBfbZpQ1sJrdlx8i7iReFxSnuzwmrv+s2OCT3kjBd6uWRqGnD4VihpS4srC7vZLzDQrDplumSn0a93L9Qf3wQ==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.8" + "@vue/cli-shared-utils": "^4.5.9" } }, "@vue/cli-plugin-vuex": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.8.tgz", - "integrity": "sha512-wU9WPhay1zBxtdd/HLRYhFRLBbG9lw3YTBJep9sTnYwUeXiEgum4O88Q2j6cwBBPPHMgeMrKMPHS85Jf4hMc0g==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.9.tgz", + "integrity": "sha512-mFNIJhYiJjzCgytkDHX00ROy5Yzl7prkZpUbeDE0biwcLteMf2s3qZVbESOQl6GcviqcfEt2f3tHQQtLNa+OLg==", "dev": true }, "@vue/cli-service": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.8.tgz", - "integrity": "sha512-YcVEJvA5vQOcfRzhCQDfHxRW9WHvKqlQeiuSvNddfV2uQqKD3ifhsNYiZZuFvbev9qgRUmtmxSafpwYzj/LLBw==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.9.tgz", + "integrity": "sha512-E3XlfM0q+UnnjbC9rwLIWNo2umZCRwnlMJY0KOhY1hFvqisGIYzFmQQ4o01KGyTx2BZNMuQg7Kw+BZ5gyM1Wig==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", @@ -2894,10 +2829,10 @@ "@types/minimist": "^1.2.0", "@types/webpack": "^4.0.0", "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.8", - "@vue/cli-plugin-router": "^4.5.8", - "@vue/cli-plugin-vuex": "^4.5.8", - "@vue/cli-shared-utils": "^4.5.8", + "@vue/cli-overlay": "^4.5.9", + "@vue/cli-plugin-router": "^4.5.9", + "@vue/cli-plugin-vuex": "^4.5.9", + "@vue/cli-shared-utils": "^4.5.9", "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", @@ -2952,16 +2887,6 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "cacache": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", @@ -2988,34 +2913,6 @@ "unique-filename": "^1.1.1" } }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, "find-cache-dir": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", @@ -3027,25 +2924,6 @@ "pkg-dir": "^4.1.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -3086,16 +2964,6 @@ "minipass": "^3.1.1" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "terser-webpack-plugin": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", @@ -3112,25 +2980,13 @@ "terser": "^4.6.12", "webpack-sources": "^1.4.3" } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.1.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.1.tgz", - "integrity": "sha512-wz/+HFg/3SBayHWAlZXARcnDTl3VOChrfW9YnxvAweiuyKX/7IGx1ad/4yJHmwhgWlOVYMAbTiI7GV8G33PfGQ==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } } } }, "@vue/cli-shared-utils": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.8.tgz", - "integrity": "sha512-pa6oenhBO/5HeDLRSokiwVN01gROACEDy3ESXWuPmragOREGNmmFKtkPHlqeYavGEX6LFp7f0VK3uMX6UYS5mQ==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.9.tgz", + "integrity": "sha512-anvsrv+rkQC+hgxaT2nQQxnSWSsIzyysZ36LO7qPjXvDRBvcvKLAAviFlUkYbZ+ntbV8puzJ3zw+gUhQw4SEVA==", "dev": true, "requires": { "@hapi/joi": "^15.0.1", @@ -4690,17 +4546,52 @@ "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" }, "babel-loader": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.0.tgz", - "integrity": "sha512-xm8HSeshX4r143Vhi7b0LBjqAtOWPNGoIe7yvLUQjJcGU90+h5Odby13VejHo6zKAN+GuaOK/DwLa7wzMV5wSg==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dev": true, "requires": { - "@ava/babel": "^1.0.1", - "find-cache-dir": "^2.1.0", + "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", - "make-dir": "^2.1.0", - "pify": "^4.0.1", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "babel-plugin-add-module-exports": { @@ -4716,29 +4607,6 @@ "object.assign": "^4.1.0" } }, - "babel-plugin-espower": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz", - "integrity": "sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==", - "dev": true, - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - } - } - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -4856,12 +4724,6 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "blueimp-md5": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz", - "integrity": "sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q==", - "dev": true - }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -4939,9 +4801,9 @@ "integrity": "sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==" }, "bootstrap-vue": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.19.0.tgz", - "integrity": "sha512-IjAXUSrRU5Qu9x3uwUcoj6LtysKbCVeWoJOsODyI/WokStUr95M+tTIajXUjIrB/Nsk0fS+RNvZnm2sWeNFrhg==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.20.1.tgz", + "integrity": "sha512-s+w83q0T2mo/RbFwTM8gExbLJMEOYpdTUqmyFaHv2Ir+TFprMvTWpeAzeNuawJ130W1gePZ3LW3cNp1t/tZbOw==", "requires": { "@nuxt/opencollective": "^0.3.2", "bootstrap": ">=4.5.3 <5.0.0", @@ -5148,21 +5010,13 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } } }, "browserify-sign": { @@ -5467,37 +5321,11 @@ "get-intrinsic": "^1.0.0" } }, - "call-matcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", - "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - } - } - }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", - "dev": true - }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -5837,16 +5665,16 @@ } }, "cli-highlight": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.4.tgz", - "integrity": "sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.9.tgz", + "integrity": "sha512-t8RNIZgiI24i/mslZ8XT8o660RUj5ZbUJpEZrZa/BNekTzdC2LfMRAnt0Y7sgzNM4FGW5tmWg/YnbTH8o1eIOQ==", "dev": true, "requires": { - "chalk": "^3.0.0", - "highlight.js": "^9.6.0", + "chalk": "^4.0.0", + "highlight.js": "^10.0.0", "mz": "^2.4.0", "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", "yargs": "^15.0.0" }, "dependencies": { @@ -5860,9 +5688,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -6333,36 +6161,6 @@ "typedarray": "^0.0.6" } }, - "concordance": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-4.0.0.tgz", - "integrity": "sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ==", - "dev": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.2", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.islength": "^4.0.1", - "lodash.merge": "^4.6.1", - "md5-hex": "^2.0.0", - "semver": "^5.5.1", - "well-known-symbols": "^2.0.0" - }, - "dependencies": { - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - } - } - }, "config-chain": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", @@ -6629,9 +6427,9 @@ } }, "core-js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.7.0.tgz", - "integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==" + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz", + "integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==" }, "core-js-compat": { "version": "3.7.0", @@ -6955,28 +6753,28 @@ "dev": true }, "csso": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.1.0.tgz", - "integrity": "sha512-h+6w/W1WqXaJA4tb1dk7r5tVbOm97MsKxzwnvOR04UQ6GILroryjMWu3pmCCtL2mLaEStQ0fZgeGiy99mo7iyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "requires": { - "css-tree": "^1.0.0" + "css-tree": "^1.1.2" }, "dependencies": { "css-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0.tgz", - "integrity": "sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", "dev": true, "requires": { - "mdn-data": "2.0.12", + "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "mdn-data": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.12.tgz", - "integrity": "sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, "source-map": { @@ -7025,15 +6823,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" }, - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, - "requires": { - "time-zone": "^1.0.0" - } - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -7572,9 +7361,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", - "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", "dev": true } } @@ -7852,24 +7641,6 @@ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, - "empower-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", - "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - } - } - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -7980,12 +7751,6 @@ "is-symbol": "^1.0.2" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -8158,18 +7923,6 @@ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, "espree": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", @@ -8194,23 +7947,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "espurify": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", - "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", - "dev": true, - "requires": { - "core-js": "^2.0.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - } - } - }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", @@ -8591,12 +8327,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, "fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", @@ -9483,30 +9213,6 @@ "minimalistic-assert": "^1.0.1" } }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -9529,9 +9235,9 @@ "dev": true }, "highlight.js": { - "version": "9.18.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.3.tgz", - "integrity": "sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", + "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", "dev": true }, "hmac-drbg": { @@ -10136,10 +9842,13 @@ } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -10369,12 +10078,6 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, - "is-plain-object": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", - "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", - "dev": true - }, "is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -10444,18 +10147,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -10556,12 +10247,6 @@ "easy-stack": "^1.0.0" } }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11030,12 +10715,6 @@ "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", "dev": true }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -11046,12 +10725,6 @@ "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-3.0.0.tgz", "integrity": "sha1-rXvGpOZH15yXLhuA/u968VYmeHY=" }, - "lodash.islength": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.islength/-/lodash.islength-4.0.1.tgz", - "integrity": "sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc=", - "dev": true - }, "lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -11268,21 +10941,6 @@ "object-visit": "^1.0.0" } }, - "md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dev": true, - "requires": { - "blueimp-md5": "^2.10.0" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", - "dev": true - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -12078,13 +11736,13 @@ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" }, "object-is": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", - "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -12159,36 +11817,15 @@ } }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } } }, "obuf": { @@ -12385,18 +12022,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", @@ -12517,12 +12142,20 @@ "dev": true }, "parse5-htmlparser2-tree-adapter": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", - "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { - "parse5": "^5.1.1" + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } } }, "parseurl": { @@ -12759,52 +12392,6 @@ "node-modules-regexp": "^1.0.0" } }, - "pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -13962,15 +13549,6 @@ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -14742,9 +14320,9 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -15111,15 +14689,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, - "strip-bom-buf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz", - "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -15635,12 +15204,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -15860,15 +15423,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", @@ -16718,6 +16272,87 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.1.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.1.tgz", + "integrity": "sha512-wz/+HFg/3SBayHWAlZXARcnDTl3VOChrfW9YnxvAweiuyKX/7IGx1ad/4yJHmwhgWlOVYMAbTiI7GV8G33PfGQ==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-pagination-2": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/vue-pagination-2/-/vue-pagination-2-3.0.8.tgz", @@ -16748,9 +16383,9 @@ } }, "vue-tables-2": { - "version": "2.1.50", - "resolved": "https://registry.npmjs.org/vue-tables-2/-/vue-tables-2-2.1.50.tgz", - "integrity": "sha512-cA+76aLJZDbeaMvuaqIbfYfASNXpk6u05dCuDSWK46c3c5iIXFCk3MPYh3NnsNx9eo8nOdKTRWhAHBOLT30pVA==", + "version": "2.1.61", + "resolved": "https://registry.npmjs.org/vue-tables-2/-/vue-tables-2-2.1.61.tgz", + "integrity": "sha512-OyFAmsU97RFpYYZ4XufyQeZb+FJzB2gU8fBKFMZz9C7my5G3TwSMXgJBGICpeSE8RQMBFJDx6qs67ltKejUFLA==", "requires": { "array-intersect": "^0.0.1", "babel-helper-vue-jsx-merge-props": "^2.0.3", @@ -17444,12 +17079,6 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -17533,18 +17162,6 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", diff --git a/workflow/engine/methods/authenticationSources/package.json b/workflow/engine/methods/authenticationSources/package.json index 671641689..23fdbb70c 100644 --- a/workflow/engine/methods/authenticationSources/package.json +++ b/workflow/engine/methods/authenticationSources/package.json @@ -12,18 +12,18 @@ "@vue/cli": "^4.4.6", "axios": "^0.19.2", "bootstrap": "^4.5.0", - "bootstrap-vue": "^2.15.0", - "core-js": "^3.6.5", + "bootstrap-vue": "^2.20.1", + "core-js": "^3.8.1", "lodash": "^4.17.19", "save": "^2.4.0", "vue": "^2.6.11", - "vue-tables-2": "^2.0.27", + "vue-tables-2": "^2.1.61", "vuelidate": "^0.7.5" }, "devDependencies": { - "@vue/cli-plugin-babel": "~4.5.0", - "@vue/cli-plugin-eslint": "~4.5.0", - "@vue/cli-service": "~4.5.0", + "@vue/cli-plugin-babel": "^4.5.9", + "@vue/cli-plugin-eslint": "^4.5.9", + "@vue/cli-service": "^4.5.9", "babel-eslint": "^10.1.0", "eslint": "^6.7.2", "eslint-plugin-vue": "^6.2.2", diff --git a/workflow/engine/methods/authenticationSources/src/components/formAuthenticationSources.vue b/workflow/engine/methods/authenticationSources/src/components/formAuthenticationSources.vue index 95c0e9aed..03b361b8e 100644 --- a/workflow/engine/methods/authenticationSources/src/components/formAuthenticationSources.vue +++ b/workflow/engine/methods/authenticationSources/src/components/formAuthenticationSources.vue @@ -32,10 +32,26 @@ {{$root.translation('ID_IS_REQUIRED')}} - - {{$root.translation('ID_IS_REQUIRED')}} + + + + {{$root.translation('ID_IS_REQUIRED')}} + @@ -93,30 +109,108 @@ {{$root.translation('ID_IS_REQUIRED')}} - + + + + - + + + + - + + + + - + + + + - + + + + @@ -158,24 +252,35 @@ components: { formUploadSource }, - validations: { - form: { - name: { - required - }, - serverAddress: { - required - }, - port: { - required - }, - userName: { - required - }, - password: { - required + validations() { + let fields = { + form: { + name: { + required + }, + serverAddress: { + required + }, + port: { + required + } } + }; + if (this.form.anonymous === '1') { + fields.form.userName = { + }; + fields.form.password = { + }; } + if (this.form.anonymous === '0') { + fields.form.userName = { + required + }; + fields.form.password = { + required + }; + } + return fields; }, data() { return { @@ -217,7 +322,14 @@ {value: "ds", text: "389 DS"} ], roles: [], - show: true + disabledField: { + port: true, + userIdentifier: true, + groupIdentifier: true, + userClassIdentifier: true, + groupClassIdentifier: true, + departmentClassIdentifier: true + } }; }, methods: { diff --git a/workflow/engine/methods/authenticationSources/src/components/formUploadSource.vue b/workflow/engine/methods/authenticationSources/src/components/formUploadSource.vue index 8482ba740..85adf1ff9 100644 --- a/workflow/engine/methods/authenticationSources/src/components/formUploadSource.vue +++ b/workflow/engine/methods/authenticationSources/src/components/formUploadSource.vue @@ -13,7 +13,7 @@ {{$root.translation('ID_IS_REQUIRED')}} - + routeCase($processUid, $application, $postForm, $sStatus, $flagGmail, $tasUid, $index, $userLogged); }; - JobsManager::getSingleton()->dispatch(RouteCase::class, $closure); + if (!DISABLE_TASK_MANAGER_ROUTING_ASYNC) { + // Routing the case asynchronically + JobsManager::getSingleton()->dispatch(RouteCase::class, $closure); - //We close the related threads. - $cases = new Cases(); - $cases->CloseCurrentDelegation($application, $index); + // We close the related threads. + $cases = new Cases(); + $cases->CloseCurrentDelegation($application, $index); + } else { + // Routing the case synchronically + $closure(); + } $debuggerAvailable = true; $casesRedirector = 'casesListExtJsRedirector'; @@ -126,13 +132,42 @@ try { } } - $loc = $nextStep['PAGE']; - - //Triggers After + // Triggers After $isIE = Bootstrap::isIE(); - unset($_SESSION['TRIGGER_DEBUG']); - //close tab only if IE11 add a validation was added if the current skin is uxs + // If the routing of cases asynchronically is disabled, use the old behaviour for debug option + if (DISABLE_TASK_MANAGER_ROUTING_ASYNC) { + // Determine the landing page + if (isset($_SESSION['PMDEBUGGER']) && $_SESSION['PMDEBUGGER'] && $debuggerAvailable) { + $_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $nextStep['PAGE']; + $loc = 'cases_Step?' . 'breakpoint=triggerdebug'; + } else { + $loc = $nextStep['PAGE']; + } + // If debug option is enabled for the process, load the debug template + if (isset($_SESSION['TRIGGER_DEBUG']['ISSET']) && !$isIE) { + if ($_SESSION['TRIGGER_DEBUG']['ISSET'] == 1) { + $templatePower = new TemplatePower(PATH_TPL . 'cases/cases_Step.html'); + $templatePower->prepare(); + $G_PUBLISH = new Publisher(); + $G_PUBLISH->AddContent('template', '', '', '', $templatePower); + $_POST['NextStep'] = $loc; + $G_PUBLISH->AddContent('view', 'cases/showDebugFrameLoader'); + $G_PUBLISH->AddContent('view', 'cases/showDebugFrameBreaker'); + $_SESSION['TRIGGER_DEBUG']['ISSET'] == 0; + G::RenderPage('publish', 'blank'); + exit(); + } else { + unset($_SESSION['TRIGGER_DEBUG']); + } + } + } else { + // If the case is routed synchronically, always redirect to the next step + $loc = $nextStep['PAGE']; + unset($_SESSION['TRIGGER_DEBUG']); + } + + // Close tab only if IE11 add a validation was added if the current skin is uxs if ($isIE && !isset($_SESSION['__OUTLOOK_CONNECTOR__']) && SYS_SKIN !== "uxs") { $script = "