From 0b6ee28b720a07845a362dbc06ac3e1840ddfbd1 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 20 Jul 2021 02:36:52 +0300 Subject: [PATCH] code cleanup --- ...confirm-delete-users-dialog.component.html | 9 ++- ...-attributes-csv-import-dialog.component.ts | 3 +- .../default-colors-screen.component.ts | 2 +- ...er-templates-listing-screen.component.html | 2 +- .../license-information-screen.component.html | 2 +- .../screens/rules/rules-screen.component.ts | 8 +- .../screens/trash/trash-screen.component.ts | 2 +- .../user-listing-screen.component.ts | 3 +- .../annotation-actions.component.html | 39 +++------ .../annotation-actions.component.ts | 6 +- .../page-exclusion.component.ts | 1 - .../pdf-viewer/pdf-viewer.component.scss | 2 + .../edit-dossier-dialog.component.ts | 4 +- .../dossier-listing-screen.component.html | 2 +- .../dossier-listing-screen.component.ts | 28 +++---- .../dossier-overview-screen.component.ts | 2 +- .../shared/base/base-listing.component.ts | 30 +++---- .../dictionary-manager.component.ts | 19 ++--- .../page-header/page-header.component.html | 4 +- .../table-header/table-header.component.html | 6 +- .../modules/shared/services/filter.service.ts | 23 +++--- .../shared/services/screen-state.service.ts | 81 +++++++++---------- .../modules/shared/services/search.service.ts | 12 ++- .../src/app/services/sorting.service.ts | 24 +++--- .../app/services/user-preference.service.ts | 4 +- .../general/pdftron-action-close-compare.svg | 6 +- .../icons/general/pdftron-action-compare.svg | 4 +- .../src/assets/icons/general/put-back.svg | 8 +- .../src/assets/icons/general/reason.svg | 15 +++- .../src/assets/styles/red-controls.scss | 5 +- 30 files changed, 176 insertions(+), 180 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.html index 0d0eb7328..14f0eda1e 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-users-dialog/confirm-delete-users-dialog.component.html @@ -17,7 +17,14 @@ [class.error]="!checkbox.value && showToast" color="primary" > - {{ checkbox.label | translate: { dossiersCount: dossiersCount, userCount: users.length } }} + {{ + checkbox.label + | translate + : { + dossiersCount: dossiersCount, + userCount: users.length + } + }} diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts index 44cac87d1..763c1f7ae 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts @@ -31,8 +31,6 @@ export interface Field { providers: [FilterService, SearchService, ScreenStateService, SortingService] }) export class FileAttributesCsvImportDialogComponent extends BaseListingComponent { - protected readonly _primaryKey = 'id'; - csvFile: File; dossierTemplateId: string; parseResult: { data: any[]; errors: any[]; meta: any; fields: Field[] }; @@ -45,6 +43,7 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent keepPreview = false; columnSample = []; initialParseConfig: { delimiter?: string; encoding?: string } = {}; + protected readonly _primaryKey = 'id'; constructor( private readonly _appStateService: AppStateService, diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts index a76513de9..420a785a2 100644 --- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.ts @@ -25,8 +25,8 @@ export class DefaultColorsScreenComponent }> implements OnInit { - private _colorsObj: Colors; protected readonly _primaryKey = 'key'; + private _colorsObj: Colors; constructor( private readonly _appStateService: AppStateService, diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html index 06e453cb1..f5394e270 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html @@ -30,8 +30,8 @@ diff --git a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html index 654cc2576..187ba165a 100644 --- a/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/license-information/license-information-screen.component.html @@ -5,9 +5,9 @@
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts index d8a6552a7..3558d2330 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen.component.ts @@ -47,10 +47,6 @@ export class RulesScreenComponent extends ComponentHasChanges implements OnInit _appStateService.activateDossierTemplate(_activatedRoute.snapshot.params.dossierTemplateId); } - async ngOnInit() { - await this._initialize(); - } - get hasChanges(): boolean { return this.currentLines.toString() !== this.initialLines.toString(); } @@ -64,6 +60,10 @@ export class RulesScreenComponent extends ComponentHasChanges implements OnInit this.codeEditorTextChanged(); } + async ngOnInit() { + await this._initialize(); + } + onCodeEditorInit(editor: ICodeEditor) { this._codeEditor = editor; (window as any).monaco.editor.defineTheme('redaction', { diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts index 8c362ec5d..f3f7572b7 100644 --- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts @@ -20,8 +20,8 @@ import { DossiersService } from '../../../dossier/services/dossiers.service'; }) export class TrashScreenComponent extends BaseListingComponent implements OnInit { readonly itemSize = 85; - private readonly _deleteRetentionHours = this._appConfigService.getConfig(AppConfigKey.DELETE_RETENTION_HOURS); protected readonly _primaryKey = 'dossierName'; + private readonly _deleteRetentionHours = this._appConfigService.getConfig(AppConfigKey.DELETE_RETENTION_HOURS); constructor( private readonly _appStateService: AppStateService, diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts index 4a6fdd703..935c29cf4 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts @@ -22,11 +22,10 @@ import { map } from 'rxjs/operators'; providers: [FilterService, SearchService, ScreenStateService, SortingService] }) export class UserListingScreenComponent extends BaseListingComponent implements OnInit { - protected readonly _primaryKey = 'userId'; readonly canDeleteSelected$ = this._canDeleteSelected$; - collapsedDetails = false; chartData: DoughnutChartConfig[] = []; + protected readonly _primaryKey = 'userId'; @ViewChildren(InitialsAvatarComponent) private readonly _avatars: QueryList; diff --git a/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.html b/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.html index 5361a4aed..145bcc4bc 100644 --- a/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.html +++ b/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.html @@ -6,8 +6,7 @@ [tooltip]="'annotation-actions.edit-reason.label' | translate" [type]="btnType" icon="red:edit" - > - + > - + > - + > - + > - + > - + > - + > - + > - + > - + > - + > - + > - + >
diff --git a/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.ts b/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.ts index 790c99fbe..70425a94a 100644 --- a/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/annotation-actions/annotation-actions.component.ts @@ -14,14 +14,10 @@ import { WebViewerInstance } from '@pdftron/webviewer'; export class AnnotationActionsComponent implements OnInit { @Input() btnType: 'dark-bg' | 'primary' = 'dark-bg'; @Input() tooltipPosition: 'before' | 'above' = 'before'; - - @Input() _annotations: AnnotationWrapper[]; @Input() canPerformAnnotationActions: boolean; @Input() viewer: WebViewerInstance; @Input() alwaysVisible: boolean; - @Output() annotationsChanged = new EventEmitter(); - annotationPermissions: AnnotationPermissions; constructor( @@ -30,6 +26,8 @@ export class AnnotationActionsComponent implements OnInit { private _permissionsService: PermissionsService ) {} + private _annotations: AnnotationWrapper[]; + get annotations(): AnnotationWrapper[] { return this._annotations; } diff --git a/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts b/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts index 0dd8eb2bb..1555cef37 100644 --- a/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/page-exclusion/page-exclusion.component.ts @@ -5,7 +5,6 @@ import { PageRange, ReanalysisControllerService } from '@redaction/red-ui-http'; import { FileDataModel } from '../../../../models/file/file-data.model'; import { Toaster } from '../../../../services/toaster.service'; import { LoadingService } from '../../../../services/loading.service'; -import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'redaction-page-exclusion', diff --git a/apps/red-ui/src/app/modules/dossier/components/pdf-viewer/pdf-viewer.component.scss b/apps/red-ui/src/app/modules/dossier/components/pdf-viewer/pdf-viewer.component.scss index a4ca9fb65..9c85a3acf 100644 --- a/apps/red-ui/src/app/modules/dossier/components/pdf-viewer/pdf-viewer.component.scss +++ b/apps/red-ui/src/app/modules/dossier/components/pdf-viewer/pdf-viewer.component.scss @@ -49,11 +49,13 @@ .page-number-input { -moz-appearance: textfield; + &::-webkit-outer-spin-button, &::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } + color: $grey-7; text-decoration: none; outline: none; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index 3a2624f57..869f3c9a2 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -1,7 +1,5 @@ import { ChangeDetectorRef, Component, Inject, ViewChild } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { FormBuilder } from '@angular/forms'; -import { AppStateService } from '@state/app-state.service'; +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { DossierWrapper } from '@state/model/dossier.wrapper'; import { EditDossierGeneralInfoComponent } from './general-info/edit-dossier-general-info.component'; import { EditDossierDownloadPackageComponent } from './download-package/edit-dossier-download-package.component'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.html b/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.html index e65ce9f1a..0a2b67ad8 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.html @@ -9,8 +9,8 @@
p.dossier.status === Dossier.StatusEnum.ACTIVE).length; + } + + private get _inactiveDossiersCount(): number { + return this.screenStateService.allEntities.length - this._activeDossiersCount; + } + ngOnInit(): void { this.calculateData(); @@ -144,18 +154,6 @@ export class DossierListingScreenComponent }); } - private get _userId() { - return this._userService.userId; - } - - private get _activeDossiersCount(): number { - return this.screenStateService.allEntities.filter(p => p.dossier.status === Dossier.StatusEnum.ACTIVE).length; - } - - private get _inactiveDossiersCount(): number { - return this.screenStateService.allEntities.length - this._activeDossiersCount; - } - calculateData() { this._computeAllFilters(); diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts index 9bab99401..e41bfde75 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts @@ -43,10 +43,10 @@ export class DossierOverviewScreenComponent implements OnInit, OnDestroy, OnDetach, OnAttach { readonly itemSize = 80; - protected readonly _primaryKey = 'filename'; collapsedDetails = false; actionConfigs: ActionConfig[]; dossierAttributes: DossierAttributeWithValue[] = []; + protected readonly _primaryKey = 'filename'; @ViewChild(DossierDetailsComponent, { static: false }) private readonly _dossierDetailsComponent: DossierDetailsComponent; private readonly _lastOpenedFileKey = 'Dossier-Recent-' + this.activeDossier.dossierId; diff --git a/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts b/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts index 9a3d2e34c..a396f5cb8 100644 --- a/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts +++ b/apps/red-ui/src/app/modules/shared/base/base-listing.component.ts @@ -44,6 +44,21 @@ export abstract class BaseListingComponent extends AutoUnsubscribeComponent i this.noMatch$ = this._noMatch$; } + get allEntities(): T[] { + return this.screenStateService.allEntities; + } + + private get _sortedDisplayedEntities$(): Observable { + return this.screenStateService.displayedEntities$.pipe(map(entities => this.sortingService.defaultSort(entities))); + } + + private get _noMatch$(): Observable { + return combineLatest([this.screenStateService.allEntitiesLength$, this.screenStateService.displayedLength$]).pipe( + map(([hasEntities, hasDisplayedEntities]) => hasEntities && !hasDisplayedEntities), + distinctUntilChanged() + ); + } + setInitialConfig() { this.sortingService.setSortingOption({ column: this._primaryKey, @@ -56,21 +71,6 @@ export abstract class BaseListingComponent extends AutoUnsubscribeComponent i super.ngOnDestroy(); } - private get _sortedDisplayedEntities$(): Observable { - return this.screenStateService.displayedEntities$.pipe(map(entities => this.sortingService.defaultSort(entities))); - } - - get allEntities(): T[] { - return this.screenStateService.allEntities; - } - - private get _noMatch$(): Observable { - return combineLatest([this.screenStateService.allEntitiesLength$, this.screenStateService.displayedLength$]).pipe( - map(([hasEntities, hasDisplayedEntities]) => hasEntities && !hasDisplayedEntities), - distinctUntilChanged() - ); - } - canBulkDelete$(hasPermission = true): Observable { return this.screenStateService.areSomeEntitiesSelected$.pipe( map(areSomeEntitiesSelected => areSomeEntitiesSelected && hasPermission), diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts index a6d438dcf..6d1b55de0 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts @@ -44,7 +44,6 @@ export class DictionaryManagerComponent implements OnChanges, OnInit { private _diffEditor: IDiffEditor; private _decorations: string[] = []; private _searchDecorations: string[] = []; - private _dossier: DossierWrapper = this.selectDossier as DossierWrapper; constructor( private readonly _dictionaryControllerService: DictionaryControllerService, @@ -53,14 +52,7 @@ export class DictionaryManagerComponent implements OnChanges, OnInit { this.currentEntries = this.initialEntries; } - ngOnInit(): void { - this.editorOptions = { - theme: 'vs', - language: 'text/plain', - automaticLayout: true, - readOnly: !this.canEdit - }; - } + private _dossier: DossierWrapper = this.selectDossier as DossierWrapper; get dossier() { return this._dossier; @@ -101,6 +93,15 @@ export class DictionaryManagerComponent implements OnChanges, OnInit { return this.currentEntries.toString() !== this.initialEntries.toString(); } + ngOnInit(): void { + this.editorOptions = { + theme: 'vs', + language: 'text/plain', + automaticLayout: true, + readOnly: !this.canEdit + }; + } + onDiffEditorInit(editor: IDiffEditor): void { this._diffEditor = editor; } diff --git a/apps/red-ui/src/app/modules/shared/components/page-header/page-header.component.html b/apps/red-ui/src/app/modules/shared/components/page-header/page-header.component.html index d8eda0bc2..346fb55bc 100644 --- a/apps/red-ui/src/app/modules/shared/components/page-header/page-header.component.html +++ b/apps/red-ui/src/app/modules/shared/components/page-header/page-header.component.html @@ -25,7 +25,7 @@
-
+
diff --git a/apps/red-ui/src/app/modules/shared/services/filter.service.ts b/apps/red-ui/src/app/modules/shared/services/filter.service.ts index 692298ae6..357b4b41c 100644 --- a/apps/red-ui/src/app/modules/shared/services/filter.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/filter.service.ts @@ -1,24 +1,29 @@ import { Injectable } from '@angular/core'; import { FilterModel } from '@shared/components/filters/popup-filter/model/filter.model'; -import { getFilteredEntities, processFilters } from '@shared/components/filters/popup-filter/utils/filter-utils'; -import { ScreenStateService } from '@shared/services/screen-state.service'; -import { SearchService } from '@shared/services/search.service'; +import { processFilters } from '@shared/components/filters/popup-filter/utils/filter-utils'; import { FilterGroup } from '@shared/components/filters/popup-filter/model/filter-wrapper.model'; import { BehaviorSubject, Observable } from 'rxjs'; import { distinctUntilChanged, map, switchMap } from 'rxjs/operators'; @Injectable() export class FilterService { + readonly showResetFilters$ = this._showResetFilters$; private readonly _filterGroups$ = new BehaviorSubject([]); private readonly _refresh$ = new BehaviorSubject(null); - readonly filterGroups$ = this._refresh$.pipe(switchMap(() => this._filterGroups$.asObservable())); - readonly showResetFilters$ = this._showResetFilters$; get filterGroups(): FilterGroup[] { return Object.values(this._filterGroups$.getValue()); } + private get _showResetFilters$(): Observable { + return this.filterGroups$.pipe( + map(all => this._toFlatFilters(all)), + map(f => !!f.find(el => el.checked)), + distinctUntilChanged() + ); + } + refresh(): void { this._refresh$.next(null); } @@ -67,14 +72,6 @@ export class FilterService { this.refresh(); } - private get _showResetFilters$(): Observable { - return this.filterGroups$.pipe( - map(all => this._toFlatFilters(all)), - map(f => !!f.find(el => el.checked)), - distinctUntilChanged() - ); - } - private _toFlatFilters(entities: FilterGroup[]): FilterModel[] { const flatChildren = (filters: FilterModel[]) => (filters ?? []).reduce((acc, f) => [...acc, ...(f?.filters ?? [])], []); diff --git a/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts b/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts index 9ad198c66..5728833dc 100644 --- a/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts @@ -9,22 +9,19 @@ const toLengthValue = entities => entities?.length ?? 0; @Injectable() export class ScreenStateService { - private readonly _allEntities$ = new BehaviorSubject([]); - readonly allEntities$ = this._allEntities$.asObservable(); readonly allEntitiesLength$ = this._allEntitiesLength$; - - private readonly _displayedEntities$ = new BehaviorSubject([]); readonly displayedEntities$ = this._getDisplayedEntities$; readonly displayedLength$ = this._displayedLength$; - - private readonly _selectedEntities$ = new BehaviorSubject([]); - readonly selectedEntities$ = this._selectedEntities$.asObservable(); readonly selectedLength$ = this._selectedLength$; - readonly noData$ = this._noData$; readonly areAllEntitiesSelected$ = this._areAllEntitiesSelected$; readonly areSomeEntitiesSelected$ = this._areSomeEntitiesSelected$; readonly notAllEntitiesSelected$ = this._notAllEntitiesSelected$; + private readonly _allEntities$ = new BehaviorSubject([]); + readonly allEntities$ = this._allEntities$.asObservable(); + private readonly _displayedEntities$ = new BehaviorSubject([]); + private readonly _selectedEntities$ = new BehaviorSubject([]); + readonly selectedEntities$ = this._selectedEntities$.asObservable(); constructor(private readonly _filterService: FilterService, private readonly _searchService: SearchService) { // setInterval(() => { @@ -46,36 +43,6 @@ export class ScreenStateService { return Object.values(this._displayedEntities$.getValue()); } - setEntities(newEntities: Partial): void { - this._allEntities$.next(newEntities); - } - - setSelectedEntities(newEntities: Partial): void { - this._selectedEntities$.next(newEntities); - } - - isSelected(entity: T): boolean { - return this.selectedEntities.indexOf(entity) !== -1; - } - - selectEntities(entities?: T[]): void { - if (entities !== undefined && entities !== null && entities.length > 0) { - return entities.forEach(entity => this._selectOne(entity)); - } - return this._selectAll(); - } - - updateSelection(): void { - const items = this.displayedEntities.filter(item => this.selectedEntities.includes(item)); - this.setSelectedEntities(items); - } - - logCurrentState(): void { - console.log('Entities', this.allEntities); - console.log('Displayed', this.displayedEntities); - console.log('Selected', this.selectedEntities); - } - get _getDisplayedEntities$(): Observable { const filterGroups$ = this._filterService.filterGroups$; const searchValue$ = this._searchService.valueChanges$; @@ -133,6 +100,40 @@ export class ScreenStateService { ); } + private get _allEntitiesSelected() { + return this.displayedEntities.length !== 0 && this.displayedEntities.length === this.selectedEntities.length; + } + + setEntities(newEntities: Partial): void { + this._allEntities$.next(newEntities); + } + + setSelectedEntities(newEntities: Partial): void { + this._selectedEntities$.next(newEntities); + } + + isSelected(entity: T): boolean { + return this.selectedEntities.indexOf(entity) !== -1; + } + + selectEntities(entities?: T[]): void { + if (entities !== undefined && entities !== null && entities.length > 0) { + return entities.forEach(entity => this._selectOne(entity)); + } + return this._selectAll(); + } + + updateSelection(): void { + const items = this.displayedEntities.filter(item => this.selectedEntities.includes(item)); + this.setSelectedEntities(items); + } + + logCurrentState(): void { + console.log('Entities', this.allEntities); + console.log('Displayed', this.displayedEntities); + console.log('Selected', this.selectedEntities); + } + private _selectOne(entity: T): void { const currentEntityIdx = this.selectedEntities.indexOf(entity); if (currentEntityIdx === -1) { @@ -145,8 +146,4 @@ export class ScreenStateService { if (this._allEntitiesSelected) return this.setSelectedEntities([]); this.setSelectedEntities(this.displayedEntities); } - - private get _allEntitiesSelected() { - return this.displayedEntities.length !== 0 && this.displayedEntities.length === this.selectedEntities.length; - } } diff --git a/apps/red-ui/src/app/modules/shared/services/search.service.ts b/apps/red-ui/src/app/modules/shared/services/search.service.ts index 93a4453e9..680229212 100644 --- a/apps/red-ui/src/app/modules/shared/services/search.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/search.service.ts @@ -4,16 +4,18 @@ import { startWith } from 'rxjs/operators'; @Injectable() export class SearchService { - private _searchKey: string; - readonly searchForm = this._formBuilder.group({ query: [''] }); - readonly valueChanges$ = this.searchForm.get('query').valueChanges.pipe(startWith('')); + private _searchKey: string; constructor(private readonly _formBuilder: FormBuilder) {} + get searchValue(): string { + return this.searchForm.get('query').value; + } + searchIn(entities: T[]) { if (!this._searchKey) return entities; @@ -25,10 +27,6 @@ export class SearchService { this._searchKey = value; } - get searchValue(): string { - return this.searchForm.get('query').value; - } - reset(): void { this.searchForm.reset({ query: '' }); } diff --git a/apps/red-ui/src/app/services/sorting.service.ts b/apps/red-ui/src/app/services/sorting.service.ts index c6f620aeb..0894e2776 100644 --- a/apps/red-ui/src/app/services/sorting.service.ts +++ b/apps/red-ui/src/app/services/sorting.service.ts @@ -17,6 +17,18 @@ export interface SortingOption { export class SortingService { private _sortingOption: SortingOption; + get sortingOption(): SortingOption { + return this._sortingOption; + } + + private get _currentOrder(): SortingOrder { + return this._sortingOption.order; + } + + private set _currentOrder(value: SortingOrder) { + this._sortingOption.order = value; + } + setSortingOption(value: SortingOption): void { this._sortingOption = value; } @@ -49,16 +61,4 @@ export class SortingService { this._sortingOption = { column, order: SortingOrders.ASC }; } } - - get sortingOption(): SortingOption { - return this._sortingOption; - } - - private get _currentOrder(): SortingOrder { - return this._sortingOption.order; - } - - private set _currentOrder(value: SortingOrder) { - this._sortingOption.order = value; - } } diff --git a/apps/red-ui/src/app/services/user-preference.service.ts b/apps/red-ui/src/app/services/user-preference.service.ts index e2999f0ce..f788146b5 100644 --- a/apps/red-ui/src/app/services/user-preference.service.ts +++ b/apps/red-ui/src/app/services/user-preference.service.ts @@ -9,14 +9,14 @@ interface UserAttributes { providedIn: 'root' }) export class UserPreferenceService { - private _userAttributes: UserAttributes = {}; - constructor(private readonly _userPreferenceControllerService: UserPreferenceControllerService) { _userPreferenceControllerService.getAllUserAttributes().subscribe(attributes => { this._userAttributes = attributes ?? {}; }); } + private _userAttributes: UserAttributes = {}; + get userAttributes(): UserAttributes { return this._userAttributes; } diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg index df53361e4..82ddb11d8 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg @@ -1,11 +1,13 @@ - + - + diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg index a7c3e888e..6765155b5 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg @@ -1,7 +1,7 @@ - + - 711C9D82-CAA8-47BE-954A-A9DA22CE85E6 - + - + diff --git a/apps/red-ui/src/assets/icons/general/reason.svg b/apps/red-ui/src/assets/icons/general/reason.svg index 2c3bfed3f..f08160e93 100644 --- a/apps/red-ui/src/assets/icons/general/reason.svg +++ b/apps/red-ui/src/assets/icons/general/reason.svg @@ -1 +1,14 @@ - \ No newline at end of file + + + + + + + + + + + diff --git a/apps/red-ui/src/assets/styles/red-controls.scss b/apps/red-ui/src/assets/styles/red-controls.scss index 339ec9625..919a592f1 100644 --- a/apps/red-ui/src/assets/styles/red-controls.scss +++ b/apps/red-ui/src/assets/styles/red-controls.scss @@ -43,6 +43,7 @@ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Old versions of Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; /* Non-prefixed version, currently - supported by Chrome, Edge, Opera and Firefox */ + user-select: none; + /* Non-prefixed version, currently + supported by Chrome, Edge, Opera and Firefox */ }