From 897e8a985657eca89ea23d7f3f681d52774be64a Mon Sep 17 00:00:00 2001 From: florent <flavelle@neogeo.fr> Date: Tue, 26 Apr 2022 17:00:50 +0200 Subject: [PATCH] fix csv import/export --- src/assets/js/utils.js | 16 ++++++++++------ src/views/FeatureType/FeatureTypeDetail.vue | 5 +++-- src/views/FeatureType/FeatureTypeEdit.vue | 1 + 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/assets/js/utils.js b/src/assets/js/utils.js index 4b01c67e..0680fcdf 100644 --- a/src/assets/js/utils.js +++ b/src/assets/js/utils.js @@ -24,14 +24,18 @@ export function csvToJson(csv, delimiter) { const [, ...lines] = allLines; for (const line of lines) { - const obj = {}; - const currentLine = line.split(delimiter); + if (line) { + const obj = {}; + const currentLine = line.split(delimiter).map(el => { + return el.replace('\r', ''); + }); - for (let i = 0; i < headers.length; i++) { - obj[headers[i]] = currentLine[i]; - } + for (let i = 0; i < headers.length; i++) { + obj[headers[i]] = currentLine[i]; + } - result.push(obj); + result.push(obj); + } } return JSON.parse(JSON.stringify(result)); } diff --git a/src/views/FeatureType/FeatureTypeDetail.vue b/src/views/FeatureType/FeatureTypeDetail.vue index b82834fc..58303368 100644 --- a/src/views/FeatureType/FeatureTypeDetail.vue +++ b/src/views/FeatureType/FeatureTypeDetail.vue @@ -663,7 +663,8 @@ export default { //* if field type is list, it's not possible to guess from value type if (field_type === 'list') { //*then check if the value is an available option - if (!options.includes(fieldInFeature)) { + if (fieldInFeature && !options.includes(fieldInFeature)) { + this.importError = `Le champ ${name} contient une valeur invalide.`; return false; } } else if (customType !== field_type) { @@ -693,7 +694,7 @@ export default { reader.addEventListener('load', (e) => { // bypass json check for files larger then 10 Mo let jsonValidity; - if (parseFloat(fileConvertSizeToMo(files[0])) <= 10) { + if (parseFloat(fileConvertSizeToMo(files[0].size)) <= 10) { jsonValidity = this.checkJsonValidity(JSON.parse(e.target.result)); } else { jsonValidity = true; diff --git a/src/views/FeatureType/FeatureTypeEdit.vue b/src/views/FeatureType/FeatureTypeEdit.vue index 67d6def4..303f3d2f 100644 --- a/src/views/FeatureType/FeatureTypeEdit.vue +++ b/src/views/FeatureType/FeatureTypeEdit.vue @@ -244,6 +244,7 @@ export default { slug: this.$route.params.slug, reservedKeywords: [ // todo : add keywords for mapstyle (strokewidth...) + 'id', 'title', 'description', 'status', -- GitLab