* fix loses values when using callout or generate error create entity. * fix undefined method. * Remover comments un data table component * Delete comments in dictionary utilspull/3759/head
							parent
							
								
									02c634e56d
								
							
						
					
					
						commit
						1126c00c1f
					
				| 
						 | 
				
			
			@ -2,6 +2,7 @@ import { supportedTypes, exportFileFromJson, exportFileZip } from '@/utils/ADemp
 | 
			
		|||
import { showNotification } from '@/utils/ADempiere/notification'
 | 
			
		||||
import { recursiveTreeSearch } from '@/utils/ADempiere/valueUtils'
 | 
			
		||||
import { FIELDS_QUANTITY } from '@/components/ADempiere/Field/references'
 | 
			
		||||
import { sortFields } from '@/utils/ADempiere/dictionaryUtils'
 | 
			
		||||
 | 
			
		||||
export const menuTableMixin = {
 | 
			
		||||
  props: {
 | 
			
		||||
| 
						 | 
				
			
			@ -84,6 +85,8 @@ export const menuTableMixin = {
 | 
			
		|||
        if (this.panelType === 'browser') {
 | 
			
		||||
          sortAttribute = 'seqNoGrid'
 | 
			
		||||
        }
 | 
			
		||||
        // TODO: Change to destructuring and add isParent attribure to change
 | 
			
		||||
        // orderBy sequence value to seqNoGrid value if isParent is false
 | 
			
		||||
        return this.sortFields(
 | 
			
		||||
          this.panelMetadata.fieldList,
 | 
			
		||||
          sortAttribute
 | 
			
		||||
| 
						 | 
				
			
			@ -164,6 +167,7 @@ export const menuTableMixin = {
 | 
			
		|||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    showNotification,
 | 
			
		||||
    sortFields,
 | 
			
		||||
    closeMenu() {
 | 
			
		||||
      // TODO: Validate to dispatch one action
 | 
			
		||||
      this.$store.dispatch('showMenuTable', {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,17 +16,10 @@ const callOutControl = {
 | 
			
		|||
      oldValue
 | 
			
		||||
    }) {
 | 
			
		||||
      const window = rootGetters.getWindow(parentUuid)
 | 
			
		||||
      let attributesList = []
 | 
			
		||||
      if (inTable) {
 | 
			
		||||
        attributesList = rootGetters.getParametersToServer({
 | 
			
		||||
          containerUuid,
 | 
			
		||||
          row
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        attributesList = rootGetters.getParametersToServer({
 | 
			
		||||
          containerUuid
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      const attributesList = rootGetters.getParametersToServer({
 | 
			
		||||
        containerUuid,
 | 
			
		||||
        row
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      return runCallOutRequest({
 | 
			
		||||
        windowUuid: parentUuid,
 | 
			
		||||
| 
						 | 
				
			
			@ -40,13 +33,11 @@ const callOutControl = {
 | 
			
		|||
        windowNo: window.windowIndex
 | 
			
		||||
      })
 | 
			
		||||
        .then(calloutResponse => {
 | 
			
		||||
          const newValues = {}
 | 
			
		||||
          Object.keys(calloutResponse.values).forEach(key => {
 | 
			
		||||
            if (calloutResponse.values[key] !== undefined) {
 | 
			
		||||
              newValues[key] = calloutResponse.values[key]
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
          if (inTable) {
 | 
			
		||||
            const newValues = {
 | 
			
		||||
              ...row,
 | 
			
		||||
              ...calloutResponse.values
 | 
			
		||||
            }
 | 
			
		||||
            dispatch('notifyRowTableChange', {
 | 
			
		||||
              parentUuid,
 | 
			
		||||
              containerUuid,
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +49,7 @@ const callOutControl = {
 | 
			
		|||
              parentUuid,
 | 
			
		||||
              containerUuid,
 | 
			
		||||
              panelType: 'window',
 | 
			
		||||
              newValues,
 | 
			
		||||
              newValues: calloutResponse.values,
 | 
			
		||||
              isSendToServer: false,
 | 
			
		||||
              withOutColumnNames,
 | 
			
		||||
              isSendCallout: false,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,169 +127,186 @@ const data = {
 | 
			
		|||
     * @param {boolean} isPanelValues, define if used values form panel
 | 
			
		||||
     * @param {boolean} isEdit, define if used values form panel
 | 
			
		||||
     */
 | 
			
		||||
    addNewRow({ commit, getters, rootGetters, dispatch }, parameters) {
 | 
			
		||||
      const { parentUuid, containerUuid, isPanelValues = false, isEdit = true, isNew = true } = parameters
 | 
			
		||||
      let { fieldList = [] } = parameters
 | 
			
		||||
 | 
			
		||||
      const tabPanel = rootGetters.getPanel(containerUuid)
 | 
			
		||||
 | 
			
		||||
      if (!fieldList.length) {
 | 
			
		||||
        fieldList = tabPanel.fieldList
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    addNewRow({ commit, getters, rootGetters, dispatch }, {
 | 
			
		||||
      parentUuid,
 | 
			
		||||
      containerUuid,
 | 
			
		||||
      isPanelValues = false,
 | 
			
		||||
      isEdit = true,
 | 
			
		||||
      isNew = true,
 | 
			
		||||
      fieldList,
 | 
			
		||||
      row
 | 
			
		||||
    }) {
 | 
			
		||||
      const dataStore = getters.getDataRecordsList(containerUuid)
 | 
			
		||||
      let values = {}
 | 
			
		||||
      // add row with default values to create new record
 | 
			
		||||
      if (isPanelValues) {
 | 
			
		||||
        // add row with values used from record in panel
 | 
			
		||||
        values = rootGetters.getColumnNamesAndValues({
 | 
			
		||||
          containerUuid,
 | 
			
		||||
          propertyName: 'value',
 | 
			
		||||
          isObjectReturn: true,
 | 
			
		||||
          isAddDisplayColumn: true,
 | 
			
		||||
      const currentNewRow = dataStore.find(itemData => {
 | 
			
		||||
        return isEmptyValue(itemData.UUID) && itemData.isNew
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      if (!isEmptyValue(currentNewRow)) {
 | 
			
		||||
        values = currentNewRow
 | 
			
		||||
        return values
 | 
			
		||||
      } if (isEmptyValue(row)) {
 | 
			
		||||
        const tabPanel = rootGetters.getPanel(containerUuid)
 | 
			
		||||
 | 
			
		||||
        if (isEmptyValue(fieldList)) {
 | 
			
		||||
          fieldList = tabPanel.fieldList
 | 
			
		||||
        }
 | 
			
		||||
        // add row with default values to create new record
 | 
			
		||||
        if (isPanelValues) {
 | 
			
		||||
          // add row with values used from record in panel
 | 
			
		||||
          values = rootGetters.getColumnNamesAndValues({
 | 
			
		||||
            containerUuid,
 | 
			
		||||
            propertyName: 'value',
 | 
			
		||||
            isObjectReturn: true,
 | 
			
		||||
            isAddDisplayColumn: true,
 | 
			
		||||
            fieldList
 | 
			
		||||
          })
 | 
			
		||||
        } else {
 | 
			
		||||
          values = rootGetters.getParsedDefaultValues({
 | 
			
		||||
            parentUuid,
 | 
			
		||||
            containerUuid,
 | 
			
		||||
            fieldList
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
        values.isNew = isNew
 | 
			
		||||
        values.isEdit = isEdit
 | 
			
		||||
        values.isSendServer = false
 | 
			
		||||
 | 
			
		||||
        // get the link column name from the tab
 | 
			
		||||
        let linkColumnName = tabPanel.linkColumnName
 | 
			
		||||
        if (isEmptyValue(linkColumnName)) {
 | 
			
		||||
          // get the link column name from field list
 | 
			
		||||
          linkColumnName = tabPanel.fieldLinkColumnName
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let valueLink
 | 
			
		||||
        // get context value if link column exists and does not exist in row
 | 
			
		||||
        if (!isEmptyValue(linkColumnName)) {
 | 
			
		||||
          valueLink = rootGetters.getContext({
 | 
			
		||||
            parentUuid,
 | 
			
		||||
            containerUuid,
 | 
			
		||||
            columnName: linkColumnName
 | 
			
		||||
          })
 | 
			
		||||
          if (!isEmptyValue(valueLink)) {
 | 
			
		||||
            valueLink = parseInt(valueLink, 10)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // get display column
 | 
			
		||||
        if (fieldList.length) {
 | 
			
		||||
          fieldList
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        values = rootGetters.getParsedDefaultValues({
 | 
			
		||||
          parentUuid,
 | 
			
		||||
          containerUuid,
 | 
			
		||||
          fieldList
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      values.isNew = isNew
 | 
			
		||||
      values.isEdit = isEdit
 | 
			
		||||
      values.isSendServer = false
 | 
			
		||||
 | 
			
		||||
      // get the link column name from the tab
 | 
			
		||||
      var linkColumnName = tabPanel.linkColumnName
 | 
			
		||||
      if (isEmptyValue(linkColumnName)) {
 | 
			
		||||
        // get the link column name from field list
 | 
			
		||||
        linkColumnName = tabPanel.fieldLinkColumnName
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      var valueLink
 | 
			
		||||
      // get context value if link column exists and does not exist in row
 | 
			
		||||
      if (!isEmptyValue(linkColumnName)) {
 | 
			
		||||
        valueLink = rootGetters.getContext({
 | 
			
		||||
          parentUuid,
 | 
			
		||||
          containerUuid,
 | 
			
		||||
          columnName: linkColumnName
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      if (!isEmptyValue(valueLink)) {
 | 
			
		||||
        valueLink = parseInt(valueLink, 10)
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // get display column
 | 
			
		||||
      if (fieldList.length) {
 | 
			
		||||
        fieldList
 | 
			
		||||
          // TODO: Evaluate if is field is read only and FieldSelect
 | 
			
		||||
          .filter(itemField => itemField.componentPath === 'FieldSelect' || String(values[itemField.columnName]) === '[object Object]')
 | 
			
		||||
          .forEach(itemField => {
 | 
			
		||||
            var valueGetDisplayColumn = values[itemField.columnName]
 | 
			
		||||
            if (String(values[itemField.columnName]) === '[object Object]' && itemField.componentPath === 'FieldSelect') {
 | 
			
		||||
              values[itemField.columnName] = ' '
 | 
			
		||||
              values[`DisplayColumn_${itemField.columnName}`] = ' '
 | 
			
		||||
            } else if (String(values[itemField.columnName]) === '[object Object]' && itemField.componentPath === 'FieldNumber') {
 | 
			
		||||
              values[itemField.columnName] = 0
 | 
			
		||||
            }
 | 
			
		||||
            // overwrite value with column link
 | 
			
		||||
            if (!isEmptyValue(linkColumnName) && linkColumnName === itemField.columnName) {
 | 
			
		||||
              valueGetDisplayColumn = valueLink
 | 
			
		||||
              if (isEmptyValue(values[itemField.columnName])) {
 | 
			
		||||
                values[itemField.columnName] = valueGetDisplayColumn
 | 
			
		||||
            // TODO: Evaluate if is field is read only and FieldSelect
 | 
			
		||||
            .filter(itemField => itemField.componentPath === 'FieldSelect' || String(values[itemField.columnName]) === '[object Object]')
 | 
			
		||||
            .forEach(itemField => {
 | 
			
		||||
              let valueGetDisplayColumn = values[itemField.columnName]
 | 
			
		||||
              if (String(values[itemField.columnName]) === '[object Object]') {
 | 
			
		||||
                if (itemField.componentPath === 'FieldSelect') {
 | 
			
		||||
                  values[itemField.columnName] = ' '
 | 
			
		||||
                  values[`DisplayColumn_${itemField.columnName}`] = ' '
 | 
			
		||||
                } else if (itemField.componentPath === 'FieldNumber') {
 | 
			
		||||
                  values[itemField.columnName] = 0
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // break this itineration if is empty
 | 
			
		||||
            if (isEmptyValue(valueGetDisplayColumn)) {
 | 
			
		||||
              return
 | 
			
		||||
            }
 | 
			
		||||
            // always the values for these types of fields are integers
 | 
			
		||||
            if (['TableDirect'].includes(itemField.referenceType)) {
 | 
			
		||||
              valueGetDisplayColumn = parseInt(valueGetDisplayColumn, 10)
 | 
			
		||||
            } else {
 | 
			
		||||
              if (!isNaN(valueGetDisplayColumn)) {
 | 
			
		||||
                valueGetDisplayColumn = parseInt(valueGetDisplayColumn, 10)
 | 
			
		||||
              // overwrite value with column link
 | 
			
		||||
              if (!isEmptyValue(linkColumnName) && linkColumnName === itemField.columnName) {
 | 
			
		||||
                valueGetDisplayColumn = valueLink
 | 
			
		||||
                if (isEmptyValue(values[itemField.columnName])) {
 | 
			
		||||
                  values[itemField.columnName] = valueGetDisplayColumn
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            if (!isEmptyValue(valueGetDisplayColumn) && String(valueGetDisplayColumn) === '[object Object]' && valueGetDisplayColumn.isSQL) {
 | 
			
		||||
              // get value from direct Query
 | 
			
		||||
              dispatch('getRecordBySQL', {
 | 
			
		||||
                query: valueGetDisplayColumn.query,
 | 
			
		||||
                field: itemField
 | 
			
		||||
              })
 | 
			
		||||
                .then(defaultValue => {
 | 
			
		||||
                  if (itemField.componentPath === 'FieldSelect') {
 | 
			
		||||
                    values[itemField.columnName] = defaultValue.key
 | 
			
		||||
                    values[`DisplayColumn_${itemField.columnName}`] = defaultValue.label
 | 
			
		||||
                  } else {
 | 
			
		||||
                    values[itemField.columnName] = defaultValue.key
 | 
			
		||||
                    dispatch('notifyRowTableChange', {
 | 
			
		||||
                      parentUuid,
 | 
			
		||||
                      containerUuid,
 | 
			
		||||
                      isNew,
 | 
			
		||||
                      isEdit,
 | 
			
		||||
                      row: values
 | 
			
		||||
                    })
 | 
			
		||||
                  }
 | 
			
		||||
                })
 | 
			
		||||
              return
 | 
			
		||||
            }
 | 
			
		||||
            // get label (DisplayColumn) from vuex store
 | 
			
		||||
            const options = rootGetters.getLookupAll({
 | 
			
		||||
              parentUuid,
 | 
			
		||||
              containerUuid,
 | 
			
		||||
              tableName: itemField.reference.tableName,
 | 
			
		||||
              query: itemField.reference.query,
 | 
			
		||||
              directQuery: itemField.reference.directQuery,
 | 
			
		||||
              value: valueGetDisplayColumn
 | 
			
		||||
            })
 | 
			
		||||
 | 
			
		||||
            const option = options.find(itemOption => itemOption.key === valueGetDisplayColumn)
 | 
			
		||||
            // if there is a lookup option, assign the display column with the label
 | 
			
		||||
            if (option) {
 | 
			
		||||
              values[`DisplayColumn_${itemField.columnName}`] = option.label
 | 
			
		||||
              if (isEmptyValue(option.label) && !itemField.isMandatory) {
 | 
			
		||||
                values[itemField.columnName] = undefined
 | 
			
		||||
              }
 | 
			
		||||
              return
 | 
			
		||||
            }
 | 
			
		||||
            if (linkColumnName === itemField.columnName) {
 | 
			
		||||
              // get context value if link column exists and does not exist in row
 | 
			
		||||
              const nameParent = rootGetters.getContext({
 | 
			
		||||
                parentUuid,
 | 
			
		||||
                containerUuid,
 | 
			
		||||
                columnName: 'Name'
 | 
			
		||||
              })
 | 
			
		||||
              if (nameParent) {
 | 
			
		||||
                values[`DisplayColumn_${itemField.columnName}`] = nameParent
 | 
			
		||||
              // break this itineration if is empty
 | 
			
		||||
              if (isEmptyValue(valueGetDisplayColumn)) {
 | 
			
		||||
                return
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            // get from server
 | 
			
		||||
            dispatch('getLookupItemFromServer', {
 | 
			
		||||
              parentUuid,
 | 
			
		||||
              containerUuid,
 | 
			
		||||
              tableName: itemField.reference.tableName,
 | 
			
		||||
              directQuery: itemField.reference.directQuery,
 | 
			
		||||
              value: valueGetDisplayColumn
 | 
			
		||||
            })
 | 
			
		||||
              .then(responseLookup => {
 | 
			
		||||
                dispatch('addDisplayColumn', {
 | 
			
		||||
                  containerUuid,
 | 
			
		||||
                  columnName: itemField.columnName,
 | 
			
		||||
                  displayColumn: responseLookup.label
 | 
			
		||||
              // always the values for these types of fields are integers
 | 
			
		||||
              if (['TableDirect'].includes(itemField.referenceType)) {
 | 
			
		||||
                valueGetDisplayColumn = parseInt(valueGetDisplayColumn, 10)
 | 
			
		||||
              } else {
 | 
			
		||||
                if (!isNaN(valueGetDisplayColumn)) {
 | 
			
		||||
                  valueGetDisplayColumn = parseInt(valueGetDisplayColumn, 10)
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
              if (!isEmptyValue(valueGetDisplayColumn) && String(valueGetDisplayColumn) === '[object Object]' && valueGetDisplayColumn.isSQL) {
 | 
			
		||||
                // get value from direct Query
 | 
			
		||||
                dispatch('getRecordBySQL', {
 | 
			
		||||
                  query: valueGetDisplayColumn.query,
 | 
			
		||||
                  field: itemField
 | 
			
		||||
                })
 | 
			
		||||
                  .then(defaultValue => {
 | 
			
		||||
                    if (itemField.componentPath === 'FieldSelect') {
 | 
			
		||||
                      values[itemField.columnName] = defaultValue.key
 | 
			
		||||
                      values[`DisplayColumn_${itemField.columnName}`] = defaultValue.label
 | 
			
		||||
                    } else {
 | 
			
		||||
                      values[itemField.columnName] = defaultValue.key
 | 
			
		||||
                      dispatch('notifyRowTableChange', {
 | 
			
		||||
                        parentUuid,
 | 
			
		||||
                        containerUuid,
 | 
			
		||||
                        isNew,
 | 
			
		||||
                        isEdit,
 | 
			
		||||
                        row: values
 | 
			
		||||
                      })
 | 
			
		||||
                    }
 | 
			
		||||
                  })
 | 
			
		||||
                return
 | 
			
		||||
              }
 | 
			
		||||
              // get label (DisplayColumn) from vuex store
 | 
			
		||||
              const options = rootGetters.getLookupAll({
 | 
			
		||||
                parentUuid,
 | 
			
		||||
                containerUuid,
 | 
			
		||||
                tableName: itemField.reference.tableName,
 | 
			
		||||
                query: itemField.reference.query,
 | 
			
		||||
                directQuery: itemField.reference.directQuery,
 | 
			
		||||
                value: valueGetDisplayColumn
 | 
			
		||||
              })
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
              const option = options.find(itemOption => itemOption.key === valueGetDisplayColumn)
 | 
			
		||||
              // if there is a lookup option, assign the display column with the label
 | 
			
		||||
              if (option) {
 | 
			
		||||
                values[`DisplayColumn_${itemField.columnName}`] = option.label
 | 
			
		||||
                if (isEmptyValue(option.label) && !itemField.isMandatory) {
 | 
			
		||||
                  values[itemField.columnName] = undefined
 | 
			
		||||
                }
 | 
			
		||||
                return
 | 
			
		||||
              }
 | 
			
		||||
              if (linkColumnName === itemField.columnName) {
 | 
			
		||||
                // get context value if link column exists and does not exist in row
 | 
			
		||||
                const nameParent = rootGetters.getContext({
 | 
			
		||||
                  parentUuid,
 | 
			
		||||
                  containerUuid,
 | 
			
		||||
                  columnName: 'Name'
 | 
			
		||||
                })
 | 
			
		||||
                if (nameParent) {
 | 
			
		||||
                  values[`DisplayColumn_${itemField.columnName}`] = nameParent
 | 
			
		||||
                  return
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
              // get from server
 | 
			
		||||
              dispatch('getLookupItemFromServer', {
 | 
			
		||||
                parentUuid,
 | 
			
		||||
                containerUuid,
 | 
			
		||||
                tableName: itemField.reference.tableName,
 | 
			
		||||
                directQuery: itemField.reference.directQuery,
 | 
			
		||||
                value: valueGetDisplayColumn
 | 
			
		||||
              })
 | 
			
		||||
                .then(responseLookup => {
 | 
			
		||||
                  dispatch('addDisplayColumn', {
 | 
			
		||||
                    containerUuid,
 | 
			
		||||
                    columnName: itemField.columnName,
 | 
			
		||||
                    displayColumn: responseLookup.label
 | 
			
		||||
                  })
 | 
			
		||||
                })
 | 
			
		||||
            })
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // overwrite value with column link
 | 
			
		||||
        if (isEmptyValue(values[linkColumnName])) {
 | 
			
		||||
          values[linkColumnName] = valueLink
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        values = row
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // overwrite value with column link
 | 
			
		||||
      if (isEmptyValue(values[linkColumnName])) {
 | 
			
		||||
        values[linkColumnName] = valueLink
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      const dataStore = getters.getDataRecordsList(containerUuid)
 | 
			
		||||
      commit('addNewRow', {
 | 
			
		||||
        values,
 | 
			
		||||
        data: dataStore
 | 
			
		||||
| 
						 | 
				
			
			@ -395,7 +412,7 @@ const data = {
 | 
			
		|||
      withOut = [],
 | 
			
		||||
      isNew = false
 | 
			
		||||
    }) {
 | 
			
		||||
      var setNews = []
 | 
			
		||||
      const setNews = []
 | 
			
		||||
      const record = state.recordSelection.filter(itemRecord => {
 | 
			
		||||
        // ignore this uuid
 | 
			
		||||
        if (withOut.includes(itemRecord.containerUuid)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -632,13 +649,18 @@ 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, getters, rootGetters }, objectParams) {
 | 
			
		||||
      const { parentUuid, containerUuid, isEdit = true } = objectParams
 | 
			
		||||
      var currentValues = {}
 | 
			
		||||
      if (objectParams.hasOwnProperty('row')) {
 | 
			
		||||
        currentValues = objectParams.row
 | 
			
		||||
    notifyRowTableChange({ commit, getters, rootGetters }, {
 | 
			
		||||
      parentUuid,
 | 
			
		||||
      containerUuid,
 | 
			
		||||
      isEdit = true,
 | 
			
		||||
      isNew,
 | 
			
		||||
      row
 | 
			
		||||
    }) {
 | 
			
		||||
      let values = {}
 | 
			
		||||
      if (row) {
 | 
			
		||||
        values = row
 | 
			
		||||
      } else {
 | 
			
		||||
        currentValues = rootGetters.getColumnNamesAndValues({
 | 
			
		||||
        values = rootGetters.getColumnNamesAndValues({
 | 
			
		||||
          parentUuid,
 | 
			
		||||
          containerUuid,
 | 
			
		||||
          propertyName: 'value',
 | 
			
		||||
| 
						 | 
				
			
			@ -647,27 +669,34 @@ const data = {
 | 
			
		|||
        })
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      var row = getters.getRowData(objectParams.containerUuid, currentValues.UUID)
 | 
			
		||||
      const currentRow = getters.getRowData(containerUuid, values.UUID)
 | 
			
		||||
 | 
			
		||||
      var newRow = {
 | 
			
		||||
        ...currentValues,
 | 
			
		||||
      const newRow = {
 | 
			
		||||
        ...values,
 | 
			
		||||
        // ...objectParams.row,
 | 
			
		||||
        isEdit
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      commit('notifyRowTableChange', {
 | 
			
		||||
        isNew: objectParams.isNew,
 | 
			
		||||
        isNew,
 | 
			
		||||
        newRow,
 | 
			
		||||
        row
 | 
			
		||||
        row: currentRow
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    notifyCellTableChange({ commit, state, dispatch, rootGetters }, parameters) {
 | 
			
		||||
      const {
 | 
			
		||||
        parentUuid, containerUuid, field, panelType = 'window',
 | 
			
		||||
        isSendToServer = true, columnName, rowKey, keyColumn, newValue,
 | 
			
		||||
        displayColumn, withOutColumnNames = [], isSendCallout = true
 | 
			
		||||
      } = parameters
 | 
			
		||||
 | 
			
		||||
    notifyCellTableChange({ commit, state, dispatch, rootGetters }, {
 | 
			
		||||
      parentUuid,
 | 
			
		||||
      containerUuid,
 | 
			
		||||
      field,
 | 
			
		||||
      columnName,
 | 
			
		||||
      rowKey,
 | 
			
		||||
      keyColumn,
 | 
			
		||||
      panelType = 'window',
 | 
			
		||||
      isSendToServer = true,
 | 
			
		||||
      isSendCallout = true,
 | 
			
		||||
      newValue,
 | 
			
		||||
      displayColumn,
 | 
			
		||||
      withOutColumnNames = []
 | 
			
		||||
    }) {
 | 
			
		||||
      const recordSelection = state.recordSelection.find(recordItem => {
 | 
			
		||||
        return recordItem.containerUuid === containerUuid
 | 
			
		||||
      })
 | 
			
		||||
| 
						 | 
				
			
			@ -730,13 +759,6 @@ const data = {
 | 
			
		|||
                containerUuid,
 | 
			
		||||
                row
 | 
			
		||||
              })
 | 
			
		||||
                .then(() => {
 | 
			
		||||
                  // refresh record list
 | 
			
		||||
                  dispatch('getDataListTab', {
 | 
			
		||||
                    parentUuid,
 | 
			
		||||
                    containerUuid
 | 
			
		||||
                  })
 | 
			
		||||
                })
 | 
			
		||||
            }
 | 
			
		||||
          } else {
 | 
			
		||||
            const fieldsEmpty = rootGetters.getFieldListEmptyMandatory({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -172,7 +172,7 @@ const windowControl = {
 | 
			
		|||
          })
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    createEntityFromTable({ commit, getters, rootGetters }, {
 | 
			
		||||
    createEntityFromTable({ commit, dispatch, getters, rootGetters }, {
 | 
			
		||||
      parentUuid,
 | 
			
		||||
      containerUuid,
 | 
			
		||||
      row
 | 
			
		||||
| 
						 | 
				
			
			@ -187,8 +187,9 @@ const windowControl = {
 | 
			
		|||
      const { tableName, isParentTab } = rootGetters.getPanel(containerUuid)
 | 
			
		||||
 | 
			
		||||
      // TODO: Add support to Binary columns (BinaryData)
 | 
			
		||||
      const columnsToDontSend = ['BinaryData', 'isSendServer', 'isEdit']
 | 
			
		||||
      const columnsToDontSend = ['BinaryData', 'isEdit', 'isNew', 'isSendServer']
 | 
			
		||||
 | 
			
		||||
      // TODO: Evaluate peformance without filter using delete(prop) before convert object to array
 | 
			
		||||
      // attributes or fields
 | 
			
		||||
      let finalAttributes = convertObjectToArrayPairs(row)
 | 
			
		||||
      finalAttributes = finalAttributes.filter(itemAttribute => {
 | 
			
		||||
| 
						 | 
				
			
			@ -206,6 +207,8 @@ const windowControl = {
 | 
			
		|||
        tableName,
 | 
			
		||||
        attributesList: finalAttributes
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      let isError = false
 | 
			
		||||
      return createEntity({
 | 
			
		||||
        tableName,
 | 
			
		||||
        attributesList: finalAttributes
 | 
			
		||||
| 
						 | 
				
			
			@ -239,9 +242,22 @@ const windowControl = {
 | 
			
		|||
            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}.`)
 | 
			
		||||
          isError = true
 | 
			
		||||
        })
 | 
			
		||||
        .finally(() => {
 | 
			
		||||
          if (isError) {
 | 
			
		||||
            dispatch('addNewRow', {
 | 
			
		||||
              containerUuid,
 | 
			
		||||
              row
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            // refresh record list
 | 
			
		||||
            dispatch('getDataListTab', {
 | 
			
		||||
              parentUuid,
 | 
			
		||||
              containerUuid
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
          commit('deleteInCreate', {
 | 
			
		||||
            containerUuid,
 | 
			
		||||
            tableName,
 | 
			
		||||
| 
						 | 
				
			
			@ -332,15 +348,15 @@ const windowControl = {
 | 
			
		|||
        })
 | 
			
		||||
    },
 | 
			
		||||
    updateCurrentEntityFromTable({ rootGetters }, {
 | 
			
		||||
      parentUuid,
 | 
			
		||||
      containerUuid,
 | 
			
		||||
      row
 | 
			
		||||
    }) {
 | 
			
		||||
      const { tableName, fieldList } = rootGetters.getPanel(containerUuid)
 | 
			
		||||
 | 
			
		||||
      // TODO: Add support to Binary columns (BinaryData)
 | 
			
		||||
      const columnsToDontSend = ['BinaryData', 'isSendServer', 'isEdit']
 | 
			
		||||
      const columnsToDontSend = ['BinaryData', 'isEdit', 'isNew', 'isSendServer']
 | 
			
		||||
 | 
			
		||||
      // TODO: Evaluate peformance without filter using delete(prop) before convert object to array
 | 
			
		||||
      // attributes or fields
 | 
			
		||||
      let finalAttributes = convertObjectToArrayPairs(row)
 | 
			
		||||
      finalAttributes = finalAttributes.filter(itemAttribute => {
 | 
			
		||||
| 
						 | 
				
			
			@ -367,7 +383,7 @@ 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}.`)
 | 
			
		||||
        })
 | 
			
		||||
    },
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -596,14 +612,20 @@ const windowControl = {
 | 
			
		|||
     * @param {boolean} isRefreshPanel, if main panel is updated with new response data
 | 
			
		||||
     * @param {boolean} isLoadAllRecords, if main panel is updated with new response data
 | 
			
		||||
     */
 | 
			
		||||
    getDataListTab({ dispatch, rootGetters }, parameters) {
 | 
			
		||||
      const {
 | 
			
		||||
        parentUuid, containerUuid, recordUuid,
 | 
			
		||||
        referenceWhereClause = '', columnName, value, criteria,
 | 
			
		||||
        isRefreshPanel = false, isLoadAllRecords = false, isReference = false,
 | 
			
		||||
        isShowNotification = true
 | 
			
		||||
      } = parameters
 | 
			
		||||
      let { isAddRecord = false } = parameters
 | 
			
		||||
    getDataListTab({ dispatch, rootGetters }, {
 | 
			
		||||
      parentUuid,
 | 
			
		||||
      containerUuid,
 | 
			
		||||
      recordUuid,
 | 
			
		||||
      referenceWhereClause = '',
 | 
			
		||||
      columnName,
 | 
			
		||||
      value,
 | 
			
		||||
      criteria,
 | 
			
		||||
      isAddRecord = false,
 | 
			
		||||
      isLoadAllRecords = false,
 | 
			
		||||
      isRefreshPanel = false,
 | 
			
		||||
      isReference = false,
 | 
			
		||||
      isShowNotification = true
 | 
			
		||||
    }) {
 | 
			
		||||
      const tab = rootGetters.getTab(parentUuid, containerUuid)
 | 
			
		||||
 | 
			
		||||
      let parsedQuery = tab.query
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -471,6 +471,7 @@ export function assignedGroup(fieldList, assignedGroup) {
 | 
			
		|||
  if (fieldList === undefined || fieldList.length <= 0) {
 | 
			
		||||
    return fieldList
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fieldList = sortFields(fieldList, 'sequence', 'asc', fieldList[0].panelType)
 | 
			
		||||
 | 
			
		||||
  let firstChangeGroup = false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue