From cca5368d62223f9d2ace35b44f825ac389990e0a Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 3 Nov 2020 10:53:23 +0200 Subject: [PATCH] added approval flow --- .../src/app/common/filter/filter.component.ts | 2 +- .../app/common/filter/utils/filter-utils.ts | 12 ++-- .../file-preview-screen.component.html | 57 +++++++++---------- .../file-preview-screen.component.ts | 40 +++++++++++-- .../screens/file/model/annotation.wrapper.ts | 2 - .../file/service/file-action.service.ts | 12 ++++ .../project-overview-screen.component.html | 26 ++++++++- .../project-overview-screen.component.ts | 19 +++++++ apps/red-ui/src/assets/i18n/en.json | 2 + 9 files changed, 126 insertions(+), 46 deletions(-) diff --git a/apps/red-ui/src/app/common/filter/filter.component.ts b/apps/red-ui/src/app/common/filter/filter.component.ts index 02acb5487..0391340fb 100644 --- a/apps/red-ui/src/app/common/filter/filter.component.ts +++ b/apps/red-ui/src/app/common/filter/filter.component.ts @@ -35,7 +35,7 @@ export class FilterComponent implements OnChanges { private _copySettings(oldFilters: FilterModel[], newFilters: FilterModel[]) { if (oldFilters && newFilters) { - for (let oldFilter of oldFilters) { + for (const oldFilter of oldFilters) { const newFilter = newFilters.find((f) => f.key === oldFilter.key); if (newFilter) { newFilter.checked = oldFilter.checked; diff --git a/apps/red-ui/src/app/common/filter/utils/filter-utils.ts b/apps/red-ui/src/app/common/filter/utils/filter-utils.ts index 6476d23a8..5c9bcf287 100644 --- a/apps/red-ui/src/app/common/filter/utils/filter-utils.ts +++ b/apps/red-ui/src/app/common/filter/utils/filter-utils.ts @@ -1,10 +1,14 @@ import { FilterModel } from '../model/filter.model'; export function handleCheckedValue(filter: FilterModel) { - filter.checked = filter.filters.reduce((acc, next) => acc && next.checked, true); - if (filter.checked) { - filter.indeterminate = false; + if (filter.filters) { + filter.checked = filter.filters.reduce((acc, next) => acc && next.checked, true); + if (filter.checked) { + filter.indeterminate = false; + } else { + filter.indeterminate = filter.filters.reduce((acc, next) => acc || next.checked, false); + } } else { - filter.indeterminate = filter.filters.reduce((acc, next) => acc || next.checked, false); + filter.indeterminate = false; } } diff --git a/apps/red-ui/src/app/screens/file/file-preview-screen/file-preview-screen.component.html b/apps/red-ui/src/app/screens/file/file-preview-screen/file-preview-screen.component.html index 3e02e32cb..3f73c2bc2 100644 --- a/apps/red-ui/src/app/screens/file/file-preview-screen/file-preview-screen.component.html +++ b/apps/red-ui/src/app/screens/file/file-preview-screen/file-preview-screen.component.html @@ -24,50 +24,51 @@ + + - -
-
-
-
@@ -159,23 +160,19 @@ >{{ annotation.content }} - - - -
+
diff --git a/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts b/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts index b83fc342b..d5b896506 100644 --- a/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts +++ b/apps/red-ui/src/app/screens/project-overview-screen/project-overview-screen.component.ts @@ -64,6 +64,7 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy { }); this.appStateService.fileStatusChanged.subscribe(() => { + console.log('fs changed, rebuild'); this._calculateData(); }); } @@ -345,4 +346,22 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy { fileNotUpToDateWithDictionary(fileStatus: FileStatus) { return fileStatus.dictionaryVersion !== this.appStateService.dictionaryVersion; } + + requestApprovalOrApproveFile($event: MouseEvent, fileStatus: FileStatus) { + $event.stopPropagation(); + + if (fileStatus.status === 'UNDER_REVIEW') { + this._fileActionService.setUnderApproval(fileStatus); + } else { + this._fileActionService.setApproved(fileStatus); + } + } + + isApprovedOrUnderApproval(fileStatus: FileStatus) { + return fileStatus.status === 'APPROVED' || fileStatus.status === 'UNDER_APPROVAL'; + } + + canApprove(fileStatus: FileStatus) { + return fileStatus.status === 'UNDER_REVIEW' || fileStatus.status === 'UNDER_APPROVAL'; + } } diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 9abcc845b..81d38da0c 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -315,6 +315,8 @@ } }, "project-overview": { + "under-approval": "Under Approval", + "approve": "Approve", "no-files": "This Project contains no files yet. You can start your work by uploading some files!", "new-rule": { "label": "New Rule",