212 lines
6.8 KiB
JavaScript
212 lines
6.8 KiB
JavaScript
import { getLookup, getLookupList, convertValueFromGRPC } from '@/api/ADempiere/data'
|
|
import { isEmptyValue, getCurrentRole, parseContext } from '@/utils/ADempiere'
|
|
|
|
const lookup = {
|
|
state: {
|
|
lookupItem: [],
|
|
lookupList: []
|
|
},
|
|
mutations: {
|
|
addLoockupItem(state, payload) {
|
|
state.lookupItem.push(payload)
|
|
},
|
|
addLoockupList(state, payload) {
|
|
state.lookupList.push(payload)
|
|
},
|
|
deleteLookupList(state, payload) {
|
|
state.lookupItem = payload.lookupItem
|
|
state.lookupList = payload.lookupList
|
|
}
|
|
},
|
|
actions: {
|
|
getLookupItemFromServer({ commit, rootGetters }, parameters) {
|
|
const { parentUuid, containerUuid, value, tableName, directQuery } = parameters
|
|
if (isEmptyValue(directQuery)) {
|
|
return
|
|
}
|
|
|
|
let parsedDirectQuery = directQuery
|
|
if (parsedDirectQuery.includes('@')) {
|
|
parsedDirectQuery = parseContext({
|
|
parentUuid: parentUuid,
|
|
containerUuid: containerUuid,
|
|
value: directQuery
|
|
}, true)
|
|
}
|
|
|
|
return getLookup({
|
|
tableName: tableName,
|
|
directQuery: parsedDirectQuery,
|
|
value: value
|
|
})
|
|
.then(response => {
|
|
const map = response.getValuesMap()
|
|
const label = convertValueFromGRPC(map.get('DisplayColumn'))
|
|
const option = {
|
|
label: isEmptyValue(label) ? ' ' : label,
|
|
// key: convertValueFromGRPC(map.get('KeyColumn'))
|
|
key: value
|
|
}
|
|
|
|
commit('addLoockupItem', {
|
|
option: option,
|
|
value: value, // isNaN(objectParams.value) ? objectParams.value : parseInt(objectParams.value, 10),
|
|
parsedDirectQuery: directQuery,
|
|
tableName: tableName,
|
|
roleUuid: getCurrentRole(),
|
|
clientId: parseInt(rootGetters.getContextClientId)
|
|
})
|
|
return option
|
|
})
|
|
.catch(error => {
|
|
console.warn('Get Lookup, Select Base - Error ' + error.code + ': ' + error.message)
|
|
})
|
|
},
|
|
/**
|
|
* tableName,
|
|
* query
|
|
*/
|
|
getLookupListFromServer({ commit, rootGetters }, parameters) {
|
|
const { parentUuid, containerUuid, tableName, query } = parameters
|
|
if (isEmptyValue(query)) {
|
|
return
|
|
}
|
|
let parsedQuery = query
|
|
if (parsedQuery.includes('@')) {
|
|
parsedQuery = parseContext({
|
|
parentUuid: parentUuid,
|
|
containerUuid: containerUuid,
|
|
value: query
|
|
}, true)
|
|
}
|
|
|
|
return getLookupList({
|
|
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)
|
|
})
|
|
})
|
|
|
|
commit('addLoockupList', {
|
|
list: options,
|
|
tableName: tableName,
|
|
parsedQuery: parsedQuery,
|
|
roleUuid: getCurrentRole(),
|
|
clientId: parseInt(rootGetters.getContextClientId)
|
|
})
|
|
return options
|
|
})
|
|
.catch(error => {
|
|
console.warn('Get Lookup List, Select Base - Error ' + error.code + ': ' + error.message)
|
|
})
|
|
},
|
|
deleteLookupList({ commit, state }, params) {
|
|
const { parentUuid, containerUuid, tableName, query, directQuery, value } = params
|
|
|
|
let parsedDirectQuery = directQuery
|
|
if (directQuery && parsedDirectQuery.includes('@')) {
|
|
parsedDirectQuery = parseContext({
|
|
parentUuid: parentUuid,
|
|
containerUuid: containerUuid,
|
|
value: parsedDirectQuery
|
|
}, true)
|
|
}
|
|
const lookupItem = state.lookupItem.filter(itemLookup => {
|
|
return itemLookup.parsedDirectQuery !== params.parsedDirectQuery &&
|
|
itemLookup.tableName !== tableName &&
|
|
itemLookup.value !== value &&
|
|
itemLookup.roleUuid !== getCurrentRole()
|
|
})
|
|
|
|
let parsedQuery = query
|
|
if (parsedQuery && parsedQuery.includes('@')) {
|
|
parsedQuery = parseContext({
|
|
parentUuid: parentUuid,
|
|
containerUuid: containerUuid,
|
|
value: parsedQuery
|
|
}, true)
|
|
}
|
|
const lookupList = state.lookupList.filter(itemLookup => {
|
|
return itemLookup.parsedQuery !== parsedQuery &&
|
|
itemLookup.tableName !== tableName &&
|
|
itemLookup.roleUuid !== getCurrentRole()
|
|
})
|
|
commit('deleteLookupList', {
|
|
lookupItem: lookupItem,
|
|
lookupList: lookupList
|
|
})
|
|
}
|
|
},
|
|
getters: {
|
|
getLookupItem: (state, getters, rootState, rootGetters) => (params) => {
|
|
let parsedDirectQuery = params.directQuery
|
|
if (parsedDirectQuery && parsedDirectQuery.includes('@')) {
|
|
parsedDirectQuery = parseContext({
|
|
parentUuid: params.parentUuid,
|
|
containerUuid: params.containerUuid,
|
|
value: parsedDirectQuery
|
|
}, true)
|
|
}
|
|
const lookupItem = state.lookupItem.find(itemLookup => {
|
|
return itemLookup.parsedDirectQuery === parsedDirectQuery &&
|
|
itemLookup.tableName === params.tableName &&
|
|
itemLookup.roleUuid === getCurrentRole() &&
|
|
itemLookup.clientId === parseInt(rootGetters.getContextClientId) &&
|
|
itemLookup.value === params.value
|
|
})
|
|
if (lookupItem) {
|
|
return lookupItem.option
|
|
}
|
|
return undefined
|
|
},
|
|
getLookupList: (state, getters, rootState, rootGetters) => (params) => {
|
|
let parsedQuery = params.query
|
|
if (parsedQuery && parsedQuery.includes('@')) {
|
|
parsedQuery = parseContext({
|
|
parentUuid: params.parentUuid,
|
|
containerUuid: params.containerUuid,
|
|
value: parsedQuery
|
|
}, true)
|
|
}
|
|
const lookupList = state.lookupList.find(itemLookup => {
|
|
return itemLookup.parsedQuery === parsedQuery &&
|
|
itemLookup.tableName === params.tableName &&
|
|
itemLookup.roleUuid === getCurrentRole() &&
|
|
itemLookup.clientId === parseInt(rootGetters.getContextClientId)
|
|
})
|
|
if (lookupList) {
|
|
const resultLookup = lookupList.list.filter(lookup => {
|
|
if (lookup.key !== undefined) {
|
|
return lookup
|
|
}
|
|
})
|
|
return resultLookup
|
|
}
|
|
return []
|
|
},
|
|
/**
|
|
*
|
|
*/
|
|
getLookupAll: (state, getters, rootState, rootGetters) => (parameters) => {
|
|
const item = getters.getLookupItem(parameters)
|
|
const list = getters.getLookupList(parameters)
|
|
if (item && !list.find(itemLookup => itemLookup.key === item.key)) {
|
|
list.push(item)
|
|
}
|
|
return list
|
|
}
|
|
}
|
|
}
|
|
|
|
export default lookup
|