From cacf3d1ed74040c9b0a3ba8f5b7c565cc4600194 Mon Sep 17 00:00:00 2001
From: Alexander Kaschta <alexander.kaschta9@kit.edu>
Date: Wed, 26 Jul 2023 16:44:37 +0200
Subject: [PATCH] UPD: Make FQDN description nullable as non expert

---
 frontend/src/components/DBEditor.vue        | 11 +++++++++++
 frontend/src/components/DataEditField.vue   | 10 ++++++++--
 frontend/src/components/FQDNRecordTable.vue |  3 ++-
 frontend/src/components/FQDNTable.vue       |  4 +++-
 frontend/src/views/dnsvs/BCDRecords.vue     |  3 ++-
 frontend/src/views/dnsvs/DNSVSEntry.vue     |  3 ++-
 frontend/src/views/dnsvs/DomainInspect.vue  |  3 ++-
 7 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/frontend/src/components/DBEditor.vue b/frontend/src/components/DBEditor.vue
index 3813824ea..5377daabc 100644
--- a/frontend/src/components/DBEditor.vue
+++ b/frontend/src/components/DBEditor.vue
@@ -26,6 +26,7 @@
                          :attribute_reference_name="object_definition_reference_names_by_attribute[attr]"
                          :attribute_referencing="object_definition_referencing_by_attribute[attr]"
                          :attribute_name="attr"
+                         :attribute_non_expert_nullable="nullable_non_expert.includes(attr)"
                          :input_reducer="input_reducer[attr]"
                          v-bind:key="attr"
                          v-if="'new' in data && (data.new.isRequired || non_optionals.includes(attr))"></DataEditField>
@@ -39,6 +40,7 @@
                              :attribute_reference_name="object_definition_reference_names_by_attribute[attr]"
                              :attribute_referencing="object_definition_referencing_by_attribute[attr]"
                              :attribute_name="attr"
+                             :attribute_non_expert_nullable="nullable_non_expert.includes(attr)"
                              :input_reducer="input_reducer[attr]"
                              v-bind:key="attr"
                              v-if="'new' in data && (!data.new.isRequired && !non_optionals.includes(attr))"></DataEditField>
@@ -54,6 +56,7 @@
                        :attribute_reference_name="object_definition_reference_names_by_attribute[attr]"
                        :attribute_referencing="object_definition_referencing_by_attribute[attr]"
                        :attribute_name="attr"
+                       :attribute_non_expert_nullable="nullable_non_expert.includes(attr)"
                        :input_reducer="input_reducer[attr]"
                        v-for="attr in non_optionals_order"
                        v-bind:key="attr"
@@ -67,6 +70,7 @@
                              :attribute_reference_name="object_definition_reference_names_by_attribute[attr]"
                              :attribute_referencing="object_definition_referencing_by_attribute[attr]"
                              :attribute_name="attr"
+                             :attribute_non_expert_nullable="nullable_non_expert.includes(attr)"
                              :input_reducer="input_reducer[attr]"
                              v-bind:key="attr"
                              v-if="'new' in data && !non_optionals_order.includes(attr)"
@@ -219,6 +223,13 @@ export default {
       required: false,
       type: Array
     },
+    nullable_non_expert: {
+      required: false,
+      default() {
+        return []
+      },
+      type: Array
+    },
     old_uuid: {
       required: false,
       type: String,
diff --git a/frontend/src/components/DataEditField.vue b/frontend/src/components/DataEditField.vue
index 7bb7c180a..0cc1cf847 100644
--- a/frontend/src/components/DataEditField.vue
+++ b/frontend/src/components/DataEditField.vue
@@ -47,8 +47,8 @@
       ></b-form-input>
       <input type="hidden" v-if="input_reducer === false" :value="attribute_preset || ''" :name="attribute_name"/>
       <b-checkbox :name="attribute_name+'_null'" v-model="make_null"
-                  v-if="$store.state.expert && object_attribute.new.is_nullable">NULL
-        <NetvsExpertMarker/>
+                  v-if="($store.state.expert || attribute_non_expert_nullable) && object_attribute.new.is_nullable">NULL
+        <NetvsExpertMarker v-if="!attribute_non_expert_nullable"/>
       </b-checkbox>
     </b-form-group>
   </div>
@@ -106,6 +106,12 @@ export default {
     object_attribute: {
       required: true
     },
+    attribute_non_expert_nullable: {
+      required: false,
+      default() {
+        return false
+      }
+    },
     attribute_referencing: null,
     attribute_reference_name: null,
     attribute_preset: null,
diff --git a/frontend/src/components/FQDNRecordTable.vue b/frontend/src/components/FQDNRecordTable.vue
index e8771bab6..d74ca5116 100644
--- a/frontend/src/components/FQDNRecordTable.vue
+++ b/frontend/src/components/FQDNRecordTable.vue
@@ -99,7 +99,8 @@
       <DBEditor :presets="db_editor_presets" modal_id="edit_fqdn"
                 :object_title="object_title" :input_reducer="full_edit_fqdn_reducer"
                 object_function="update" object_fq_name="dns.fqdn" :old_data="db_editor_old_data"
-                :non_optionals_order="['value', 'description']">
+                :non_optionals_order="['value', 'description']"
+                :nullable_non_expert="['description']">
       </DBEditor>
     </Loading>
   </div>
diff --git a/frontend/src/components/FQDNTable.vue b/frontend/src/components/FQDNTable.vue
index 02d48d3d8..1f1a002fb 100644
--- a/frontend/src/components/FQDNTable.vue
+++ b/frontend/src/components/FQDNTable.vue
@@ -91,7 +91,9 @@
                 :old_data="db_editor_old_data"
                 :presets="db_editor_presets"
                 :non_optionals_order="['value', 'description', 'type']"
-                :object_function="db_editor_function" object_fq_name="dns.fqdn"></DBEditor>
+                :object_function="db_editor_function" object_fq_name="dns.fqdn"
+                :nullable_non_expert="['description']">
+      </DBEditor>
 
     </div>
   </Loading>
diff --git a/frontend/src/views/dnsvs/BCDRecords.vue b/frontend/src/views/dnsvs/BCDRecords.vue
index 5c3aa32f6..13c15a936 100644
--- a/frontend/src/views/dnsvs/BCDRecords.vue
+++ b/frontend/src/views/dnsvs/BCDRecords.vue
@@ -284,7 +284,8 @@
         <DBEditor :presets="db_editor_presets" modal_id="edit_fqdn"
                   :object_title="object_title" :input_reducer="full_edit_fqdn_reducer"
                   object_function="update" object_fq_name="dns.fqdn" :old_data="db_editor_old_data"
-                  :non_optionals_order="['value', 'description']">
+                  :non_optionals_order="['value', 'description']"
+                  :nullable_non_expert="['description']">
         </DBEditor>
         <EVLogViewer v-if="bcd" modal_id="evlog_bcd" :title="'BCD \''+ bcd.name + '\''"
                      ref_obj_fq="nd.bcd" :refobj_id_value="bcd.gpk"></EVLogViewer>
diff --git a/frontend/src/views/dnsvs/DNSVSEntry.vue b/frontend/src/views/dnsvs/DNSVSEntry.vue
index 458b016a7..5b62997ea 100644
--- a/frontend/src/views/dnsvs/DNSVSEntry.vue
+++ b/frontend/src/views/dnsvs/DNSVSEntry.vue
@@ -44,7 +44,8 @@
     </DBEditor>
     <DBEditor :input_reducer="create_fqdn_reducer" modal_id="create_fqdn_entry"
               object_function="create" object_fq_name="dns.fqdn"
-              :non_optionals_order="['value', 'type', 'description']">
+              :non_optionals_order="['value', 'type', 'description']"
+              :nullable_non_expert="['description']">
     </DBEditor>
   </div>
 </template>
diff --git a/frontend/src/views/dnsvs/DomainInspect.vue b/frontend/src/views/dnsvs/DomainInspect.vue
index 8edbc9358..38ac962b8 100644
--- a/frontend/src/views/dnsvs/DomainInspect.vue
+++ b/frontend/src/views/dnsvs/DomainInspect.vue
@@ -19,7 +19,8 @@
               :object_title="object_title"
               :non_optionals_order="['value', 'description', 'type']"
               :input_reducer="edit_fqdn_reducer"
-              object_function="update" object_fq_name="dns.fqdn" :old_data="db_editor_old_data">
+              object_function="update" object_fq_name="dns.fqdn" :old_data="db_editor_old_data"
+              :nullable_non_expert="['description']">
     </DBEditor>
     <EVLogViewer v-if="fqdn" modal_id="evlog_fqdn" :title="'FQDN \''+ fqdn.value + '\''"
                  ref_obj_fq="dns.fqdn" refobj_id_field="value_list" :refobj_id_value="[fqdn.value]"></EVLogViewer>
-- 
GitLab