From f02a7342701abdfed89bab9671d349c443f579e9 Mon Sep 17 00:00:00 2001
From: Janis Streib <janis.streib@kit.edu>
Date: Mon, 5 Aug 2024 11:41:25 +0200
Subject: [PATCH] UPD: transactionUtil: use transaction for dbedit object
 metadata retrival and enrich with object lang attrs (#733)

---
 frontend/src/util/transactionutil.js | 74 ++++++++++++++++++++++------
 1 file changed, 59 insertions(+), 15 deletions(-)

diff --git a/frontend/src/util/transactionutil.js b/frontend/src/util/transactionutil.js
index df303ad9c..f82857d21 100644
--- a/frontend/src/util/transactionutil.js
+++ b/frontend/src/util/transactionutil.js
@@ -1,7 +1,6 @@
 import {v4 as uuidv4} from 'uuid'
-import ObjectTypeService from '@/api-services.gen/wapi.object_type'
-import FunctionService from '@/api-services.gen/wapi.function'
 import ApiUtil from '@/util/apiutil'
+import TransactionService from '@/api-services/transaction.service'
 
 export default {
   getSysName(fq_name) {
@@ -171,25 +170,70 @@ export default {
     const parts = object_fq_name.split('.')
     const system = parts[0]
     const name = parts[1]
-    const object_result = ObjectTypeService.list(vm.$store.state, {
-      name_list: [name],
-      system_list: [system]
-    })
+    const object_result = TransactionService.execute(vm.$store.state,
+      [
+        {
+          name: 'wapi.object_type.list',
+          old: {
+            name_list: [name],
+            system_list: [system]
+          }
+        },
+        {
+          name: 'wapi.object_type_lang_dict.list',
+          old: {
+            name_list: [name],
+            system_list: [system]
+          }
+        },
+        {
+          name: 'wapi.object_type_attr_lang_dict.list',
+          old: {
+            object_type_list: [name],
+            system_list: [system]
+          }
+        },
+        {
+          name: 'wapi.function.list',
+          old: {
+            object_type_list: [name],
+            system_list: [system]
+          }
+        }
+      ]
+    )
     try {
-      let object_definition = await object_result
-      object_definition = object_definition.data[0]
-      if (object_definition.length !== 1) {
+      const object_definition = (await object_result).data
+      if (object_definition.object_type_list.length !== 1) {
         return false
       }
-      const obj_functions = await FunctionService.list(vm.$store.state, {
-        object_type_list: [name],
-        system_list: [system]
-      })
+      for (const object_definition_lang_attr in object_definition.object_type_lang_dict_list[0].language_dict) {
+        object_definition.object_type_list[0][object_definition_lang_attr] = object_definition.object_type_lang_dict_list[0].language_dict[object_definition_lang_attr]
+      }
+      const lang_by_fq_name = ApiUtil.dict_by_value_of_array(object_definition.object_type_attr_lang_dict_list, 'fq_name')
+      // Enrich function definitions with language attributes
+      const obj_functions = object_definition.function_list
+      for (const f of obj_functions) {
+        for (const func_param_name in f.parameters) {
+          const lang = lang_by_fq_name[`${system}.${name}.${func_param_name}`].language_dict
+          for (const object_function_lang_attr in lang) {
+            f.parameters[func_param_name][object_function_lang_attr] = lang[object_function_lang_attr]
+          }
+        }
+      }
+      // Enrich object definition with language attributes
+      for (const obj_attr_name in object_definition.object_type_list[0].attributes) {
+        const lang = lang_by_fq_name[`${system}.${name}.${obj_attr_name}`].language_dict
+        for (const object_function_lang_attr in lang) {
+          object_definition.object_type_list[0].attributes[obj_attr_name][object_function_lang_attr] = lang[object_function_lang_attr]
+        }
+      }
       return {
-        object_definition: object_definition[0],
-        object_functions: ApiUtil.dict_by_value_of_array(obj_functions.data[0], 'name')
+        object_definition: object_definition.object_type_list[0],
+        object_functions: ApiUtil.dict_by_value_of_array(obj_functions, 'name')
       }
     } catch (e) {
+      window.console.debug('Silenced error in validateObjectFQName', e)
       return false
     }
   },
-- 
GitLab