1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-10-02 12:24:53 +08:00

redefine API to provide business data (#214)

* Change of main functions of api from the application to the grpc library

* Create entity.
* Update entity.
* Delete entity.
* Request entity.
* Request entities list.
* Rollback entity.
* Run process.
* Browser search.

* Convert API functions to get values.

* migrate CRUD and Browser Search.

* migrate process control and callout control.

* migrate print formats.

* migrate recent items, references, context info value, private access

* migrate pending documents, favorites, language and translations.

* migrate lookups.

* fix: Drill table empty name.

* Change report output.

* Refactor dashboard and language.

* Fix dashboard component.

* Fix dashboards unsupported, and refactor and remove getting values
This commit is contained in:
EdwinBetanc0urt 2020-01-14 15:42:09 -04:00 committed by Yamel Senih
parent 683e0d250b
commit fd6096b565
23 changed files with 974 additions and 1213 deletions

View File

@ -45,7 +45,7 @@
},
"dependencies": {
"@adempiere/grpc-access-client": "^1.1.8",
"@adempiere/grpc-data-client": "^1.8.5",
"@adempiere/grpc-data-client": "^1.8.7",
"@adempiere/grpc-dictionary-client": "^1.3.5",
"@adempiere/grpc-enrollment-client": "^1.0.7",
"autoprefixer": "^9.5.1",

View File

@ -26,239 +26,164 @@ export function convertValueFromGRPC(grpcValue) {
* @param {string} parameters.tableName
* @param {array} parameters.attributesList
*/
export function createEntity(parameters) {
var entityRequest = Instance.call(this).getCreateEntityRequest()
entityRequest.setTablename(parameters.tableName)
if (parameters.attributesList && parameters.attributesList.length) {
parameters.attributesList.forEach(attribute => {
const convertedAttribute = Instance.call(this).convertParameter(attribute)
entityRequest.addAttributes(convertedAttribute)
export function createEntity({ tableName, attributesList }) {
return Instance.call(this).createEntity({
tableName,
attributesList
})
}
// Create Entity
return Instance.call(this).createEntity(entityRequest)
}
/**
* Update entity
* @param {string} parameters.tableName
* @param {integer} parameters.recordId
* @param {string} parameters.recordUuid
* @param {array} parameters.attributesList
* @param {string} tableName
* @param {number} recordId
* @param {string} recordUuid
* @param {array} attributesList
*/
export function updateEntity(parameters) {
var entityRequest = Instance.call(this).getUpdateEntityRequest()
entityRequest.setTablename(parameters.tableName)
if (parameters.recordId) {
entityRequest.setRecordid(parameters.recordId)
}
entityRequest.setUuid(parameters.recordUuid)
if (parameters.attributesList && parameters.attributesList.length) {
parameters.attributesList.forEach(attribute => {
const convertedAttribute = Instance.call(this).convertParameter(attribute)
entityRequest.addAttributes(convertedAttribute)
export function updateEntity({ tableName, recordId, recordUuid, attributesList }) {
return Instance.call(this).updateEntity({
tableName,
recordId,
recordUuid,
attributesList
})
}
// Update Entity
return Instance.call(this).updateEntity(entityRequest)
}
/**
* Delete entity
* @param {string} parameters.tableName
* @param {integer} parameters.recordId
* @param {string} parameters.recordUuid
* @param {array} parameters.attributesList
* @param {string} tableName
* @param {number} recordId
* @param {string} recordUuid
*/
export function deleteEntity(parameters) {
var entityRequest = Instance.call(this).getUpdateEntityRequest()
entityRequest.setTablename(parameters.tableName)
if (parameters.recordId) {
entityRequest.setRecordid(parameters.recordId)
}
entityRequest.setUuid(parameters.recordUuid)
// Delete Entity
return Instance.call(this).deleteEntity(entityRequest)
export function deleteEntity({ tableName, recordId, recordUuid }) {
return Instance.call(this).deleteEntity({
tableName,
recordId,
recordUuid
})
}
export function getCriteria(tableName) {
return Instance.call(this).getCriteria(tableName)
}
export function getObject(table, uuid = false, id = false) {
return Instance.call(this).getEntity(
Instance.call(this).getEntityRequest(table, uuid, id)
)
export function getEntity({ tableName, recordId, recordUuid }) {
return Instance.call(this).requestEntity({
tableName,
recordId,
recordUuid
})
}
/**
* Object List from window
* @param {string} object.tableName
* @param {string} object.query
* @param {string} object.whereClause
* @param {string} object.orderByClause
* @param {string} tableName
* @param {string} query
* @param {string} whereClause
* @param {array} conditions
* @param {string} orderByClause
* @param {string} nextPageToken
*/
export function getObjectListFromCriteria(object) {
const criteriaForList = getCriteria(object.tableName)
criteriaForList.setQuery(object.query)
if (object.whereClause) {
criteriaForList.setWhereclause(object.whereClause)
}
if (object.orderByClause) {
criteriaForList.setOrderbyclause(object.orderByClause)
}
// add conditions
if (object.conditions && object.conditions.length) {
object.conditions.forEach(itemCondition => {
const convertCondition = Instance.call(this).convertCondition(itemCondition)
criteriaForList.addConditions(convertCondition)
export function getEntitiesList({ tableName, query, whereClause, conditions = [], orderByClause, nextPageToken }) {
return Instance.call(this).requestEntitiesList({
tableName,
query,
whereClause,
conditionsList: conditions,
orderByClause,
nextPageToken
})
}
var nextPageToken
if (object.nextPageToken) {
nextPageToken = object.nextPageToken
}
return Instance.call(this).requestObjectListFromCriteria(criteriaForList, nextPageToken)
}
/**
* Rollback entity (Create, Update, Delete)
* @param {string} parametersRollback.tableName
* @param {integer} parametersRollback.recordId
* @param {string} parametersRollback.eventType
* @param {string} tableName
* @param {number} recordId
* @param {string} eventType
*/
export function rollbackEntity(parametersRollback) {
var rollbackRequest = Instance.call(this).getRollbackEntityRequest()
rollbackRequest.setTablename(parametersRollback.tableName)
rollbackRequest.setRecordid(parametersRollback.recordId)
// set event type
var eventType = Instance.call(this).getEventType()
eventType = eventType[parametersRollback.eventType]
rollbackRequest.setEventtype(eventType)
return Instance.call(this).rollbackEntityRequest(rollbackRequest)
}
/**
* Request a Lookup list data from Reference
* The main attributes that function hope are:
* @param {string} reference.tableName
* @param {string} reference.query
*/
export function getLookupList(reference) {
return Instance.call(this).requestLookupListFromReference(reference)
export function rollbackEntity({ tableName, recordId, eventType }) {
return Instance.call(this).rollbackEntityRequest({
tableName,
recordId,
eventTypeExecuted: eventType
})
}
/**
* Request a Lookup data from Reference
* The main attributes that function hope are:
* @param {string} reference.tableName
* @param {string} reference.directQuery
* @param {string} tableName
* @param {string} directQuery
* @param {string|number} value
*/
export function getLookup(reference) {
export function getLookup({ tableName, directQuery, value }) {
return Instance.call(this).requestLookupFromReference({
tableName: reference.tableName,
directQuery: reference.directQuery
}, reference.value)
tableName,
directQuery,
value
})
}
/**
* Request a Lookup list data from Reference
* The main attributes that function hope are:
* @param {string} tableName
* @param {string} query
*/
export function getLookupList({ tableName, query }) {
return Instance.call(this).requestLookupListFromReference({
tableName,
query
})
}
/**
* Request a process
* This function allows follow structure:
* @param {object} process
* @param {string} process.uuid, uuid from process to run
* @param {integer} process.tableName, table name of tab, used only window
* @param {integer} process.recordId, record identifier, used only window
* @param {array} process.parameters, parameters from process
[ { columnName, value } ]
* @param {array} process.selection, selection records, used only browser
[ {
* @param {string} uuid, uuid from process to run
* @param {number} reportType
* @param {number} tableName, table name of tab, used only window
* @param {number} recordId, record identifier, used only window
* @param {array} parameters, parameters from process [{ columnName, value }]
* @param {array} selection, selection records, used only browser
[{
selectionId,
selectionValues [
{ columnName, value }
]
} ]
selectionValues: [{ columnName, value }]
}]
* @param {string} printFormatUuid
*/
export function runProcess(process) {
var processRequest = Instance.call(this).getProcessRequest()
// Fill Request process
processRequest.setUuid(process.uuid)
// report export type
if (process.reportType) {
processRequest.setReporttype(process.reportType)
}
// process params
if (process.parameters && process.parameters.length) {
process.parameters.forEach(parameter => {
const convertedParameter = Instance.call(this).convertParameter(parameter)
processRequest.addParameters(convertedParameter)
})
}
// record in window
if (process.tableName) {
processRequest.setTablename(process.tableName)
processRequest.setRecordid(process.recordId)
}
// browser selection list records
if (process.selection && process.selection.length) {
process.selection.forEach(record => {
// selection format = { selectionId: integer, selectionValues: array }
const convertedRecord = Instance.call(this).convertSelection(record)
processRequest.addSelections(convertedRecord)
})
}
if (process.printFormatUuid) {
processRequest.setPrintformatuuid(process.printFormatUuid)
}
export function runProcess({ uuid, reportType, tableName, recordId, parameters: parametersList = [], selection = [], printFormatUuid }) {
// Run Process
return Instance.call(this).requestProcess(processRequest)
return Instance.call(this).requestRunProcess({
uuid,
reportType,
tableName,
recordId,
parametersList,
selectionsList: selection,
printFormatUuid
})
}
/**
* Request a browser search
* This function allows follow structure:
* @param {string} browser.uuid
* @param {string} browser.query
* @param {string} browser.whereClause
* @param {string} browser.orderByClause
* @param {array} browser.parameters
* @param {string} uuid
* @param {string} query
* @param {string} whereClause
* @param {string} orderByClause
* @param {string} nextPageToken
* @param {array} parameters, This allows follow structure:
* [{
* columnName,
* value
* }]
*/
export function getBrowserSearch(browser) {
var browserRequest = Instance.call(this).getBrowserRequest()
var criteria = Instance.call(this).getCriteria('')
// Fill Request browser
browserRequest.setUuid(browser.uuid)
criteria.setQuery(browser.query)
criteria.setWhereclause(browser.whereClause)
criteria.setOrderbyclause(browser.orderByClause)
if (browser.nextPageToken) {
browserRequest.setPageToken(browser.nextPageToken)
}
browserRequest.setCriteria(criteria)
/* isQueryCriteria fields parameters */
if (browser.parameters !== undefined) {
browser.parameters.forEach(parameter => {
const convertedParameter = Instance.call(this).convertParameter(parameter)
browserRequest.addParameters(convertedParameter)
})
}
export function getBrowserSearch({ uuid, parameters: parametersList = [], query, whereClause, orderByClause, nextPageToken }) {
// Run browser
return Instance.call(this).requestBrowser(browserRequest)
return Instance.call(this).requestBrowserSearch({
uuid,
parametersList,
query,
whereClause,
orderByClause,
nextPageToken
})
}
// Request a Process Activity list
@ -270,48 +195,48 @@ export function requestProcessActivity() {
export function getRecentItems() {
return Instance.call(this).requestRecentItems()
}
/**
* forget password
* @param {string} parameters.forgetPassword
*/
export function getForgetPassword(parameters) {
return Instance.call(this).requestForgetPassword(parameters)
}
/**
* Reference List from Window
* @param {string} parameters.tableName
* @param {string} parameters.windowUuid
* @param {string} parameters.recordUuid
* @param {integer} parameters.recordId
* @param {string} tableName
* @param {string} windowUuid
* @param {string} recordUuid
* @param {number} recordId
*/
export function getReferencesList(parameters) {
var requestReference = Instance.call(this).getReferencesRequest()
requestReference.setWindowuuid(parameters.windowUuid)
requestReference.setTablename(parameters.tableName)
requestReference.setUuid(parameters.recordUuid)
if (parameters.recordId) {
requestReference.setRecordid(parameters.recordId)
}
return Instance.call(this).listReferencesRequest(requestReference)
export function getReferencesList({ windowUuid, tableName, recordId, recordUuid }) {
return Instance.call(this).listReferencesRequest({
windowUuid,
tableName,
recordId,
recordUuid
})
}
/**
* Run callout request
* @param {string} parametersCallout.windowUuid
* @param {integer} parametersCallout.windowNo
* @param {string} parametersCallout.tabUuid
* @param {string} parametersCallout.tableName
* @param {string} parametersCallout.columnName
* @param {mixed} parametersCallout.value
* @param {mixed} parametersCallout.oldValue
* @param {string} parametersCallout.callout
* @param {array} parametersCallout.attributesList
* @param {string} windowUuid
* @param {number} windowNo
* @param {string} tabUuid
* @param {string} tableName
* @param {string} columnName
* @param {mixed} value
* @param {mixed} oldValue
* @param {string} callout
* @param {array} attributesList
* @returns {Map} Entity
*/
export function runCallOutRequest(parametersCallout) {
return Instance.call(this).runCalloutRequest(parametersCallout)
export function runCallOutRequest({ windowUuid, windowNo, tabUuid, tableName, columnName, value, oldValue, callout, attributesList = [] }) {
return Instance.call(this).runCalloutRequest({
windowUuid,
windowNo,
tabUuid,
tableName,
columnName,
value,
oldValue,
callout,
attributesList
})
}
export function getDefaultValueFromServer(query) {
@ -322,32 +247,63 @@ export function getContextInfoValueFromServer({ uuid, query }) {
return Instance.call(this).getContextInfoValue({ uuid: uuid, query: query })
}
export function getPrivateAccessFromServer({ tableName: tableName, recordId: recordId, userUuid: userUuid }) {
return Instance.call(this).getPrivateAccess({ tableName: tableName, recordId: recordId, userUuid: userUuid })
export function getPrivateAccessFromServer({ tableName, recordId, userUuid }) {
return Instance.call(this).getPrivateAccess({
tableName,
recordId,
userUuid
})
}
export function lockPrivateAccessFromServer({ tableName: tableName, recordId: recordId, userUuid: userUuid }) {
return Instance.call(this).lockPrivateAccess({ tableName: tableName, recordId: recordId, userUuid: userUuid })
export function lockPrivateAccessFromServer({ tableName, recordId, userUuid }) {
return Instance.call(this).lockPrivateAccess({
tableName,
recordId,
userUuid
})
}
export function unlockPrivateAccessFromServer({ tableName: tableName, recordId: recordId, userUuid: userUuid }) {
return Instance.call(this).unlockPrivateAccess({ tableName: tableName, recordId: recordId, userUuid: userUuid })
export function unlockPrivateAccessFromServer({ tableName, recordId, userUuid }) {
return Instance.call(this).unlockPrivateAccess({
tableName,
recordId,
userUuid
})
}
/**
* Request Favorites List
* @param {string} userUuid
*/
export function getFavoritesFromServer(userUuid) {
return Instance.call(this).requestFavorites(userUuid)
}
export function getPendingDocumentsFromServer(userUuid, roleUuid) {
return Instance.call(this).requestPendingDocuments(userUuid, roleUuid)
export function getPendingDocumentsFromServer({ userUuid, roleUuid }) {
return Instance.call(this).requestPendingDocuments({
userUuid,
roleUuid
})
}
/**
* Request Pending Documents List
* @param {string} tableName
* @param {string} processUuid
*/
export function requestReportViews({ tableName, processUuid }) {
return Instance.call(this).requestReportViews({ tableName: tableName, processUuid: processUuid })
return Instance.call(this).requestReportViews({
tableName,
processUuid
})
}
export function requestPrintFormats({ tableName, reportViewUuid, processUuid }) {
return Instance.call(this).requestPrintFormats({ tableName: tableName, reportViewUuid: reportViewUuid, processUuid: processUuid })
return Instance.call(this).requestPrintFormats({
tableName,
reportViewUuid,
processUuid
})
}
export function requestLisDashboards(roleUuid) {
@ -363,29 +319,21 @@ export function requestDrillTables(tableName) {
}
export function getReportOutput({
criteria: criteria,
printFormatUuid: printFormatUuid,
reportViewUuid: reportViewUuid,
isSummary: isSummary,
reportName: reportName,
reportType: reportType,
tableName: tableName
parametersList,
tableName,
printFormatUuid,
reportViewUuid,
isSummary,
reportName,
reportType
}) {
const criteriaForReport = getCriteria(tableName)
if (criteria && criteria.length) {
criteria.forEach(parameter => {
var isAddCodition = true
if (parameter.isRange && criteria.some(param => param.columnName === `${parameter.columnName}_To`)) {
parameter.valueTo = criteria.find(param => param.columnName === `${parameter.columnName}_To`).value
}
const convertedParameter = Instance.call(this).convertCondition(parameter)
if (parameter.isRange && !parameter.hasOwnProperty('valueTo')) {
isAddCodition = false
}
if (isAddCodition) {
criteriaForReport.addConditions(convertedParameter)
}
return Instance.call(this).getReportOutput({
parametersList,
tableName,
printFormatUuid,
reportViewUuid,
isSummary,
reportName,
reportType
})
}
return Instance.call(this).getReportOutput({ criteria: criteriaForReport, printFormatUuid: printFormatUuid, reportViewUuid: reportViewUuid, isSummary: isSummary, reportName: reportName, reportType: reportType })
}

View File

@ -219,7 +219,7 @@ export const contextMixin = {
containerUuid: this.containerUuid,
recordUuid: this.recordUuid
})
.then(response => {
.then(() => {
this.references = this.$store.getters.getReferencesList(this.parentUuid, this.recordUuid)
if (this.references.referencesList.length) {
this.isReferencesLoaded = true

View File

@ -2,7 +2,8 @@
<el-collapse v-model="activeDocuments" accordion>
<el-collapse-item name="documents">
<template slot="title">
<i class="el-icon-document" style="margin-right: 4px;margin-left: 10px;" /> {{ $t('profile.PendingDocuments') }}
<i class="el-icon-document" style="margin-right: 4px;margin-left: 10px;" />
{{ $t('profile.PendingDocuments') }}
</template>
<el-card class="box-card" :body-style="{ padding: '0px' }" shadow="never">
<div class="recent-items">
@ -32,7 +33,8 @@
</template>
<script>
import { getPendingDocumentsFromServer } from '@/api/ADempiere'
import { getPendingDocumentsFromServer } from '@/api/ADempiere/data'
export default {
name: 'PendingDocuments',
data() {
@ -59,34 +61,20 @@ export default {
const userUuid = this.$store.getters['user/getUserUuid']
const roleUuid = this.$store.getters.getRoleUuid
return new Promise((resolve, reject) => {
getPendingDocumentsFromServer(userUuid, roleUuid)
getPendingDocumentsFromServer({ userUuid, roleUuid })
.then(response => {
const documentsList = response.getPendingdocumentsList().map(document => {
const documentsList = response.pendingDocumentsList.map(documentItem => {
return {
formUuid: document.getFormuuid(),
name: document.getDocumentname(),
description: document.getDocumentdescription(),
criteria: {
type: document.getCriteria().getConditionsList(),
limit: document.getCriteria().getLimit(),
orderbyclause: document.getCriteria().getOrderbyclause(),
orderbycolumnList: document.getCriteria().getOrderbycolumnList(),
query: document.getCriteria().getQuery(),
referenceUuid: document.getCriteria().getReferenceuuid(),
tableName: document.getCriteria().getTablename(),
valuesList: document.getCriteria().getValuesList(),
whereClause: document.getCriteria().getWhereclause()
},
recordCount: document.getRecordcount(),
sequence: document.getSequence(),
windowUuid: document.getWindowuuid()
...documentItem,
name: documentItem.documentName,
description: documentItem.documentDescription
}
})
this.documents = documentsList
resolve(documentsList)
})
.catch(error => {
reject(error)
console.warn(`Error getting pending documents: ${error.message}. Code: ${error.code}.`)
})
})
},

View File

@ -2,7 +2,8 @@
<el-collapse v-model="activeFavorites" accordion>
<el-collapse-item name="favorites">
<template slot="title">
<i class="el-icon-time" style="margin-right: 4px;margin-left: 10px;" /> {{ $t('profile.favorites') }}
<i class="el-icon-time" style="margin-right: 4px;margin-left: 10px;" />
{{ $t('profile.favorites') }}
</template>
<el-card class="box-card" :body-style="{ padding: '0px' }" shadow="never">
<div class="recent-items">
@ -34,8 +35,9 @@
</template>
<script>
import { getFavoritesFromServer } from '@/api/ADempiere'
import { getFavoritesFromServer } from '@/api/ADempiere/data'
import { convertAction } from '@/utils/ADempiere/dictionaryUtils'
export default {
name: 'Favorites',
data() {
@ -48,9 +50,6 @@ export default {
}
},
computed: {
getterFavoritesList() {
return this.$store.getters.getFavoritesList
},
cachedViews() {
return this.$store.getters.cachedViews
}
@ -65,13 +64,13 @@ export default {
return new Promise((resolve, reject) => {
getFavoritesFromServer(userUuid)
.then(response => {
const favorites = response.getFavoritesList().map(favorite => {
const actionConverted = convertAction(favorite.getAction())
const favorites = response.favoritesList.map(favoriteElement => {
const actionConverted = convertAction(favoriteElement.action)
return {
uuid: favorite.getMenuuuid(),
name: favorite.getMenuname(),
description: favorite.getMenudescription(),
referenceUuid: favorite.getReferenceuuid(),
...favoriteElement,
uuid: favoriteElement.menuUuid,
name: favoriteElement.menuName,
description: favoriteElement.menuDescription,
action: actionConverted.name,
icon: actionConverted.icon
}
@ -80,7 +79,7 @@ export default {
resolve(favorites)
})
.catch(error => {
reject(error)
console.warn(`Error getting favorites: ${error.message}. Code: ${error.code}.`)
})
})
},

View File

@ -24,6 +24,11 @@ export default {
computed: {
// load the component that is indicated in the attributes of received property
renderDashboard() {
// TODO: Add support to this list of currently unsupported dashboards
const unsupportedDashboards = ['activities', 'views', 'calendar', 'performance']
if (unsupportedDashboards.includes(this.metadata.fileName)) {
return
}
if (this.metadata.fileName === 'userfavorites') {
return () => import('@/components/ADempiere/Dashboard/favourites')
}
@ -34,7 +39,7 @@ export default {
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
@ -51,5 +56,5 @@ export default {
padding: 16px 16px 0;
margin-bottom: 32px;
}
}
}
</style>

View File

@ -2,7 +2,8 @@
<el-collapse v-model="activeRecentItems" accordion>
<el-collapse-item name="recentItems">
<template slot="title">
<i class="el-icon-time" style="margin-right: 4px;margin-left: 10px;" /> {{ $t('profile.recentItems') }}
<i class="el-icon-time" style="margin-right: 4px;margin-left: 10px;" />
{{ $t('profile.recentItems') }}
</template>
<el-card class="box-card" :body-style="{ padding: '0px' }" shadow="never">
<div class="recent-items">
@ -69,21 +70,17 @@ export default {
return new Promise((resolve, reject) => {
getRecentItemsFromServer()
.then(response => {
const recentItems = response.getRecentitemsList().map(item => {
const actionConverted = convertAction(item.getAction())
const recentItems = response.recentItemsList.map(item => {
const actionConverted = convertAction(item.action)
return {
...item,
action: actionConverted.name,
icon: actionConverted.icon,
displayName: item.getDisplayname(),
menuUuid: item.getMenuuuid(),
menuName: item.getMenuname(),
windowUuid: item.getWindowuuid(),
tableId: item.getTableid(),
recordId: item.getRecordid(),
uuidRecord: item.getRecorduuid(),
tabUuid: item.getTabuuid(),
updated: new Date(item.getUpdated()),
description: item.getMenudescription()
uuidRecord: item.recordUuid,
updated: new Date(item.updated),
uuid: item.menuUuid,
name: item.menuName,
description: item.menuDescription
}
})
this.recentItems = recentItems
@ -91,7 +88,7 @@ export default {
resolve(recentItems)
})
.catch(error => {
reject(error)
console.warn(`Error getting recent items: ${error.message}. Code: ${error.code}.`)
})
})
},

View File

@ -193,7 +193,7 @@ export default {
props: {
parentUuid: {
type: String,
default: ''
default: undefined
},
containerUuid: {
type: String,
@ -251,7 +251,7 @@ export default {
return false
},
getterFieldList() {
var panel = this.$store.getters.getPanel(this.containerUuid, this.isAdvancedQuery)
const panel = this.$store.getters.getPanel(this.containerUuid, this.isAdvancedQuery)
if (panel) {
return panel.fieldList
}
@ -293,7 +293,8 @@ export default {
// used if the first load contains a uuid
isLoadRecord(value) {
// TODO: Validate UUID value
if (value && this.isPanelWindow && this.uuidRecord !== 'create-new' && !this.isEmptyValue(this.uuidRecord)) {
if (value && this.isPanelWindow && this.uuidRecord !== 'create-new' &&
!this.isEmptyValue(this.uuidRecord)) {
this.setTagsViewTitle(this.uuidRecord)
}
},
@ -326,9 +327,9 @@ export default {
* Get the tab object with all its attributes as well as the fields it contains
*/
getPanel() {
var fieldList = this.getterFieldList
if (fieldList && Array.isArray(fieldList)) {
this.generatePanel(fieldList)
const fieldsList = this.getterFieldList
if (fieldsList && Array.isArray(fieldsList)) {
this.generatePanel(fieldsList)
} else {
this.$store.dispatch('getPanelAndFields', {
parentUuid: this.parentUuid,
@ -342,11 +343,11 @@ export default {
})
}
},
generatePanel(fieldList) {
generatePanel(fieldsList) {
// order and assign groups
this.fieldList = fieldList
if (fieldList.length) {
this.fieldGroups = this.sortAndGroup(fieldList)
this.fieldList = fieldsList
if (fieldsList.length) {
this.fieldGroups = this.sortAndGroup(fieldsList)
}
var firstGroup
if (this.fieldGroups[0] && this.fieldGroups[0].groupFinal === '') {
@ -551,7 +552,7 @@ export default {
if (arr === undefined) {
return
}
var res = [{
let res = [{
groupFinal: '',
metadataFields: arr
}]
@ -650,7 +651,7 @@ export default {
this.setFocus()
},
setFocus() {
var isFocusEnabled = false
let isFocusEnabled = false
this.getterFieldList.forEach(fieldItem => {
if (!isFocusEnabled) {
if (this.isFocusable(fieldItem) && this.$refs.hasOwnProperty(fieldItem.columnName)) {

View File

@ -2,11 +2,16 @@
<el-collapse v-model="activeRecentItems" accordion>
<el-collapse-item name="recentItems">
<template slot="title">
<i class="el-icon-time" style="margin-right: 4px;margin-left: 10px;" /> {{ $t('profile.recentItems') }}
<i class="el-icon-time" style="margin-right: 4px;margin-left: 10px;" />
{{ $t('profile.recentItems') }}
</template>
<el-card class="box-card" :body-style="{ padding: '0px' }" shadow="never">
<div class="recent-items">
<el-table :data="search.length ? filterResult(search) : recentItems" max-height="455" @row-click="handleClick">
<el-table
:data="search.length ? filterResult(search) : recentItems"
max-height="455"
@row-click="handleClick"
>
<el-table-column width="40">
<template slot-scope="{row}">
<svg-icon :icon-class="row.icon" class="icon-window" />
@ -36,8 +41,6 @@
</template>
<script>
import { getRecentItems as getRecentItemsFromServer } from '@/api/ADempiere'
import { convertAction } from '@/utils/ADempiere/dictionaryUtils'
export default {
name: 'RecentItems',
data() {
@ -66,40 +69,24 @@ export default {
return this.cachedViews.includes(uuid)
},
getRecentItems() {
return new Promise((resolve, reject) => {
getRecentItemsFromServer()
.then(response => {
const recentItems = response.getRecentitemsList().map(item => {
const actionConverted = convertAction(item.getAction())
return {
action: actionConverted.name,
icon: actionConverted.icon,
displayName: item.getDisplayname(),
menuUuid: item.getMenuuuid(),
menuName: item.getMenuname(),
windowUuid: item.getWindowuuid(),
tableId: item.getTableid(),
recordId: item.getRecordid(),
uuidRecord: item.getRecorduuid(),
tabUuid: item.getTabuuid(),
updated: new Date(item.getUpdated()),
description: item.getMenudescription()
}
})
this.recentItems = recentItems
this.isLoaded = false
resolve(recentItems)
})
.catch(error => {
reject(error)
})
this.$store.dispatch('getRecentItemsFromServer')
.then(recentItemsResponse => {
this.recentItems = recentItemsResponse
})
},
handleClick(row) {
if (!this.isEmptyValue(row.uuidRecord)) {
this.$router.push({ name: row.menuUuid, query: { action: row.uuidRecord, tabParent: 0 }})
if (this.isEmptyValue(row.uuidRecord)) {
this.$router.push({
name: row.menuUuid
})
} else {
this.$router.push({ name: row.menuUuid })
this.$router.push({
name: row.menuUuid,
query: {
action: row.uuidRecord,
tabParent: 0
}
})
}
},
subscribeChanges() {

View File

@ -175,9 +175,9 @@ export default {
},
table: {
ProcessActivity: {
name: 'Name',
Name: 'Name',
zoomIn: 'Zoom in',
description: 'Description',
Description: 'Description',
actions: 'Action',
status: 'Status',
Logs: 'Summary',

View File

@ -1,5 +1,7 @@
import { getBrowserSearch } from '@/api/ADempiere/data'
import { convertValuesMapToObject, isEmptyValue, parseContext, showMessage } from '@/utils/ADempiere'
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
import { parseContext } from '@/utils/ADempiere/contextUtils'
import { showMessage } from '@/utils/ADempiere/notification'
import language from '@/lang'
const browserControl = {
@ -9,8 +11,10 @@ const browserControl = {
* @param {string} containerUuid, browser to search record data
* @param {boolean} isClearSelection, clear selection after search
*/
getBrowserSearch({ dispatch, rootGetters }, parameters) {
const { containerUuid, isClearSelection = false } = parameters
getBrowserSearch({ dispatch, rootGetters }, {
containerUuid,
isClearSelection = false
}) {
showMessage({
title: language.t('notifications.loading'),
message: language.t('notifications.searching'),
@ -25,27 +29,27 @@ const browserControl = {
const browser = rootGetters.getBrowser(containerUuid)
// parameters isQueryCriteria
const finalParameters = rootGetters.getParametersToServer({
containerUuid: containerUuid,
containerUuid,
fieldList: browser.fieldList
})
var parsedQuery = browser.query
let parsedQuery = browser.query
if (!isEmptyValue(parsedQuery) && parsedQuery.includes('@')) {
parsedQuery = parseContext({
containerUuid: containerUuid,
containerUuid,
value: parsedQuery
}, true)
}
var parsedWhereClause = browser.whereClause
let parsedWhereClause = browser.whereClause
if (!isEmptyValue(parsedWhereClause) && parsedWhereClause.includes('@')) {
parsedWhereClause = parseContext({
containerUuid: containerUuid,
containerUuid,
value: parsedWhereClause
}, true)
}
var nextPageToken
let nextPageToken
if (!isEmptyValue(allData.nextPageToken)) {
nextPageToken = allData.nextPageToken + '-' + allData.pageNumber
}
@ -59,35 +63,34 @@ const browserControl = {
parameters: finalParameters,
nextPageToken: nextPageToken
})
.then(response => {
const recordList = response.getRecordsList()
const record = recordList.map(itemRecord => {
var values = convertValuesMapToObject(itemRecord.getValuesMap())
// datatables attribute
values.isNew = false
values.isEdit = false
values.isSelected = false
values.isReadOnlyFromRow = false
return values
.then(browserSearchResponse => {
const recordsList = browserSearchResponse.recordsList.map(itemRecord => {
return {
...itemRecord.values,
// datatables attributes
isNew: false,
isEdit: false,
isSelected: false,
isReadOnlyFromRow: false
}
})
var selection = allData.selection
let selection = allData.selection
if (isClearSelection) {
selection = []
}
var token = response.getNextPageToken()
let token = browserSearchResponse.nextPageToken
if (token !== undefined) {
token = token.slice(0, -2)
}
dispatch('setRecordSelection', {
containerUuid: containerUuid,
record: record,
containerUuid,
record: recordsList,
pageNumber: rootGetters.getPageNumber(containerUuid),
selection: selection,
recordCount: response.getRecordcount(),
recordCount: browserSearchResponse.recordCount,
nextPageToken: token
})
showMessage({
@ -95,13 +98,13 @@ const browserControl = {
message: language.t('notifications.succcessSearch'),
type: 'success'
})
return record
return recordsList
})
.catch(error => {
// Set default registry values so that the table does not say loading,
// there was already a response from the server
dispatch('setRecordSelection', {
containerUuid: containerUuid,
containerUuid,
panelType: 'browser'
})
@ -111,7 +114,7 @@ const browserControl = {
summary: error.message,
type: 'error'
})
console.warn('Error getting browser search: ' + error.message + '. Code: ' + error.code)
console.warn(`Error getting browser search: ${error.message}. Code: ${error.code}`)
})
}
}

View File

@ -1,52 +1,60 @@
import { runCallOutRequest } from '@/api/ADempiere/data'
import { convertValuesMapToObject, showMessage } from '@/utils/ADempiere'
import { showMessage } from '@/utils/ADempiere/notification'
const callOutControl = {
actions: {
getCallout({ rootGetters, dispatch }, parameters) {
const window = rootGetters.getWindow(parameters.parentUuid)
var finalParameters = []
if (parameters.inTable) {
finalParameters = rootGetters.getParametersToServer({
containerUuid: parameters.containerUuid,
row: parameters.row
getCallout({ rootGetters, dispatch }, {
parentUuid,
containerUuid,
callout,
tableName,
columnName,
withOutColumnNames = [],
inTable = false,
row,
value,
oldValue
}) {
const window = rootGetters.getWindow(parentUuid)
let attributesList = []
if (inTable) {
attributesList = rootGetters.getParametersToServer({
containerUuid,
row
})
} else {
finalParameters = rootGetters.getParametersToServer({
containerUuid: parameters.containerUuid
attributesList = rootGetters.getParametersToServer({
containerUuid
})
}
return runCallOutRequest({
windowUuid: parameters.parentUuid,
tabUuid: parameters.containerUuid,
tableName: parameters.tableName,
columnName: parameters.columnName,
value: parameters.value,
oldValue: parameters.oldValue,
callout: parameters.callout,
attributesList: finalParameters,
windowUuid: parentUuid,
tabUuid: containerUuid,
tableName,
columnName,
value,
oldValue,
callout,
attributesList,
windowNo: window.windowIndex
})
.then(response => {
const values = convertValuesMapToObject(
response.getValuesMap()
)
if (parameters.inTable) {
.then(calloutResponse => {
if (inTable) {
dispatch('notifyRowTableChange', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
row: values,
parentUuid,
containerUuid,
row: calloutResponse.values,
isEdit: true
})
} else {
dispatch('notifyPanelChange', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
parentUuid,
containerUuid,
panelType: 'window',
newValues: values,
newValues: calloutResponse.values,
isSendToServer: false,
withOutColumnNames: parameters.withOutColumnNames,
withOutColumnNames,
isSendCallout: false
})
}
@ -56,7 +64,7 @@ const callOutControl = {
message: error.message,
type: 'error'
})
console.warn(`Field ${parameters.name} error callout`, error.message)
console.warn(`Field ${columnName} error callout`, error.message)
})
}
}

View File

@ -1,8 +1,11 @@
// Default store for handle dashboard refresh and other functionalities
import { requestLisDashboards } from '@/api/ADempiere/data'
import { requestLisDashboards, getRecentItems } from '@/api/ADempiere/data'
import { convertAction } from '@/utils/ADempiere/dictionaryUtils'
const dashboard = {
state: {
dashboard: []
dashboard: [],
recentItems: []
},
mutations: {
addDashboard(state, payload) {
@ -10,36 +13,22 @@ const dashboard = {
},
notifyDashboardRefresh: (state, payload) => {
},
setRecentItems(state, payload) {
state.recentItems = payload
}
},
actions: {
refreshDashboard({ commit, getters }, parameters) {
refreshDashboard({ commit }, parameters) {
commit('notifyDashboardRefresh', parameters)
},
listDashboard({ commit }, roleUuid) {
return new Promise((resolve, reject) => {
requestLisDashboards(roleUuid)
.then(response => {
const dashboards = response.getDashboardsList().map(item => {
return {
windowUuid: item.getWindowuuid(),
browserUuid: item.getBrowseruuid(),
dashboardName: item.getDashboardname(),
dashboardDescription: item.getDashboarddescription(),
dashboardHtml: item.getDashboardhtml(),
columnNo: item.getColumnno(),
lineNo: item.getLineno(),
isCollapsible: item.getIscollapsible(),
isOpenByDefault: item.getIsopenbydefault(),
isEventRequired: item.getIseventrequired(),
fileName: item.getFilename()
}
})
.then(dashboardResponse => {
const roleDashboards = {
roleUuid: roleUuid,
recordCount: response.getRecordcount(),
dashboardList: dashboards,
nextPageToken: response.getNextPageToken()
...dashboardResponse
}
commit('addDashboard', roleDashboards)
resolve(roleDashboards)
@ -48,6 +37,28 @@ const dashboard = {
reject(error)
})
})
},
getRecentItemsFromServer({ commit }) {
return new Promise((resolve, reject) => {
getRecentItems()
.then(recentItemsResponse => {
const recentItems = recentItemsResponse.recentItemsList.map(item => {
const actionConverted = convertAction(item.action)
return {
...item,
originalAction: item.action,
action: actionConverted.name,
icon: actionConverted.icon
}
})
commit('setRecentItems', recentItems)
resolve(recentItems)
})
.catch(error => {
console.warn(`Error gettin recent items: ${error.message}. Code: ${error.code}`)
reject(error)
})
})
}
},
getters: {
@ -60,6 +71,9 @@ const dashboard = {
return state.dashboard.find(
item => item.roleUuid === roleUuid
)
},
getRecentItems: (state) => {
return state.recentItems
}
}
}

View File

@ -1,29 +1,20 @@
import Vue from 'vue'
import {
getObject,
getObjectListFromCriteria,
getRecentItems,
getEntity,
getEntitiesList,
getDefaultValueFromServer,
convertValueFromGRPC,
getContextInfoValueFromServer,
getFavoritesFromServer,
getPrivateAccessFromServer,
lockPrivateAccessFromServer,
unlockPrivateAccessFromServer,
getPendingDocumentsFromServer
} from '@/api/ADempiere'
import { convertValuesMapToObject, isEmptyValue } from '@/utils/ADempiere/valueUtils'
unlockPrivateAccessFromServer
} from '@/api/ADempiere/data'
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
import { showMessage } from '@/utils/ADempiere/notification'
import { convertAction } from '@/utils/ADempiere/dictionaryUtils'
import language from '@/lang'
const data = {
state: {
recordSelection: [], // record data and selection
recordDetail: [],
recentItems: [],
favorites: [],
pendingDocuments: [],
inGetting: [],
contextInfoField: [],
recordPrivateAccess: {}
@ -72,36 +63,12 @@ const data = {
notifyRowTableChange: (state, payload) => {
Object.assign(payload.row, payload.newRow)
},
setRecentItems(state, payload) {
state.recentItems = payload
},
setFavorites(state, payload) {
state.favorites = payload
},
setPendingDocuments(state, payload) {
state.pendingDocuments = payload
},
setPageNumber(state, payload) {
payload.data.pageNumber = payload.pageNumber
},
setIsloadContext(state, payload) {
payload.data.isLoadedContext = payload.isLoadedContext
},
setRecordDetail(state, payload) {
var isFinded = false
state.recordDetail = state.recordDetail.map(itemData => {
if (itemData.uuid === payload.uuid) {
isFinded = true
var newValues = Object.assign(itemData.data, payload.data)
payload.data = newValues
return payload
}
return itemData
})
if (!isFinded) {
state.recordDetail.push(payload)
}
},
addNewRow(state, payload) {
payload.data = payload.data.unshift(payload.values)
},
@ -162,7 +129,7 @@ const data = {
*/
addNewRow({ commit, getters, rootGetters, dispatch }, parameters) {
const { parentUuid, containerUuid, isPanelValues = false, isEdit = true, isNew = true } = parameters
var { fieldList = [] } = parameters
let { fieldList = [] } = parameters
const tabPanel = rootGetters.getPanel(containerUuid)
@ -170,7 +137,7 @@ const data = {
fieldList = tabPanel.fieldList
}
var values = {}
let values = {}
// add row with default values to create new record
if (isPanelValues) {
// add row with values used from record in panel
@ -450,22 +417,21 @@ const data = {
/**
* @param {string} tableName
* @param {string} recordUuid
* @param {number} recordId
*/
getEntity({ commit }, parameters) {
getEntity({ commit }, {
tableName,
recordUuid,
recordId
}) {
return new Promise((resolve, reject) => {
getObject(parameters.tableName, parameters.recordUuid)
.then(response => {
var map = response.getValuesMap()
var newValues = convertValuesMapToObject(map)
const responseConvert = {
data: newValues,
id: response.getId(),
uuid: response.getUuid(),
tableName: parameters.tableName
}
commit('setRecordDetail', responseConvert)
resolve(newValues)
getEntity({
tableName,
recordUuid,
recordId
})
.then(responseGetEntity => {
resolve(responseGetEntity.values)
})
.catch(error => {
reject(error)
@ -523,20 +489,17 @@ const data = {
containerUuid: containerUuid,
isGetServer: false
})
return getObjectListFromCriteria({
tableName: tableName,
query: query,
whereClause: whereClause,
conditions: conditions,
orderByClause: orderByClause,
nextPageToken: nextPageToken
return getEntitiesList({
tableName,
query,
whereClause,
conditions,
orderByClause,
nextPageToken
})
.then(response => {
const recordList = response.getRecordsList()
const record = recordList.map(itemRecord => {
const values = convertValuesMapToObject(
itemRecord.getValuesMap()
)
.then(dataResponse => {
const recordsList = dataResponse.recordsList.map(itemRecord => {
const values = itemRecord.values
// datatables attributes
values.isNew = false
@ -556,7 +519,7 @@ const data = {
}
})
const originalNextPageToken = response.getNextPageToken()
const originalNextPageToken = dataResponse.nextPageToken
let token = originalNextPageToken
if (isEmptyValue(token)) {
token = dataStore.nextPageToken
@ -568,7 +531,7 @@ const data = {
}
if (isShowNotification) {
let searchMessage = 'searchWithOutRecords'
if (record.length) {
if (recordsList.length) {
searchMessage = 'succcessSearch'
}
showMessage({
@ -578,20 +541,20 @@ const data = {
})
}
dispatch('setRecordSelection', {
parentUuid: parentUuid,
containerUuid: containerUuid,
record: record,
parentUuid,
containerUuid,
record: recordsList,
selection: dataStore.selection,
recordCount: response.getRecordcount(),
recordCount: dataResponse.recordCount,
nextPageToken: token,
originalNextPageToken: originalNextPageToken,
isAddRecord: isAddRecord,
isAddRecord,
pageNumber: dataStore.pageNumber,
tableName: tableName,
query: query,
whereClause: whereClause
tableName,
query,
whereClause
})
return record
return recordsList
})
.catch(error => {
// Set default registry values so that the table does not say loading,
@ -612,18 +575,19 @@ const data = {
})
.finally(() => {
commit('deleteInGetting', {
containerUuid: containerUuid,
tableName: tableName
containerUuid,
tableName
})
})
},
getRecordBySQL({ dispatch }, parameters) {
const { query, field } = parameters
// TODO: Change to promise all
return new Promise((resolve, reject) => {
getDefaultValueFromServer(query)
.then(response => {
var valueToReturn = {}
valueToReturn['key'] = convertValueFromGRPC(response)
.then(defaultValueResponse => {
const valueToReturn = {}
valueToReturn.key = defaultValueResponse
// add display Column for table
if (field.componentPath === 'FieldSelect') {
dispatch('getLookupItemFromServer', {
@ -634,7 +598,7 @@ const data = {
value: valueToReturn.key
})
.then(responseLookup => {
valueToReturn['label'] = responseLookup.label
valueToReturn.label = responseLookup.label
dispatch('addDisplayColumn', {
containerUuid: field.containerUuid,
columnName: field.columnName,
@ -649,94 +613,6 @@ const data = {
})
})
},
getRecentItemsFromServer({ commit }) {
return new Promise((resolve, reject) => {
getRecentItems()
.then(response => {
const recentItems = response.getRecentitemsList().map(item => {
const actionConverted = convertAction(item.getAction())
return {
action: actionConverted.name,
icon: actionConverted.icon,
displayName: item.getDisplayname(),
menuUuid: item.getMenuuuid(),
menuName: item.getMenuname(),
windowUuid: item.getWindowuuid(),
tableId: item.getTableid(),
recordId: item.getRecordid(),
uuidRecord: item.getRecorduuid(),
tabUuid: item.getTabuuid(),
updated: new Date(item.getUpdated()),
description: item.getMenudescription()
}
})
commit('setRecentItems', recentItems)
resolve(recentItems)
})
.catch(error => {
reject(error)
})
})
},
getFavoritesFromServer({ commit, rootGetters }) {
const userUuid = rootGetters['user/getUserUuid']
return new Promise((resolve, reject) => {
getFavoritesFromServer(userUuid)
.then(response => {
const favorites = response.getFavoritesList().map(favorite => {
const actionConverted = convertAction(favorite.getAction())
return {
uuid: favorite.getMenuuuid(),
name: favorite.getMenuname(),
description: favorite.getMenudescription(),
referenceUuid: favorite.getReferenceuuid(),
action: actionConverted.name,
icon: actionConverted.icon
}
})
commit('setFavorites', favorites)
resolve(favorites)
})
.catch(error => {
reject(error)
})
})
},
getPendingDocumentsFromServer({ commit, getters, rootGetters }) {
const userUuid = rootGetters['user/getUserUuid']
const roleUuid = getters.getRoleUuid
return new Promise((resolve, reject) => {
getPendingDocumentsFromServer(userUuid, roleUuid)
.then(response => {
const documentsList = response.getPendingdocumentsList().map(document => {
return {
formUuid: document.getFormuuid(),
name: document.getDocumentname(),
description: document.getDocumentdescription(),
criteria: {
type: document.getCriteria().getConditionsList(),
limit: document.getCriteria().getLimit(),
orderbyclause: document.getCriteria().getOrderbyclause(),
orderbycolumnList: document.getCriteria().getOrderbycolumnList(),
query: document.getCriteria().getQuery(),
referenceUuid: document.getCriteria().getReferenceuuid(),
tableName: document.getCriteria().getTablename(),
valuesList: document.getCriteria().getValuesList(),
whereClause: document.getCriteria().getWhereclause()
},
recordCount: document.getRecordcount(),
sequence: document.getSequence(),
windowUuid: document.getWindowuuid()
}
})
commit('setPendingDocuments', documentsList)
resolve(documentsList)
})
.catch(error => {
reject(error)
})
})
},
/**
* TODO: Add support to tab children
* @param {object} objectParams
@ -745,7 +621,7 @@ const data = {
* @param {objec} objectParams.isEdit, if the row displayed to edit mode
* @param {objec} objectParams.isNew, if insert data to new row
*/
notifyRowTableChange({ commit, state, getters, rootGetters }, objectParams) {
notifyRowTableChange({ commit, getters, rootGetters }, objectParams) {
const { parentUuid, containerUuid, isEdit = true } = objectParams
var currentValues = {}
if (objectParams.hasOwnProperty('values')) {
@ -797,18 +673,18 @@ const data = {
return itemRecord[keyColumn] === rowKey
})
commit('notifyCellTableChange', {
row: row,
row,
value: newValue,
columnName: columnName,
displayColumn: displayColumn
columnName,
displayColumn
})
if (panelType === 'browser') {
commit('notifyCellSelectionChange', {
row: rowSelection,
value: newValue,
columnName: columnName,
displayColumn: displayColumn
columnName,
displayColumn
})
} else if (panelType === 'window') {
// request callouts
@ -816,14 +692,14 @@ const data = {
!isEmptyValue(newValue) && !isEmptyValue(field.callout)) {
withOutColumnNames.push(field.columnName)
dispatch('getCallout', {
parentUuid: parentUuid,
containerUuid: containerUuid,
parentUuid,
containerUuid,
tableName: field.tableName,
columnName: field.columnName,
callout: field.callout,
value: newValue,
withOutColumnNames: withOutColumnNames,
row: row,
withOutColumnNames,
row,
inTable: true
})
}
@ -833,28 +709,28 @@ const data = {
if (!fieldNotReady) {
if (!isEmptyValue(row.UUID)) {
dispatch('updateCurrentEntityFromTable', {
parentUuid: parentUuid,
containerUuid: containerUuid,
row: row
parentUuid,
containerUuid,
row
})
} else {
dispatch('createEntityFromTable', {
parentUuid: parentUuid,
containerUuid: containerUuid,
row: row
parentUuid,
containerUuid,
row
})
.then(() => {
// refresh record list
dispatch('getDataListTab', {
parentUuid: parentUuid,
containerUuid: containerUuid
parentUuid,
containerUuid
})
})
}
} else {
const fieldsEmpty = rootGetters.getFieldListEmptyMandatory({
containerUuid: containerUuid,
row: row
containerUuid,
row
})
showMessage({
message: language.t('notifications.mandatoryFieldMissing') + fieldsEmpty,
@ -864,76 +740,80 @@ const data = {
}
}
},
getContextInfoValueFromServer({ commit, getters }, parameters) {
var { sqlStatement, contextInfoUuid } = parameters
var contextInforField = getters.getContextInfoField(contextInfoUuid, sqlStatement)
getContextInfoValueFromServer({ commit, getters }, {
contextInfoUuid,
sqlStatement
}) {
const contextInforField = getters.getContextInfoField(contextInfoUuid, sqlStatement)
if (contextInforField) {
return contextInforField
}
return getContextInfoValueFromServer({ uuid: contextInfoUuid, query: sqlStatement })
.then(response => {
const contextInfo = {
messageText: response.getMessagetext(),
messageTip: response.getMessagetip()
}
commit('setContextInfoField', {
contextInfoUuid: contextInfoUuid,
sqlStatement: sqlStatement,
messageText: contextInfo.messageText,
messageTip: contextInfo.messageTip
return getContextInfoValueFromServer({
uuid: contextInfoUuid,
query: sqlStatement
})
return contextInfo
.then(contextInfoResponse => {
commit('setContextInfoField', {
contextInfoUuid,
sqlStatement,
...contextInfoResponse
})
return contextInfoResponse
})
.catch(error => {
console.warn(`Error ${error.code} getting context info value for field ${error.message}`)
})
},
getPrivateAccessFromServer({ commit, rootGetters }, parameters) {
const { tableName, recordId } = parameters
const userUuid = rootGetters['user/getUserUuid']
getPrivateAccessFromServer({ rootGetters }, {
tableName,
recordId,
userUuid
}) {
if (isEmptyValue(userUuid)) {
userUuid = rootGetters['user/getUserUuid']
}
return getPrivateAccessFromServer({
tableName: tableName,
recordId: recordId,
userUuid: userUuid
tableName,
recordId,
userUuid
})
.then(privateAccess => {
if (privateAccess.getRecordid()) {
var recordPrivateAccess = {
isLocked: true,
tableName: privateAccess.getTablename(),
recordId: privateAccess.getRecordid(),
userUuid: privateAccess.getUseruuid()
}
} else {
recordPrivateAccess = {
.then(privateAccessResponse => {
if (isEmptyValue(privateAccessResponse.recordId)) {
return {
isLocked: false,
tableName: parameters.tableName,
recordId: parameters.recordId,
userUuid: rootGetters['user/getUserUuid']
tableName,
recordId,
userUuid
}
}
return recordPrivateAccess
return {
...privateAccessResponse,
isLocked: true
}
})
.catch(error => {
console.error(error)
console.warn(`Error get private access: ${error.message}. Code: ${error.code}:`)
})
},
lockRecord({ commit, rootGetters }, parameters) {
const { tableName, recordId } = parameters
const userUuid = rootGetters['user/getUserUuid']
lockRecord({ rootGetters }, {
tableName,
recordId,
userUuid
}) {
if (isEmptyValue(userUuid)) {
userUuid = rootGetters['user/getUserUuid']
}
return lockPrivateAccessFromServer({
tableName: tableName,
recordId: recordId,
userUuid: userUuid
tableName,
recordId,
userUuid
})
.then(response => {
if (response.getRecordid()) {
.then(privateAccessResponse => {
if (!isEmptyValue(privateAccessResponse.recordId)) {
const recordLocked = {
isPrivateAccess: true,
isLocked: true,
tableName: response.getTablename(),
recordId: response.getRecordid(),
userUuid: response.getUseruuid()
...privateAccessResponse
}
showMessage({
title: language.t('notifications.succesful'),
@ -949,25 +829,28 @@ const data = {
message: language.t('login.unexpectedError'),
type: 'error'
})
console.error(error)
console.warn(`Error lock private access: ${error.message}. Code: ${error.code}:`)
})
},
unlockRecord({ commit, rootGetters, state }, parameters) {
const { tableName, recordId } = parameters
const userUuid = rootGetters['user/getUserUuid']
unlockRecord({ rootGetters }, {
tableName,
recordId,
userUuid
}) {
if (isEmptyValue(userUuid)) {
userUuid = rootGetters['user/getUserUuid']
}
return unlockPrivateAccessFromServer({
tableName: tableName,
recordId: recordId,
userUuid: userUuid
tableName,
recordId,
userUuid
})
.then(response => {
if (response.getRecordid()) {
.then(privateAccessResponse => {
if (!isEmptyValue(privateAccessResponse.recordId)) {
const recordUnlocked = {
isPrivateAccess: true,
isLocked: false,
tableName: response.getTablename(),
recordId: response.getRecordid(),
userUuid: response.getUseruuid()
...privateAccessResponse
}
showMessage({
title: language.t('notifications.succesful'),
@ -983,7 +866,7 @@ const data = {
message: language.t('login.unexpectedError'),
type: 'error'
})
console.error(error)
console.warn(`Error unlock private access: ${error.message}. Code: ${error.code}:`)
})
}
},
@ -1035,56 +918,35 @@ const data = {
}
})
},
/**
* @returns {object}
*/
getRecordDetail: (state) => (parameters) => {
return state.recordDetail.find(itemData => {
if (itemData.uuid === parameters.recordUuid) {
return true
}
}) || {}
},
/**
* Getter converter selection data record in format
* @param {string} containerUuid
* [
* {
* @param {array} selection
* [{
* selectionId: keyColumn Value,
* selectionValues: [
* { columname, value },
* { columname, value },
* { columname, value }
* ]
* },
* {
* selectionId: keyColumn Value,
* selectionValues: [
* { columname, value },
* { columname, value }
* ]
* }
* ]
* selectionValues: [{ columname, value }]
* }]
*/
getSelectionToServer: (state, getters, rootState, rootGetters) => (parameters) => {
var { containerUuid, selection = [] } = parameters
var selectionToServer = []
getSelectionToServer: (state, getters, rootState, rootGetters) => ({ containerUuid, selection = [] }) => {
const selectionToServer = []
const withOut = ['isEdit', 'isSelected', 'isSendToServer']
if (selection.length <= 0) {
selection = getters.getDataRecordSelection(containerUuid)
}
if (selection.length) {
const panel = rootGetters.getPanel(containerUuid)
const { fieldList, keyColumn } = rootGetters.getPanel(containerUuid)
// reduce list
const fieldsList = fieldList.filter(itemField => itemField.isIdentifier || itemField.isUpdateable)
selection.forEach(itemRow => {
var records = []
const records = []
Object.keys(itemRow).forEach(key => {
if (!key.includes('DisplayColumn') && !withOut.includes(key)) {
// evaluate metadata attributes before to convert
const field = panel.fieldList.find(itemField => itemField.columnName === key)
if (field && (field.isIdentifier || field.isUpdateable)) {
const field = fieldsList.find(itemField => itemField.columnName === key)
if (field) {
records.push({
columnName: key,
value: itemRow[key]
@ -1094,22 +956,13 @@ const data = {
})
selectionToServer.push({
selectionId: itemRow[panel.keyColumn],
selectionId: itemRow[keyColumn],
selectionValues: records
})
})
}
return selectionToServer
},
getRecentItems: (state) => {
return state.recentItems
},
getFavoritesList: (state) => {
return state.favorites
},
getPendingDocuments: (state) => {
return state.pendingDocuments
},
getContextInfoField: (state) => (contextInfoUuid, sqlStatement) => {
return state.contextInfoField.find(info =>
info.contextInfoUuid === contextInfoUuid &&

View File

@ -1,5 +1,7 @@
import { getLookup, getLookupList, convertValueFromGRPC } from '@/api/ADempiere/data'
import { isEmptyValue, getCurrentRole, parseContext } from '@/utils/ADempiere'
import { getLookup, getLookupList } from '@/api/ADempiere/data'
import { getCurrentRole } from '@/utils/ADempiere/auth'
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
import { parseContext } from '@/utils/ADempiere/contextUtils'
const lookup = {
state: {
@ -33,24 +35,22 @@ const lookup = {
let parsedDirectQuery = directQuery
if (parsedDirectQuery.includes('@')) {
parsedDirectQuery = parseContext({
parentUuid: parentUuid,
containerUuid: containerUuid,
parentUuid,
containerUuid,
value: directQuery
}, true)
}
return getLookup({
tableName: tableName,
tableName,
directQuery: parsedDirectQuery,
value: value
})
.then(response => {
const map = response.getValuesMap()
const label = convertValueFromGRPC(map.get('DisplayColumn'))
const label = response.values.DisplayColumn
const option = {
label: isEmptyValue(label) ? ' ' : label,
// key: convertValueFromGRPC(map.get('KeyColumn'))
key: value
key: value // response.values.KeyColumn
}
commit('addLoockupItem', {
@ -64,7 +64,7 @@ const lookup = {
return option
})
.catch(error => {
console.warn('Get Lookup, Select Base - Error ' + error.code + ': ' + error.message)
console.warn(`Get Lookup, Select Base - Error ${error.code}: ${error.message}`)
})
},
/**
@ -83,40 +83,35 @@ const lookup = {
let parsedQuery = query
if (parsedQuery.includes('@')) {
parsedQuery = parseContext({
parentUuid: parentUuid,
containerUuid: containerUuid,
parentUuid,
containerUuid,
value: query
}, true)
}
return getLookupList({
tableName: tableName,
tableName,
query: parsedQuery
})
.then(response => {
const recordList = response.getRecordsList()
const options = []
recordList.forEach(element => {
const map = element.getValuesMap()
const name = convertValueFromGRPC(map.get('DisplayColumn'))
const key = convertValueFromGRPC(map.get('KeyColumn'))
options.push({
label: isEmptyValue(name) ? ' ' : name,
key: isEmptyValue(key) ? -1 : isNaN(key) ? key : parseInt(key)
})
const options = response.recordsList.map(itemLookup => {
return {
label: itemLookup.values.DisplayColumn,
key: itemLookup.values.KeyColumn
}
})
commit('addLoockupList', {
list: options,
tableName: tableName,
parsedQuery: parsedQuery,
tableName,
parsedQuery,
roleUuid: getCurrentRole(),
clientId: rootGetters.getContextClientId
})
return options
})
.catch(error => {
console.warn('Get Lookup List, Select Base - Error ' + error.code + ': ' + error.message)
console.warn(`Get Lookup List, Select Base - Error ${error.code}: ${error.message}`)
})
},
deleteLookupList({ commit, state }, {

View File

@ -81,7 +81,7 @@ const process = {
dispatch('setContextMenu', {
containerUuid: processDefinition.uuid,
relations: [],
actions: actions,
actions,
references: []
})

View File

@ -1,6 +1,9 @@
import { runProcess, requestProcessActivity } from '@/api/ADempiere'
import {
runProcess,
requestProcessActivity
} from '@/api/ADempiere/data'
import { showNotification } from '@/utils/ADempiere/notification'
import { isEmptyValue, convertMapToArrayPairs } from '@/utils/ADempiere'
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
import language from '@/lang'
import router from '@/router'
@ -117,9 +120,11 @@ const processControl = {
message: `In this process (${samePocessInExecution.name}) there is already an execution in progress.`
})
}
var selection = []
var allData = {}
var tab, tableName, recordId
// additional attributes to send server, selection to browser, or table name and record id to window
let selection = []
let allData = {}
let tab, tableName, recordId
if (params.panelType) {
if (params.panelType === 'browser') {
allData = getters.getDataRecordAndSelection(params.containerUuid)
@ -160,7 +165,7 @@ const processControl = {
}
// get info metadata process
const processDefinition = rootGetters.getProcess(params.action.uuid)
var reportType = params.reportFormat
let reportType = params.reportFormat
const finalParameters = rootGetters.getParametersToServer({ containerUuid: processDefinition.uuid })
showNotification({
@ -242,46 +247,22 @@ const processControl = {
tableName: windowSelectionProcess.tableName,
recordId: selection[windowSelectionProcess.tableName]
})
.then(response => {
var output = {
uuid: '',
name: '',
description: '',
fileName: '',
mimeType: '',
output: '',
outputStream: '',
reportType: ''
}
if (response.getOutput()) {
const responseOutput = response.getOutput()
output = {
uuid: responseOutput.getUuid(),
name: responseOutput.getName(),
description: responseOutput.getDescription(),
fileName: responseOutput.getFilename(),
mimeType: responseOutput.getMimetype(),
output: responseOutput.getOutput(),
outputStream: responseOutput.getOutputstream(),
reportType: responseOutput.getReporttype()
}
}
var logList = []
if (response.getLogsList()) {
logList = response.getLogsList().map(itemLog => {
return {
log: itemLog.getLog(),
recordId: itemLog.getRecordid()
}
})
.then(runProcessResponse => {
const { instanceUuid, output } = runProcessResponse
let logList = []
if (runProcessResponse.logsList) {
logList = runProcessResponse.logsList
}
var link = {
let link = {
href: undefined,
download: undefined
}
if (processDefinition.isReport) {
const blob = new Blob([output.outputStream], { type: output.mimeType })
const blob = new Blob(
[output.outputStream],
{ type: output.mimeType }
)
link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = output.fileName
@ -290,7 +271,7 @@ const processControl = {
}
// Report views List to context menu
var reportViewList = {
const reportViewList = {
name: language.t('views.reportView'),
type: 'summary',
action: '',
@ -298,20 +279,27 @@ const processControl = {
option: 'reportView'
}
reportViewList.childs = getters.getReportViewList(processResult.processUuid)
if (!reportViewList.childs.length) {
if (reportViewList && isEmptyValue(reportViewList.childs)) {
dispatch('requestReportViews', {
processUuid: processResult.processUuid
processUuid: processResult.processUuid,
instanceUuid,
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(response => {
reportViewList.childs = response
.then(responseReportView => {
reportViewList.childs = responseReportView
if (reportViewList.childs.length) {
// Get contextMenu metadata and concat print report views with contextMenu actions
var contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
const contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(reportViewList)
}
})
}
// Print formats to context menu
var printFormatList = {
const printFormatList = {
name: language.t('views.printFormat'),
type: 'summary',
action: '',
@ -319,30 +307,62 @@ const processControl = {
option: 'printFormat'
}
printFormatList.childs = rootGetters.getPrintFormatList(processResult.processUuid)
if (!printFormatList.childs.length) {
if (printFormatList && isEmptyValue(printFormatList.childs.length)) {
dispatch('requestPrintFormats', {
processUuid: processResult.processUuid
processUuid: processResult.processUuid,
instanceUuid,
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(response => {
printFormatList.childs = response
.then(printFormarResponse => {
printFormatList.childs = printFormarResponse
if (printFormatList.childs.length) {
// Get contextMenu metadata and concat print Format List with contextMenu actions
var contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
const contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(printFormatList)
}
})
}
// Drill Tables to context menu
const drillTablesList = {
name: language.t('views.drillTable'),
type: 'summary',
action: '',
childs: [],
option: 'drillTable'
}
if (!isEmptyValue(output.tableName)) {
drillTablesList.childs = rootGetters.getDrillTablesList(processResult.processUuid)
if (drillTablesList && isEmptyValue(drillTablesList.childs)) {
dispatch('requestDrillTables', {
processUuid: processResult.processUuid,
instanceUuid,
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(drillTablesResponse => {
drillTablesList.childs = drillTablesResponse
if (drillTablesList.childs.length) {
// Get contextMenu metadata and concat drill tables list with contextMenu actions
const contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(drillTablesList)
}
})
}
}
}
// assign new attributes
Object.assign(processResult, {
instanceUuid: response.getInstanceuuid(),
...runProcessResponse,
url: link.href,
download: link.download,
isError: response.getIserror(),
isProcessing: response.getIsprocessing(),
summary: response.getSummary(),
ResultTableName: response.getResulttablename(),
lastRun: response.getLastrun(),
logs: logList,
output: output
output
})
dispatch('setReportTypeToShareLink', processResult.output.reportType)
commit('addNotificationProcess', processResult)
@ -354,7 +374,7 @@ const processControl = {
message: error.message,
isProcessing: false
})
console.log('Error running the process', error)
console.warn(`Error running the process ${error}`)
reject(error)
})
.finally(() => {
@ -373,7 +393,7 @@ const processControl = {
// message: language.t('notifications.totalProcess') + countResponse + language.t('notifications.error') + state.errorSelection + language.t('notifications.succesful') + state.successSelection + language.t('notifications.processExecuted'),
// type: 'success'
// })
var processMessage = {
const processMessage = {
title: language.t('notifications.succesful'),
message: language.t('notifications.totalProcess') + countResponse + language.t('notifications.error') + state.errorSelection + language.t('notifications.succesful') + state.successSelection + language.t('notifications.processExecuted'),
type: 'success'
@ -401,71 +421,28 @@ const processControl = {
runProcess({
uuid: processDefinition.uuid,
id: processDefinition.id,
reportType: reportType,
reportType,
parameters: finalParameters,
selection: selection,
tableName: tableName,
recordId: recordId
})
.then(response => {
var output = {
uuid: '',
name: '',
description: '',
fileName: '',
mimeType: '',
output: '',
outputStream: '',
reportType: ''
}
if (response.getOutput()) {
const responseOutput = response.getOutput()
output = {
uuid: responseOutput.getUuid(),
name: responseOutput.getName(),
description: responseOutput.getDescription(),
fileName: responseOutput.getFilename(),
mimeType: responseOutput.getMimetype(),
output: responseOutput.getOutput(),
outputStream: responseOutput.getOutputstream(),
reportType: responseOutput.getReporttype()
}
}
var logList = []
if (response.getLogsList()) {
logList = response.getLogsList().map(itemLog => {
return {
log: itemLog.getLog(),
recordId: itemLog.getRecordid()
}
})
}
reportViewList.childs = getters.getReportViewList(processResult.processUuid)
if (reportViewList && !reportViewList.childs.length) {
dispatch('requestReportViews', {
processUuid: processResult.processUuid,
instanceUuid: response.getInstanceuuid(),
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(response => {
reportViewList.childs = response
if (reportViewList.childs.length) {
// Get contextMenu metadata and concat print report views with contextMenu actions
var contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(reportViewList)
}
selection,
tableName,
recordId
})
.then(runProcessResponse => {
const { instanceUuid, output } = runProcessResponse
let logList = []
if (runProcessResponse.logsList) {
logList = runProcessResponse.logsList
}
var link = {
let link = {
href: undefined,
download: undefined
}
if (processDefinition.isReport) {
const blob = new Blob([output.outputStream], { type: output.mimeType })
const blob = new Blob(
[output.outputStream],
{ type: output.mimeType }
)
link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = output.fileName
@ -474,7 +451,7 @@ const processControl = {
}
// Report views List to context menu
var reportViewList = {
const reportViewList = {
name: language.t('views.reportView'),
type: 'summary',
action: '',
@ -482,20 +459,27 @@ const processControl = {
option: 'reportView'
}
reportViewList.childs = getters.getReportViewList(processResult.processUuid)
if (!reportViewList.childs.length) {
if (reportViewList && !reportViewList.childs.length) {
dispatch('requestReportViews', {
processUuid: processResult.processUuid
processUuid: processResult.processUuid,
instanceUuid,
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(response => {
reportViewList.childs = response
.then(responseReportView => {
reportViewList.childs = responseReportView
if (reportViewList.childs.length) {
// Get contextMenu metadata and concat print report views with contextMenu actions
var contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
const contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(reportViewList)
}
})
}
// Print formats to context menu
var printFormatList = {
const printFormatList = {
name: language.t('views.printFormat'),
type: 'summary',
action: '',
@ -503,20 +487,27 @@ const processControl = {
option: 'printFormat'
}
printFormatList.childs = rootGetters.getPrintFormatList(processResult.processUuid)
if (!printFormatList.childs.length) {
if (printFormatList && !printFormatList.childs.length) {
dispatch('requestPrintFormats', {
processUuid: processResult.processUuid
processUuid: processResult.processUuid,
instanceUuid,
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(response => {
printFormatList.childs = response
.then(printFormarResponse => {
printFormatList.childs = printFormarResponse
if (printFormatList.childs.length) {
// Get contextMenu metadata and concat print Format List with contextMenu actions
var contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
const contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(printFormatList)
}
})
}
// Drill Tables to context menu
var drillTablesList = {
const drillTablesList = {
name: language.t('views.drillTable'),
type: 'summary',
action: '',
@ -528,17 +519,17 @@ const processControl = {
if (drillTablesList && isEmptyValue(drillTablesList.childs)) {
dispatch('requestDrillTables', {
processUuid: processResult.processUuid,
instanceUuid: response.getInstanceuuid(),
instanceUuid,
processId: processDefinition.id,
tableName: output.tableName,
printFormatUuid: output.printFormatUuid,
reportViewUuid: output.reportViewUuid
})
.then(response => {
drillTablesList.childs = response
.then(drillTablesResponse => {
drillTablesList.childs = drillTablesResponse
if (drillTablesList.childs.length) {
// Get contextMenu metadata and concat print Format List with contextMenu actions
var contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
const contextMenuMetadata = rootGetters.getContextMenu(processResult.processUuid)
contextMenuMetadata.actions.push(drillTablesList)
}
})
@ -547,16 +538,11 @@ const processControl = {
}
// assign new attributes
Object.assign(processResult, {
instanceUuid: response.getInstanceuuid(),
...runProcessResponse,
url: link.href,
download: link.download,
isError: response.getIserror(),
isProcessing: response.getIsprocessing(),
summary: response.getSummary(),
resultTableName: response.getResulttablename(),
lastRun: response.getLastrun(),
logs: logList,
output: output
output
})
dispatch('setReportTypeToShareLink', processResult.output.reportType)
resolve(processResult)
@ -567,7 +553,7 @@ const processControl = {
message: error.message,
isProcessing: false
})
console.log('Error running the process', error)
console.warn(`Error running the process ${error.message}. Code: ${error.code}`)
reject(error)
})
.finally(() => {
@ -715,7 +701,10 @@ const processControl = {
download: undefined
}
if (processDefinition.isReport) {
const blob = new Blob([output.outputStream], { type: output.mimeType })
const blob = new Blob(
[output.outputStream],
{ type: output.mimeType }
)
link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = output.fileName
@ -796,7 +785,7 @@ const processControl = {
message: error.message,
isProcessing: false
})
console.log('Error running the process', error)
console.warn(`Error running the process ${error}`)
})
}
})
@ -808,63 +797,31 @@ const processControl = {
getSessionProcessFromServer({ commit, dispatch, getters, rootGetters }) {
// process Activity
return requestProcessActivity()
.then(response => {
var responseList = response.getResponsesList().map(responseItem => {
var uuid = responseItem.getUuid()
var responseOutput = responseItem.getOutput()
var output
if (responseOutput !== undefined) {
output = {
uuid: uuid,
name: responseOutput.getName(),
description: responseOutput.getDescription(),
fileName: responseOutput.getFilename(),
mimeType: responseOutput.getMimetype(),
output: responseOutput.getOutput(),
outputStream: responseOutput.getOutputstream(),
outputStream_asB64: responseOutput.getOutputstream_asB64(),
outputStream_asU8: responseOutput.getOutputstream_asU8(),
reportType: responseOutput.getReporttype()
}
}
var logList = responseItem.getLogsList().map(log => {
return {
recordId: log.getRecordid(),
log: log.getLog()
}
})
var processMetadata = rootGetters.getProcess(uuid)
.then(processActivityResponse => {
const responseList = processActivityResponse.responsesList.map(businessProcessItem => {
const processMetadata = rootGetters.getProcess(businessProcessItem.uuid)
// if no exists metadata process in store and no request progess
if (processMetadata === undefined && getters.getInRequestMetadata(uuid) === undefined) {
commit('addInRequestMetadata', uuid)
dispatch('getProcessFromServer', { containerUuid: uuid })
if (processMetadata === undefined && getters.getInRequestMetadata(businessProcessItem.uuid) === undefined) {
commit('addInRequestMetadata', businessProcessItem.uuid)
dispatch('getProcessFromServer', {
containerUuid: businessProcessItem.uuid
})
.finally(() => {
commit('deleteInRequestMetadata', uuid)
commit('deleteInRequestMetadata', businessProcessItem.uuid)
})
}
var process = {
processUuid: responseItem.getUuid(),
instanceUuid: responseItem.getInstanceuuid(),
isError: responseItem.getIserror(),
isProcessing: responseItem.getIsprocessing(),
logs: logList,
output: output,
lastRun: responseItem.getLastrun(),
parametersMap: responseItem.getParametersMap(),
parameters: convertMapToArrayPairs(
responseItem.getParametersMap()
),
ResultTableName: responseItem.getResulttablename(),
summary: responseItem.getSummary()
const process = {
...businessProcessItem,
processUuid: businessProcessItem.uuid
}
return process
})
var processResponseList = {
recordCount: response.getRecordcount(),
const processResponseList = {
recordCount: processActivityResponse.recordCount,
processList: responseList,
nextPageToken: response.getNextPageToken()
nextPageToken: processActivityResponse.nextPageToken
}
commit('setSessionProcess', processResponseList)
return processResponseList
@ -875,17 +832,19 @@ const processControl = {
message: error.message,
type: 'error'
})
console.warn('Error getting process activity:' + error.message + '. Code: ' + error.code)
console.warn(`Error getting process activity: ${error.message}. Code: ${error.code}`)
})
},
/**
*
* Show modal dialog with process/report, tab (sequence) metadata
* @param {object} params
*/
setShowDialog({ state, commit, dispatch, rootGetters }, params) {
const panels = ['process', 'report', 'window']
if (params.action && (panels.includes(params.type) || panels.includes(params.action.panelType))) {
if (state.metadata && state.metadata.containerUuid === params.action.containerUuid) {
// show some process loaded in store
if (state.metadata && !isEmptyValue(state.metadata.containerUuid) &&
state.metadata.containerUuid === params.action.containerUuid) {
commit('setShowDialog', true)
return
}
@ -893,7 +852,7 @@ const processControl = {
if (panel === undefined) {
dispatch('getPanelAndFields', {
parentUuid: params.action.parentUuid,
containerUuid: params.action.containerUuid || params.action.uuid,
containerUuid: isEmptyValue(params.action.uuid) ? params.action.containerUuid : params.action.uuid,
panelType: params.action.panelType
})
.then(response => {
@ -917,7 +876,7 @@ const processControl = {
logs: parameters.processOutput.logs,
summary: parameters.processOutput.summary
}
var errorMessage = !isEmptyValue(parameters.processOutput.message) ? parameters.processOutput.message : language.t('login.error')
var errorMessage = !isEmptyValue(parameters.processOutput.message) ? parameters.processOutput.message : language.t('notifications.error')
// TODO: Add isReport to type always 'success'
if (parameters.processOutput.isError || isEmptyValue(parameters.processOutput.processId) || isEmptyValue(parameters.processOutput.instanceUuid)) {
processMessage.title = language.t('notifications.error')
@ -931,7 +890,7 @@ const processControl = {
parameters.processOutput.menuParentUuid = parameters.processOutput.processUuid
}
var tableName
let tableName
if (parameters.processOutput.option && !isEmptyValue(parameters.processOutput.option)) {
if (parameters.processOutput.option === 'drillTable') {
tableName = parameters.processOutput.tableName

View File

@ -22,85 +22,93 @@ const contextMenu = {
}
},
actions: {
requestPrintFormats({ commit }, parameters) {
return requestPrintFormats({ processUuid: parameters.processUuid })
.then(response => {
const printFormatList = response.getPrintformatsList().map(printFormat => {
requestPrintFormats({ commit }, {
processId,
processUuid,
instanceUuid
}) {
return requestPrintFormats({ processUuid })
.then(printFormatResponse => {
const printFormatList = printFormatResponse.printFormatsList.map(printFormatItem => {
return {
printFormatUuid: printFormat.getUuid(),
name: printFormat.getName(),
description: printFormat.getDescription(),
isDefault: printFormat.getIsdefault(),
tableName: printFormat.getTablename(),
reportViewUuid: printFormat.getReportviewuuid(),
...printFormatItem,
type: 'updateReport',
option: 'printFormat',
instanceUuid: parameters.instanceUuid,
processUuid: parameters.processUuid,
processId: parameters.processId
instanceUuid,
processUuid,
processId
}
})
commit('setReportFormatsList', {
containerUuid: parameters.processUuid,
printFormatList: printFormatList
containerUuid: processUuid,
printFormatList
})
return printFormatList
})
.catch(error => {
console.error(error)
console.warn(`Error getting print formats: ${error.message}. Code: ${error.code}`)
})
},
requestReportViews({ commit }, parameters) {
return requestReportViews({ processUuid: parameters.processUuid })
.then(response => {
const reportViewList = response.getReportviewsList().map(reportView => {
requestReportViews({ commit }, {
processId,
processUuid,
instanceUuid,
printFormatUuid
}) {
return requestReportViews({ processUuid })
.then(reportViewResponse => {
const reportViewList = reportViewResponse.reportViewsList.map(reportViewItem => {
return {
reportViewUuid: reportView.getUuid(),
name: reportView.getName(),
tableName: reportView.getTablename(),
description: reportView.getDescription(),
...reportViewItem,
type: 'updateReport',
option: 'reportView',
instanceUuid: parameters.instanceUuid,
printFormatUuid: parameters.printFormatUuid,
processUuid: parameters.processUuid,
processId: parameters.processId
instanceUuid,
printFormatUuid,
processUuid,
processId
}
})
commit('setReportViewsList', {
containerUuid: parameters.processUuid,
containerUuid: processUuid,
viewList: reportViewList
})
return reportViewList
})
.catch(error => {
console.error(error)
console.warn(`Error getting report views: ${error.message}. Code: ${error.code}`)
})
},
requestDrillTables({ commit }, parameters) {
return requestDrillTables(parameters.tableName)
.then(response => {
const drillTablesList = response.getDrilltablesList().map(drillTable => {
requestDrillTables({ commit }, {
processId,
processUuid,
instanceUuid,
printFormatUuid,
tableName,
reportViewUuid
}) {
return requestDrillTables(tableName)
.then(responseDrillTables => {
const drillTablesList = responseDrillTables.drillTablesList.map(drillTableItem => {
return {
name: drillTable.getPrintname(),
tableName: drillTable.getTablename(),
...drillTableItem,
name: drillTableItem.printName,
type: 'updateReport',
option: 'drillTable',
instanceUuid: parameters.instanceUuid,
printFormatUuid: parameters.printFormatUuid,
reportViewUuid: parameters.reportViewUuid,
processUuid: parameters.processUuid,
processId: parameters.processId
instanceUuid,
printFormatUuid,
reportViewUuid,
processUuid,
processId
}
})
commit('setDrillTablesList', {
containerUuid: parameters.processUuid,
drillTablesList: drillTablesList
containerUuid: processUuid,
drillTablesList
})
return drillTablesList
})
.catch(error => {
console.error(error)
console.warn(`Error getting drill tables: ${error.message}. Code: ${error.code}`)
})
},
getReportOutputFromServer({ commit, getters, rootGetters }, parameters) {
@ -119,33 +127,19 @@ const contextMenu = {
instanceUuid,
option
} = parameters
const processParameters = rootGetters.getParametersToServer({ containerUuid: processUuid })
const parametersList = rootGetters.getParametersToServer({ containerUuid: processUuid })
return getReportOutput({
criteria: processParameters,
printFormatUuid: printFormatUuid,
reportViewUuid: reportViewUuid,
isSummary: isSummary,
reportName: reportName,
reportType: reportType,
tableName: tableName
parametersList,
printFormatUuid,
reportViewUuid,
isSummary,
reportName,
reportType,
tableName
})
.then(response => {
const reportOutput = {
uuid: response.getUuid(),
processName: response.getName(),
description: response.getDescription(),
fileName: response.getFilename(),
output: response.getOutput(),
mimeType: response.getMimetype(),
dataCols: response.getDatacols(),
dataRows: response.getDatarows(),
headerName: response.getHeadername(),
footerName: response.getFootername(),
printFormatUuid: response.getPrintformatuuid(),
reportViewUuid: response.getReportviewuuid(),
tableName: response.getTablename(),
outputStream: response.getOutputstream(),
reportType: response.getReporttype(),
...response,
processId: processId,
processUuid: processUuid,
isError: false,
@ -180,7 +174,7 @@ const contextMenu = {
isReport: true,
option: ''
}
console.error(error)
console.warn(`Error getting report output: ${error.message}. Code: ${error.code}`)
return reportOutput
})
}

View File

@ -107,22 +107,9 @@ const utils = {
getLanguagesFromServer({ commit }) {
return new Promise((resolve, reject) => {
requestLanguages()
.then(response => {
const languageList = response.getLanguagesList().map(item => {
return {
language: item.getLanguage(),
languageName: item.getLanguagename(),
languageIso: item.getLanguageiso(),
countryCode: item.getCountrycode(),
isBaseLanguage: item.getIsbaselanguage(),
isSystemLanguage: item.getIssystemlanguage(),
isDecimalPoint: item.getIsdecimalpoint(),
datePattern: item.getDatepattern(),
timePattern: item.getTimepattern()
}
})
commit('setLanguageList', languageList)
resolve(languageList)
.then(languageResponse => {
commit('setLanguageList', languageResponse.languagesList)
resolve(languageResponse.languagesList)
})
.catch(error => {
reject(error)

View File

@ -1,5 +1,7 @@
import { createEntity, updateEntity, deleteEntity, getReferencesList, rollbackEntity } from '@/api/ADempiere/data'
import { convertObjectToArrayPairs, convertValuesMapToObject, isEmptyValue, parseContext, showMessage } from '@/utils/ADempiere'
import { convertObjectToArrayPairs, isEmptyValue } from '@/utils/ADempiere/valueUtils'
import { parseContext } from '@/utils/ADempiere/contextUtils'
import { showMessage } from '@/utils/ADempiere/notification'
import language from '@/lang'
import router from '@/router'
@ -69,36 +71,39 @@ const windowControl = {
newValues: oldAttributes
})
},
createNewEntity({ commit, dispatch, getters, rootGetters }, parameters) {
createNewEntity({ commit, dispatch, getters, rootGetters }, {
parentUuid,
containerUuid
}) {
return new Promise((resolve, reject) => {
// exists some call to create new record with container uuid
if (getters.getInCreate(parameters.containerUuid)) {
if (getters.getInCreate(containerUuid)) {
return reject({
error: 0,
message: `In this panel (${parameters.containerUuid}) is a create new record in progress`
message: `In this panel (${containerUuid}) is a create new record in progress`
})
}
const panel = rootGetters.getPanel(parameters.containerUuid)
const { tableName, fieldList } = rootGetters.getPanel(containerUuid)
// delete key from attributes
const finalAttributes = rootGetters.getColumnNamesAndValues({
containerUuid: parameters.containerUuid,
containerUuid,
propertyName: 'value',
isEvaluateValues: true,
isAddDisplayColumn: true
})
commit('addInCreate', {
containerUuid: parameters.containerUuid,
tableName: panel.tableName,
containerUuid,
tableName,
attributesList: finalAttributes
})
createEntity({
tableName: panel.tableName,
tableName,
attributesList: finalAttributes
})
.then(response => {
var newValues = convertValuesMapToObject(response.getValuesMap())
.then(createEntityResponse => {
const newValues = createEntityResponse.values
finalAttributes.forEach(element => {
if (element.columnName.includes('DisplayColumn')) {
newValues[element.columnName] = element.value
@ -112,23 +117,23 @@ const windowControl = {
// update fields with new values
dispatch('notifyPanelChange', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
newValues: newValues,
parentUuid,
containerUuid,
newValues,
isSendToServer: false
})
dispatch('addNewRow', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
parentUuid,
containerUuid,
isPanelValues: true,
isEdit: false
})
// set data log to undo action
const fieldId = panel.fieldList.find(itemField => itemField.isKey)
const fieldId = fieldList.find(itemField => itemField.isKey)
dispatch('setDataLog', {
containerUuid: parameters.containerUuid,
tableName: panel.tableName,
containerUuid,
tableName,
recordId: fieldId.value, // TODO: Verify performance with tableName_ID
recordUuid: newValues.UUID,
eventType: 'INSERT'
@ -139,16 +144,16 @@ const windowControl = {
name: oldRoute.name,
query: {
...oldRoute.query,
action: response.getUuid()
action: createEntityResponse.uuid
}
})
dispatch('tagsView/delView', oldRoute, true)
resolve({
data: newValues,
recordUuid: response.getUuid(),
recordId: response.getId(),
tableName: response.getTablename()
recordUuid: createEntityResponse.uuid,
recordId: createEntityResponse.id,
tableName: createEntityResponse.tableName
})
})
.catch(error => {
@ -156,20 +161,23 @@ const windowControl = {
message: error.message,
type: 'error'
})
console.warn('Create Entity error: ' + error.message)
console.warn(`Create Entity error: ${error.message}`)
reject(error)
})
.finally(() => {
commit('deleteInCreate', {
containerUuid: parameters.containerUuid,
tableName: panel.tableName,
containerUuid,
tableName,
attributesList: finalAttributes
})
})
})
},
createEntityFromTable({ commit, getters, rootGetters }, parameters) {
const { containerUuid, row } = parameters
createEntityFromTable({ commit, getters, rootGetters }, {
parentUuid,
containerUuid,
row
}) {
// exists some call to create new record with container uuid
if (getters.getInCreate(containerUuid)) {
return {
@ -177,13 +185,13 @@ const windowControl = {
message: `In this panel (${containerUuid}) is a create new record in progress.`
}
}
const panel = rootGetters.getPanel(containerUuid)
const { tableName, isParentTab } = rootGetters.getPanel(containerUuid)
// TODO: Add support to Binary columns (BinaryData)
const columnsToDontSend = ['BinaryData', 'isSendServer', 'isEdit']
// attributes or fields
var finalAttributes = convertObjectToArrayPairs(row)
let finalAttributes = convertObjectToArrayPairs(row)
finalAttributes = finalAttributes.filter(itemAttribute => {
if (isEmptyValue(itemAttribute.value)) {
return false
@ -195,56 +203,51 @@ const windowControl = {
})
commit('addInCreate', {
containerUuid: parameters.containerUuid,
tableName: panel.tableName,
containerUuid,
tableName,
attributesList: finalAttributes
})
return createEntity({
tableName: panel.tableName,
tableName,
attributesList: finalAttributes
})
.then(response => {
const newValues = convertValuesMapToObject(response.getValuesMap())
const result = {
data: newValues,
recordUuid: response.getUuid(),
recordId: response.getId(),
tableName: response.getTablename()
}
.then(createEntityResponse => {
showMessage({
message: language.t('data.createRecordSuccessful'),
type: 'success'
})
if (panel.isParentTab) {
if (isParentTab) {
// redirect to create new record
const oldRoute = router.app._route
router.push({
name: oldRoute.name,
query: {
...oldRoute.query,
action: result.recordUuid
action: createEntityResponse.recordUuid
}
})
}
return result
return {
data: createEntityResponse.values,
...createEntityResponse
}
})
.catch(error => {
showMessage({
message: error.message,
type: 'error'
})
console.warn('Create Entity Table Error ' + error.code + ': ' + error.message)
console.warn(`Create Entity Table Error ${error.code}: ${error.message}`)
})
.finally(() => {
commit('deleteInCreate', {
containerUuid: containerUuid,
tableName: panel.tableName,
containerUuid,
tableName,
attributesList: finalAttributes
})
})
},
updateCurrentEntity({ commit, dispatch, rootGetters }, {
updateCurrentEntity({ dispatch, rootGetters }, {
containerUuid,
recordUuid = null
}) {
@ -257,7 +260,7 @@ const windowControl = {
const columnsToDontSend = ['Account_Acct']
// attributes or fields
var finalAttributes = rootGetters.getColumnNamesAndValues({
let finalAttributes = rootGetters.getColumnNamesAndValues({
containerUuid: containerUuid,
isEvaluatedChangedValue: true
})
@ -275,29 +278,38 @@ const windowControl = {
return updateEntity({
tableName: panel.tableName,
recordUuid: recordUuid,
recordUuid,
attributesList: finalAttributes
})
.then(response => {
const newValues = convertValuesMapToObject(response.getValuesMap())
const responseConvert = {
data: newValues,
id: response.getId(),
uuid: recordUuid,
tableName: panel.tableName
}
.then(updateEntityResponse => {
const newValues = updateEntityResponse.values
// set data log to undo action
// TODO: Verify performance with tableName_ID
let recordId = updateEntityResponse.id
if (isEmptyValue(recordId)) {
recordId = newValues[`${panel.tableName}_ID`]
}
if (isEmptyValue(recordId)) {
const fieldId = panel.fieldList.find(itemField => itemField.isKey)
recordId = fieldId.value
}
if (isEmptyValue(recordUuid)) {
recordUuid = updateEntityResponse.uuid
}
if (isEmptyValue(recordUuid)) {
recordUuid = newValues.UUID
}
dispatch('setDataLog', {
containerUuid: containerUuid,
containerUuid,
tableName: panel.tableName,
recordId: fieldId.value, // TODO: Verify performance with tableName_ID
recordUuid: newValues.UUID,
recordId,
recordUuid,
eventType: 'UPDATE'
})
commit('setRecordDetail', responseConvert)
return newValues
})
.catch(error => {
@ -305,22 +317,26 @@ const windowControl = {
message: error.message,
type: 'error'
})
console.warn('Update Entity Error ' + error.code + ': ' + error.message)
console.warn(`Update Entity Error ${error.code}: ${error.message}`)
})
},
updateCurrentEntityFromTable({ rootGetters }, parameters) {
const panel = rootGetters.getPanel(parameters.containerUuid)
updateCurrentEntityFromTable({ rootGetters }, {
parentUuid,
containerUuid,
row
}) {
const { tableName, fieldList } = rootGetters.getPanel(containerUuid)
// TODO: Add support to Binary columns (BinaryData)
const columnsToDontSend = ['BinaryData', 'isSendServer', 'isEdit']
// attributes or fields
var finalAttributes = convertObjectToArrayPairs(parameters.row)
let finalAttributes = convertObjectToArrayPairs(row)
finalAttributes = finalAttributes.filter(itemAttribute => {
if (columnsToDontSend.includes(itemAttribute.columnName) || itemAttribute.columnName.includes('DisplayColumn')) {
return false
}
const field = panel.fieldList.find(itemField => itemField.columnName === itemAttribute.columnName)
const field = fieldList.find(itemField => itemField.columnName === itemAttribute.columnName)
if (!field || !field.isUpdateable || !field.isDisplayed) {
return false
}
@ -328,8 +344,8 @@ const windowControl = {
})
return updateEntity({
tableName: panel.tableName,
recordUuid: parameters.row.UUID,
tableName,
recordUuid: row.UUID,
attributesList: finalAttributes
})
.then(response => {
@ -340,39 +356,42 @@ const windowControl = {
message: error.message,
type: 'error'
})
console.warn('Update Entity Table Error ' + error.code + ': ' + error.message)
console.warn(`Update Entity Table Error ${error.code}: ${error.message}`)
})
},
/**
* Update record after run process associated with window
* @param {object} parameters
* @param {string} parameters.parentUuid
* @param {string} parameters.containerUuid
* @param {object} parameters.tab
* @param {string} parentUuid
* @param {string} containerUuid
* @param {object} tab
*/
updateRecordAfterRunProcess({ dispatch, rootGetters }, parameters) {
const recordUuid = rootGetters.getUuid(parameters.containerUuid)
updateRecordAfterRunProcess({ dispatch, rootGetters }, {
parentUuid,
containerUuid,
tab
}) {
const recordUuid = rootGetters.getUuid(containerUuid)
// get new values
dispatch('getEntity', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
tableName: parameters.tab.tableName,
parentUuid,
containerUuid,
tableName: tab.tableName,
recordUuid: recordUuid
})
.then(response => {
// update panel
if (parameters.tab.isParentTab) {
if (tab.isParentTab) {
dispatch('notifyPanelChange', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
parentUuid,
containerUuid,
newValues: response,
isSendToServer: false
})
}
// update row in table
dispatch('notifyRowTableChange', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
parentUuid,
containerUuid,
row: response,
isEdit: false
})
@ -386,7 +405,7 @@ const windowControl = {
tableName: panel.tableName,
recordUuid: parameters.recordUuid
})
.then(response => {
.then(responseDeleteEntity => {
const oldRoute = router.app._route
// refresh record list
@ -394,9 +413,9 @@ const windowControl = {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid
})
.then(response => {
.then(responseDataList => {
// if response is void, go to new record
if (response.length <= 0) {
if (responseDataList.length <= 0) {
dispatch('resetPanelToNew', {
parentUuid: parameters.parentUuid,
containerUuid: parameters.containerUuid,
@ -409,7 +428,7 @@ const windowControl = {
name: oldRoute.name,
query: {
...oldRoute.query,
action: response[0].UUID
action: responseDataList[0].UUID
}
})
}
@ -429,14 +448,14 @@ const windowControl = {
eventType: 'DELETE'
})
resolve(response)
resolve(responseDeleteEntity)
})
.catch(error => {
showMessage({
message: language.t('data.deleteRecordError'),
type: 'error'
})
console.warn('Delete Entity - Error ', error.message, ', Code:', error.code)
console.warn(`Delete Entity - Error ${error.message}, Code: ${error.code}`)
reject(error)
})
})
@ -446,11 +465,13 @@ const windowControl = {
* @param {string} containerUuid
* @param {string} parentUuid
*/
deleteSelectionDataList({ dispatch, rootGetters }, parameters) {
const { parentUuid, containerUuid } = parameters
const tab = rootGetters.getTab(parentUuid, containerUuid)
var allData = rootGetters.getDataRecordAndSelection(containerUuid)
var selectionLength = allData.selection.length
deleteSelectionDataList({ dispatch, rootGetters }, {
parentUuid,
containerUuid
}) {
const { tableName, isParentTab } = rootGetters.getTab(parentUuid, containerUuid)
const allData = rootGetters.getDataRecordAndSelection(containerUuid)
let selectionLength = allData.selection.length
allData.selection.forEach((record, index) => {
// validate if the registry row has no uuid before sending to the server
@ -459,17 +480,17 @@ const windowControl = {
console.warn(`This row does not contain a record with UUID`, record)
// refresh record list
dispatch('getDataListTab', {
parentUuid: parentUuid,
containerUuid: containerUuid
parentUuid,
containerUuid
})
return
}
deleteEntity({
tableName: tab.tableName,
tableName,
recordUuid: record.UUID
})
.then(() => {
if (tab.isParentTab) {
if (isParentTab) {
// redirect to create new record
const oldRoute = router.app._route
if (record.UUID === oldRoute.query.action) {
@ -482,8 +503,8 @@ const windowControl = {
})
// clear fields with default values
dispatch('resetPanelToNew', {
parentUuid: parentUuid,
containerUuid: containerUuid
parentUuid,
containerUuid
})
// delete view with uuid record delete
dispatch('tagsView/delView', oldRoute, true)
@ -493,8 +514,8 @@ const windowControl = {
if ((index + 1) >= selectionLength) {
// refresh record list
dispatch('getDataListTab', {
parentUuid: parentUuid,
containerUuid: containerUuid
parentUuid,
containerUuid
})
showMessage({
message: language.t('data.deleteRecordSuccessful'),
@ -504,11 +525,12 @@ const windowControl = {
})
})
},
undoModifyData({ getters }, parameters) {
const { containerUuid, recordUuid } = parameters
undoModifyData({ getters }, {
containerUuid,
recordUuid
}) {
return rollbackEntity(getters.getDataLog(containerUuid, recordUuid))
.then(response => {
console.log('rollback successfull', response)
return response
})
.catch(error => {
@ -516,7 +538,7 @@ const windowControl = {
message: error.message,
type: 'error'
})
console.warn('Rollback Entity error: ' + error.message)
console.warn(`Rollback Entity error: ${error.message}`)
})
},
setDataLog({ commit }, parameters) {
@ -674,41 +696,39 @@ const windowControl = {
},
/**
* Get references asociate to record
* @param {string} parameters.parentUuid
* @param {string} parameters.containerUuid
* @param {string} parameters.recordUuid
* @param {string} parentUuid
* @param {string} containerUuid
* @param {string} recordUuid
*/
getReferencesListFromServer({ commit, rootGetters }, parameters) {
getReferencesListFromServer({ commit, rootGetters }, {
parentUuid,
containerUuid,
recordUuid
}) {
// TODO: check if you get better performance search only the window and get the current tab
const tab = rootGetters.getTab(parameters.parentUuid, parameters.containerUuid)
const { tableName } = rootGetters.getTab(parentUuid, containerUuid)
return new Promise((resolve, reject) => {
getReferencesList({
windowUuid: parameters.parentUuid,
tableName: tab.tableName,
recordUuid: parameters.recordUuid
windowUuid: parentUuid,
tableName,
recordUuid
})
.then(response => {
const referencesList = response.getReferencesList().map(item => {
.then(referenceResponse => {
const referencesList = referenceResponse.referencesList.map(item => {
return {
uuid: item.getUuid(),
windowUuid: item.getWindowuuid(),
displayName: item.getDisplayname(),
tableName: item.getTablename(),
whereClause: item.getWhereclause(),
recordCount: item.getRecordcount(),
recordUuid: parameters.recordUuid,
...item,
recordUuid,
type: 'reference'
}
})
const references = {
windowUuid: parameters.parentUuid,
recordUuid: parameters.recordUuid,
recordCount: response.getRecordcount(),
referencesList: referencesList,
nextPageToken: response.getNextPageToken()
...referenceResponse,
windowUuid: parentUuid,
recordUuid,
referencesList: referencesList
}
commit('addReferencesList', references)
resolve(response)
resolve(referenceResponse)
})
.catch(error => {
reject(error)

View File

@ -8,7 +8,7 @@
placement="top"
type="primary"
size="large"
:color="checkStatus(activity.isError, activity.isProcessing, activity.isReport).color"
:color="checkStatus(activity).color"
>
<el-card>
<div slot="header" class="clearfix">
@ -39,6 +39,7 @@
<!-- show only when it is error -->
<el-popover
v-if="activity.isError && !activity.summary && !activity.isReport"
v-key="is-error"
placement="right"
width="700"
trigger="hover"
@ -46,13 +47,14 @@
<div>
{{ activity.message }}
</div>
<el-tag slot="reference" :type="checkStatus(activity.isError, activity.isProcessing, activity.isReport).type">
{{ checkStatus(activity.isError, activity.isProcessing, activity.isReport).text }}
<el-tag slot="reference" :type="checkStatus(activity).type">
{{ checkStatus(activity).text }}
</el-tag>
</el-popover>
<!-- show only when bring logs -->
<el-popover
v-else-if="activity.logs.length > 0 || activity.summary"
v-key="is-logs"
placement="right"
width="500"
trigger="hover"
@ -61,18 +63,19 @@
<ul>
<li @click="zoomIn(activity)"> {{ activity.summary }} </li>
<el-scrollbar wrap-class="popover-scroll">
<li v-for="(item, key) in activity.logs" :key="key" @click="zoomIn(activity)">
{{ item.log }}
<li v-for="(logItem, key) in activity.logsList" :key="key" @click="zoomIn(activity)">
{{ logItem.log }}
</li>
</el-scrollbar>
</ul>
<el-tag slot="reference" :type="checkStatus(activity.isError, activity.isProcessing, activity.isReport).type">
{{ checkStatus(activity.isError, activity.isProcessing, activity.isReport).text }}
<el-tag slot="reference" :type="checkStatus(activity).type">
{{ checkStatus(activity).text }}
</el-tag>
</el-popover>
<!-- show only when bring output -->
<el-popover
v-else-if="activity.isReport"
v-key="is-output"
placement="right"
width="700"
trigger="hover"
@ -86,20 +89,21 @@
{{ $t('components.contextMenuDownload') }} <i class="el-icon-download" />
</a>
</div>
<el-tag slot="reference" :type="checkStatus(activity.isError, activity.isProcessing, activity.isReport).type">
{{ checkStatus(activity.isError, activity.isProcessing, activity.isReport).text }}
<el-tag slot="reference" :type="checkStatus(activity).type">
{{ checkStatus(activity).text }}
</el-tag>
</el-popover>
<el-popover
v-else
v-key="is-other"
placement="top-start"
:title="$t('table.ProcessActivity.Logs')"
width="200"
trigger="hover"
:content="activity.summary"
>
<el-tag slot="reference" :type="checkStatus(activity.isError, activity.isProcessing, activity.isReport).type">
{{ checkStatus(activity.isError, activity.isProcessing, activity.isReport).text }}
<el-tag slot="reference" :type="checkStatus(activity).type">
{{ checkStatus(activity).text }}
</el-tag>
</el-popover>
</el-form-item>
@ -190,10 +194,11 @@ export default {
}
})
} else {
if (activity.parameters && activity.parameters.length) {
activity.parameters.forEach(param => {
this.$route.query[param.columnName] = param.value
})
if (!this.isEmptyValue(activity.parametersList)) {
this.$route.query = {
...this.$route.query,
...activity.parametersList
}
}
this.$router.push({
path: activity.processIdPath,
@ -203,8 +208,8 @@ export default {
})
}
},
checkStatus(isError, isProcessing, isReport) {
var status = {
checkStatus({ isError, isProcessing, isReport }) {
const status = {
text: this.$t('notifications.completed'),
type: 'success',
color: '#67C23A'

View File

@ -1,9 +1,9 @@
<template>
<div class="dashboard-editor-container">
<el-row :gutter="8">
<template v-for="(dashboard, index) in dashboardList">
<el-col :key="index" :xs="{span: 24}" :sm="{span: 24}" :md="{span: 24}" :lg="{span: 12}" :xl="{span: 12}" style="padding-right:8px;margin-bottom:30px;">
<dashboard :metadata="dashboard" />
<template v-for="(dashboardAttributes, index) in dashboardList">
<el-col :key="index" :xs="{ span: 24 }" :sm="{ span: 24 }" :md="{ span: 24 }" :lg="{ span: 12 }" :xl="{ span: 12 }" style="padding-right:8px;margin-bottom:30px;">
<dashboard :metadata="dashboardAttributes" />
</el-col>
</template>
</el-row>
@ -36,11 +36,11 @@ export default {
methods: {
getDashboardListFromServer() {
if (this.getterDashboard) {
this.dashboardList = this.getterDashboard
this.dashboardList = this.getterDashboard.dashboardList
} else {
this.$store.dispatch('listDashboard', this.roleUuid)
.then(response => {
this.dashboardList = response.dashboardList
this.dashboardList = response.dashboardsList
})
}
}

View File

@ -58,8 +58,6 @@ export default {
this.$store.dispatch('getRecentItemsFromServer')
.then(response => {
this.recentItems = response
}).catch(error => {
console.log(error)
})
} else {
this.recentItems = items