1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-13 23:20:12 +08:00

Add overwrite definition for factory (#451)

This commit is contained in:
Yamel Senih 2020-04-18 20:41:16 -04:00 committed by GitHub
parent 20a3bc3025
commit 42b5adb97c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 122 additions and 78 deletions

View File

@ -55,14 +55,15 @@ import FIELDS_DISPLAY_SIZES, { DEFAULT_SIZE } from '@/components/ADempiere/Field
import store from '@/store' import store from '@/store'
// Create a Field from UUID based on server meta-data // Create a Field from UUID based on server meta-data
export function createFieldDictionary({ export function createFieldFromDictionary({
containerUuid, containerUuid,
fieldUuid, fieldUuid,
columnUuid, columnUuid,
elementUuid, elementUuid,
elementColumnName, elementColumnName,
tableName, tableName,
columnName columnName,
overwriteDefinition
}) { }) {
let field let field
if (fieldUuid) { if (fieldUuid) {
@ -94,7 +95,8 @@ export function createFieldDictionary({
.then(response => { .then(response => {
resolve(getFactoryFromField({ resolve(getFactoryFromField({
containerUuid, containerUuid,
field: response field: response,
overwriteDefinition
})) }))
}).catch(error => { }).catch(error => {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`) console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
@ -105,60 +107,108 @@ export function createFieldDictionary({
// Convert field getted from server to factory // Convert field getted from server to factory
function getFactoryFromField({ function getFactoryFromField({
containerUuid, containerUuid,
field field,
overwriteDefinition
}) { }) {
return createField({ const fieldDefinition = {
displayType: field.displayType,
tableName: field.reference.tableName,
directQuery: field.directQuery,
query: field.reference.query,
keyColumnName: field.reference.keyColumnName,
validationCode: field.reference.validationCode,
windowsList: field.reference.windowsList,
id: field.id,
uuid: field.uuid,
name: field.name,
description: field.description,
help: field.help,
fieldGroup: field.fieldGroup,
isFieldOnly: field.isFieldOnly,
isRange: field.isRange,
isSameLine: field.isSameLine,
sequence: field.sequence,
seqNoGrid: field.seqNoGrid,
isIdentifier: field.isIdentifier,
isKey: field.isKey,
isSelectionColumn: field.isSelectionColumn,
isUpdateable: field.isUpdateable,
formatPattern: field.formatPattern,
vFormat: field.vFormat,
defaultValue: field.defaultValue,
defaultValueTo: field.defaultValueTo,
valueMin: field.valueMin,
valueMax: field.valueMax,
isActive: field.isActive,
isMandatory: field.isMandatory,
isReadOnly: field.isReadOnly,
isDisplayedFromLogic: field.isDisplayedFromLogic,
isReadOnlyFromLogic: field.isReadOnlyFromLogic,
isMandatoryFromLogic: field.isMandatoryFromLogic,
callout: field.callout,
isQueryCriteria: field.isQueryCriteria,
displayLogic: field.displayLogic,
mandatoryLogic: field.mandatoryLogic,
readOnlyLogic: field.readOnlyLogic,
parentFieldsList: field.parentFieldsList,
dependentFieldsList: field.dependentFieldsList,
contextInfo: field.contextInfo
}
// Overwrite definition
if (!isEmptyValue(overwriteDefinition)) {
if (!isEmptyValue(overwriteDefinition.isQueryCriteria)) {
fieldDefinition.isQueryCriteria = overwriteDefinition.isQueryCriteria
}
if (!isEmptyValue(overwriteDefinition.isMandatory)) {
fieldDefinition.isMandatory = overwriteDefinition.isMandatory
}
if (!isEmptyValue(overwriteDefinition.isReadOnly)) {
fieldDefinition.isReadOnly = overwriteDefinition.isReadOnly
}
if (!isEmptyValue(overwriteDefinition.isSelectionColumn)) {
fieldDefinition.isSelectionColumn = overwriteDefinition.isSelectionColumn
}
if (!isEmptyValue(overwriteDefinition.isUpdateable)) {
fieldDefinition.isUpdateable = overwriteDefinition.isUpdateable
}
if (!isEmptyValue(overwriteDefinition.isFieldOnly)) {
fieldDefinition.isFieldOnly = overwriteDefinition.isFieldOnly
}
if (!isEmptyValue(overwriteDefinition.isRange)) {
fieldDefinition.isRange = overwriteDefinition.isRange
}
if (!isEmptyValue(overwriteDefinition.displayLogic)) {
fieldDefinition.displayLogic = overwriteDefinition.displayLogic
}
if (!isEmptyValue(overwriteDefinition.mandatoryLogic)) {
fieldDefinition.mandatoryLogic = overwriteDefinition.mandatoryLogic
}
if (!isEmptyValue(overwriteDefinition.readOnlyLogic)) {
fieldDefinition.readOnlyLogic = overwriteDefinition.readOnlyLogic
}
if (!isEmptyValue(overwriteDefinition.formatPattern)) {
fieldDefinition.formatPattern = overwriteDefinition.formatPattern
}
if (!isEmptyValue(overwriteDefinition.vFormat)) {
fieldDefinition.vFormat = overwriteDefinition.vFormat
}
if (!isEmptyValue(overwriteDefinition.defaultValue)) {
fieldDefinition.defaultValue = overwriteDefinition.defaultValue
}
if (!isEmptyValue(overwriteDefinition.defaultValueTo)) {
fieldDefinition.defaultValueTo = overwriteDefinition.defaultValueTo
}
}
// Convert it
return createFieldFromDefinition({
containerUuid: containerUuid, containerUuid: containerUuid,
columnName: field.columnName, columnName: field.columnName,
definition: { definition: fieldDefinition
displayType: field.displayType,
tableName: field.reference.tableName,
directQuery: field.directQuery,
query: field.reference.query,
keyColumnName: field.reference.keyColumnName,
validationCode: field.reference.validationCode,
windowsList: field.reference.windowsList,
id: field.id,
uuid: field.uuid,
name: field.name,
description: field.description,
help: field.help,
fieldGroup: field.fieldGroup,
isFieldOnly: field.isFieldOnly,
isRange: field.isRange,
isSameLine: field.isSameLine,
sequence: field.sequence,
seqNoGrid: field.seqNoGrid,
isIdentifier: field.isIdentifier,
isKey: field.isKey,
isSelectionColumn: field.isSelectionColumn,
isUpdateable: field.isUpdateable,
formatPattern: field.formatPattern,
vFormat: field.vFormat,
defaultValue: field.defaultValue,
defaultValueTo: field.defaultValueTo,
valueMin: field.valueMin,
valueMax: field.valueMax,
isActive: field.isActive,
isMandatory: field.isMandatory,
isReadOnly: field.isReadOnly,
isDisplayedFromLogic: field.isDisplayedFromLogic,
isReadOnlyFromLogic: field.isReadOnlyFromLogic,
isMandatoryFromLogic: field.isMandatoryFromLogic,
callout: field.callout,
isQueryCriteria: field.isQueryCriteria,
displayLogic: field.displayLogic,
mandatoryLogic: field.mandatoryLogic,
readOnlyLogic: field.readOnlyLogic,
parentFieldsList: field.parentFieldsList,
dependentFieldsList: field.dependentFieldsList,
contextInfo: field.contextInfo
}
}) })
} }
// Create a field, it assumed that you define all behavior from source code // Create a field, it assumed that you define all behavior from source code
export function createField({ export function createFieldFromDefinition({
parentUuid, parentUuid,
containerUuid, containerUuid,
columnName, columnName,
@ -213,15 +263,6 @@ export function createField({
} }
definition.reference = reference definition.reference = reference
} }
// if(isLookup()) {
//
// }
// // Special cases
// // Please if you need use a special case remember that already exists many implementations
// switch (displayType) {
// case TEXT.id:
// break
// }
return getFieldTemplate({ return getFieldTemplate({
...definition, ...definition,
isShowedFromUser: true, isShowedFromUser: true,
@ -233,10 +274,10 @@ export function createField({
} }
// Default template for injected fields // Default template for injected fields
export function getFieldTemplate(attributesOverwrite) { export function getFieldTemplate(overwriteDefinition) {
let displayType = 10 let displayType = 10
if (!isEmptyValue(attributesOverwrite.displayType)) { if (!isEmptyValue(overwriteDefinition.displayType)) {
displayType = attributesOverwrite.displayType displayType = overwriteDefinition.displayType
} }
const componentReference = evalutateTypeField(displayType) const componentReference = evalutateTypeField(displayType)
@ -244,9 +285,9 @@ export function getFieldTemplate(attributesOverwrite) {
// set size from displayed, max 24 // set size from displayed, max 24
let size = DEFAULT_SIZE.size let size = DEFAULT_SIZE.size
if (!isEmptyValue(attributesOverwrite.size)) { if (!isEmptyValue(overwriteDefinition.size)) {
size = attributesOverwrite.size size = overwriteDefinition.size
delete attributesOverwrite.size delete overwriteDefinition.size
if (typeof size === 'number') { if (typeof size === 'number') {
size = { size = {
xs: size, xs: size,
@ -331,7 +372,7 @@ export function getFieldTemplate(attributesOverwrite) {
isShowedFromUser: false, isShowedFromUser: false,
isFixedTableColumn: false, isFixedTableColumn: false,
sizeFieldFromType, sizeFieldFromType,
...attributesOverwrite ...overwriteDefinition
} }
// get parsed parent fields list // get parsed parent fields list

View File

@ -28,7 +28,7 @@
<script> <script>
import Field from '@/components/ADempiere/Field' import Field from '@/components/ADempiere/Field'
import { createField, createFieldDictionary } from '@/utils/ADempiere/lookupFactory' import { createFieldFromDefinition, createFieldFromDictionary } from '@/utils/ADempiere/lookupFactory'
import { URL, TEXT, NUMBER, INTEGER, TEXT_LONG, TABLE_DIRECT } from '@/utils/ADempiere/references' import { URL, TEXT, NUMBER, INTEGER, TEXT_LONG, TABLE_DIRECT } from '@/utils/ADempiere/references'
export default { export default {
@ -80,7 +80,7 @@ export default {
let sequence = 10 let sequence = 10
// URL // URL
fieldsList.push(createField({ fieldsList.push(createFieldFromDefinition({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnName: 'URL', columnName: 'URL',
definition: { definition: {
@ -91,7 +91,7 @@ export default {
} }
})) }))
// From Field UUID // From Field UUID
createFieldDictionary({ createFieldFromDictionary({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
fieldUuid: '8ceabe8a-fb40-11e8-a479-7a0060f0aa01' fieldUuid: '8ceabe8a-fb40-11e8-a479-7a0060f0aa01'
}) })
@ -101,7 +101,7 @@ export default {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`) console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
}) })
// From Column UUID // From Column UUID
createFieldDictionary({ createFieldFromDictionary({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnUuid: '8b4bbb7e-fb40-11e8-a479-7a0060f0aa01' columnUuid: '8b4bbb7e-fb40-11e8-a479-7a0060f0aa01'
}) })
@ -111,7 +111,7 @@ export default {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`) console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
}) })
// From Element Column Name // From Element Column Name
createFieldDictionary({ createFieldFromDictionary({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
elementColumnName: 'M_RMA_ID' elementColumnName: 'M_RMA_ID'
}) })
@ -121,10 +121,13 @@ export default {
console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`) console.warn(`LookupFactory: Get Field From Server (State) - Error ${error.code}: ${error.message}.`)
}) })
// From Table and Column Name // From Table and Column Name
createFieldDictionary({ createFieldFromDictionary({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
tableName: 'C_BPartner', tableName: 'C_BPartner',
columnName: 'PaymentRule' columnName: 'PaymentRule',
overwriteDefinition: {
isMandatory: true
}
}) })
.then(metadata => { .then(metadata => {
fieldsList.push(metadata) fieldsList.push(metadata)
@ -134,7 +137,7 @@ export default {
// Table direct // Table direct
// To be define // To be define
sequence = sequence + 10 sequence = sequence + 10
fieldsList.push(createField({ fieldsList.push(createFieldFromDefinition({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnName: 'C_Currency_ID', columnName: 'C_Currency_ID',
definition: { definition: {
@ -150,7 +153,7 @@ export default {
sequence = sequence + 10 sequence = sequence + 10
// Text // Text
fieldsList.push(createField({ fieldsList.push(createFieldFromDefinition({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnName: 'Name', columnName: 'Name',
definition: { definition: {
@ -164,7 +167,7 @@ export default {
sequence = sequence + 10 sequence = sequence + 10
// Amount // Amount
fieldsList.push(createField({ fieldsList.push(createFieldFromDefinition({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnName: 'Amount', columnName: 'Amount',
definition: { definition: {
@ -178,7 +181,7 @@ export default {
sequence = sequence + 10 sequence = sequence + 10
// Integer // Integer
fieldsList.push(createField({ fieldsList.push(createFieldFromDefinition({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnName: 'SeqNo', columnName: 'SeqNo',
definition: { definition: {
@ -192,7 +195,7 @@ export default {
sequence = sequence + 10 sequence = sequence + 10
// Text Long // Text Long
fieldsList.push(createField({ fieldsList.push(createFieldFromDefinition({
containerUuid: this.panelUuid, containerUuid: this.panelUuid,
columnName: 'Description', columnName: 'Description',
definition: { definition: {