From b406b8a3fc53a12abcfa877f236ef46efa64261f Mon Sep 17 00:00:00 2001 From: Elsio Sanchez <45974454+elsiosanchez@users.noreply.github.com> Date: Fri, 7 May 2021 16:57:25 -0400 Subject: [PATCH] Add Change Log option in field (#822) * Add Change Log option in field * support mobile * minimal changes * sort logs * fix style Co-authored-by: elsiosanchez --- .../ADempiere/ContainerInfo/recordLogs.vue | 31 ++- .../contextMenuField/changeLogs/index.vue | 176 ++++++++++++++++++ src/components/ADempiere/Field/index.vue | 29 ++- src/lang/ADempiere/en.js | 1 + src/lang/ADempiere/es.js | 1 + src/store/modules/ADempiere/containerInfo.js | 4 + .../ADempiere/Window/windowLogicComponent.js | 10 + 7 files changed, 242 insertions(+), 10 deletions(-) create mode 100644 src/components/ADempiere/Field/contextMenuField/changeLogs/index.vue diff --git a/src/components/ADempiere/ContainerInfo/recordLogs.vue b/src/components/ADempiere/ContainerInfo/recordLogs.vue index 18a8e136..14782770 100644 --- a/src/components/ADempiere/ContainerInfo/recordLogs.vue +++ b/src/components/ADempiere/ContainerInfo/recordLogs.vue @@ -24,11 +24,11 @@
@@ -108,7 +108,25 @@ export default { return 'panel' }, gettersListRecordLogs() { - return this.$store.getters.getRecordLogs.entityLogs + const log = this.$store.getters.getRecordLogs.entityLogs + if (log) { + return log.map(element => { + let type + if (!this.isEmptyValue(element.changeLogsList[0].newDisplayValue) && this.isEmptyValue(element.changeLogsList[0].oldDisplayValue)) { + type = 'success' + } else if (this.isEmptyValue(element.changeLogsList[0].newDisplayValue) && !this.isEmptyValue(element.changeLogsList[0].oldDisplayValue)) { + type = 'danger' + } else { + type = 'primary' + } + return { + ...element, + columnName: element.changeLogsList[0].columnName, + type + } + }) + } + return [] }, getIsChangeLog() { if (this.isEmptyValue(this.gettersListRecordLogs)) { @@ -118,6 +136,9 @@ export default { } }, methods: { + sortSequence(itemA, itemB) { + return new Date().setTime(new Date(itemB.logDate).getTime()) - new Date().setTime(new Date(itemA.logDate).getTime()) + }, showkey(key, index) { if (key === this.currentKey && index === this.typeAction) { this.currentKey = 1000 @@ -141,6 +162,6 @@ export default { height: 57vh; } .panel { - height: 100vh; + height: 75vh; } diff --git a/src/components/ADempiere/Field/contextMenuField/changeLogs/index.vue b/src/components/ADempiere/Field/contextMenuField/changeLogs/index.vue new file mode 100644 index 00000000..a9dde74c --- /dev/null +++ b/src/components/ADempiere/Field/contextMenuField/changeLogs/index.vue @@ -0,0 +1,176 @@ + + + + + + + diff --git a/src/components/ADempiere/Field/index.vue b/src/components/ADempiere/Field/index.vue index 10d48230..2b36162c 100644 --- a/src/components/ADempiere/Field/index.vue +++ b/src/components/ADempiere/Field/index.vue @@ -74,7 +74,7 @@ />
-
+
@@ -91,7 +91,7 @@
-
+
@@ -142,10 +142,13 @@ />
-
+
-
+
@@ -159,7 +162,7 @@
-
+
@@ -297,6 +300,9 @@ export default { case this.$t('field.preference'): component = () => import('@/components/ADempiere/Field/contextMenuField/preference/index') break + case this.$t('field.logsField'): + component = () => import('@/components/ADempiere/Field/contextMenuField/changeLogs/index') + break } return component }, @@ -554,18 +560,21 @@ export default { name: this.$t('field.info'), enabled: true, fieldAttributes: this.fieldAttributes, + svg: false, icon: 'el-icon-info' }, { name: this.$t('table.ProcessActivity.zoomIn'), enabled: this.isContextInfo, fieldAttributes: this.fieldAttributes, + svg: false, icon: 'el-icon-files' }, { name: this.$t('language'), enabled: this.field.isTranslatedField, fieldAttributes: this.fieldAttributes, + svg: true, icon: 'language' }, { @@ -574,6 +583,7 @@ export default { fieldAttributes: this.fieldAttributes, recordDataFields: this.recordDataFields, valueField: this.valueField, + svg: false, icon: 'el-icon-s-operation' }, { @@ -581,7 +591,16 @@ export default { enabled: true, fieldAttributes: this.fieldAttributes, valueField: this.valueField, + svg: false, icon: 'el-icon-notebook-2' + }, + { + name: this.$t('field.logsField'), + enabled: true, + fieldAttributes: this.fieldAttributes, + valueField: this.valueField, + svg: true, + icon: 'tree-table' } ] }, diff --git a/src/lang/ADempiere/en.js b/src/lang/ADempiere/en.js index 7b7fd2be..3e7cb2c4 100644 --- a/src/lang/ADempiere/en.js +++ b/src/lang/ADempiere/en.js @@ -330,6 +330,7 @@ export default { info: 'Information', calculator: 'Calculator', preference: 'Preference', + logsField: 'Field Change Log', codeTranslation: 'Translation Of ', container: { help: 'Help', diff --git a/src/lang/ADempiere/es.js b/src/lang/ADempiere/es.js index 6431e572..c7d29e25 100644 --- a/src/lang/ADempiere/es.js +++ b/src/lang/ADempiere/es.js @@ -307,6 +307,7 @@ export default { calculator: 'Calculadora', preference: 'Preferencia', codeTranslation: 'Traduccion de ', + logsField: 'Bitácora de Cambios', container: { help: 'Ayuda', description: 'Descripción' diff --git a/src/store/modules/ADempiere/containerInfo.js b/src/store/modules/ADempiere/containerInfo.js index bb21bacc..9b013980 100644 --- a/src/store/modules/ADempiere/containerInfo.js +++ b/src/store/modules/ADempiere/containerInfo.js @@ -3,6 +3,7 @@ import { requestListWorkflowsLogs, requestListWorkflows } from '@/api/ADempiere/window' +import { isEmptyValue } from '@/utils/ADempiere' const initStateContainerInfo = { listworkflowLog: [], @@ -34,6 +35,9 @@ const containerInfo = { }) { const pageSize = 0 const pageToken = 0 + if (isEmptyValue(tableName) && (isEmptyValue(recordId) || isEmptyValue(recordUuid))) { + return + } return requestListEntityLogs({ tableName, recordId, diff --git a/src/views/ADempiere/Window/windowLogicComponent.js b/src/views/ADempiere/Window/windowLogicComponent.js index a3a52ebc..57be845d 100644 --- a/src/views/ADempiere/Window/windowLogicComponent.js +++ b/src/views/ADempiere/Window/windowLogicComponent.js @@ -110,6 +110,9 @@ export default { case this.$t('field.preference'): component = () => import('@/components/ADempiere/Field/contextMenuField/preference/index') break + case this.$t('field.logsField'): + component = () => import('@/components/ADempiere/Field/contextMenuField/changeLogs/index') + break } return component }, @@ -355,6 +358,13 @@ export default { } }, getRecord(value) { + if (value && this.getTableName && this.recordId && this.isEmptyValue(this.gettersListRecordLogs)) { + this.$store.dispatch('listRecordLogs', { + tableName: this.getTableName, + recordId: this.recordId, + recordUuid: value.UUID + }) + } if (!this.isEmptyValue(this.windowMetadata.currentTab.tableName) && !this.isEmptyValue(value) && (!this.isEmptyValue(this.$route.query) && this.$route.query.typeAction === 'recordAccess')) { this.$store.commit('setRecordAccess', true) }