浏览代码

fix(gui): improve handling of Record-wide errors, see #423

Peter Thomassen 5 年之前
父节点
当前提交
a5d671269a
共有 3 个文件被更改,包括 12 次插入1 次删除
  1. 5 0
      webapp/src/components/Field/RRSet.vue
  2. 6 1
      webapp/src/components/Field/Record.vue
  3. 1 0
      webapp/src/views/CrudList.vue

+ 5 - 0
webapp/src/components/Field/RRSet.vue

@@ -5,6 +5,7 @@
             v-for="(item, index) in valueMap"
             v-for="(item, index) in valueMap"
             :key="item.id"
             :key="item.id"
             :content="item.content"
             :content="item.content"
+            :error-messages="errorMessages[index] ? errorMessages[index].content : []"
             :hide-label="index > 0"
             :hide-label="index > 0"
             :append-icon="value.length > 1 ? 'mdi-close' : ''"
             :append-icon="value.length > 1 ? 'mdi-close' : ''"
             ref="inputFields"
             ref="inputFields"
@@ -46,6 +47,10 @@ export default {
     RecordTXT,
     RecordTXT,
   },
   },
   props: {
   props: {
+    errorMessages: {
+      type: Array,
+      default: () => [],
+    },
     value: {
     value: {
       type: Array,
       type: Array,
       required: true,
       required: true,

+ 6 - 1
webapp/src/components/Field/Record.vue

@@ -11,7 +11,7 @@
         :label="hideLabel ? '' : field.label"
         :label="hideLabel ? '' : field.label"
         :class="hideLabel ? 'pt-0' : ''"
         :class="hideLabel ? 'pt-0' : ''"
         placeholder=" "
         placeholder=" "
-        :hide-details="!content.length || (!$v.fields.$each[index].$invalid && !$v.fields[index].$invalid)"
+        :hide-details="!content.length || !($v.fields.$each[index].$invalid || $v.fields[index].$invalid)"
         :error="$v.fields.$each[index].$invalid || $v.fields[index].$invalid"
         :error="$v.fields.$each[index].$invalid || $v.fields[index].$invalid"
         :error-messages="fieldErrorMessages(index)"
         :error-messages="fieldErrorMessages(index)"
         :style="{ width: fieldWidth(index) }"
         :style="{ width: fieldWidth(index) }"
@@ -33,6 +33,7 @@
         aria-hidden="true"
         aria-hidden="true"
         style="opacity: 0; position: absolute; width: auto; white-space: pre; z-index: -1"
         style="opacity: 0; position: absolute; width: auto; white-space: pre; z-index: -1"
       />
       />
+      {{ errorMessages.join(' ') }}
     </div>
     </div>
   </v-layout>
   </v-layout>
 </template>
 </template>
@@ -49,6 +50,10 @@ export default {
       type: String,
       type: String,
       required: true,
       required: true,
     },
     },
+    errorMessages: {
+      type: Array,
+      default: () => [],
+    },
     hideLabel: {
     hideLabel: {
       type: Boolean,
       type: Boolean,
       default: false,
       default: false,

+ 1 - 0
webapp/src/views/CrudList.vue

@@ -101,6 +101,7 @@
                       <v-alert
                       <v-alert
                               :value="createDialogError"
                               :value="createDialogError"
                               type="error"
                               type="error"
+                              style="overflow: auto"
                       >
                       >
                         {{ errors[errors.length - 1] }}
                         {{ errors[errors.length - 1] }}
                       </v-alert>
                       </v-alert>