From ca1b2019fdc34e1b72d2d74c05bbc578583b915f Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Mon, 20 Mar 2023 16:54:16 +0100
Subject: [PATCH] SSDM-13463 : Export selection of fields from tables - UI part
 - adjust the structure of "export_fields"

---
 .../components/common/grid/GridController.js  | 29 ++++++++++++-------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/ui-admin/src/js/components/common/grid/GridController.js b/ui-admin/src/js/components/common/grid/GridController.js
index 1de41b90172..ea162aca42a 100644
--- a/ui-admin/src/js/components/common/grid/GridController.js
+++ b/ui-admin/src/js/components/common/grid/GridController.js
@@ -1313,25 +1313,32 @@ export default class GridController {
           }
         })
 
-        // build exported fields map:
-        // - entities:  { kind: { type: [{ type: "PROPERTY/ATTRIBUTE", id: "propertyCode/attributeCode"}, ...], ... }, ... }
-        // - non-entities:  { kind: [{ type: "ATTRIBUTE", id: "attributeCode"}, ...], ... }
+        // build exported fields map: { kind: { type: [{ type: "PROPERTY/ATTRIBUTE", id: "propertyCode/attributeCode"}, ...], ... }, ... }
+
+        const TYPE_KINDS = {
+          [GridExportOptions.EXPORTABLE_KIND.SAMPLE_TYPE]: true,
+          [GridExportOptions.EXPORTABLE_KIND.EXPERIMENT_TYPE]: true,
+          [GridExportOptions.EXPORTABLE_KIND.DATASET_TYPE]: true,
+          [GridExportOptions.EXPORTABLE_KIND.VOCABULARY]: true
+        }
 
         exportedRows.forEach(exportedRow => {
-          const { exportable_kind, type_perm_id } = exportedRow.exportableId
+          let { exportable_kind, type_perm_id } = exportedRow.exportableId
 
           if (!_.isNil(exportable_kind)) {
+            if (TYPE_KINDS[exportable_kind]) {
+              type_perm_id = exportable_kind
+              exportable_kind = 'TYPE'
+            }
+
             let exportedFieldsForKind = exportedFieldsMap[exportable_kind]
 
+            if (_.isNil(exportedFieldsForKind)) {
+              exportedFieldsMap[exportable_kind] = exportedFieldsForKind = {}
+            }
+
             if (!_.isNil(type_perm_id)) {
-              if (_.isNil(exportedFieldsForKind)) {
-                exportedFieldsMap[exportable_kind] = exportedFieldsForKind = {}
-              }
               exportedFieldsForKind[type_perm_id] = exportableFields
-            } else {
-              if (_.isNil(exportedFieldsForKind)) {
-                exportedFieldsMap[exportable_kind] = exportableFields
-              }
             }
           }
         })
-- 
GitLab