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