@konfuzio/document-validation-ui 0.1.8 → 0.1.9-pre-release-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,32 +10,38 @@
10
10
  editAnnotation &&
11
11
  editAnnotation.id === emptyAnnotationId() &&
12
12
  'error-editing',
13
- isEmptyAnnotationEditable() ? '' : 'label-empty',
13
+ !isEmptyAnnotationEditable() && !isMissingAnnotation && 'label-empty',
14
14
  isAnnotationBeingEdited() && 'clicked',
15
- annotationIsNotFound(annotationSet, label) && 'missing-annotation',
15
+ isMissingAnnotation && 'missing-annotation',
16
16
  ]"
17
17
  :contenteditable="isEmptyAnnotationEditable()"
18
18
  @keypress.enter="saveEmptyAnnotationChanges"
19
19
  @click="handleEditEmptyAnnotation"
20
20
  @focus="handleEditEmptyAnnotation"
21
- >
22
- <span v-if="span && span.offset_string && isEmptyAnnotationEditable()">
23
- {{ span.offset_string }}
24
- </span>
21
+ ><!-- eslint-disable vue/no-v-html -->
25
22
  <span
26
- v-else-if="annotationIsNotFound(annotationSet, label)"
27
- class="not-found-text"
23
+ v-if="isFindingAnnotation"
24
+ v-html="$t('draw_box_document', { label_name: label.name })"
28
25
  >
26
+ </span>
27
+ <span v-else-if="isMissingAnnotation" class="not-found-text">
29
28
  {{ $t("missing_from_document") }}
30
29
  </span>
30
+ <span
31
+ v-else-if="span && span.offset_string && isEmptyAnnotationEditable()"
32
+ >
33
+ {{ span.offset_string }}
34
+ </span>
31
35
  <span v-else>
32
36
  {{ $t("no_data_found") }}
33
37
  </span>
38
+ <!--eslint-enable-->
34
39
  </span>
35
40
  </div>
36
41
  </template>
37
42
  <script>
38
43
  import { mapState, mapGetters } from "vuex";
44
+ import { isElementArray } from "../../utils/utils";
39
45
 
40
46
  /**
41
47
  * This component is responsible for managing empty annotations (labels with no annotations).
@@ -65,80 +71,50 @@ export default {
65
71
  type: Boolean,
66
72
  required: false,
67
73
  },
68
- },
69
- data() {
70
- return {
71
- isLoading: false,
72
- };
74
+ isMissingAnnotation: {
75
+ type: Boolean,
76
+ required: true,
77
+ default: false,
78
+ },
73
79
  },
74
80
  computed: {
75
- ...mapGetters("document", [
76
- "isAnnotationInEditMode",
77
- "getTextFromEntities",
78
- "annotationIsNotFound",
79
- "isDocumentReviewed",
80
- ]),
81
- ...mapGetters("selection", ["isValueArray"]),
81
+ ...mapGetters("document", ["isAnnotationInEditMode", "isDocumentReviewed"]),
82
82
  ...mapState("selection", ["spanSelection", "elementSelected"]),
83
83
  ...mapState("document", [
84
84
  "editAnnotation",
85
85
  "publicView",
86
- "selectedEntities",
87
86
  "showActionError",
88
87
  ]),
88
+ isFindingAnnotation() {
89
+ return (
90
+ this.editAnnotation &&
91
+ this.editAnnotation.id === this.emptyAnnotationId() &&
92
+ (!this.span || !this.span.offset_string)
93
+ );
94
+ },
89
95
  },
96
+
90
97
  watch: {
91
98
  span(newValue) {
92
99
  if (this.elementSelected === this.emptyAnnotationId() && newValue) {
93
- if (this.isValueArray(newValue))
100
+ if (isElementArray(newValue))
94
101
  newValue.map((span) => {
95
102
  if (span.offset_string) {
96
103
  span.offset_string =
97
104
  this.$refs.emptyAnnotation.textContent.trim();
98
105
  span.offset_string_original =
99
106
  this.$refs.emptyAnnotation.textContent.trim();
100
-
101
- this.setText(span.offset_string);
102
107
  }
103
108
  });
104
109
  }
105
110
  },
106
- editAnnotation(newAnnotation, oldAnnotation) {
107
- // verify if new annotation in edit mode is not this one and if this
108
- // one was selected before so we set the state to the previous one (like a cancel)
109
- if (oldAnnotation && oldAnnotation.id === this.emptyAnnotationId()) {
110
- this.cancelEmptyAnnotation(true);
111
- }
112
- },
113
- selectedEntities(newValue) {
114
- if (!newValue && this.isAnnotationBeingEdited(this.emptyAnnotationId())) {
115
- this.setText(
116
- this.$t("draw_box_document", { label_name: this.label.name })
117
- );
118
- return;
119
- }
120
-
121
- if (
122
- newValue &&
123
- this.editAnnotation &&
124
- this.emptyAnnotationId() === this.editAnnotation.id
125
- ) {
126
- const text = this.getTextFromEntities();
127
- this.setText(text);
128
- }
129
- },
130
111
  spanSelection(newValue) {
131
- if (this.elementSelected === this.emptyAnnotationId() && newValue) {
132
- const isSpanArray = Array.isArray(newValue);
112
+ if (!newValue) return;
133
113
 
134
- // Check if the bbox is empty
135
- if (
136
- (isSpanArray && !newValue[0].offset_string) ||
137
- (!isSpanArray && !newValue.offset_string)
138
- ) {
139
- this.$store.dispatch("document/resetEditAnnotation");
140
- this.$store.dispatch("selection/disableSelection");
141
- }
114
+ // // Check if the bbox has no string
115
+ if (newValue[0] && !newValue[0].offset_string) {
116
+ this.$store.dispatch("document/resetEditAnnotation");
117
+ this.$store.dispatch("selection/disableSelection");
142
118
  }
143
119
  },
144
120
  },
@@ -160,23 +136,22 @@ export default {
160
136
  if (
161
137
  this.publicView ||
162
138
  this.isDocumentReviewed ||
163
- this.annotationIsNotFound(this.annotationSet, this.label)
139
+ this.isMissingAnnotation
164
140
  )
165
141
  return;
166
142
 
167
143
  if (
168
144
  !this.publicView &&
169
145
  !this.isDocumentReviewed &&
170
- !this.isLoading &&
171
146
  this.elementSelected !== this.emptyAnnotationId()
172
147
  ) {
173
- this.setText(
174
- this.$t("draw_box_document", { label_name: this.label.name })
175
- );
148
+ this.$store.dispatch("selection/disableSelection");
149
+ this.$store.dispatch("selection/setSelectedEntities", null);
176
150
  this.$store.dispatch(
177
151
  "selection/selectElement",
178
152
  this.emptyAnnotationId()
179
153
  );
154
+
180
155
  this.$store.dispatch("document/setEditAnnotation", {
181
156
  id: this.emptyAnnotationId(),
182
157
  index: this.spanIndex,
@@ -186,28 +161,10 @@ export default {
186
161
  });
187
162
  }
188
163
  },
189
- cancelEmptyAnnotation(wasOutsideClick = false) {
190
- if (wasOutsideClick) {
191
- this.setText(this.$t("no_data_found"));
192
- } else {
193
- this.$store.dispatch("selection/disableSelection");
194
- }
195
-
196
- this.isLoading = false;
197
- this.$store.dispatch("document/setSelectedEntities", null);
198
-
199
- if (this.$refs.emptyAnnotation) {
200
- this.$refs.emptyAnnotation.blur();
201
- }
202
- },
203
164
  isEmptyAnnotationEditable() {
204
- if (this.selectedEntities && this.selectedEntities.length > 0) {
205
- return (
206
- this.elementSelected === this.emptyAnnotationId() && !this.isLoading
207
- );
208
- } else if (
165
+ if (
209
166
  (this.spanSelection && this.spanSelection[this.spanIndex] === 0) ||
210
- this.annotationIsNotFound(this.annotationSet, this.label)
167
+ this.isMissingAnnotation
211
168
  ) {
212
169
  return false;
213
170
  } else {
@@ -215,8 +172,7 @@ export default {
215
172
  this.elementSelected === this.emptyAnnotationId() &&
216
173
  this.spanSelection &&
217
174
  this.spanSelection[this.spanIndex] &&
218
- this.spanSelection[this.spanIndex].offset_string != null &&
219
- !this.isLoading
175
+ this.spanSelection[this.spanIndex].offset_string != null
220
176
  );
221
177
  }
222
178
  },
@@ -230,9 +186,6 @@ export default {
230
186
  // API call handled in parent component - AnnotationRow
231
187
  this.$emit("save-empty-annotation-changes");
232
188
  },
233
- setText(text) {
234
- this.$refs.emptyAnnotation.innerHTML = text;
235
- },
236
189
  },
237
190
  };
238
191
  </script>
@@ -36,7 +36,9 @@
36
36
  </div>
37
37
  <div
38
38
  v-if="
39
- selectedDocument && waitingForSplittingConfirmation(selectedDocument)
39
+ selectedDocument &&
40
+ waitingForSplittingConfirmation(selectedDocument) &&
41
+ !documentBeingSplit
40
42
  "
41
43
  >
42
44
  <SplittingSuggestionsModal />
@@ -101,10 +103,11 @@ export default {
101
103
  "selectedDocument",
102
104
  "splittingSuggestions",
103
105
  ]),
104
- ...mapState("edit", ["editMode", "splitOverview"]),
106
+ ...mapState("edit", ["editMode", "splitOverview", "documentBeingSplit"]),
105
107
  ...mapGetters("display", ["isMinimumWidth"]),
106
108
  ...mapGetters("document", ["waitingForSplittingConfirmation"]),
107
109
  },
110
+
108
111
  watch: {
109
112
  selectedDocument(newDocument, oldDocument) {
110
113
  if (newDocument && !oldDocument) {
@@ -231,7 +231,11 @@ export default {
231
231
  const newPage = { page: page, origin: origin };
232
232
  const removedPage = { page: 0, origin: origin };
233
233
 
234
- if (
234
+ if (this.splitSuggestionsEnabled && origin === "AI") {
235
+ // if manual suggestions were added but we enable automatic splitting,
236
+ // this last one takes over
237
+ this.splittingLines.splice(page - 1, 1, newPage);
238
+ } else if (
235
239
  page === this.splittingLines.length ||
236
240
  (!this.splitSuggestionsEnabled && !found && origin === "AI")
237
241
  ) {
@@ -239,10 +243,6 @@ export default {
239
243
  // Or if splitting is switched off, but some of the suggestion lines
240
244
  // were removed manually
241
245
  return;
242
- } else if (this.splitSuggestionsEnabled && origin === "AI") {
243
- // if manual suggestions were added but we enable automatic splitting,
244
- // this last one takes over
245
- this.splittingLines.splice(page - 1, 1, newPage);
246
246
  } else if (found) {
247
247
  // If splitting is switched off and we have manual splits,
248
248
  // those should stay unchanged
@@ -102,7 +102,10 @@ export default {
102
102
  this.selection.start,
103
103
  this.selection.end
104
104
  );
105
- this.$store.dispatch("selection/getTextFromBboxes", box);
105
+ this.$store.dispatch("selection/getTextFromBboxes", {
106
+ box,
107
+ entities: false,
108
+ });
106
109
  },
107
110
 
108
111
  /**
@@ -68,8 +68,8 @@
68
68
  v-if="!isAnnotationInEditMode(annotation.id)"
69
69
  :key="'ann' + annotation.id + '-' + index"
70
70
  :config="annotationRect(bbox, annotation.id)"
71
- @click="handleClickedAnnotation(annotation)"
72
- @mouseenter="onElementEnter"
71
+ @click="handleFocusedAnnotation(annotation, 'click')"
72
+ @mouseenter="handleFocusedAnnotation(annotation)"
73
73
  @mouseleave="onElementLeave"
74
74
  />
75
75
  </template>
@@ -221,7 +221,6 @@ export default {
221
221
  scaled: {
222
222
  ...box,
223
223
  },
224
- clickSelected: false,
225
224
  };
226
225
  });
227
226
  },
@@ -258,6 +257,7 @@ export default {
258
257
  "isSelecting",
259
258
  "selectionFromBbox",
260
259
  "spanSelection",
260
+ "selectedEntities",
261
261
  ]),
262
262
  ...mapState("display", [
263
263
  "scale",
@@ -271,7 +271,6 @@ export default {
271
271
  "editAnnotation",
272
272
  "selectedDocument",
273
273
  "publicView",
274
- "selectedEntities",
275
274
  ]),
276
275
  ...mapState("edit", ["editMode"]),
277
276
  ...mapGetters("display", ["visiblePageRange", "bboxToRect"]),
@@ -292,10 +291,13 @@ export default {
292
291
  scale() {
293
292
  this.closePopups(true);
294
293
  },
295
- selectedEntities(newValue) {
294
+ async selectedEntities(newValue) {
296
295
  if (!newValue) {
296
+ this.$store.dispatch("selection/setSpanSelection", null);
297
297
  this.closePopups(true);
298
298
  }
299
+
300
+ await this.$store.dispatch("selection/getTextFromEntities", newValue);
299
301
  },
300
302
  page(newValue, oldValue) {
301
303
  if (newValue.image_url !== oldValue.image_url) {
@@ -390,10 +392,16 @@ export default {
390
392
  });
391
393
  },
392
394
 
393
- handleClickedAnnotation(annotation) {
394
- this.closePopups(true);
395
+ handleFocusedAnnotation(annotation, trigger) {
395
396
  this.$store.dispatch("document/resetEditAnnotation");
396
- this.$store.dispatch("document/setSidebarAnnotationSelected", annotation);
397
+ this.$store.dispatch("document/setSidebarAnnotationSelected", {
398
+ annotation,
399
+ trigger,
400
+ });
401
+
402
+ if (trigger && trigger === "click") {
403
+ this.closePopups(true);
404
+ }
397
405
  },
398
406
 
399
407
  handleClickedEntity(entity) {
@@ -406,24 +414,22 @@ export default {
406
414
  return;
407
415
 
408
416
  // Check if we are creating a new Annotation
409
- // or if we are editing an existing or empty one
410
- const entityToAdd = {
411
- entity,
412
- content: entity.original.offset_string,
413
- };
417
+ // or if we are removing a previously selected entity
418
+ // or editing empty one
419
+ const entityToAdd = entity;
414
420
 
415
421
  const found = this.newAnnotation.find(
416
422
  (ann) =>
417
- ann.entity.scaled.width === entityToAdd.entity.scaled.width &&
418
- ann.content === entityToAdd.content
423
+ ann.scaled.width === entityToAdd.scaled.width &&
424
+ ann.original.offset_string === entityToAdd.original.offset_string
419
425
  );
420
426
 
421
427
  if (found) {
422
428
  this.newAnnotation = [
423
429
  ...this.newAnnotation.filter(
424
430
  (ann) =>
425
- ann.entity.scaled.width !== entityToAdd.entity.scaled.width &&
426
- ann.content !== entityToAdd.content
431
+ ann.scaled.width !== entityToAdd.scaled.width &&
432
+ ann.original.offset_string !== entityToAdd.original.offset_string
427
433
  ),
428
434
  ];
429
435
  } else {
@@ -432,11 +438,11 @@ export default {
432
438
 
433
439
  if (this.newAnnotation.length > 0) {
434
440
  this.$store.dispatch(
435
- "document/setSelectedEntities",
441
+ "selection/setSelectedEntities",
436
442
  this.newAnnotation
437
443
  );
438
444
  } else {
439
- this.$store.dispatch("document/setSelectedEntities", null);
445
+ this.$store.dispatch("selection/setSelectedEntities", null);
440
446
  }
441
447
  },
442
448
 
@@ -492,10 +498,10 @@ export default {
492
498
  if (this.newAnnotation && this.newAnnotation.length > 0) {
493
499
  entityIsSelected = this.newAnnotation.find((selectedEntity) => {
494
500
  return (
495
- selectedEntity.entity.original.offset_string ===
501
+ selectedEntity.original.offset_string ===
496
502
  entity.original.offset_string &&
497
- selectedEntity.entity.original.x0 === entity.original.x0 &&
498
- selectedEntity.entity.original.y0 === entity.original.y0
503
+ selectedEntity.original.x0 === entity.original.x0 &&
504
+ selectedEntity.original.y0 === entity.original.y0
499
505
  );
500
506
  });
501
507
  }
@@ -124,6 +124,9 @@ export default {
124
124
  zoomIn() {
125
125
  if (this.currentPercentage === this.maxPercentage) return;
126
126
 
127
+ // exit edit mode of Annotation if changing zoom during editing
128
+ this.cancelAnnotationEditMode();
129
+
127
130
  this.currentPercentage += this.defaultPercentage * 100;
128
131
  this.updateScale((this.defaultScale * this.currentPercentage) / 100);
129
132
  },
@@ -132,12 +135,18 @@ export default {
132
135
  return;
133
136
  }
134
137
 
138
+ // exit edit mode of Annotation if changing zoom during editing
139
+ this.cancelAnnotationEditMode();
140
+
135
141
  this.currentPercentage -= this.defaultPercentage * 100;
136
142
  this.updateScale((this.defaultScale * this.currentPercentage) / 100);
137
143
  },
138
144
  fitAuto() {
139
145
  if (this.currentPercentage === 50 || !this.defaultScale) return;
140
146
 
147
+ // exit edit mode of Annotation if changing zoom during editing
148
+ this.cancelAnnotationEditMode();
149
+
141
150
  // Always set to 50%
142
151
  this.updateScale(this.defaultScale * this.fitPercentage);
143
152
 
@@ -148,6 +157,11 @@ export default {
148
157
  this.$store.dispatch("display/updateScale", { scale });
149
158
  });
150
159
  },
160
+ cancelAnnotationEditMode() {
161
+ this.$store.dispatch("document/resetEditAnnotation");
162
+ this.$store.dispatch("selection/disableSelection");
163
+ this.$store.dispatch("selection/setSelectedEntities", null);
164
+ },
151
165
  },
152
166
  };
153
167
  </script>
@@ -110,7 +110,7 @@
110
110
  type="is-primary"
111
111
  class="popup-button primary-button"
112
112
  :label="$t('save')"
113
- :disabled="loading || !getTextFromEntities || !selectedLabel"
113
+ :disabled="loading || !spanSelection || !selectedLabel"
114
114
  @click.prevent="save"
115
115
  />
116
116
  </div>
@@ -158,22 +158,22 @@ export default {
158
158
  ...mapGetters("document", [
159
159
  "numberOfAnnotationSetGroup",
160
160
  "labelsFilteredForAnnotationCreation",
161
- "getTextFromEntities",
162
161
  ]),
162
+ ...mapState("selection", ["spanSelection"]),
163
163
  top() {
164
- const top = this.newAnnotation[0].entity.scaled.y - heightOfPopup; // subtract the height of the popup plus some margin
164
+ const top = this.newAnnotation[0].scaled.y - heightOfPopup; // subtract the height of the popup plus some margin
165
165
 
166
166
  //check if the popup will not go off the container on the top
167
- return this.newAnnotation[0].entity.scaled.y > heightOfPopup
167
+ return this.newAnnotation[0].scaled.y > heightOfPopup
168
168
  ? top
169
- : this.newAnnotation[0].entity.scaled.y +
170
- this.newAnnotation[0].entity.scaled.height +
169
+ : this.newAnnotation[0].scaled.y +
170
+ this.newAnnotation[0].scaled.height +
171
171
  margin;
172
172
  },
173
173
  left() {
174
174
  const left =
175
- this.newAnnotation[0].entity.scaled.x +
176
- this.newAnnotation[0].entity.scaled.width / 2 -
175
+ this.newAnnotation[0].scaled.x +
176
+ this.newAnnotation[0].scaled.width / 2 -
177
177
  widthOfPopup / 2; // add the entity half width to be centered and then subtract half the width of the popup
178
178
 
179
179
  //check if the popup will not go off the container
@@ -186,7 +186,15 @@ export default {
186
186
  }
187
187
  },
188
188
  textFromEntities() {
189
- return this.getTextFromEntities();
189
+ if (!this.spanSelection) return;
190
+
191
+ // get array of all offset strings
192
+ let text = this.spanSelection.map((span) => {
193
+ return span.offset_string;
194
+ });
195
+
196
+ // join all the strings to become a single string of text
197
+ return text.join().split(",").join(" ");
190
198
  },
191
199
  },
192
200
  watch: {
@@ -210,13 +218,16 @@ export default {
210
218
  },
211
219
  methods: {
212
220
  close() {
213
- this.$store.dispatch("document/setSelectedEntities", null);
221
+ this.$store.dispatch("selection/setSelectedEntities", null);
214
222
  this.$emit("close");
215
223
  },
216
224
  save() {
217
225
  this.loading = true;
218
226
  const span = this.newAnnotation.flatMap((ann) => {
219
- return { ...ann.entity.original, offset_string: ann.content };
227
+ return {
228
+ ...ann.original,
229
+ offset_string: ann.original.offset_string,
230
+ };
220
231
  });
221
232
 
222
233
  const annotationToCreate = {
@@ -3,7 +3,7 @@
3
3
  "no_label_sets_found_description": "In diesem Dokument sind keine Label Sets vorhanden.",
4
4
  "no_labels_found": "Keine Labels vorhanden",
5
5
  "no_labels_description": "In diesem Label Set sind keine Labels vorhanden.",
6
- "resolution_not_supported": "Die App wird bei dieser Auflösung nicht unterstützt",
6
+ "resolution_not_supported": "Die aktuelle Auflösung wird nicht unterstützt",
7
7
  "upload_documents": "Laden Sie Ihre Dokumente hoch",
8
8
  "request_trial": "Fordern Sie Ihren Probezugang an",
9
9
  "warning_message": "Die KI kann nicht trainiert werden, wenn Sie den Text manuell ändern.",
@@ -26,11 +26,11 @@
26
26
  "invalid_email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
27
27
  "members": "Mitglieder",
28
28
  "select": "Auswählen",
29
- "document_successfully_handed": "Dokument erfolgreich übergeben an",
30
- "handover_not_possible": "Eine Übergabe war nicht möglich. Bitte versuchen Sie es später erneut.",
31
- "small_viewport_title": "Kleine Ansichtsfenstergröße",
32
- "small_viewport_info": "Es tut uns leid, aber Konfuzio ist nicht für diese Ansichtsfenstergröße optimiert. Für eine bessere Bedienbarkeit öffnen Sie es bitte in einem größeren Ansichtsfenster.",
33
- "ok": "Ok, verstanden",
29
+ "document_successfully_handed": "Dokument erfolgreich zugewiesen an",
30
+ "handover_not_possible": "Eine Zuweisung war nicht möglich. Bitte versuchen Sie es später erneut.",
31
+ "small_viewport_title": "Kleine Fenstergröße",
32
+ "small_viewport_info": "Es tut uns leid, aber Konfuzio ist nicht für diese Fenstergröße optimiert. Für eine bessere Bedienbarkeit öffnen Sie es bitte in einem größeren Ansichtsfenster.",
33
+ "ok": "Ok",
34
34
  "no_data_found": "Zum Bearbeiten anklicken...",
35
35
  "draw_box_document": "Find <i>{label_name}</i> in the document",
36
36
  "confidence": "Konfidenz",
@@ -52,9 +52,10 @@
52
52
  "missing_annotation": "Als fehlend markieren",
53
53
  "ann_exists": "Eine Annotation für dieses Label und Label-Set existiert bereits.",
54
54
  "lite_mode": "Schreibgeschützt",
55
- "limited_functionalities": "Sie verwenden die schreibgeschützte Version mit begrenzten Funktionalitäten.",
55
+ "limited_functionalities": "Sie verwenden die schreibgeschützte Version mit begrenzte Funktionalität.",
56
56
  "split": "Aufteilen",
57
- "reorder": "Umsortieren",
57
+ "reorder": "Sortieren",
58
+ "rotate": "Rotieren",
58
59
  "edit_error": "Die Änderungen konnten nicht gespeichert werden. Bitte versuchen Sie es später erneut.",
59
60
  "overview": "Übersicht",
60
61
  "select_pages": "Sie können nun Seiten drehen, neu sortieren und Dokumente splitten.",
@@ -116,7 +117,7 @@
116
117
  "split_modal_title": "Dokument aufteilen",
117
118
  "split_modal_body": "Wir haben Ihre Datei gescannt und <strong>{number_of_split_documents}</strong> verschiedene Dokumente gefunde. <strong>Wir empfehlen dringend,</strong> sie zu diesem Zeitpunkt aufzuteilen, da sonst alle Fortschritte, die Sie gemacht haben, aufgrund der erneuten Extraktion der Dokumentdaten verloren gehen.",
118
119
  "do_it_later": "Ich werde es später machen",
119
- "review_now": "Jetzt reviewen",
120
+ "review_now": "Jetzt überprüfen",
120
121
  "recommended": "Empfohlen",
121
122
  "smart_split": "Smart Split",
122
123
  "smart_split_suggestions": "Unsere Smart Split-Vorschläge sind grün hervorgehoben",
@@ -125,10 +126,10 @@
125
126
  "splitting_warning": "Beachten Sie bitte, dass alle Annotationen, die Sie in diesem Dokument gemacht haben, nicht gespeichert werden, wenn Sie fortfahren.",
126
127
  "no": "Nein",
127
128
  "yes": "Ja",
128
- "split_modal_no_suggestions": "Do you need to split the document? <strong>We strongly recommend</strong> splitting it at this stage, otherwise all the progress you’ve made will be lost in the future.",
129
+ "split_modal_no_suggestions": "Soll das Dokument geteilt werden? Wir <strong>empfehlen</strong> das Dokument jetzt zuteilen, da sonst alle Fortschritte, die in der Zwischenzeit gemacht werden,verloren gehen.",
129
130
  "missing_from_document": "Fehlt im Dokument",
130
- "edit_label": "Edit label",
131
- "delete_label": "Delete label",
132
- "table": "Table",
133
- "delete_table": "Delete table"
131
+ "edit_label": "Label editieren",
132
+ "delete_label": "Label löschen",
133
+ "table": "Tabelle",
134
+ "prepare_document": "Dokument vorbereiten"
134
135
  }
@@ -131,6 +131,5 @@
131
131
  "missing_from_document": "Missing from the document",
132
132
  "edit_label": "Edit label",
133
133
  "delete_label": "Delete label",
134
- "table": "Table",
135
- "delete_table": "Delete table"
134
+ "table": "Table"
136
135
  }
@@ -124,10 +124,12 @@
124
124
  "splitting_warning": "Ten en cuenta que se perderán las anotaciones que hayas confirmado en el documento.",
125
125
  "no": "No",
126
126
  "yes": "Sí",
127
- "split_modal_no_suggestions": "Do you need to split the document? <strong>We strongly recommend</strong> splitting it at this stage, otherwise all the progress you’ve made will be lost in the future.",
127
+ "split_modal_no_suggestions": "¿Necesitas dividir el documento? <strong>Te recomendamos</strong> hacerlo en este momento, o de lo contrario se perderán los cambios realizados.",
128
128
  "missing_from_document": "Falta en el documento",
129
129
  "edit_label": "Edit label",
130
130
  "delete_label": "Delete label",
131
131
  "table": "Table",
132
- "delete_table": "Delete table"
132
+ "new_multi_ann_description": "Selecciona un modelo de datos de los existentes, luego deselecciona las etiquetas que no existen en este documento.",
133
+ "new_multi_ann_title": "Crear múltiples anotaciones",
134
+ "prepare_document": "Prepara el documento"
133
135
  }
@@ -102,7 +102,7 @@ const actions = {
102
102
  state.documentsInProject[i]
103
103
  )
104
104
  ) {
105
- dispatch("document/setDocumentError", true);
105
+ dispatch("document/setDocumentError", null, { root: true });
106
106
  // If error, add 1
107
107
  // Then go to next item
108
108
  errors += 1;