diff --git a/resources/assets/js/components/home/debugger/Debugger.vue b/resources/assets/js/components/home/debugger/Debugger.vue index 747c1d51c..1241724e4 100644 --- a/resources/assets/js/components/home/debugger/Debugger.vue +++ b/resources/assets/js/components/home/debugger/Debugger.vue @@ -30,10 +30,15 @@
+ > + {{props.row.code}} +
@@ -51,7 +56,7 @@ export default { }, components: { Tabs, - Tab, + Tab }, data() { return { @@ -64,6 +69,7 @@ export default { dataTable: [], dataTableTriggers: [], columns: ["key", "value"], + columnsTriggers: ["name", "execution","code"], options: { perPage: 200, filterable: true, @@ -73,7 +79,19 @@ export default { headings: { key: this.$i18n.t("ID_NAME"), value: this.$i18n.t("ID_FIELD_DYNAFORM_TEXT") + } + }, + optionsTriggers: { + perPage: 200, + filterable: true, + pagination: { + show: false }, + headings: { + name: this.$i18n.t("ID_NAME"), + execution: this.$i18n.t("ID_EXECUTION"), + code: this.$i18n.t("ID_CAPTCHA_CODE"), + } }, optionsDebugVars: { selected: "all", @@ -86,8 +104,7 @@ export default { }; }, mounted() { - this.getDebugVars({ filter: "all" }); - this.getDebugVarsTriggers(); + this.loadData(); }, methods: { classBtn(cls) { @@ -96,6 +113,13 @@ export default { showDebugger() { this.$refs["modal-debugger"].show(); }, + /** + * Load the data for debugger + */ + loadData() { + this.getDebugVars({ filter: "all" }); + this.getDebugVarsTriggers(); + }, /** * Get debug variables */ @@ -119,11 +143,12 @@ export default { let that = this, dt = []; api.cases.debugVarsTriggers(data).then((response) => { - if (response.data.length > 0) { - _.forIn(response.data.data[0], function (value, key) { + if (response.data.data.length > 0) { + _.each(response.data.data, function (o) { dt.push({ - key, - value + name: o.name, + execution: o.execution_time, + code: o.code }); }); this.dataTableTriggers = dt; @@ -136,7 +161,7 @@ export default { changeOption(opt) { this.getDebugVars({ filter: opt }); } - }, + } }; @@ -305,4 +330,16 @@ input[type="radio"] { line-height: 1.5; border-radius: .2rem; } + +.debugger-container .php{ + font-family: Consolas, monospace; + color: #000; + margin-bottom: 0px; + margin-top: 0px; + background: #fff; + border-radius: 0px; + padding: 0px; + line-height: 1.5; + overflow: auto; +} \ No newline at end of file diff --git a/resources/assets/js/components/search/CasesFilter.vue b/resources/assets/js/components/search/CasesFilter.vue index 525fea6ae..fc4e53193 100644 --- a/resources/assets/js/components/search/CasesFilter.vue +++ b/resources/assets/js/components/search/CasesFilter.vue @@ -236,6 +236,7 @@ export default { self.searchTags.push(component.id); self.selected = component.id; self.itemModel[component.id] = component; + self.itemModel[component.id].autoShow = typeof item.autoShow !== "undefined" ? item.autoShow : true } }); }, diff --git a/resources/assets/js/components/vuetable/GroupedCell.vue b/resources/assets/js/components/vuetable/GroupedCell.vue index 2291ea6db..93b7c55d8 100644 --- a/resources/assets/js/components/vuetable/GroupedCell.vue +++ b/resources/assets/js/components/vuetable/GroupedCell.vue @@ -18,6 +18,7 @@ variant="info" :src="item.AVATAR" size="2em" + v-show="item.UNASSIGNED" > diff --git a/resources/assets/js/home/Draft.vue b/resources/assets/js/home/Draft.vue index cf32f72d4..2a5f3ab4b 100644 --- a/resources/assets/js/home/Draft.vue +++ b/resources/assets/js/home/Draft.vue @@ -141,6 +141,24 @@ export default { APP_UID: params.app_uid, DEL_INDEX: params.del_index }); + this.$emit("cleanDefaultOption"); + } + //force to search in the parallel tasks + if (params && params.openapplicationuid) { + this.onUpdateFilters({ + params: [ + { + fieldId: "caseNumber", + filterVar: "caseNumber", + label: "", + options:[], + value: params.openapplicationuid, + autoShow: false + } + ], + refresh: true + }); + this.$emit("cleanDefaultOption"); } } }, @@ -233,7 +251,7 @@ export default { DEL_INDEX: item.DEL_INDEX, PRO_UID: item.PRO_UID, TAS_UID: item.TAS_UID, - ACTION: "draft", + ACTION: "draft" }); this.$emit("onUpdatePage", "XCase"); }, diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index f272713b8..150e46f9c 100644 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -31,6 +31,7 @@ @onUpdateDataCase="onUpdateDataCase" @onLastPage="onLastPage" @onUpdateFilters="onUpdateFilters" + @cleanDefaultOption="cleanDefaultOption" > @@ -72,7 +73,7 @@ export default { data() { return { lastPage: "MyCases", - page: "MyCases", + page: null, menu: [], dataCase: {}, hideToggle: true, @@ -86,6 +87,7 @@ export default { filters: null, menuMap: { CASES_MY_CASES: "MyCases", + CASES_SENT: "MyCases", CASES_SEARCH: "advanced-search", CASES_INBOX: "todo", CASES_DRAFT: "draft", @@ -121,12 +123,14 @@ export default { eventMethod === "attachEvent" ? "onmessage" : "message"; eventer(messageEvent, function(e) { - if ( - e.data === "redirect=todo" || - e.message === "redirect=todo" - ) { + if ( e.data === "redirect=todo" || e.message === "redirect=todo"){ that.page = "todo"; } + if ( e.data === "update=debugger" || e.message === "update=debugger"){ + if(that.$refs["component"].updateView){ + that.$refs["component"].updateView(); + } + } }); }, /** @@ -154,6 +158,8 @@ export default { if (menuItem && menuItem.href) { this.page = this.menuMap[window.config._nodeId] || "MyCases"; this.$router.push(menuItem.href); + } else { + this.page = "MyCases"; } }, /** @@ -188,6 +194,12 @@ export default { } return auxData; }, + /** + * Clean the default option property + */ + cleanDefaultOption() { + this.defaultOption = ""; + }, OnClickSidebarItem(item) { if (item.item.page && item.item.page === "/advanced-search") { this.page = "advanced-search"; diff --git a/resources/assets/js/home/ModalNewRequest.vue b/resources/assets/js/home/ModalNewRequest.vue index a87c0a507..cbe39d478 100644 --- a/resources/assets/js/home/ModalNewRequest.vue +++ b/resources/assets/js/home/ModalNewRequest.vue @@ -164,6 +164,7 @@ export default { APP_UID: data.data.APPLICATION, DEL_INDEX: 1, ACTION: "draft", + PRO_UID: data.data.PROCESS }; self.disable = false; self.$parent.$parent.page = "XCase"; diff --git a/resources/assets/js/home/MyCases.vue b/resources/assets/js/home/MyCases.vue index 12a55bffa..2c062944b 100644 --- a/resources/assets/js/home/MyCases.vue +++ b/resources/assets/js/home/MyCases.vue @@ -83,7 +83,7 @@ export default { GroupedCell, ModalComments, }, - props: ["filters"], + props: ["filters", "defaultOption"], data() { return { dataAlert: { @@ -157,6 +157,7 @@ export default { }, mounted() { this.getHeaders(); + this.openDefaultCase(); // force to open start cases modal // if the user has start case as a default case menu option if (window.config._nodeId === "CASES_START_CASE") { @@ -175,6 +176,22 @@ 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 + }); + this.$emit("cleanDefaultOption"); + } + } + }, /** * Row click event handler * @param {object} event @@ -192,6 +209,21 @@ export default { self.openCaseDetail(event.row); } }, + /** + * Open selected case + * + * @param {object} item + */ + openCase(item) { + this.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + ACTION: "todo" + }); + this.$emit("onUpdatePage", "XCase"); + }, /** * Open case detail * @@ -304,8 +336,15 @@ export default { */ formantPendingTask(data) { var i, + userDataFormat, dataFormat = []; for (i = 0; i < data.length; i += 1) { + userDataFormat = utils.userNameDisplayFormat({ + userName: data[i].user_tooltip.usr_username || "", + firstName: data[i].user_tooltip.usr_firstname || "", + lastName: data[i].user_tooltip.usr_lastname || "", + format: window.config.FORMATS.format || null + }); dataFormat.push( { TAS_NAME: data[i].tas_title, @@ -313,17 +352,13 @@ export default { 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 : "", - AVATAR: window.config.SYS_SERVER + + AVATAR: userDataFormat !== "" ? window.config.SYS_SERVER + window.config.SYS_URI + - `users/users_ViewPhotoGrid?pUID=${data[i].user_id}`, - USERNAME: utils.userNameDisplayFormat({ - userName: data[i].user_tooltip.usr_username, - firstName: data[i].user_tooltip.usr_firstname, - lastName: data[i].user_tooltip.usr_lastname, - format: window.config.FORMATS.format || null - }), + `users/users_ViewPhotoGrid?pUID=${data[i].user_id}` : "", + USERNAME: userDataFormat !== "" ? userDataFormat : this.$i18n.t("ID_UNASSIGNED"), POSITION: data[i].user_tooltip.usr_position, - EMAIL: data[i].user_tooltip.usr_email + EMAIL: data[i].user_tooltip.usr_email, + UNASSIGNED: userDataFormat !== "" ? true : false } ); } diff --git a/resources/assets/js/home/Paused.vue b/resources/assets/js/home/Paused.vue index ff5e01d0f..008796a0e 100644 --- a/resources/assets/js/home/Paused.vue +++ b/resources/assets/js/home/Paused.vue @@ -76,7 +76,7 @@ export default { ModalUnpauseCase, CasesFilter, }, - props: {}, + props: ["defaultOption"], data() { return { newCase: { @@ -137,7 +137,10 @@ export default { } }; }, - mounted() {}, + mounted() { + // force to open case + this.openDefaultCase(); + }, watch: {}, computed: { /** @@ -150,7 +153,40 @@ 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 + }); + this.$emit("cleanDefaultOption"); + } + //force to search in the parallel tasks + if (params && params.openapplicationuid) { + this.onUpdateFilters({ + params: [ + { + fieldId: "caseNumber", + filterVar: "caseNumber", + label: "", + options:[], + value: params.openapplicationuid, + autoShow: false + } + ], + refresh: true + }); + this.$emit("cleanDefaultOption"); + } + } + }, + /** * On row click event handler * @param {object} event */ @@ -236,6 +272,21 @@ export default { }); return data; }, + /** + * Open selected cases in the inbox + * + * @param {object} item + */ + openCase(item) { + this.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + ACTION: "todo" + }); + this.$emit("onUpdatePage", "XCase"); + }, /** * Open case detail * diff --git a/resources/assets/js/home/Todo.vue b/resources/assets/js/home/Todo.vue index e025695f1..649eedc4e 100644 --- a/resources/assets/js/home/Todo.vue +++ b/resources/assets/js/home/Todo.vue @@ -130,7 +130,10 @@ export default { } }; }, - mounted() {}, + mounted() { + // force to open case + this.openDefaultCase(); + }, watch: {}, computed: { /** @@ -155,6 +158,24 @@ export default { APP_UID: params.app_uid, DEL_INDEX: params.del_index }); + this.$emit("cleanDefaultOption"); + } + //force to search in the parallel tasks + if (params && params.openapplicationuid) { + this.onUpdateFilters({ + params: [ + { + fieldId: "caseNumber", + filterVar: "caseNumber", + label: "", + options:[], + value: params.openapplicationuid, + autoShow: false + } + ], + refresh: true + }); + this.$emit("cleanDefaultOption"); } } }, @@ -255,7 +276,7 @@ export default { DEL_INDEX: item.DEL_INDEX, PRO_UID: item.PRO_UID, TAS_UID: item.TAS_UID, - ACTION: "todo", + ACTION: "todo" }); this.$emit("onUpdatePage", "XCase"); }, diff --git a/resources/assets/js/home/Unassigned.vue b/resources/assets/js/home/Unassigned.vue index 3ceaed225..8701511b0 100644 --- a/resources/assets/js/home/Unassigned.vue +++ b/resources/assets/js/home/Unassigned.vue @@ -58,6 +58,7 @@ import TaskCell from "../components/vuetable/TaskCell.vue"; import CasesFilter from "../components/search/CasesFilter"; import ModalClaimCase from "./modal/ModalClaimCase.vue"; import api from "./../api/index"; +import utils from "./../utils/utils"; export default { name: "Paused", @@ -69,7 +70,7 @@ export default { ModalClaimCase, CasesFilter, }, - props: {}, + props: ["defaultOption"], data() { return { newCase: { @@ -130,7 +131,10 @@ export default { } }; }, - mounted() {}, + mounted() { + // force to open case + this.openDefaultCase(); + }, watch: {}, computed: { /** @@ -143,6 +147,39 @@ 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 + }); + this.$emit("cleanDefaultOption"); + } + //force to search in the parallel tasks + if (params && params.openapplicationuid) { + this.onUpdateFilters({ + params: [ + { + fieldId: "caseNumber", + filterVar: "caseNumber", + label: "", + options:[], + value: params.openapplicationuid, + autoShow: false + } + ], + refresh: true + }); + this.$emit("cleanDefaultOption"); + } + } + }, /** * On row click event handler * @param {object} event @@ -237,6 +274,21 @@ export default { }); }); }, + /** + * Open selected cases in the inbox + * + * @param {object} item + */ + openCase(item) { + this.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + ACTION: "todo" + }); + this.$emit("onUpdatePage", "XCase"); + }, /** * Open case detail * diff --git a/resources/assets/js/home/XCase.vue b/resources/assets/js/home/XCase.vue index 85a2e3afb..3049e26d7 100644 --- a/resources/assets/js/home/XCase.vue +++ b/resources/assets/js/home/XCase.vue @@ -9,7 +9,7 @@ allowfullscreen @load="onLoadIframe" > - + @@ -62,6 +62,14 @@ export default { classBtn(cls) { return "btn v-btn-request " + cls; }, + /** + * update view in component + */ + updateView(){ + if(this.openDebug){ + this.$refs["debugger"].loadData(); + } + }, onLoadIframe() {}, }, }; diff --git a/resources/assets/js/utils/utils.js b/resources/assets/js/utils/utils.js index 0651f365f..6349ffd81 100644 --- a/resources/assets/js/utils/utils.js +++ b/resources/assets/js/utils/utils.js @@ -5,19 +5,21 @@ export default { * @param {object} params */ userNameDisplayFormat(params) { - let aux; - let defaultValues = { + let aux = "", + 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.trim(); + if (defaultValues.userName !== "" || defaultValues.firstName !== "" || defaultValues.lastName !== "") { + 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 diff --git a/workflow/engine/methods/cases/viena_init.php b/workflow/engine/methods/cases/viena_init.php index 3dd09e401..607ec9a8b 100644 --- a/workflow/engine/methods/cases/viena_init.php +++ b/workflow/engine/methods/cases/viena_init.php @@ -3,6 +3,7 @@ use Eusebiu\JavaScript\Facades\ScriptVariables; use Illuminate\Support\Facades\View; use ProcessMaker\Core\System; +use ProcessMaker\Model\Application; $conf = new Configurations(); @@ -95,8 +96,9 @@ if (isset($_SESSION['__OPEN_APPLICATION_UID__'])) { $openCaseIE = true; $defaultOption = '../cases/open?APP_UID=' . $openAppUid . '&DEL_INDEX=' . $arrayDelIndex[0] . '&action=' . $action; } else { + $appNumber = Application::getCaseNumber($openAppUid); //We will to show the list: more than one thread - $defaultOption = '../cases/casesListExtJs?action=' . $action . '&openApplicationUid=' . $openAppUid; + $defaultOption = '../cases/casesListExtJs?action=' . $action . '&openApplicationUid=' . $appNumber; } } else { if (isset($_GET['id'])) { diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index d92bf314b..169d7300d 100644 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -598,6 +598,14 @@ Ext.onReady(function(){ Ext.getCmp('actionMenu').hide(); Ext.getCmp('returnButton').hide(); + // Hacky Code for update the debugger in new UI + document.getElementById("openCaseFrame").onload = function () + { + if(window.parent){ + window.parent.postMessage("update=debugger","*"); + } + }; + hideCaseNavigatorPanel(); if(typeof appStatus !== "undefined") { showCaseNavigatorPanel(appStatus);