function assemblyImportData()

in kystudio/src/components/common/ModelsImportModal/store.js [82:155]


function assemblyImportData (_data) {
  const assignData = {}
  const pageSize = 30 // 折叠项每页展示的数量
  // 后端接口返回字段归类
  const typeMaps = {
    tables: ['MODEL_TABLE', 'MODEL_FACT', 'MODEL_DIM'],
    columns: ['TABLE_COLUMN'],
    partitionColumns: ['MODEL_PARTITION', 'MODEL_MULTIPLE_PARTITION'],
    measures: ['MODEL_MEASURE'],
    dimensions: ['MODEL_DIMENSION'],
    indexes: ['WHITE_LIST_INDEX', 'TO_BE_DELETED_INDEX', 'RULE_BASED_INDEX'],
    computedColumns: ['MODEL_CC'],
    modelJoin: ['MODEL_JOIN'],
    modelFilter: ['MODEL_FILTER']
  }
  // 未找到、新增、删除以及更改对应需要展示的折叠项
  const dataMap = {
    nofound: ['tables', 'columns'],
    add: ['tables', 'modelJoin', 'columns', 'partitionColumns', 'measures', 'dimensions', 'indexes', 'computedColumns', 'modelFilter'],
    reduce: ['tables', 'modelJoin', 'columns', 'partitionColumns', 'measures', 'dimensions', 'indexes', 'computedColumns', 'modelFilter'],
    modified: ['columns', 'partitionColumns', 'measures', 'computedColumns', 'indexes', 'modelJoin', 'modelFilter']
  }

  // tab 接口字段对照
  const paneTabMap = {
    new_items: 'add',
    missing_items: 'nofound',
    reduce_items: 'reduce',
    update_items: 'modified'
  }

  for (let item in paneTabMap) {
    let v = paneTabMap[item]
    if (_data[item] && _data[item].length && item !== 'missing_items') {
      dataMap[v].forEach(name => {
        if (name === 'indexes') {
          const indexList = _data[item].filter(it => typeMaps[name].includes(it.type))
          assignData[v] = {
            ...assignData[v],
            [name]: {
              agg: indexList.filter(item => (item.detail || item.first_detail) < 20000000000).map(it => (it.detail || it.first_detail)).join(','),
              table: indexList.filter(item => (item.detail || item.first_detail) > 20000000000).map(it => (it.detail || it.first_detail)).join(','),
              length: indexList.length
            }
          }
        } else {
          let dataList = _data[item].filter(it => typeMaps[name].includes(it.type))
          assignData[v] = {
            ...assignData[v],
            [name]: {
              list: dataList.slice(0, pageSize),
              totalData: dataList,
              pageOffset: 1,
              pageSize: pageSize
            }
          }
        }
      })
    } else if (_data[item] && _data[item].length && item === 'missing_items') {
      dataMap[v].forEach(name => {
        let dataList = _data[item].filter(it => typeMaps[name].includes(it.type))
        assignData[v] = {...assignData[v],
          [name]: {
            list: dataList.slice(0, pageSize),
            totalData: dataList,
            pageOffset: 1,
            pageSize: pageSize
          }
        }
      })
    }
  }
  return assignData
}