1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-17 09:19:49 +08:00
Edwin Betancourt b41ec22883
fix: Run process SB record selection. (#588)
* fix: Run process SB record selection.

* Update package.json

Co-authored-by: EdwinBetanc0urt <EdwinBetanco0urt@outlook.com>
2021-02-25 14:00:45 -04:00

118 lines
3.4 KiB
JavaScript

import { isEmptyValue } from '@/utils/ADempiere/valueUtils.js'
const getters = {
/**
* Used by datatables in tab children, record navigation in window, result in browser
* @param {string} containerUuid
*/
getDataRecordAndSelection: (state, getters) => (containerUuid) => {
return state.recordSelection.find(itemRecord => {
return itemRecord.containerUuid === containerUuid
}) || {
containerUuid,
record: [],
recordCount: 0,
selection: [],
pageNumber: 1,
nextPageToken: undefined,
originalNextPageToken: undefined,
isLoadedContext: false,
isLoaded: false
}
},
getDataRecordsList: (state, getters) => (containerUuid) => {
return getters.getDataRecordAndSelection(containerUuid).record
},
getDataRecordSelection: (state, getters) => (containerUuid) => {
return getters.getDataRecordAndSelection(containerUuid).selection
},
getPageNumber: (state, getters) => (containerUuid) => {
return getters.getDataRecordAndSelection(containerUuid).pageNumber
},
getRowData: (state, getters) => ({ containerUuid, recordUuid, index }) => {
const recordsList = getters.getDataRecordsList(containerUuid)
if (!isEmptyValue(index)) {
return recordsList[index]
}
return recordsList.find(itemData => {
if (itemData.UUID === recordUuid) {
return true
}
})
},
/**
* Getter converter selection data record in format
* @param {string} containerUuid
* @param {array} selection
* [{
* selectionId: keyColumn Value,
* selectionValues: [{ columnName, value }]
* }]
*/
getSelectionToServer: (state, getters, rootState, rootGetters) => ({
containerUuid,
selection = []
}) => {
const selectionToServer = []
const withOut = ['isEdit', 'isSendToServer']
if (isEmptyValue(selection)) {
selection = getters.getDataRecordSelection(containerUuid)
}
if (isEmptyValue(selection)) {
return selectionToServer
}
const { fieldsList, keyColumn } = rootGetters.getPanel(containerUuid)
// reduce list
const fieldsListSelection = fieldsList
.filter(itemField => {
return itemField.isIdentifier || itemField.isUpdateable
})
.map(itemField => {
return itemField.columnName
})
selection.forEach(itemRow => {
const records = []
Object.keys(itemRow).forEach(key => {
if (!key.includes('DisplayColumn') && !withOut.includes(key)) {
// evaluate metadata attributes before to convert
if (fieldsListSelection.includes(key)) {
records.push({
columnName: key,
value: itemRow[key]
})
}
}
})
selectionToServer.push({
selectionId: itemRow[keyColumn],
selectionValues: records
})
})
return selectionToServer
},
getContextInfoField: (state) => (contextInfoUuid, sqlStatement) => {
return state.contextInfoField.find(info =>
info.contextInfoUuid === contextInfoUuid &&
info.sqlStatement === sqlStatement
)
},
getRecordPrivateAccess: (state) => (tableName, recordId) => {
if (!isEmptyValue(tableName) && !isEmptyValue(recordId)) {
if (state.recordPrivateAccess.tableName === tableName && state.recordPrivateAccess.recordId === recordId) {
return state.recordPrivateAccess
}
return undefined
}
}
}
export default getters