Browse Source

fix: handle null/undefined

Signed-off-by: Pranav C <pranavxc@gmail.com>
pull/2399/head
Pranav C 3 years ago
parent
commit
b904f57350
  1. 26
      packages/nc-gui/components/import/JSONImport.vue
  2. 4
      packages/nc-gui/components/import/templateParsers/parserHelpers.js

26
packages/nc-gui/components/import/JSONImport.vue

@ -143,7 +143,31 @@
hide-details
>
<template #label>
<span class="caption">Normalize nested</span>
<span class="caption">Flatten nested</span>
<v-tooltip bottom position-y="">
<template #activator="{ on }">
<v-icon small class="ml-1" v-on="on">
mdi-information-outline
</v-icon>
</template>
<div class="caption" style="width: 260px">
If flatten nested option is set it will flatten nested object as root level property. In normal case nested object will treat as JSON column.
<br>
<br>
For example the following input: <code class="caption font-weight-bold">{
"prop1": {
"prop2": "value"
},
"prop3": "value",
"prop4": 1
}</code> will treat as:
<code class="caption font-weight-bold">{
"prop1_prop2": "value",
"prop3": "value",
"prop4": 1
}</code>
</div>
</v-tooltip>
</template>
</v-checkbox>
<v-checkbox

4
packages/nc-gui/components/import/templateParsers/parserHelpers.js

@ -51,7 +51,7 @@ export const isMultiLineTextType = (values, col = null) => {
export const extractMultiOrSingleSelectProps = (colData) => {
const colProps = {}
if (colData.some(v => v && v.toString().includes(','))) {
if (colData.some(v => v && (v || '').toString().includes(','))) {
let flattenedVals = colData.flatMap(v => v ? v.toString().trim().split(/\s*,\s*/) : [])
const uniqueVals = flattenedVals = flattenedVals
.filter((v, i, arr) => i === arr.findIndex(v1 => v.toLowerCase() === v1.toLowerCase()))
@ -60,7 +60,7 @@ export const extractMultiOrSingleSelectProps = (colData) => {
colProps.dtxp = `'${uniqueVals.join("','")}'`
}
} else {
const uniqueVals = colData.map(v => v.toString().trim()).filter((v, i, arr) => i === arr.findIndex(v1 => v.toLowerCase() === v1.toLowerCase()))
const uniqueVals = colData.map(v => (v || '').toString().trim()).filter((v, i, arr) => i === arr.findIndex(v1 => v.toLowerCase() === v1.toLowerCase()))
if (colData.length > uniqueVals.length && uniqueVals.length <= Math.ceil(colData.length / 2)) {
colProps.uidt = UITypes.SingleSelect
colProps.dtxp = `'${uniqueVals.join("','")}'`

Loading…
Cancel
Save