@konfuzio/document-validation-ui 0.1.5-automatic-document-splitting-3 → 0.1.5-styles-refactor

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.
Files changed (44) hide show
  1. package/dist/css/app.css +1 -1
  2. package/dist/index.html +1 -1
  3. package/dist/js/app.js +1 -1
  4. package/dist/js/app.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/.DS_Store +0 -0
  7. package/src/api.js +31 -21
  8. package/src/assets/images/ServerImage.vue +5 -4
  9. package/src/assets/images/SplitZigZag.vue +14 -47
  10. package/src/assets/scss/document_category.scss +1 -0
  11. package/src/assets/scss/document_dashboard.scss +0 -6
  12. package/src/assets/scss/document_edit.scss +46 -131
  13. package/src/assets/scss/main.scss +666 -7
  14. package/src/assets/scss/variables.scss +0 -719
  15. package/src/components/App.vue +3 -2
  16. package/src/components/DocumentAnnotations/CategorizeModal.vue +2 -22
  17. package/src/components/DocumentAnnotations/DocumentAnnotations.vue +3 -11
  18. package/src/components/DocumentCategory.vue +5 -13
  19. package/src/components/DocumentDashboard.vue +6 -17
  20. package/src/components/DocumentEdit/DocumentEdit.vue +78 -220
  21. package/src/components/DocumentEdit/EditPages.vue +18 -29
  22. package/src/components/DocumentEdit/EditSidebar.vue +45 -95
  23. package/src/components/DocumentEdit/SplitOverview.vue +5 -4
  24. package/src/components/{DocumentModals/DocumentErrorModal.vue → DocumentError.vue} +4 -3
  25. package/src/components/DocumentPage/DocumentPage.vue +9 -7
  26. package/src/components/DocumentPage/ScrollingDocument.vue +34 -4
  27. package/src/components/DocumentPage/ScrollingPage.vue +4 -5
  28. package/src/components/DocumentThumbnails/DocumentThumbnails.vue +14 -11
  29. package/src/components/DocumentTopBar/DocumentTopBarButtons.vue +20 -6
  30. package/src/components/{DocumentModals/NotOptimizedViewportModal.vue → NotOptimizedViewportModal.vue} +2 -2
  31. package/src/locales/de.json +2 -15
  32. package/src/locales/en.json +1 -15
  33. package/src/locales/es.json +1 -14
  34. package/src/store/display.js +7 -0
  35. package/src/store/document.js +16 -41
  36. package/src/store/edit.js +50 -68
  37. package/src/store/project.js +14 -14
  38. package/src/assets/images/MagicWandIcon.vue +0 -16
  39. package/src/assets/images/StarIcon.vue +0 -16
  40. package/src/assets/scss/splitting_confirmation_modal.scss +0 -41
  41. package/src/components/DocumentEdit/EditConfirmationModal.vue +0 -54
  42. package/src/components/DocumentEdit/SidebarButtons.vue +0 -53
  43. package/src/components/DocumentEdit/SplitInfoBar.vue +0 -19
  44. package/src/components/DocumentModals/SplittingSuggestionsModal.vue +0 -121
@@ -48,29 +48,23 @@
48
48
  <div
49
49
  :class="[
50
50
  'splitting-lines',
51
- splittingLines &&
52
- splittingLines[index].page === page.number &&
51
+ activeSplittingLines &&
52
+ activeSplittingLines[index] === page.number &&
53
53
  'active-split',
54
54
  ]"
55
- @click="handleSplittingLines(page.number, 'manual')"
55
+ @click="handleSplittingLines(page)"
56
56
  >
57
57
  <div class="scissors-icon">
58
58
  <b-icon icon="scissors" class="is-small" />
59
59
  </div>
60
60
  <div
61
- v-if="splittingLines && splittingLines[index].page === page.number"
61
+ v-if="
62
+ activeSplittingLines &&
63
+ activeSplittingLines[index] === page.number
64
+ "
62
65
  class="lines"
63
66
  >
64
- <SplitZigZag
65
- :color="
66
- splittingLines &&
67
- splittingLines[index].origin &&
68
- splittingLines[index].origin === 'AI' &&
69
- splitSuggestionsEnabled
70
- ? 'green'
71
- : 'dark'
72
- "
73
- />
67
+ <SplitZigZag />
74
68
  </div>
75
69
  <div v-else class="lines">
76
70
  <SplitLines />
@@ -104,14 +98,10 @@ export default {
104
98
  draggable,
105
99
  },
106
100
  props: {
107
- splittingLines: {
101
+ activeSplittingLines: {
108
102
  type: Array,
109
103
  default: null,
110
104
  },
111
- splitSuggestionsEnabled: {
112
- type: Boolean,
113
- default: false,
114
- },
115
105
  },
116
106
  data() {
117
107
  return {
@@ -119,41 +109,39 @@ export default {
119
109
  selected: null,
120
110
  };
121
111
  },
122
-
123
112
  computed: {
124
113
  ...mapState("document", [
125
114
  "pages",
126
115
  "recalculatingAnnotations",
127
116
  "selectedDocument",
128
- "splittingSuggestions",
129
117
  ]),
130
118
  ...mapState("edit", [
131
119
  "editMode",
132
- "pagesForPostprocess",
120
+ "documentPagesListForEditMode",
133
121
  "splitOverview",
134
122
  "selectedPages",
135
123
  "splitOverview",
136
124
  ]),
137
125
  },
138
126
  watch: {
139
- pagesForPostprocess(newValue, oldValue) {
127
+ documentPagesListForEditMode(newValue, oldValue) {
140
128
  if (newValue !== oldValue) {
141
129
  this.editPages = newValue;
142
130
  }
143
131
  },
144
132
  editPages(newValue, oldValue) {
145
133
  if (newValue !== oldValue) {
146
- this.$store.dispatch("edit/setPagesForPostprocess", newValue);
134
+ this.$store.dispatch("edit/setDocumentPagesListForEditMode", newValue);
147
135
  }
148
136
  },
149
137
  splitOverview(newValue) {
150
138
  if (newValue) {
151
- this.editPages = this.pagesForPostprocess;
139
+ this.editPages = this.documentPagesListForEditMode;
152
140
  }
153
141
  },
154
142
  },
155
143
  mounted() {
156
- this.editPages = this.pagesForPostprocess;
144
+ this.editPages = this.documentPagesListForEditMode;
157
145
  },
158
146
  methods: {
159
147
  handlePageChange(pageNumber) {
@@ -196,10 +184,11 @@ export default {
196
184
  },
197
185
  getRotation(pageId) {
198
186
  // rotate page
199
- return this.pagesForPostprocess?.find((p) => p.id === pageId)?.angle;
187
+ return this.documentPagesListForEditMode?.find((p) => p.id === pageId)
188
+ ?.angle;
200
189
  },
201
- handleSplittingLines(page, origin) {
202
- this.$emit("handle-splitting-lines", page, origin);
190
+ handleSplittingLines(page) {
191
+ this.$emit("handle-splitting-lines", page);
203
192
  },
204
193
  checkMove(event) {
205
194
  this.$emit("check-move", event);
@@ -1,105 +1,75 @@
1
1
  <template>
2
2
  <div class="edit-sidebar">
3
- <div class="buttons-container">
4
- <div class="rotate-selected edit-buttons">
5
- <SidebarButtons
6
- :show-rotate-button="true"
7
- :button-disabled="buttonDisabled"
8
- :button-text="$t('rotate_selected')"
9
- :icon="'arrow-rotate-left'"
10
- @rotate="rotateLeft"
11
- />
12
-
13
- <SidebarButtons
14
- :show-rotate-button="true"
15
- :button-disabled="buttonDisabled"
16
- :button-text="$t('rotate_selected')"
17
- :icon="'arrow-rotate-right'"
18
- @rotate="rotateRight"
19
- />
3
+ <div class="sidebar-header">
4
+ <h3 class="sidebar-title">
5
+ {{ $t("edit_document") }}
6
+ </h3>
7
+ <p class="description">
8
+ {{ $t("edit_early_access") }}
9
+ </p>
10
+ <p class="description">
11
+ {{ $t("select_pages") }}
12
+ </p>
13
+ </div>
20
14
 
15
+ <div class="buttons-container">
16
+ <div class="rotate-selected rotate">
21
17
  <p :class="['pages-selected', buttonDisabled && 'disabled']">
22
18
  {{ selectedPages.length }} {{ $t("selected") }}
23
19
  </p>
20
+ <b-button
21
+ class="rotate-button primary-button"
22
+ :disabled="buttonDisabled"
23
+ @click="rotateLeft"
24
+ >
25
+ <div class="button-content">
26
+ <b-icon icon="arrow-rotate-left" class="is-small" />
27
+ <span class="button-text">{{ $t("rotate_selected") }}</span>
28
+ </div>
29
+ </b-button>
30
+ <b-button
31
+ class="rotate-button primary-button"
32
+ :disabled="buttonDisabled"
33
+ @click="rotateRight"
34
+ >
35
+ <div class="button-content">
36
+ <b-icon icon="arrow-rotate-right" class="is-small" />
37
+ <span class="button-text">{{ $t("rotate_selected") }}</span>
38
+ </div>
39
+ </b-button>
24
40
  </div>
25
41
 
26
- <div class="rotate-all edit-buttons">
27
- <SidebarButtons
28
- :show-rotate-button="true"
29
- :button-disabled="false"
30
- :button-text="$t('rotate_all')"
31
- :icon="'arrow-rotate-left'"
32
- @rotate="rotateAllLeft"
33
- />
34
-
35
- <SidebarButtons
36
- :show-rotate-button="true"
37
- :button-disabled="false"
38
- :button-text="$t('rotate_all')"
39
- :icon="'arrow-rotate-right'"
40
- @rotate="rotateAllRight"
41
- />
42
+ <div class="rotate-all rotate">
43
+ <b-button class="rotate-button primary-button" @click="rotateAllLeft">
44
+ <b-icon icon="arrow-rotate-left" class="is-small" />
45
+ <span class="button-text">{{ $t("rotate_all") }}</span>
46
+ </b-button>
47
+ <b-button class="rotate-button primary-button" @click="rotateAllRight">
48
+ <b-icon icon="arrow-rotate-right" class="is-small" />
49
+ <span class="button-text">{{ $t("rotate_all") }}</span>
50
+ </b-button>
42
51
  </div>
43
52
  </div>
44
- <div class="split smart-split">
45
- <b-tooltip
46
- multilined
47
- :active="!documentHasProposedSplit(selectedDocument)"
48
- position="is-bottom"
49
- class="bottom-aligned"
50
- :label="tooltipInfo"
51
- >
52
- <b-field>
53
- <b-switch
54
- :value="true"
55
- size="is-small"
56
- v-model="switchStatus"
57
- :disabled="!documentHasProposedSplit(selectedDocument)"
58
- >
59
- <span class="switch-text">{{ $t("smart_split") }}</span>
60
- <span
61
- v-if="documentHasProposedSplit(selectedDocument)"
62
- class="new-badge"
63
- >{{ newText }}</span
64
- >
65
- </b-switch>
66
- </b-field>
67
- </b-tooltip>
68
- </div>
69
53
  </div>
70
54
  </template>
71
55
 
72
56
  <script>
73
- import { mapState, mapGetters } from "vuex";
74
- import { nextTick } from "vue";
75
- import SidebarButtons from "./SidebarButtons";
76
-
77
57
  /**
78
58
  * This component renders buttons to rotate single pages or all pages
79
59
  * in edit mode
80
60
  * */
61
+
62
+ import { mapState } from "vuex";
63
+
81
64
  export default {
82
65
  name: "EditSidebar",
83
- components: {
84
- SidebarButtons,
85
- },
86
66
  data() {
87
67
  return {
88
68
  buttonDisabled: true,
89
- tooltipInfo: null,
90
- newText: this.$t("new"),
91
- switchStatus: true,
92
69
  };
93
70
  },
94
- props: {
95
- splitSuggestionsEnabled: {
96
- type: Boolean,
97
- },
98
- },
99
71
  computed: {
100
72
  ...mapState("edit", ["selectedPages"]),
101
- ...mapState("document", ["splittingSuggestions", "selectedDocument"]),
102
- ...mapGetters("document", ["documentHasProposedSplit"]),
103
73
  },
104
74
  watch: {
105
75
  selectedPages(newValue) {
@@ -109,26 +79,6 @@ export default {
109
79
  this.buttonDisabled = true;
110
80
  }
111
81
  },
112
- switchStatus(newValue) {
113
- if (this.splittingSuggestions && this.splittingSuggestions.length > 0)
114
- this.$emit("handle-splitting-suggestions", newValue);
115
- },
116
- splitSuggestionsEnabled(newValue) {
117
- if (!newValue) {
118
- this.switchStatus = false;
119
- }
120
- },
121
- },
122
- mounted() {
123
- this.tooltipInfo = this.$t("no_splitting_suggestions");
124
-
125
- nextTick(() => {
126
- if (this.newText) {
127
- this.newText = this.$t("new").toUpperCase();
128
- }
129
-
130
- this.switchStatus = this.splitSuggestionsEnabled;
131
- });
132
82
  },
133
83
  methods: {
134
84
  rotateLeft() {
@@ -112,7 +112,7 @@ export default {
112
112
  },
113
113
  computed: {
114
114
  ...mapState("document", ["selectedDocument", "pages"]),
115
- ...mapState("edit", ["updatedDocument", "pagesForPostprocess"]),
115
+ ...mapState("edit", ["updatedDocument", "documentPagesListForEditMode"]),
116
116
  },
117
117
  methods: {
118
118
  handleBackButton() {
@@ -162,11 +162,11 @@ export default {
162
162
  return name.split(".").slice(0, -1).join(".");
163
163
  },
164
164
  getImageUrl(page) {
165
- if (!this.pagesForPostprocess || !this.pages || !page) return;
165
+ if (!this.documentPagesListForEditMode || !this.pages || !page) return;
166
166
 
167
167
  // returns the first thumbnail in the pages array
168
168
  // for each new document
169
- const image = this.pagesForPostprocess.find(
169
+ const image = this.documentPagesListForEditMode.find(
170
170
  (p) => p.number === page.pages[0].number
171
171
  );
172
172
 
@@ -174,7 +174,8 @@ export default {
174
174
  },
175
175
  getRotation(pageId) {
176
176
  // rotate page
177
- return this.pagesForPostprocess?.find((p) => p.id === pageId)?.angle;
177
+ return this.documentPagesListForEditMode?.find((p) => p.id === pageId)
178
+ ?.angle;
178
179
  },
179
180
  },
180
181
  };
@@ -29,10 +29,11 @@
29
29
  </template>
30
30
 
31
31
  <script>
32
- import ErrorIcon from "../../assets/images/ErrorIcon";
32
+ import { mapState } from "vuex";
33
+ import ErrorIcon from "../assets/images/ErrorIcon";
33
34
 
34
35
  export default {
35
- name: "DocumentErrorModal",
36
+ name: "DocumentError",
36
37
  components: {
37
38
  ErrorIcon,
38
39
  },
@@ -53,4 +54,4 @@ export default {
53
54
  };
54
55
  </script>
55
56
 
56
- <style scoped lang="scss" src="../../assets/scss/document_error.scss"></style>
57
+ <style scoped lang="scss" src="../assets/scss/document_error.scss"></style>
@@ -438,19 +438,21 @@ export default {
438
438
  return;
439
439
  }
440
440
  const image = new Image();
441
- api.IMG_REQUEST.get(
442
- `${this.page.image_url}?${this.selectedDocument.downloaded_at}`
443
- )
444
- .then((response) => {
445
- return response.data;
446
- })
441
+ if (process.env.NODE_ENV === "test") {
442
+ return;
443
+ }
444
+ api
445
+ .makeImageRequest(
446
+ `${this.page.image_url}?${this.selectedDocument.downloaded_at}`
447
+ )
447
448
  .then((myBlob) => {
448
449
  image.src = URL.createObjectURL(myBlob);
449
450
  image.onload = () => {
450
451
  // set image only when it is loaded
451
452
  this.image = image;
452
453
  };
453
- });
454
+ })
455
+ .catch((error) => {});
454
456
  },
455
457
 
456
458
  /**
@@ -11,8 +11,9 @@
11
11
  "
12
12
  >
13
13
  <ScrollingPage
14
- v-for="page in editMode ? pagesForPostprocess : pages"
14
+ v-for="page in editMode ? documentPagesListForEditMode : pages"
15
15
  :key="page.number"
16
+ ref="scrollingPage"
16
17
  :page="page"
17
18
  :client-height="clientHeight"
18
19
  :scroll-top="scrollTop"
@@ -29,7 +30,7 @@
29
30
  </div>
30
31
  </template>
31
32
  <script>
32
- import { mapState } from "vuex";
33
+ import { mapState, mapGetters } from "vuex";
33
34
  import scroll from "../../directives/scroll";
34
35
  import ScrollingPage from "./ScrollingPage";
35
36
  import Toolbar from "./DocumentToolbar";
@@ -49,6 +50,8 @@ export default {
49
50
  return {
50
51
  scrollTop: 0,
51
52
  clientHeight: 0,
53
+ isScolling: false,
54
+ scrollTimeout: null,
52
55
  };
53
56
  },
54
57
 
@@ -58,8 +61,14 @@ export default {
58
61
  "selectedDocument",
59
62
  "loading",
60
63
  ]),
61
- ...mapState("edit", ["editMode", "pagesForPostprocess"]),
62
- ...mapState("display", ["scale", "documentActionBar"]),
64
+ ...mapState("edit", ["editMode", "documentPagesListForEditMode"]),
65
+ ...mapState("display", [
66
+ "scale",
67
+ "documentActionBar",
68
+ "pageChangedFromThumbnail",
69
+ "currentPage",
70
+ ]),
71
+ ...mapGetters("display", ["visiblePageRange"]),
63
72
 
64
73
  pages() {
65
74
  if (this.selectedDocument) {
@@ -85,6 +94,9 @@ export default {
85
94
  this.scrollTop = 0;
86
95
  },
87
96
  },
97
+ mounted() {
98
+ this.$refs.scrollingDocument.addEventListener("scroll", this.handleScroll);
99
+ },
88
100
 
89
101
  methods: {
90
102
  updateScrollBounds() {
@@ -102,6 +114,24 @@ export default {
102
114
 
103
115
  this.$refs.scrollingDocument.scroll(scrollX, scrollY);
104
116
  },
117
+ handleScroll() {
118
+ if (this.pages.length === 1) return;
119
+
120
+ this.isScrolling = true;
121
+
122
+ clearTimeout(this.scrollTimeout);
123
+
124
+ this.scrollTimeout = setTimeout(() => {
125
+ this.isScrolling = false;
126
+
127
+ if (
128
+ this.pageChangedFromThumbnail &&
129
+ this.visiblePageRange[1] === this.currentPage
130
+ ) {
131
+ this.$store.dispatch("display/setPageChangedFromThumbnail", false);
132
+ }
133
+ }, 300);
134
+ },
105
135
  },
106
136
  };
107
137
  </script>
@@ -44,10 +44,12 @@ export default {
44
44
  previousFocusedAnnotation: null,
45
45
  previousY: null,
46
46
  pageBeingLoaded: false,
47
+ isScrolling: false,
47
48
  };
48
49
  },
49
50
 
50
51
  computed: {
52
+ ...mapState("display", ["pageChangedFromThumbnail"]),
51
53
  ...mapGetters("display", ["visiblePageRange", "bboxToRect"]),
52
54
  ...mapGetters("document", ["scrollDocumentToAnnotation"]),
53
55
 
@@ -117,15 +119,12 @@ export default {
117
119
  }
118
120
  },
119
121
  isElementFocused(focused) {
120
- if (!this.loading && focused) {
122
+ if (!this.loading && focused && !this.pageChangedFromThumbnail) {
121
123
  this.$store.dispatch("display/updateCurrentPage", this.page.number);
122
124
  }
123
125
  },
124
126
  currentPage(number) {
125
- if (
126
- (this.page.number === number || this.page.number === number) &&
127
- !this.isElementFocused
128
- ) {
127
+ if (this.page.number === number && !this.isElementFocused) {
129
128
  this.$emit("page-jump", this.elementTop, 0);
130
129
  }
131
130
  },
@@ -62,7 +62,7 @@ export default {
62
62
  },
63
63
  data() {
64
64
  return {
65
- thumbnailClicked: false,
65
+ thumbnailClicked: null,
66
66
  previousScrollPosition: 0,
67
67
  };
68
68
  },
@@ -76,9 +76,10 @@ export default {
76
76
  },
77
77
  watch: {
78
78
  currentPage(newPage) {
79
- if (newPage && !this.thumbnailClicked) {
80
- this.scrollToThumbnail();
81
- }
79
+ if (!newPage) return;
80
+
81
+ // handle thumbnail selection when scrolling the document
82
+ this.scrollToThumbnail(newPage);
82
83
  },
83
84
  },
84
85
  mounted() {
@@ -94,27 +95,29 @@ export default {
94
95
  methods: {
95
96
  /* Change page if not the currently open and not in modal */
96
97
  changePage(pageNumber) {
97
- this.thumbnailClicked = true;
98
+ this.thumbnailClicked = pageNumber;
98
99
 
99
100
  if (
100
101
  !this.loading &&
101
102
  !this.recalculatingAnnotations &&
102
103
  pageNumber != this.currentPage
103
104
  ) {
104
- this.$store.dispatch(
105
- "display/updateCurrentPage",
106
- parseInt(pageNumber, 10)
107
- );
105
+ this.$store.dispatch("display/setPageChangedFromThumbnail", true);
106
+ this.$store.dispatch("display/updateCurrentPage", pageNumber);
108
107
  }
109
108
  },
110
109
 
111
- scrollToThumbnail() {
110
+ scrollToThumbnail(page) {
112
111
  // select only the active thumbnail
113
112
  const selectedPage = this.$refs.docPage.filter((image) =>
114
113
  image.className.includes("selected")
115
114
  );
116
115
 
117
- if (selectedPage && selectedPage[0]) {
116
+ if (page == this.thumbnailClicked) {
117
+ this.thumbnailClicked = null;
118
+ }
119
+
120
+ if (!this.thumbnailClicked && selectedPage && selectedPage[0]) {
118
121
  selectedPage[0].scrollIntoView();
119
122
  }
120
123
  },
@@ -38,7 +38,7 @@
38
38
  </template>
39
39
 
40
40
  <script>
41
- import { mapState, mapGetters } from "vuex";
41
+ import { mapState } from "vuex";
42
42
  import ActionButtons from "../DocumentAnnotations/ActionButtons";
43
43
 
44
44
  export default {
@@ -83,6 +83,7 @@ export default {
83
83
  this.finishDisabled = !this.finishedReview;
84
84
  },
85
85
  methods: {
86
+ /** EDIT MODE */
86
87
  closeEditMode() {
87
88
  this.$store.dispatch("edit/disableEditMode");
88
89
  this.$store.dispatch("edit/setSplitOverview", false);
@@ -104,11 +105,24 @@ export default {
104
105
  // Enable the "next" button to go to the overview
105
106
  this.$store.dispatch("edit/setSplitOverview", true);
106
107
  this.$store.dispatch("edit/setSelectedPages", null);
107
- } else {
108
- // If we are in the overview (so more than 1 doc)
109
- // or in the edit mode (only 1 doc)
110
- // Show confirmation modal to user
111
- this.$store.dispatch("edit/setShowEditConfirmationModal", true);
108
+ }
109
+
110
+ // If we are in the overview (so more than 1 doc)
111
+ // or in the edit mode (only 1 doc)
112
+ else if (this.updatedDocument) {
113
+ // Send update request to the backend
114
+ this.$store
115
+ .dispatch("edit/editDocument", this.updatedDocument)
116
+ .catch((error) => {
117
+ this.$store.dispatch("document/createErrorMessage", {
118
+ error,
119
+ serverErrorMessage: this.$t("server_error"),
120
+ defaultErrorMessage: this.$t("edit_error"),
121
+ });
122
+ });
123
+
124
+ // Close edit mode
125
+ this.closeEditMode();
112
126
  }
113
127
  },
114
128
  handleFinishReview() {
@@ -24,7 +24,7 @@
24
24
  </template>
25
25
 
26
26
  <script>
27
- import Illustration from "../../assets/images/NotOptimizedIllustration";
27
+ import Illustration from "../assets/images/NotOptimizedIllustration";
28
28
 
29
29
  export default {
30
30
  name: "NotOptimizedViewportModal",
@@ -47,5 +47,5 @@ export default {
47
47
  <style
48
48
  scoped
49
49
  lang="scss"
50
- src="../../assets/scss/document_viewport_modal.scss"
50
+ src="../assets/scss/document_viewport_modal.scss"
51
51
  ></style>
@@ -110,21 +110,8 @@
110
110
  "new_multi_ann_description": "Wählen Sie ein Datenmodell aus den vorhandenen aus und deaktivieren Sie dann die Labels, die in diesem Dokument nicht vorhanden sind.",
111
111
  "drag_drop_columns_multi_ann": "Drag and Drop, um die Reihenfolge der Labels zu ändern",
112
112
  "error_creating_multi_ann": "Nicht alle Annotationen wurden erfolgreich erstellt.",
113
+ "disabled_finish_review": "Der Abschluss der Dokumentenprüfung ist erst möglich, nachdem alle Annotationen überarbeitet wurden, unabhängig davon, ob sie akzeptiert oder abgelehnt wurden.",
113
114
  "no_multi_ann_labelset_model": "Es gibt keine verfügbaren Label Sets, die mehrfach in diesem Dokument zu finden sind. Weitere Informationen finden Sie unter <a href='https://help.konfuzio.com/tutorials/advanced-document-extraction/index.html#multiple-annotation-sets' target='_blank'>diesem Link</a>.",
114
115
  "single_category_in_project": "Das aktuelle Projekt hat nur eine Kategorie. Um sie ändern zu können, sollte die neue zuerst dem Projekt hinzugefügt werden. Einzelheiten dazu finden Sie unter <a href='https://help.konfuzio.com/modules/categories/index.html#add-a-category' target='_blank'>diesem Link</a>.",
115
- "approved_annotations": "Die Kategorie kann nicht geändert werden, da bereits akzeptierte Annotationen oder manuell erstellte Annotationen zu diesem Dokument vorhanden sind.",
116
- "disabled_finish_review": "Der Abschluss der Dokumentenprüfung ist erst möglich, nachdem alle Annotationen überarbeitet wurden, unabhängig davon, ob sie akzeptiert oder abgelehnt wurden.",
117
- "split_modal_title": "Dokument aufteilen",
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.",
119
- "do_it_later": "Ich werde es später machen",
120
- "review_now": "Jetzt reviewen",
121
- "recommended": "Empfohlen",
122
- "smart_split": "Smart Split",
123
- "smart_split_suggestions": "Unsere Smart Split-Vorschläge sind grün hervorgehoben",
124
- "no_splitting_suggestions": "Dieses Dokument enthält keine Split-Vorschläge",
125
- "confirm_splitting": "Sind Sie sicher, dass Sie die Änderungen bestätigen möchten?",
126
- "splitting_warning": "Beachten Sie bitte, dass alle Annotationen, die Sie in diesem Dokument gemacht haben, nicht gespeichert werden, wenn Sie fortfahren.",
127
- "no": "Nein",
128
- "yes": "Ja",
129
- "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."
116
+ "approved_annotations": "Die Kategorie kann nicht geändert werden, da bereits akzeptierte Annotationen oder manuell erstellte Annotationen zu diesem Dokument vorhanden sind."
130
117
  }
@@ -114,19 +114,5 @@
114
114
  "disabled_finish_review": "Finishing the document review is only possible after all annotations have been revised, whether they are accepted or rejected.",
115
115
  "no_multi_ann_labelset_model": "There are no available label sets that can be found multiple times in this document. For more details, you can visit <a href='https://help.konfuzio.com/tutorials/advanced-document-extraction/index.html#multiple-annotation-sets' target='_blank'>this link</a>.",
116
116
  "single_category_in_project": "The current project has only one category. To be able to change it, the new one should be first added to the project. For details on how to do this, visit <a href='https://help.konfuzio.com/modules/categories/index.html#add-a-category' target='_blank'>this link</a>.",
117
- "approved_annotations": "It is not possible to change the current category since the document has approved or manually created annotations.",
118
- "split_modal_title": "Split the document",
119
- "split_modal_body": "We've scanned your file and found <strong>{number_of_split_documents}</strong> different documents. <strong>We strongly recommend</strong> splitting it at this stage, otherwise all the progress you’ve made will be lost due to document data re-extraction.",
120
- "do_it_later": "I'll do it later",
121
- "review_now": "Review now",
122
- "recommended": "Recommended",
123
- "smart_split": "Smart Split",
124
- "smart_split_suggestions": "Our Smart Split suggestions are highlighted in green",
125
- "no_splitting_suggestions": "This document does not have splitting suggestions",
126
- "confirm_splitting": "Are you sure you want to confirm the changes?",
127
- "splitting_warning": "Be aware that any annotations you have made in this document will not be saved if you proceed.",
128
- "no": "No",
129
- "yes": "Yes",
130
- "prepare_document": "Prepare the document",
131
- "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."
117
+ "approved_annotations": "It is not possible to change the current category since the document has approved or manually created annotations."
132
118
  }