Browse Source

feat(nc-gui): allow Auto-Select Field Types in Excel & JSON import

pull/4135/head
Wing-Kam Wong 2 years ago
parent
commit
2dc5045891
  1. 2
      packages/nc-gui/components/dlg/QuickImport.vue
  2. 3
      packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts
  3. 6
      packages/nc-gui/utils/parsers/JSONTemplateAdapter.ts

2
packages/nc-gui/components/dlg/QuickImport.vue

@ -454,7 +454,7 @@ const beforeUpload = (file: UploadFile) => {
<a-input-number v-model:value="importState.parserConfig.maxRowsToParse" :min="1" :max="50000" />
</a-form-item>
<a-form-item v-if="isImportTypeCsv" class="!my-2">
<a-form-item class="!my-2">
<a-checkbox v-model:checked="importState.parserConfig.autoSelectFieldTypes">
<span class="caption">Auto-Select Field Types</span>
</a-checkbox>

3
packages/nc-gui/utils/parsers/ExcelTemplateAdapter.ts

@ -114,8 +114,10 @@ export default class ExcelTemplateAdapter extends TemplateGenerator {
column_name: cn,
ref_column_name: cn,
meta: {},
uidt: UITypes.SingleLineText,
}
if (this.config.autoSelectFieldTypes) {
const cellId = this.xlsx.utils.encode_cell({
c: range.s.c + col,
r: columnNameRowExist,
@ -196,6 +198,7 @@ export default class ExcelTemplateAdapter extends TemplateGenerator {
Object.keys(dateFormat).reduce((x, y) => (dateFormat[x] > dateFormat[y] ? x : y)) || 'YYYY/MM/DD'
}
}
}
table.columns.push(column)
}
this.project.tables.push(table)

6
packages/nc-gui/utils/parsers/JSONTemplateAdapter.ts

@ -89,17 +89,17 @@ export default class JSONTemplateAdapter extends TemplateGenerator {
}
} else {
const cn = path.join('_').replace(/\W/g, '_').trim()
const column: Record<string, any> = {
column_name: cn,
ref_column_name: cn,
uidt: UITypes.SingleLineText,
path,
}
if (this.config.autoSelectFieldTypes) {
column.uidt = jsonTypeToUidt[typeof firstRowVal] || UITypes.SingleLineText
const colData = jsonData.map((r: any) => extractNestedData(r, path))
Object.assign(column, getColumnUIDTAndMetas(colData, column.uidt))
}
columns.push(column)
}

Loading…
Cancel
Save