Merge branch 'RED-8636' into 'master'
RED-8636: use the new recategorize endpoint & updated success message. See merge request redactmanager/red-ui!384
This commit is contained in:
commit
7a8043ea8a
@ -16,7 +16,7 @@ import {
|
|||||||
import { CommentsApiService } from '@services/comments-api.service';
|
import { CommentsApiService } from '@services/comments-api.service';
|
||||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||||
import { PermissionsService } from '@services/permissions.service';
|
import { PermissionsService } from '@services/permissions.service';
|
||||||
import { firstValueFrom, Observable, zip } from 'rxjs';
|
import { firstValueFrom, Observable } from 'rxjs';
|
||||||
import { getFirstRelevantTextPart } from '../../../utils';
|
import { getFirstRelevantTextPart } from '../../../utils';
|
||||||
import { AnnotationDrawService } from '../../pdf-viewer/services/annotation-draw.service';
|
import { AnnotationDrawService } from '../../pdf-viewer/services/annotation-draw.service';
|
||||||
import { REDAnnotationManager } from '../../pdf-viewer/services/annotation-manager.service';
|
import { REDAnnotationManager } from '../../pdf-viewer/services/annotation-manager.service';
|
||||||
@ -32,6 +32,7 @@ import { ResizeRedactionDialogComponent } from '../dialogs/resize-redaction-dial
|
|||||||
import { RemoveRedactionOptions } from '../utils/dialog-options';
|
import { RemoveRedactionOptions } from '../utils/dialog-options';
|
||||||
import {
|
import {
|
||||||
EditRedactionData,
|
EditRedactionData,
|
||||||
|
EditRedactResult,
|
||||||
RemoveRedactionData,
|
RemoveRedactionData,
|
||||||
RemoveRedactionPermissions,
|
RemoveRedactionPermissions,
|
||||||
RemoveRedactionResult,
|
RemoveRedactionResult,
|
||||||
@ -101,47 +102,34 @@ export class AnnotationActionsService {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const result = await this.#getEditRedactionDialog(data).result();
|
const result = await this.#getEditRedactionDialog(data).result();
|
||||||
|
|
||||||
const requests: Observable<unknown>[] = [];
|
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
const recategorizeBody: List<IRecategorizationRequest> = annotations.map(annotation => {
|
||||||
!this.#isDocumine &&
|
const body = { annotationId: annotation.id, type: result.type ?? annotation.type };
|
||||||
(!annotations.every(annotation => annotation.legalBasis === result.legalBasis) ||
|
if (!this.#isDocumine) {
|
||||||
!annotations.every(annotation => annotation.section === result.section))
|
return {
|
||||||
) {
|
...body,
|
||||||
const changeLegalBasisBody = annotations.map(annotation => ({
|
legalBasis: result.legalBasis,
|
||||||
annotationId: annotation.id,
|
section: result.section ?? annotation.section,
|
||||||
legalBasis: result.legalBasis,
|
value: result.value ?? annotation.value,
|
||||||
section: result.section ?? annotation.section,
|
};
|
||||||
value: result.value ?? annotation.value,
|
}
|
||||||
}));
|
return body;
|
||||||
requests.push(
|
});
|
||||||
this._manualRedactionService.changeLegalBasis(
|
|
||||||
changeLegalBasisBody,
|
await this.#processObsAndEmit(
|
||||||
dossierId,
|
this._manualRedactionService
|
||||||
fileId,
|
.recategorizeRedactions(
|
||||||
file().excludedFromAutomaticAnalysis && isUnprocessed,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (result.type && !annotations.every(annotation => annotation.type === result.type)) {
|
|
||||||
const recategorizeBody: List<IRecategorizationRequest> = annotations.map(annotation => ({
|
|
||||||
annotationId: annotation.id,
|
|
||||||
type: result.type ?? annotation.type,
|
|
||||||
}));
|
|
||||||
requests.push(
|
|
||||||
this._manualRedactionService.recategorizeRedactions(
|
|
||||||
recategorizeBody,
|
recategorizeBody,
|
||||||
dossierId,
|
dossierId,
|
||||||
fileId,
|
fileId,
|
||||||
|
this.#getChangedFields(annotations, result),
|
||||||
file().excludedFromAutomaticAnalysis && isUnprocessed,
|
file().excludedFromAutomaticAnalysis && isUnprocessed,
|
||||||
),
|
)
|
||||||
);
|
.pipe(log()),
|
||||||
}
|
);
|
||||||
|
|
||||||
if (result.comment) {
|
if (result.comment) {
|
||||||
try {
|
try {
|
||||||
@ -152,11 +140,6 @@ export class AnnotationActionsService {
|
|||||||
this._toaster.rawError(error.error.message);
|
this._toaster.rawError(error.error.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!requests.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
await this.#processObsAndEmit(zip(requests).pipe(log()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async removeRedaction(redactions: AnnotationWrapper[], permissions: AnnotationPermissions) {
|
async removeRedaction(redactions: AnnotationWrapper[], permissions: AnnotationPermissions) {
|
||||||
@ -498,4 +481,23 @@ export class AnnotationActionsService {
|
|||||||
isApprover,
|
isApprover,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#getChangedFields(annotations: AnnotationWrapper[], result: EditRedactResult) {
|
||||||
|
const changedFields = [];
|
||||||
|
if (result.type && !annotations.every(annotation => annotation.type === result.type)) {
|
||||||
|
changedFields.push('type');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.#isDocumine) {
|
||||||
|
return { changes: changedFields.join(', ') };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.legalBasis && !annotations.every(annotation => annotation.legalBasis === result.legalBasis)) {
|
||||||
|
changedFields.push('reason');
|
||||||
|
}
|
||||||
|
if (typeof result.section === 'string' && !annotations.every(annotation => annotation.section === result.section)) {
|
||||||
|
changedFields.push('paragraph/location');
|
||||||
|
}
|
||||||
|
return { changes: changedFields.join(', ') };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import type {
|
|||||||
import { dictionaryActionsTranslations, manualRedactionActionsTranslations } from '@translations/annotation-actions-translations';
|
import { dictionaryActionsTranslations, manualRedactionActionsTranslations } from '@translations/annotation-actions-translations';
|
||||||
import { Roles } from '@users/roles';
|
import { Roles } from '@users/roles';
|
||||||
import { NGXLogger } from 'ngx-logger';
|
import { NGXLogger } from 'ngx-logger';
|
||||||
import { EMPTY, of, OperatorFunction, pipe } from 'rxjs';
|
import { EMPTY, of, pipe } from 'rxjs';
|
||||||
import { catchError, tap } from 'rxjs/operators';
|
import { catchError, tap } from 'rxjs/operators';
|
||||||
|
|
||||||
function getResponseType(error: boolean, isConflict: boolean) {
|
function getResponseType(error: boolean, isConflict: boolean) {
|
||||||
@ -62,12 +62,18 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
|
|||||||
return this.addAnnotation(recommendations, dossierId, fileId);
|
return this.addAnnotation(recommendations, dossierId, fileId);
|
||||||
}
|
}
|
||||||
|
|
||||||
changeLegalBasis(body: List<ILegalBasisChangeRequest>, dossierId: string, fileId: string, includeUnprocessed = false) {
|
recategorizeRedactions(
|
||||||
return this.legalBasisChange(body, dossierId, fileId, includeUnprocessed).pipe(this.#showToast('change-legal-basis'));
|
body: List<IRecategorizationRequest>,
|
||||||
}
|
dossierId: string,
|
||||||
|
fileId: string,
|
||||||
recategorizeRedactions(body: List<IRecategorizationRequest>, dossierId: string, fileId: string, includeUnprocessed = false) {
|
successMessageParameters?: {
|
||||||
return this.recategorize(body, dossierId, fileId, includeUnprocessed).pipe(this.#showToast('change-type'));
|
[key: string]: string;
|
||||||
|
},
|
||||||
|
includeUnprocessed = false,
|
||||||
|
) {
|
||||||
|
return this.recategorize(body, dossierId, fileId, includeUnprocessed).pipe(
|
||||||
|
this.#showToast('recategorize-annotation', false, successMessageParameters),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
addAnnotation(
|
addAnnotation(
|
||||||
@ -131,13 +137,6 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
legalBasisChange(body: List<ILegalBasisChangeRequest>, dossierId: string, fileId: string, includeUnprocessed = false) {
|
|
||||||
return this._post(
|
|
||||||
body,
|
|
||||||
`${this.#bulkRedaction}/legalBasisChange/${dossierId}/${fileId}?includeUnprocessed=${includeUnprocessed}`,
|
|
||||||
).pipe(this.#log('Legal basis change', body));
|
|
||||||
}
|
|
||||||
|
|
||||||
undo(annotationIds: List, dossierId: string, fileId: string) {
|
undo(annotationIds: List, dossierId: string, fileId: string) {
|
||||||
const url = `${this._defaultModelPath}/bulk/undo/${dossierId}/${fileId}`;
|
const url = `${this._defaultModelPath}/bulk/undo/${dossierId}/${fileId}`;
|
||||||
return super.delete(annotationIds, url).pipe(this.#log('Undo', annotationIds));
|
return super.delete(annotationIds, url).pipe(this.#log('Undo', annotationIds));
|
||||||
@ -165,7 +164,11 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#showToast(action: ManualRedactionActions | DictionaryActions, isDictionary = false) {
|
#showToast(
|
||||||
|
action: ManualRedactionActions | DictionaryActions,
|
||||||
|
isDictionary = false,
|
||||||
|
successMessageParameters?: { [key: string]: string },
|
||||||
|
) {
|
||||||
return pipe(
|
return pipe(
|
||||||
catchError((error: unknown) => {
|
catchError((error: unknown) => {
|
||||||
const isConflict = (error as HttpErrorResponse).status === HttpStatusCode.Conflict;
|
const isConflict = (error as HttpErrorResponse).status === HttpStatusCode.Conflict;
|
||||||
@ -175,7 +178,12 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
|
|||||||
});
|
});
|
||||||
return EMPTY;
|
return EMPTY;
|
||||||
}),
|
}),
|
||||||
tap(() => this._toaster.success(getMessage(action, isDictionary), { positionClass: 'toast-file-preview' })),
|
tap(() =>
|
||||||
|
this._toaster.success(getMessage(action, isDictionary), {
|
||||||
|
params: successMessageParameters,
|
||||||
|
positionClass: 'toast-file-preview',
|
||||||
|
}),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -28,10 +28,6 @@ export const manualRedactionActionsTranslations: Record<ManualRedactionActions,
|
|||||||
error: _('annotation-actions.message.manual-redaction.add.error'),
|
error: _('annotation-actions.message.manual-redaction.add.error'),
|
||||||
success: _('annotation-actions.message.manual-redaction.add.success'),
|
success: _('annotation-actions.message.manual-redaction.add.success'),
|
||||||
},
|
},
|
||||||
'change-legal-basis': {
|
|
||||||
error: _('annotation-actions.message.manual-redaction.change-legal-basis.error'),
|
|
||||||
success: _('annotation-actions.message.manual-redaction.change-legal-basis.success'),
|
|
||||||
},
|
|
||||||
'force-redaction': {
|
'force-redaction': {
|
||||||
error: _('annotation-actions.message.manual-redaction.force-redaction.error'),
|
error: _('annotation-actions.message.manual-redaction.force-redaction.error'),
|
||||||
success: _('annotation-actions.message.manual-redaction.force-redaction.success'),
|
success: _('annotation-actions.message.manual-redaction.force-redaction.success'),
|
||||||
@ -44,9 +40,9 @@ export const manualRedactionActionsTranslations: Record<ManualRedactionActions,
|
|||||||
error: _('annotation-actions.message.manual-redaction.recategorize-image.error'),
|
error: _('annotation-actions.message.manual-redaction.recategorize-image.error'),
|
||||||
success: _('annotation-actions.message.manual-redaction.recategorize-image.success'),
|
success: _('annotation-actions.message.manual-redaction.recategorize-image.success'),
|
||||||
},
|
},
|
||||||
'change-type': {
|
'recategorize-annotation': {
|
||||||
error: _('annotation-actions.message.manual-redaction.change-type.error'),
|
error: _('annotation-actions.message.manual-redaction.recategorize-annotation.error'),
|
||||||
success: _('annotation-actions.message.manual-redaction.change-type.success'),
|
success: _('annotation-actions.message.manual-redaction.recategorize-annotation.success'),
|
||||||
},
|
},
|
||||||
undo: {
|
undo: {
|
||||||
error: _('annotation-actions.message.manual-redaction.undo.error'),
|
error: _('annotation-actions.message.manual-redaction.undo.error'),
|
||||||
|
|||||||
@ -288,14 +288,6 @@
|
|||||||
"error": "Fehler beim Speichern der Schwärzung: {error}",
|
"error": "Fehler beim Speichern der Schwärzung: {error}",
|
||||||
"success": "Schwärzung hinzugefügt!"
|
"success": "Schwärzung hinzugefügt!"
|
||||||
},
|
},
|
||||||
"change-legal-basis": {
|
|
||||||
"error": "Fehler beim Bearbeiten der in der Anmerkung genannten Begründung: {error}",
|
|
||||||
"success": "In der Anmerkung genannte Begründung wurde bearbeitet."
|
|
||||||
},
|
|
||||||
"change-type": {
|
|
||||||
"error": "Failed to edit type: {error}",
|
|
||||||
"success": "Type was edited."
|
|
||||||
},
|
|
||||||
"force-hint": {
|
"force-hint": {
|
||||||
"error": "Failed to save hint: {error}",
|
"error": "Failed to save hint: {error}",
|
||||||
"success": "Hint added!"
|
"success": "Hint added!"
|
||||||
@ -304,6 +296,10 @@
|
|||||||
"error": "Die Schwärzung konnte nicht gespeichert werden!",
|
"error": "Die Schwärzung konnte nicht gespeichert werden!",
|
||||||
"success": "Schwärzung eingefügt!"
|
"success": "Schwärzung eingefügt!"
|
||||||
},
|
},
|
||||||
|
"recategorize-annotation": {
|
||||||
|
"error": "",
|
||||||
|
"success": ""
|
||||||
|
},
|
||||||
"recategorize-image": {
|
"recategorize-image": {
|
||||||
"error": "Rekategorisierung des Bildes gescheitert: {error}",
|
"error": "Rekategorisierung des Bildes gescheitert: {error}",
|
||||||
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
||||||
|
|||||||
@ -270,7 +270,7 @@
|
|||||||
"message": {
|
"message": {
|
||||||
"dictionary": {
|
"dictionary": {
|
||||||
"add": {
|
"add": {
|
||||||
"conflict-error": "Cannot add ''{content}'' to the {dictionaryName} dictionary because it was recognized as a general term that appears too often in texts.",
|
"conflict-error": "Cannot add '{content}' to the {dictionaryName} dictionary because it was recognized as a general term that appears too often in texts.",
|
||||||
"error": "Failed to add entry to dictionary: {error}",
|
"error": "Failed to add entry to dictionary: {error}",
|
||||||
"success": "Entry added to dictionary. Changes will be visible after reanalysis."
|
"success": "Entry added to dictionary. Changes will be visible after reanalysis."
|
||||||
},
|
},
|
||||||
@ -288,14 +288,6 @@
|
|||||||
"error": "Failed to save redaction: {error}",
|
"error": "Failed to save redaction: {error}",
|
||||||
"success": "Redaction added!"
|
"success": "Redaction added!"
|
||||||
},
|
},
|
||||||
"change-legal-basis": {
|
|
||||||
"error": "Failed to edit annotation reason: {error}",
|
|
||||||
"success": "Annotation reason was edited."
|
|
||||||
},
|
|
||||||
"change-type": {
|
|
||||||
"error": "Failed to edit type: {error}",
|
|
||||||
"success": "Type was edited."
|
|
||||||
},
|
|
||||||
"force-hint": {
|
"force-hint": {
|
||||||
"error": "Failed to save hint: {error}",
|
"error": "Failed to save hint: {error}",
|
||||||
"success": "Hint added!"
|
"success": "Hint added!"
|
||||||
@ -304,6 +296,10 @@
|
|||||||
"error": "Failed to save redaction: {error}",
|
"error": "Failed to save redaction: {error}",
|
||||||
"success": "Redaction added!"
|
"success": "Redaction added!"
|
||||||
},
|
},
|
||||||
|
"recategorize-annotation": {
|
||||||
|
"error": "Failed to edit type: {error}",
|
||||||
|
"success": "Annotation was edited: Changed {changes}."
|
||||||
|
},
|
||||||
"recategorize-image": {
|
"recategorize-image": {
|
||||||
"error": "Failed to recategorize image: {error}",
|
"error": "Failed to recategorize image: {error}",
|
||||||
"success": "Image recategorized."
|
"success": "Image recategorized."
|
||||||
@ -1256,7 +1252,7 @@
|
|||||||
},
|
},
|
||||||
"title": "Entity rule editor",
|
"title": "Entity rule editor",
|
||||||
"warning-text": "Warning: experimental feature!",
|
"warning-text": "Warning: experimental feature!",
|
||||||
"warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules"
|
"warnings-found": ""
|
||||||
},
|
},
|
||||||
"entity": {
|
"entity": {
|
||||||
"info": {
|
"info": {
|
||||||
@ -1492,7 +1488,7 @@
|
|||||||
},
|
},
|
||||||
"is-excluded": "Redaction is disabled for this document.",
|
"is-excluded": "Redaction is disabled for this document.",
|
||||||
"multi-select": {
|
"multi-select": {
|
||||||
"close": "Close bulk select"
|
"close": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"text-highlights": "Earmarks",
|
"text-highlights": "Earmarks",
|
||||||
@ -1500,7 +1496,7 @@
|
|||||||
"toggle-analysis": {
|
"toggle-analysis": {
|
||||||
"disable": "Disable redaction",
|
"disable": "Disable redaction",
|
||||||
"enable": "Enable for redaction",
|
"enable": "Enable for redaction",
|
||||||
"only-managers": "Enable/disable redaction: assigned user only"
|
"only-managers": "Enable/disable: assigned user only"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"file-status": {
|
"file-status": {
|
||||||
@ -1516,7 +1512,7 @@
|
|||||||
"ner-analyzing": "NER analyzing",
|
"ner-analyzing": "NER analyzing",
|
||||||
"new": "New",
|
"new": "New",
|
||||||
"ocr-processing": "OCR processing",
|
"ocr-processing": "OCR processing",
|
||||||
"processed": "processed",
|
"processed": "Processed",
|
||||||
"processing": "Processing...",
|
"processing": "Processing...",
|
||||||
"re-processing": "Reprocessing...",
|
"re-processing": "Reprocessing...",
|
||||||
"reprocess": "Processing",
|
"reprocess": "Processing",
|
||||||
@ -1524,7 +1520,7 @@
|
|||||||
"unassigned": "Unassigned",
|
"unassigned": "Unassigned",
|
||||||
"under-approval": "Under approval",
|
"under-approval": "Under approval",
|
||||||
"under-review": "Under review",
|
"under-review": "Under review",
|
||||||
"unprocessed": "unprocessed"
|
"unprocessed": "Unprocessed"
|
||||||
},
|
},
|
||||||
"file-upload": {
|
"file-upload": {
|
||||||
"type": {
|
"type": {
|
||||||
@ -1958,7 +1954,7 @@
|
|||||||
"processing-status": {
|
"processing-status": {
|
||||||
"ocr": "OCR",
|
"ocr": "OCR",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"processed": "processed",
|
"processed": "Processed",
|
||||||
"processing": "Processing"
|
"processing": "Processing"
|
||||||
},
|
},
|
||||||
"processing": {
|
"processing": {
|
||||||
@ -2019,13 +2015,13 @@
|
|||||||
"label": "Remove from dossier in this context"
|
"label": "Remove from dossier in this context"
|
||||||
},
|
},
|
||||||
"in-dossier": {
|
"in-dossier": {
|
||||||
"description": "Do not annotate the term in this dossier.",
|
"description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.",
|
||||||
"description-bulk": "",
|
"description-bulk": "",
|
||||||
"label": "Do not annotate as <i>{type}</i>",
|
"label": "No longer annotate as ''{type}''",
|
||||||
"label-bulk": ""
|
"label-bulk": ""
|
||||||
},
|
},
|
||||||
"only-here": {
|
"only-here": {
|
||||||
"description": "Do not annotate the term at this position in the current document.",
|
"description": "Do not annotate ''{value}'' at this position in the current document.",
|
||||||
"description-bulk": "Do not auto-annotate the selected terms at this position in the current document.",
|
"description-bulk": "Do not auto-annotate the selected terms at this position in the current document.",
|
||||||
"label": "Remove here"
|
"label": "Remove here"
|
||||||
}
|
}
|
||||||
@ -2046,8 +2042,8 @@
|
|||||||
"comment-placeholder": "Add remarks or mentions...",
|
"comment-placeholder": "Add remarks or mentions...",
|
||||||
"options": {
|
"options": {
|
||||||
"do-not-recommend": {
|
"do-not-recommend": {
|
||||||
"description": "Do not recommend the selected term in any document of this dossier.",
|
"description": "Do not recommend the selected term in any document of the current dossier.",
|
||||||
"description-bulk": "Do not recommend the selected terms in any document of this dossier.",
|
"description-bulk": "Do not recommend the selected terms in any document of the current dossier.",
|
||||||
"extraOptionLabel": "Apply to all active and future dossiers",
|
"extraOptionLabel": "Apply to all active and future dossiers",
|
||||||
"label": "Remove from dossier"
|
"label": "Remove from dossier"
|
||||||
},
|
},
|
||||||
@ -2059,7 +2055,7 @@
|
|||||||
"label": "Remove from dossier in this context"
|
"label": "Remove from dossier in this context"
|
||||||
},
|
},
|
||||||
"in-dossier": {
|
"in-dossier": {
|
||||||
"description": "Do not {type, select, hint{annotate} other{redact}} the selected term in any document of this dossier.",
|
"description": "Do not {type, select, hint{annotate} other{redact}} the selected term in any document of the current dossier.",
|
||||||
"description-bulk": "Do not auto-redact the selected term in this dossier.",
|
"description-bulk": "Do not auto-redact the selected term in this dossier.",
|
||||||
"extraOptionLabel": "Apply to all active and future dossiers",
|
"extraOptionLabel": "Apply to all active and future dossiers",
|
||||||
"label": "Remove from dossier",
|
"label": "Remove from dossier",
|
||||||
|
|||||||
@ -288,14 +288,6 @@
|
|||||||
"error": "Fehler beim Speichern der Schwärzung: {error}",
|
"error": "Fehler beim Speichern der Schwärzung: {error}",
|
||||||
"success": "Schwärzung hinzugefügt!"
|
"success": "Schwärzung hinzugefügt!"
|
||||||
},
|
},
|
||||||
"change-legal-basis": {
|
|
||||||
"error": "Fehler beim Bearbeiten der in der Anmerkung genannten Begründung: {error}",
|
|
||||||
"success": "In der Anmerkung genannte Begründung wurde bearbeitet."
|
|
||||||
},
|
|
||||||
"change-type": {
|
|
||||||
"error": "",
|
|
||||||
"success": ""
|
|
||||||
},
|
|
||||||
"force-hint": {
|
"force-hint": {
|
||||||
"error": "Failed to save hint: {error}",
|
"error": "Failed to save hint: {error}",
|
||||||
"success": "Hint added!"
|
"success": "Hint added!"
|
||||||
@ -304,6 +296,10 @@
|
|||||||
"error": "Die Schwärzung konnte nicht gespeichert werden!",
|
"error": "Die Schwärzung konnte nicht gespeichert werden!",
|
||||||
"success": "Schwärzung eingefügt!"
|
"success": "Schwärzung eingefügt!"
|
||||||
},
|
},
|
||||||
|
"recategorize-annotation": {
|
||||||
|
"error": "",
|
||||||
|
"success": ""
|
||||||
|
},
|
||||||
"recategorize-image": {
|
"recategorize-image": {
|
||||||
"error": "Rekategorisierung des Bildes gescheitert: {error}",
|
"error": "Rekategorisierung des Bildes gescheitert: {error}",
|
||||||
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
||||||
|
|||||||
@ -288,14 +288,6 @@
|
|||||||
"error": "Failed to save annotation: {error}",
|
"error": "Failed to save annotation: {error}",
|
||||||
"success": "Annotation added!"
|
"success": "Annotation added!"
|
||||||
},
|
},
|
||||||
"change-legal-basis": {
|
|
||||||
"error": "Failed to edit annotation reason: {error}",
|
|
||||||
"success": "Annotation reason was edited."
|
|
||||||
},
|
|
||||||
"change-type": {
|
|
||||||
"error": "",
|
|
||||||
"success": ""
|
|
||||||
},
|
|
||||||
"force-hint": {
|
"force-hint": {
|
||||||
"error": "Failed to save hint: {error}",
|
"error": "Failed to save hint: {error}",
|
||||||
"success": "Hint added!"
|
"success": "Hint added!"
|
||||||
@ -304,6 +296,10 @@
|
|||||||
"error": "Failed to save annotation: {error}",
|
"error": "Failed to save annotation: {error}",
|
||||||
"success": "Annotation added!"
|
"success": "Annotation added!"
|
||||||
},
|
},
|
||||||
|
"recategorize-annotation": {
|
||||||
|
"error": "",
|
||||||
|
"success": ""
|
||||||
|
},
|
||||||
"recategorize-image": {
|
"recategorize-image": {
|
||||||
"error": "Failed to recategorize image: {error}",
|
"error": "Failed to recategorize image: {error}",
|
||||||
"success": "Image recategorized."
|
"success": "Image recategorized."
|
||||||
|
|||||||
@ -6,12 +6,11 @@ export type ManualRedactionActions =
|
|||||||
| 'add'
|
| 'add'
|
||||||
| 'remove'
|
| 'remove'
|
||||||
| 'remove-hint'
|
| 'remove-hint'
|
||||||
| 'change-legal-basis'
|
|
||||||
| 'recategorize-image'
|
| 'recategorize-image'
|
||||||
| 'undo'
|
| 'undo'
|
||||||
| 'force-redaction'
|
| 'force-redaction'
|
||||||
| 'force-hint'
|
| 'force-hint'
|
||||||
| 'change-type';
|
| 'recategorize-annotation';
|
||||||
|
|
||||||
export const AnnotationIconTypes = {
|
export const AnnotationIconTypes = {
|
||||||
square: 'square',
|
square: 'square',
|
||||||
|
|||||||
@ -2,4 +2,7 @@ export interface IRecategorizationRequest {
|
|||||||
readonly annotationId?: string;
|
readonly annotationId?: string;
|
||||||
readonly comment?: string;
|
readonly comment?: string;
|
||||||
readonly type?: string;
|
readonly type?: string;
|
||||||
|
readonly legalBasis?: string;
|
||||||
|
readonly section?: string;
|
||||||
|
readonly value?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user