From ef26f3055dff5ca62a6fa65df171a2e25ab6594b Mon Sep 17 00:00:00 2001 From: EdwinBetanc0urt Date: Fri, 13 Dec 2019 20:42:47 -0400 Subject: [PATCH] fix: Correct process metadata loading in modal. (#210) --- src/api/ADempiere/dictionary.js | 4 +- .../ADempiere/ContextMenu/contextMenuMixin.js | 5 +- src/lang/ADempiere/en.js | 15 +- src/lang/ADempiere/es.js | 15 +- src/store/modules/ADempiere/browser.js | 12 +- src/store/modules/ADempiere/panel.js | 136 +++++++++--------- src/store/modules/ADempiere/processControl.js | 6 +- src/store/modules/ADempiere/window.js | 12 +- src/utils/ADempiere/dictionaryUtils.js | 84 ++++++----- 9 files changed, 153 insertions(+), 136 deletions(-) diff --git a/src/api/ADempiere/dictionary.js b/src/api/ADempiere/dictionary.js index 08b75bb7..ec7751a2 100644 --- a/src/api/ADempiere/dictionary.js +++ b/src/api/ADempiere/dictionary.js @@ -30,7 +30,7 @@ export function getProcess(uuid, isConvert = true) { export function getBrowser(uuid, isConvert = true) { return Instance.call(this).requestBrowser({ - uuid: uuid, + uuid, isConvertedMetadata: isConvert, isConvertedFields: true }) @@ -38,7 +38,7 @@ export function getBrowser(uuid, isConvert = true) { export function getTab(uuid, childrenFields = true, isConvert = true) { return Instance.call(this).requestTab({ - uuid: uuid, + uuid, isWithFields: childrenFields, isConvertedMetadata: isConvert, isConvertedFields: true diff --git a/src/components/ADempiere/ContextMenu/contextMenuMixin.js b/src/components/ADempiere/ContextMenu/contextMenuMixin.js index 1f787dbf..91f6afca 100644 --- a/src/components/ADempiere/ContextMenu/contextMenuMixin.js +++ b/src/components/ADempiere/ContextMenu/contextMenuMixin.js @@ -320,7 +320,10 @@ export const contextMixin = { if (action.type === 'process') { this.$store.dispatch('setShowDialog', { type: action.type, - action: action + action: { + ...action, + containerUuid: action.uuid + } }) } }, diff --git a/src/lang/ADempiere/en.js b/src/lang/ADempiere/en.js index baf0259b..73a467b4 100644 --- a/src/lang/ADempiere/en.js +++ b/src/lang/ADempiere/en.js @@ -141,13 +141,14 @@ export default { contextFieldTitle: 'Context Information' }, views: { - SmartBrowser: 'Smart Browser', - Process: 'Process', - Window: 'Window', - Report: 'Report', - Workflow: 'Workflow', - Task: 'Task', - Form: 'Form', + browser: 'Smart Browser', + smartBrowser: 'Smart Browser', + process: 'Process', + window: 'Window', + report: 'Report', + workflow: 'Workflow', + task: 'Task', + form: 'Form', noProcess: 'Not process running', logs: 'Summary', log: 'Summary', diff --git a/src/lang/ADempiere/es.js b/src/lang/ADempiere/es.js index 90f26943..810340ac 100644 --- a/src/lang/ADempiere/es.js +++ b/src/lang/ADempiere/es.js @@ -141,13 +141,14 @@ export default { contextFieldTitle: 'Información de Contexto' }, views: { - SmartBrowser: 'Consulta Inteligente', - Process: 'Proceso', - Window: 'Ventana', - Report: 'Reporte', - Workflow: 'Flujo de Trabajo', - Task: 'Tarea', - Form: 'Formulario', + browser: 'Consulta Inteligente', + smartBrowser: 'Consulta Inteligente', + process: 'Proceso', + window: 'Ventana', + report: 'Reporte', + workflow: 'Flujo de Trabajo', + task: 'Tarea', + form: 'Formulario', noProcess: 'No hay procesos en ejecución', logs: 'Resumen', log: 'Bitacora', diff --git a/src/store/modules/ADempiere/browser.js b/src/store/modules/ADempiere/browser.js index 925c28f4..8265a29b 100644 --- a/src/store/modules/ADempiere/browser.js +++ b/src/store/modules/ADempiere/browser.js @@ -106,17 +106,19 @@ const browser = { if (process) { actions.push({ type: 'process', + panelType: 'process', uuid: process.uuid, name: process.name, description: process.description, isReport: process.isReport, isDirectPrint: process.isDirectPrint }) - // add process associated in vuex store - dispatch('addProcessAssociated', { - processToGenerate: process, - containerUuidAssociated: newBrowser.uuid - }) + // TODO: No list of parameters + // // add process associated in vuex store + // dispatch('addProcessAssociated', { + // processToGenerate: process, + // containerUuidAssociated: newBrowser.uuid + // }) } dispatch('addPanel', newBrowser) diff --git a/src/store/modules/ADempiere/panel.js b/src/store/modules/ADempiere/panel.js index 2d4171d8..d60e085e 100644 --- a/src/store/modules/ADempiere/panel.js +++ b/src/store/modules/ADempiere/panel.js @@ -20,6 +20,9 @@ const panel = { addPanel(state, payload) { state.panel.push(payload) }, + changePanel(state, payload) { + payload.panel = payload.newPanel + }, changeFieldLogic(state, payload) { if (payload.isDisplayedFromLogic !== undefined) { payload.field.isDisplayedFromLogic = payload.isDisplayedFromLogic @@ -34,9 +37,6 @@ const panel = { dictionaryResetCache(state) { state.panel = [] }, - changePanel(state, payload) { - payload.panel = payload.newPanel - }, changeFieldList(state, payload) { payload.fieldList = payload.newFieldList }, @@ -63,38 +63,42 @@ const panel = { let selectionColumn = [] let identifierColumns = [] let count = 0 - params.fieldList.forEach(itemField => { - if (itemField.isKey) { - keyColumn = itemField.columnName - } - if (itemField.isSelectionColumn) { - selectionColumn.push(itemField.columnName) - } - if (itemField.isIdentifier) { - identifierColumns.push({ - columnName: itemField.columnName, - identifierSequence: itemField.identifierSequence, - componentPath: itemField.componentPath - }) - } - if (params.panelType === 'table' || params.isAdvancedQuery) { - itemField.isShowedFromUser = false - if (count < 2 && itemField.isSelectionColumn && itemField.sequence >= 10) { - itemField.isShowedFromUser = true - count++ + if (params.fieldList) { + params.fieldList.forEach(itemField => { + if (itemField.isKey) { + keyColumn = itemField.columnName } - } else { - if (params.isParentTab) { - dispatch('setContext', { - parentUuid: params.parentUuid, - containerUuid: params.uuid, + if (itemField.isSelectionColumn) { + selectionColumn.push(itemField.columnName) + } + if (itemField.isIdentifier) { + identifierColumns.push({ columnName: itemField.columnName, - value: itemField.value + identifierSequence: itemField.identifierSequence, + componentPath: itemField.componentPath }) } - } - }) + + if (params.panelType === 'table' || params.isAdvancedQuery) { + itemField.isShowedFromUser = false + if (count < 2 && itemField.isSelectionColumn && itemField.sequence >= 10) { + itemField.isShowedFromUser = true + count++ + } + } else { + if (params.isParentTab) { + dispatch('setContext', { + parentUuid: params.parentUuid, + containerUuid: params.uuid, + columnName: itemField.columnName, + value: itemField.value + }) + } + } + }) + params.fieldList = assignedGroup(params.fieldList) + } params.keyColumn = keyColumn if (params.isSortTab) { @@ -111,7 +115,6 @@ const panel = { }) params.recordUuid = null - params.fieldList = assignedGroup(params.fieldList) commit('addPanel', params) }, @@ -715,47 +718,44 @@ const panel = { } commit('changeFieldValue', newField) }, - getPanelAndFields({ dispatch }, parameters) { - if (parameters.panelType === 'process' || parameters.panelType === 'report') { - return dispatch('getProcessFromServer', parameters) - .then(response => { - return response - }) - .catch(error => { - return { - ...error, - moreInfo: `Dictionary getPanelAndFields ${parameters.panelType} (State Panel)`, - parameters: parameters - } - }) - } else if (parameters.panelType === 'browser') { - return dispatch('getBrowserFromServer', parameters) - .then(response => { - return response - }) - .catch(error => { - return { - ...error, - moreInfo: 'Dictionary getPanelAndFields browser (State Panel)', - parameters: parameters - } - }) - } else if (parameters.panelType === 'window' || parameters.panelType === 'table') { - return dispatch('getTabAndFieldFromServer', { - parentUuid: parameters.parentUuid, - containerUuid: parameters.containerUuid, - isAdvancedQuery: parameters.isAdvancedQuery, - panelType: parameters.panelType - }).then(response => { - return response - }).catch(error => { + getPanelAndFields({ dispatch }, { + parentUuid, + containerUuid, + panelType, + routeToDelete, + isAdvancedQuery = false + }) { + let executeAction + switch (panelType) { + case 'process': + case 'report': + executeAction = 'getProcessFromServer' + break + case 'browser': + executeAction = 'getBrowserFromServer' + break + case 'window': + case 'table': + default: + executeAction = 'getTabAndFieldFromServer' + break + } + + return dispatch(executeAction, { + parentUuid, + containerUuid, + isAdvancedQuery, + routeToDelete + }) + .then(panelResponse => { + return panelResponse + }) + .catch(error => { return { ...error, - moreInfo: 'Dictionary getPanelAndFields Window (State Panel)', - parameters: parameters + moreInfo: `Dictionary getPanelAndFields ${panelType} (State Panel)` } }) - } }, showedTotals({ commit, getters }, containerUuid) { const panel = getters.getPanel(containerUuid) diff --git a/src/store/modules/ADempiere/processControl.js b/src/store/modules/ADempiere/processControl.js index ff3b0303..29c7a860 100644 --- a/src/store/modules/ADempiere/processControl.js +++ b/src/store/modules/ADempiere/processControl.js @@ -421,15 +421,15 @@ const processControl = { setShowDialog({ state, commit, dispatch, rootGetters }, params) { const panels = ['process', 'report', 'window'] if (params.action && (panels.includes(params.type) || panels.includes(params.action.panelType))) { - if (params.action.containerUuid === state.metadata.containerUuid) { + if (state.metadata && state.metadata.containerUuid === params.action.containerUuid) { commit('setShowDialog', true) return } const panel = rootGetters.getPanel(params.action.containerUuid) - if (!panel) { + if (panel === undefined) { dispatch('getPanelAndFields', { parentUuid: params.action.parentUuid, - containerUuid: params.action.containerUuid, + containerUuid: params.action.containerUuid || params.action.uuid, panelType: params.action.panelType }) .then(response => { diff --git a/src/store/modules/ADempiere/window.js b/src/store/modules/ADempiere/window.js index 5559ff90..36ba5070 100644 --- a/src/store/modules/ADempiere/window.js +++ b/src/store/modules/ADempiere/window.js @@ -151,6 +151,7 @@ const window = { tabAssociatedUuid: tab.uuid, // tab source tabAssociatedName: tab.name, // tab source action: 'orderSequence', + panelType: 'window', type: 'application' } }) @@ -163,15 +164,18 @@ const window = { // get processess associated in tab if (tabItem.processesList && tabItem.processesList.length) { const processList = tabItem.processesList.map(processItem => { - dispatch('addProcessAssociated', { - processToGenerate: processItem, - containerUuidAssociated: tabItem.uuid - }) + // TODO: No list of parameters + // // add process associated in vuex store + // dispatch('addProcessAssociated', { + // processToGenerate: processItem, + // containerUuidAssociated: tabItem.uuid + // }) return { id: processItem.id, uuid: processItem.uuid, name: processItem.name, type: 'process', + panelType: 'process', description: processItem.description, help: processItem.help, isReport: processItem.isReport, diff --git a/src/utils/ADempiere/dictionaryUtils.js b/src/utils/ADempiere/dictionaryUtils.js index aee01ce2..fbc8e048 100644 --- a/src/utils/ADempiere/dictionaryUtils.js +++ b/src/utils/ADempiere/dictionaryUtils.js @@ -152,41 +152,45 @@ export function generateProcess({ processToGenerate, containerUuidAssociated = u } // Convert from gRPC - const fieldsRangeList = [] - let fieldDefinitionList = processToGenerate.parametersList - .map(fieldItem => { - const field = generateField(fieldItem, additionalAttributes) - // Add new field if is range number - if (field.isRange && field.componentPath === 'FieldNumber') { - const fieldRange = generateField(fieldItem, additionalAttributes, true) - if (!isEmptyValue(fieldRange.value)) { - fieldRange.isShowedFromUser = true + let fieldDefinitionList + if (processToGenerate.parametersList) { + const fieldsRangeList = [] + + fieldDefinitionList = processToGenerate.parametersList + .map(fieldItem => { + const field = generateField(fieldItem, additionalAttributes) + // Add new field if is range number + if (field.isRange && field.componentPath === 'FieldNumber') { + const fieldRange = generateField(fieldItem, additionalAttributes, true) + if (!isEmptyValue(fieldRange.value)) { + fieldRange.isShowedFromUser = true + } + fieldsRangeList.push(fieldRange) } - fieldsRangeList.push(fieldRange) - } - // if field with value displayed in main panel - if (!isEmptyValue(field.value)) { - field.isShowedFromUser = true - } - - return field - }) - fieldDefinitionList = fieldDefinitionList.concat(fieldsRangeList) - - // Get dependent fields - fieldDefinitionList - .filter(field => field.parentFieldsList && field.isActive) - .forEach((field, index, list) => { - field.parentFieldsList.forEach(parentColumnName => { - var parentField = list.find(parentField => { - return parentField.columnName === parentColumnName && parentColumnName !== field.columnName - }) - if (parentField) { - parentField.dependentFieldsList.push(field.columnName) + // if field with value displayed in main panel + if (!isEmptyValue(field.value)) { + field.isShowedFromUser = true } + + return field }) - }) + fieldDefinitionList = fieldDefinitionList.concat(fieldsRangeList) + + // Get dependent fields + fieldDefinitionList + .filter(field => field.parentFieldsList && field.isActive) + .forEach((field, index, list) => { + field.parentFieldsList.forEach(parentColumnName => { + var parentField = list.find(parentField => { + return parentField.columnName === parentColumnName && parentColumnName !== field.columnName + }) + if (parentField) { + parentField.dependentFieldsList.push(field.columnName) + } + }) + }) + } // Default Action const actions = [] @@ -225,6 +229,7 @@ export function generateProcess({ processToGenerate, containerUuidAssociated = u isReport: processToGenerate.isReport, isDirectPrint: processToGenerate.isDirectPrint } + processToGenerate.reportExportTypeList.forEach(actionValue => { // Push values summaryAction.childs.push({ @@ -240,6 +245,7 @@ export function generateProcess({ processToGenerate, containerUuidAssociated = u reportExportType: actionValue.reportExportType }) }) + // Add summary Actions actions.push(summaryAction) @@ -455,39 +461,39 @@ export function convertAction(action) { switch (action) { case 'B': - actionAttributes.name = 'Workbech' + actionAttributes.name = 'workbech' actionAttributes.icon = 'peoples' break case 'F': - actionAttributes.name = 'Workflow' + actionAttributes.name = 'workflow' actionAttributes.icon = 'example' break case 'P': - actionAttributes.name = 'Process' + actionAttributes.name = 'process' actionAttributes.icon = 'component' actionAttributes.component = () => import('@/views/ADempiere/Process') break case 'R': - actionAttributes.name = 'Report' + actionAttributes.name = 'report' actionAttributes.icon = 'skill' actionAttributes.component = () => import('@/views/ADempiere/Process') break case 'S': - actionAttributes.name = 'Browser' + actionAttributes.name = 'browser' actionAttributes.icon = 'search' actionAttributes.component = () => import('@/views/ADempiere/Browser') break case 'T': - actionAttributes.name = 'Task' + actionAttributes.name = 'task' actionAttributes.icon = 'size' break case 'W': - actionAttributes.name = 'Window' + actionAttributes.name = 'window' actionAttributes.icon = 'tab' actionAttributes.component = () => import('@/views/ADempiere/Window') break case 'X': - actionAttributes.name = 'Form' + actionAttributes.name = 'form' actionAttributes.icon = 'form' break default: