refactor dossier model
This commit is contained in:
parent
a546b155db
commit
c0640a65dc
@ -63,7 +63,7 @@ export class BaseScreenComponent {
|
||||
text: this._translateService.instant('search.this-dossier'),
|
||||
icon: 'red:enter',
|
||||
hide: (): boolean => !this.appStateService.activeDossier,
|
||||
action: (query): void => this._search(query, this.appStateService.activeDossier.dossierId)
|
||||
action: (query): void => this._search(query, this.appStateService.activeDossier.id)
|
||||
},
|
||||
{
|
||||
text: this._translateService.instant('search.entire-platform'),
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { AuditModel } from '@redaction/red-ui-http';
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
|
||||
export class AuditModelWrapper implements Listable {
|
||||
export class AuditModelWrapper implements IListable {
|
||||
constructor(public auditModel: AuditModel) {}
|
||||
|
||||
get category(): string {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { DossierTemplateModel, FileAttributesConfig } from '@redaction/red-ui-http';
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
|
||||
export class DossierTemplateModelWrapper implements Listable {
|
||||
export class DossierTemplateModelWrapper implements IListable {
|
||||
dictionariesCount = 0;
|
||||
totalDictionaryEntries = 0;
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
import { FileAttributesConfig, FileStatus } from '@redaction/red-ui-http';
|
||||
import { StatusSorter } from '@utils/sorters/status-sorter';
|
||||
|
||||
@ -10,7 +10,7 @@ const processingStatuses = [
|
||||
FileStatus.StatusEnum.PROCESSING
|
||||
] as const;
|
||||
|
||||
export class FileStatusWrapper implements FileStatus, Listable {
|
||||
export class FileStatusWrapper implements FileStatus, IListable {
|
||||
readonly added = this.fileStatus.added;
|
||||
readonly allManualRedactionsApplied = this.fileStatus.allManualRedactionsApplied;
|
||||
readonly analysisDuration = this.fileStatus.analysisDuration;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
import { TypeValue } from '@redaction/red-ui-http';
|
||||
|
||||
export class TypeValueWrapper implements Listable {
|
||||
export class TypeValueWrapper implements IListable {
|
||||
entries: string[] = [];
|
||||
|
||||
constructor(public typeValue: TypeValue, public label?: string, public virtual?: boolean) {
|
||||
|
||||
@ -5,9 +5,9 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import * as moment from 'moment';
|
||||
import { Moment } from 'moment';
|
||||
import {
|
||||
Dossier,
|
||||
DossierTemplateControllerService,
|
||||
DossierTemplateModel,
|
||||
DownloadFileType,
|
||||
ReportTemplate,
|
||||
ReportTemplateControllerService
|
||||
} from '@redaction/red-ui-http';
|
||||
@ -23,8 +23,8 @@ export class AddEditDossierTemplateDialogComponent implements OnInit {
|
||||
dossierTemplateForm: FormGroup;
|
||||
hasValidFrom: boolean;
|
||||
hasValidTo: boolean;
|
||||
downloadTypesEnum: Dossier.DownloadFileTypesEnum[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
|
||||
downloadTypes: { key: Dossier.DownloadFileTypesEnum; label: string }[] = this.downloadTypesEnum.map(type => ({
|
||||
downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
|
||||
downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({
|
||||
key: type,
|
||||
label: downloadTypesTranslations[type]
|
||||
}));
|
||||
|
||||
@ -5,10 +5,10 @@ import * as Papa from 'papaparse';
|
||||
import { FileAttributeConfig, FileAttributesConfig, FileAttributesControllerService } from '@redaction/red-ui-http';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, startWith } from 'rxjs/operators';
|
||||
import { DefaultListingServices, Listable, ListingComponent, TableColumnConfig, Toaster } from '@iqser/common-ui';
|
||||
import { DefaultListingServices, IListable, ListingComponent, TableColumnConfig, Toaster } from '@iqser/common-ui';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
|
||||
export interface Field extends Listable {
|
||||
export interface Field extends IListable {
|
||||
id: string;
|
||||
csvColumn: string;
|
||||
name: string;
|
||||
|
||||
@ -3,13 +3,20 @@ import { AppStateService } from '@state/app-state.service';
|
||||
import { Colors, DictionaryControllerService } from '@redaction/red-ui-http';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||
import { CircleButtonTypes, DefaultListingServices, Listable, ListingComponent, LoadingService, TableColumnConfig } from '@iqser/common-ui';
|
||||
import {
|
||||
CircleButtonTypes,
|
||||
DefaultListingServices,
|
||||
IListable,
|
||||
ListingComponent,
|
||||
LoadingService,
|
||||
TableColumnConfig
|
||||
} from '@iqser/common-ui';
|
||||
import { DefaultColorType } from '@models/default-color-key.model';
|
||||
import { defaultColorsTranslations } from '../../translations/default-colors-translations';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { UserService } from '@services/user.service';
|
||||
|
||||
interface ListItem extends Listable {
|
||||
interface ListItem extends IListable {
|
||||
readonly key: string;
|
||||
readonly value: string;
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit, TemplateRef, ViewChild } from '@angular/core';
|
||||
import { Dossier } from '@redaction/red-ui-http';
|
||||
import { IDossier } from '@redaction/red-ui-http';
|
||||
import {
|
||||
CircleButtonTypes,
|
||||
DefaultListingServices,
|
||||
Listable,
|
||||
IListable,
|
||||
ListingComponent,
|
||||
LoadingService,
|
||||
SortingOrders,
|
||||
@ -20,7 +20,7 @@ import { distinctUntilChanged, map } from 'rxjs/operators';
|
||||
import { getLeftDateTime } from '@utils/functions';
|
||||
import { RouterHistoryService } from '@services/router-history.service';
|
||||
|
||||
interface DossierListItem extends Dossier, Listable {
|
||||
interface DossierListItem extends IDossier, IListable {
|
||||
readonly canRestore: boolean;
|
||||
readonly restoreDate: string;
|
||||
}
|
||||
@ -140,11 +140,11 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
return daysLeft >= 0 && hoursLeft >= 0 && minutesLeft > 0;
|
||||
}
|
||||
|
||||
private _toListItems(dossiers: Dossier[]): DossierListItem[] {
|
||||
private _toListItems(dossiers: IDossier[]): DossierListItem[] {
|
||||
return dossiers.map(dossier => this._toListItem(dossier));
|
||||
}
|
||||
|
||||
private _toListItem(dossier: Dossier): DossierListItem {
|
||||
private _toListItem(dossier: IDossier): DossierListItem {
|
||||
const restoreDate = this._getRestoreDate(dossier.softDeletedTime);
|
||||
return {
|
||||
id: dossier.dossierId,
|
||||
@ -157,19 +157,19 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
}
|
||||
|
||||
private async _restore(dossiers: DossierListItem[]): Promise<void> {
|
||||
const dossierIds = dossiers.map(d => d.dossierId);
|
||||
const dossierIds = dossiers.map(d => d.id);
|
||||
await this._dossiersService.restore(dossierIds);
|
||||
this._removeFromList(dossierIds);
|
||||
}
|
||||
|
||||
private async _hardDelete(dossiers: DossierListItem[]) {
|
||||
const dossierIds = dossiers.map(d => d.dossierId);
|
||||
const dossierIds = dossiers.map(d => d.id);
|
||||
await this._dossiersService.hardDelete(dossierIds);
|
||||
this._removeFromList(dossierIds);
|
||||
}
|
||||
|
||||
private _removeFromList(ids: string[]): void {
|
||||
const entities = this.entitiesService.all.filter(e => !ids.includes(e.dossierId));
|
||||
const entities = this.entitiesService.all.filter(e => !ids.includes(e.id));
|
||||
this.entitiesService.setEntities(entities);
|
||||
this.entitiesService.setSelected([]);
|
||||
}
|
||||
|
||||
@ -164,7 +164,7 @@ export class DossierOverviewBulkActionsComponent {
|
||||
async reanalyse() {
|
||||
const fileIds = this.selectedFiles.filter(file => file.analysisRequired).map(file => file.fileId);
|
||||
this._performBulkAction(
|
||||
this._reanalysisControllerService.reanalyzeFilesForDossier(fileIds, this._appStateService.activeDossier.dossierId)
|
||||
this._reanalysisControllerService.reanalyzeFilesForDossier(fileIds, this._appStateService.activeDossier.id)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<mat-icon svgIcon="red:user"></mat-icon>
|
||||
<span>{{ 'dossier-overview.dossier-details.stats.people' | translate: { count: activeDossier.memberCount } }}</span>
|
||||
<span>{{ 'dossier-overview.dossier-details.stats.people' | translate: { count: activeDossier.memberIds.length } }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<mat-icon svgIcon="red:pages"></mat-icon>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { DossierTemplateModel } from '@redaction/red-ui-http';
|
||||
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
|
||||
|
||||
@ -17,7 +17,7 @@ export class DossierDetailsStatsComponent {
|
||||
|
||||
constructor(private readonly _appStateService: AppStateService, private readonly _dialogService: DossiersDialogService) {}
|
||||
|
||||
get activeDossier(): DossierWrapper {
|
||||
get activeDossier(): Dossier {
|
||||
return this._appStateService.activeDossier;
|
||||
}
|
||||
|
||||
|
||||
@ -5,8 +5,7 @@ import { DoughnutChartConfig } from '@shared/components/simple-doughnut-chart/si
|
||||
import { TranslateChartService } from '@services/translate-chart.service';
|
||||
import { StatusSorter } from '@utils/sorters/status-sorter';
|
||||
import { UserService, UserWrapper } from '@services/user.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { FilterService } from '@iqser/common-ui';
|
||||
import { FilterService, List, Toaster } from '@iqser/common-ui';
|
||||
import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
|
||||
import { fileStatusTranslations } from '../../translations/file-status-translations';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
@ -39,7 +38,7 @@ export class DossierDetailsComponent implements OnInit {
|
||||
private readonly _toaster: Toaster
|
||||
) {}
|
||||
|
||||
get memberIds(): string[] {
|
||||
get memberIds(): List {
|
||||
return this.appStateService.activeDossier.memberIds;
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { StatusSorter } from '@utils/sorters/status-sorter';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
|
||||
@ -17,8 +17,8 @@ export class DossierListingActionsComponent {
|
||||
readonly circleButtonTypes = CircleButtonTypes;
|
||||
readonly currentUser = this._userService.currentUser;
|
||||
|
||||
@Input() dossier: DossierWrapper;
|
||||
@Output() actionPerformed = new EventEmitter<DossierWrapper | undefined>();
|
||||
@Input() dossier: Dossier;
|
||||
@Output() actionPerformed = new EventEmitter<Dossier | undefined>();
|
||||
|
||||
constructor(
|
||||
readonly permissionsService: PermissionsService,
|
||||
@ -27,14 +27,14 @@ export class DossierListingActionsComponent {
|
||||
private readonly _userService: UserService
|
||||
) {}
|
||||
|
||||
openEditDossierDialog($event: MouseEvent, dossierWrapper: DossierWrapper): void {
|
||||
openEditDossierDialog($event: MouseEvent, dossierWrapper: Dossier): void {
|
||||
this._dialogService.openDialog('editDossier', $event, {
|
||||
dossierWrapper,
|
||||
afterSave: () => this.actionPerformed.emit()
|
||||
});
|
||||
}
|
||||
|
||||
reanalyseDossier($event: MouseEvent, dossier: DossierWrapper): void {
|
||||
reanalyseDossier($event: MouseEvent, dossier: Dossier): void {
|
||||
$event.stopPropagation();
|
||||
this.appStateService.reanalyzeDossier(dossier).then(() => {
|
||||
this.appStateService.loadAllDossiers().then(() => this.actionPerformed.emit());
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Component, Input } from '@angular/core';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-needs-work-badge',
|
||||
@ -9,7 +9,7 @@ import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
styleUrls: ['./needs-work-badge.component.scss']
|
||||
})
|
||||
export class NeedsWorkBadgeComponent {
|
||||
@Input() needsWorkInput: FileStatusWrapper | DossierWrapper;
|
||||
@Input() needsWorkInput: FileStatusWrapper | Dossier;
|
||||
|
||||
constructor(private readonly _appStateService: AppStateService) {}
|
||||
|
||||
@ -50,7 +50,7 @@ export class NeedsWorkBadgeComponent {
|
||||
}
|
||||
|
||||
reanalysisRequired() {
|
||||
if (this.needsWorkInput instanceof DossierWrapper) {
|
||||
if (this.needsWorkInput instanceof Dossier) {
|
||||
return this.needsWorkInput.reanalysisRequired;
|
||||
} else {
|
||||
return this.needsWorkInput.analysisRequired;
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { Dossier } from '@redaction/red-ui-http';
|
||||
import { IDossier } from '@redaction/red-ui-http';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
|
||||
@Component({
|
||||
@ -16,9 +16,9 @@ export class TeamMembersManagerComponent implements OnInit {
|
||||
teamForm: FormGroup;
|
||||
searchQuery = '';
|
||||
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Input() dossierWrapper: Dossier;
|
||||
|
||||
@Output() readonly save = new EventEmitter<Dossier>();
|
||||
@Output() readonly save = new EventEmitter<IDossier>();
|
||||
readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id);
|
||||
selectedReviewersList: string[] = [];
|
||||
membersSelectOptions: string[] = [];
|
||||
@ -125,10 +125,10 @@ export class TeamMembersManagerComponent implements OnInit {
|
||||
return;
|
||||
}
|
||||
|
||||
const initialMembers = this.dossierWrapper.memberIds.sort();
|
||||
const initialMembers = [...this.dossierWrapper.memberIds].sort();
|
||||
const currentMembers = this.selectedMembersList.sort();
|
||||
|
||||
const initialApprovers = this.dossierWrapper.approverIds.sort();
|
||||
const initialApprovers = [...this.dossierWrapper.approverIds].sort();
|
||||
const currentApprovers = this.selectedApproversList.sort();
|
||||
|
||||
this.changed = this._compareLists(initialMembers, currentMembers) || this._compareLists(initialApprovers, currentApprovers);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
||||
import { CircleButtonTypes } from '@iqser/common-ui';
|
||||
import { CircleButtonTypes, List } from '@iqser/common-ui';
|
||||
import { UserService } from '@services/user.service';
|
||||
|
||||
@Component({
|
||||
@ -11,7 +11,7 @@ export class TeamMembersComponent {
|
||||
readonly circleButtonTypes = CircleButtonTypes;
|
||||
readonly currentUser = this._userService.currentUser;
|
||||
|
||||
@Input() memberIds: string[];
|
||||
@Input() memberIds: List;
|
||||
@Input() perLine: number;
|
||||
@Input() canAdd = true;
|
||||
@Input() largeSpacing = false;
|
||||
@ -30,7 +30,7 @@ export class TeamMembersComponent {
|
||||
return this.perLine - (this.canAdd ? 1 : 0);
|
||||
}
|
||||
|
||||
get displayedMembers(): string[] {
|
||||
get displayedMembers(): List {
|
||||
return this.expandedTeam || !this.overflowCount ? this.memberIds : this.memberIds.slice(0, this.maxTeamMembersBeforeExpand - 1);
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { MatDialogRef } from '@angular/material/dialog';
|
||||
import { Dossier, DossierTemplateModel, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
|
||||
import { DossierTemplateModel, DownloadFileType, IDossier, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import * as moment from 'moment';
|
||||
@ -16,8 +16,8 @@ export class AddDossierDialogComponent {
|
||||
|
||||
dossierForm: FormGroup;
|
||||
hasDueDate = false;
|
||||
downloadTypesEnum: Dossier.DownloadFileTypesEnum[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
|
||||
downloadTypes: { key: Dossier.DownloadFileTypesEnum; label: string }[] = this.downloadTypesEnum.map(type => ({
|
||||
downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
|
||||
downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({
|
||||
key: type,
|
||||
label: downloadTypesTranslations[type]
|
||||
}));
|
||||
@ -68,21 +68,14 @@ export class AddDossierDialogComponent {
|
||||
}
|
||||
|
||||
async saveDossier() {
|
||||
const dossier: Dossier = this._formToObject();
|
||||
|
||||
const foundDossier = this._appStateService.allDossiers.find(p => p.dossierId === dossier.dossierId);
|
||||
if (foundDossier) {
|
||||
dossier.memberIds = foundDossier.memberIds;
|
||||
}
|
||||
|
||||
const savedDossier = await this._appStateService.createOrUpdateDossier(dossier);
|
||||
const savedDossier = await this._appStateService.createOrUpdateDossier(this._formToObject());
|
||||
if (savedDossier) {
|
||||
this.dialogRef.close({ dossier: savedDossier });
|
||||
}
|
||||
}
|
||||
|
||||
async saveDossierAndAddMembers() {
|
||||
const dossier: Dossier = this._formToObject();
|
||||
const dossier: IDossier = this._formToObject();
|
||||
const savedDossier = await this._appStateService.createOrUpdateDossier(dossier);
|
||||
if (savedDossier) {
|
||||
this.dialogRef.close({ addMembers: true, dossier: savedDossier });
|
||||
@ -124,7 +117,7 @@ export class AddDossierDialogComponent {
|
||||
});
|
||||
}
|
||||
|
||||
private _formToObject(): Dossier {
|
||||
private _formToObject(): IDossier {
|
||||
return {
|
||||
dossierName: this.dossierForm.get('dossierName').value,
|
||||
description: this.dossierForm.get('description').value,
|
||||
|
||||
@ -6,12 +6,12 @@ import { UserService } from '@services/user.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
|
||||
class DialogData {
|
||||
mode: 'approver' | 'reviewer';
|
||||
dossier?: DossierWrapper;
|
||||
dossier?: Dossier;
|
||||
files?: FileStatusWrapper[];
|
||||
ignoreChanged?: boolean;
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { FileAttributeConfig, FileAttributesControllerService, FileStatus } from '@redaction/red-ui-http';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
|
||||
@Component({
|
||||
templateUrl: './document-info-dialog.component.html',
|
||||
@ -14,7 +14,7 @@ export class DocumentInfoDialogComponent implements OnInit {
|
||||
file: FileStatus;
|
||||
attributes: FileAttributeConfig[];
|
||||
|
||||
private _dossier: DossierWrapper;
|
||||
private _dossier: Dossier;
|
||||
|
||||
constructor(
|
||||
private readonly _appStateService: AppStateService,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { CircleButtonTypes, IconButtonTypes, LoadingService } from '@iqser/common-ui';
|
||||
@ -18,7 +18,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
|
||||
readonly iconButtonTypes = IconButtonTypes;
|
||||
readonly circleButtonTypes = CircleButtonTypes;
|
||||
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Input() dossierWrapper: Dossier;
|
||||
@Output() updateDossier = new EventEmitter<any>();
|
||||
customAttributes: DossierAttributeWithValue[] = [];
|
||||
imageAttributes: DossierAttributeWithValue[] = [];
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { Component, EventEmitter, forwardRef, Injector, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import {
|
||||
CircleButtonTypes,
|
||||
DefaultListingServices,
|
||||
Listable,
|
||||
IListable,
|
||||
ListingComponent,
|
||||
LoadingService,
|
||||
SortingOrders,
|
||||
@ -21,7 +21,7 @@ import { ConfirmationDialogInput, TitleColors } from '@shared/dialogs/confirmati
|
||||
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
|
||||
interface FileListItem extends FileStatus, Listable {
|
||||
interface FileListItem extends FileStatus, IListable {
|
||||
readonly canRestore: boolean;
|
||||
readonly restoreDate: string;
|
||||
}
|
||||
@ -36,8 +36,8 @@ interface FileListItem extends FileStatus, Listable {
|
||||
]
|
||||
})
|
||||
export class EditDossierDeletedDocumentsComponent extends ListingComponent<FileListItem> implements EditDossierSectionInterface, OnInit {
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Output() updateDossier = new EventEmitter<any>();
|
||||
@Input() dossier: Dossier;
|
||||
@Output() readonly updateDossier = new EventEmitter();
|
||||
readonly changed = false;
|
||||
readonly canRestoreSelected$ = this._canRestoreSelected$;
|
||||
disabled: boolean;
|
||||
@ -91,7 +91,7 @@ export class EditDossierDeletedDocumentsComponent extends ListingComponent<FileL
|
||||
async ngOnInit() {
|
||||
this._configureTableColumns();
|
||||
this._loadingService.start();
|
||||
const files = await this._statusController.getDeletedFileStatus(this.dossierWrapper.dossierId).toPromise();
|
||||
const files = await this._statusController.getDeletedFileStatus(this.dossier.id).toPromise();
|
||||
this.entitiesService.setEntities(this._toListItems(files));
|
||||
this.sortingService.setSortingOption({
|
||||
column: 'softDeleted',
|
||||
@ -138,7 +138,7 @@ export class EditDossierDeletedDocumentsComponent extends ListingComponent<FileL
|
||||
|
||||
private async _restore(files: FileListItem[]): Promise<void> {
|
||||
const fileIds = files.map(f => f.fileId);
|
||||
await this._fileManagementController.restoreFiles(fileIds, this.dossierWrapper.dossierId).toPromise();
|
||||
await this._fileManagementController.restoreFiles(fileIds, this.dossier.id).toPromise();
|
||||
this._removeFromList(fileIds);
|
||||
await this._appStateService.reloadActiveDossierFiles();
|
||||
this.updateDossier.emit();
|
||||
@ -146,7 +146,7 @@ export class EditDossierDeletedDocumentsComponent extends ListingComponent<FileL
|
||||
|
||||
private async _hardDelete(files: FileListItem[]) {
|
||||
const fileIds = files.map(f => f.fileId);
|
||||
await this._fileManagementController.hardDeleteFile(this.dossierWrapper.dossierId, fileIds).toPromise();
|
||||
await this._fileManagementController.hardDeleteFile(this.dossier.id, fileIds).toPromise();
|
||||
this._removeFromList(fileIds);
|
||||
this.updateDossier.emit();
|
||||
}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
<div class="header-wrapper">
|
||||
<div class="heading">
|
||||
<div>{{ dossierWrapper.type?.label }}</div>
|
||||
<div>{{ dossier.type?.label }}</div>
|
||||
<div class="small-label stats-subtitle">
|
||||
<div>
|
||||
<mat-icon svgIcon="red:entries"></mat-icon>
|
||||
{{ 'edit-dossier-dialog.dictionary.entries' | translate: { length: (dossierWrapper.type?.entries || []).length } }}
|
||||
{{ 'edit-dossier-dialog.dictionary.entries' | translate: { length: (dossier.type?.entries || []).length } }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -19,13 +19,13 @@
|
||||
[placeholder]="'edit-dossier-dialog.dictionary.display-name.placeholder' | translate"
|
||||
[saveTooltip]="'edit-dossier-dialog.dictionary.display-name.save' | translate"
|
||||
[showPreview]="false"
|
||||
[value]="dossierWrapper.type?.label"
|
||||
[value]="dossier.type?.label"
|
||||
></iqser-editable-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<redaction-dictionary-manager
|
||||
[canEdit]="canEdit"
|
||||
[initialEntries]="dossierWrapper.type?.entries || []"
|
||||
[initialEntries]="dossier.type?.entries || []"
|
||||
[withFloatingActions]="false"
|
||||
></redaction-dictionary-manager>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component';
|
||||
@ -15,8 +15,8 @@ import { Dictionary, DictionaryControllerService } from '@redaction/red-ui-http'
|
||||
styleUrls: ['./edit-dossier-dictionary.component.scss']
|
||||
})
|
||||
export class EditDossierDictionaryComponent implements EditDossierSectionInterface, OnInit {
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Output() updateDossier: EventEmitter<any> = new EventEmitter<any>();
|
||||
@Input() dossier: Dossier;
|
||||
@Output() readonly updateDossier = new EventEmitter();
|
||||
canEdit = false;
|
||||
readonly circleButtonTypes = CircleButtonTypes;
|
||||
|
||||
@ -30,7 +30,7 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa
|
||||
private readonly _loadingService: LoadingService,
|
||||
private readonly _formBuilder: FormBuilder
|
||||
) {
|
||||
this.canEdit = this._permissionsService.isDossierMember(this.dossierWrapper);
|
||||
this.canEdit = this._permissionsService.isDossierMember(this.dossier);
|
||||
}
|
||||
|
||||
get changed() {
|
||||
@ -43,16 +43,16 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa
|
||||
|
||||
async ngOnInit() {
|
||||
this._loadingService.start();
|
||||
await this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId);
|
||||
await this._appStateService.updateDossierDictionary(this.dossier.dossierTemplateId, this.dossier.id);
|
||||
this._loadingService.stop();
|
||||
}
|
||||
|
||||
async updateDisplayName(label: string) {
|
||||
const typeValue: Dictionary = { ...this.dossierWrapper.type, label };
|
||||
const typeValue: Dictionary = { ...this.dossier.type, label };
|
||||
await this._dictionaryControllerService
|
||||
.updateType(typeValue, this.dossierWrapper.dossierTemplateId, 'dossier_redaction', this.dossierWrapper.dossierId)
|
||||
.updateType(typeValue, this.dossier.dossierTemplateId, 'dossier_redaction', this.dossier.id)
|
||||
.toPromise();
|
||||
await this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId);
|
||||
await this._appStateService.updateDossierDictionary(this.dossier.dossierTemplateId, this.dossier.id);
|
||||
this.updateDossier.emit();
|
||||
}
|
||||
|
||||
@ -61,13 +61,13 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa
|
||||
.saveEntries(
|
||||
this._dictionaryManager.currentEntries,
|
||||
this._dictionaryManager.initialEntries,
|
||||
this.dossierWrapper.dossierTemplateId,
|
||||
this.dossier.dossierTemplateId,
|
||||
'dossier_redaction',
|
||||
this.dossierWrapper.dossierId,
|
||||
this.dossier.id,
|
||||
false
|
||||
)
|
||||
.toPromise();
|
||||
await this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId);
|
||||
await this._appStateService.updateDossierDictionary(this.dossier.dossierTemplateId, this.dossier.id);
|
||||
this.updateDossier.emit();
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { Dossier, DossierTemplateModel, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
|
||||
import { DossierTemplateModel, DownloadFileType, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
|
||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { downloadTypesTranslations } from '../../../../../translations/download-types-translations';
|
||||
|
||||
@ -13,15 +13,15 @@ import { downloadTypesTranslations } from '../../../../../translations/download-
|
||||
})
|
||||
export class EditDossierDownloadPackageComponent implements OnInit, EditDossierSectionInterface {
|
||||
dossierForm: FormGroup;
|
||||
downloadTypesEnum: Dossier.DownloadFileTypesEnum[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
|
||||
downloadTypes: { key: Dossier.DownloadFileTypesEnum; label: string }[] = this.downloadTypesEnum.map(type => ({
|
||||
downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
|
||||
downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({
|
||||
key: type,
|
||||
label: downloadTypesTranslations[type]
|
||||
}));
|
||||
dossierTemplates: DossierTemplateModel[];
|
||||
availableReportTypes: ReportTemplate[] = [];
|
||||
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Input() dossierWrapper: Dossier;
|
||||
@Output() updateDossier = new EventEmitter<any>();
|
||||
|
||||
constructor(
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<section class="dialog">
|
||||
<div class="dialog-header heading-l">
|
||||
{{ 'edit-dossier-dialog.header' | translate: { dossierName: dossierWrapper.dossierName } }}
|
||||
{{ 'edit-dossier-dialog.header' | translate: { dossierName: dossier.dossierName } }}
|
||||
</div>
|
||||
|
||||
<div class="dialog-content">
|
||||
@ -22,37 +22,37 @@
|
||||
<redaction-edit-dossier-general-info
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'dossierInfo'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
[dossierWrapper]="dossier"
|
||||
></redaction-edit-dossier-general-info>
|
||||
|
||||
<redaction-edit-dossier-download-package
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'downloadPackage'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
[dossierWrapper]="dossier"
|
||||
></redaction-edit-dossier-download-package>
|
||||
|
||||
<redaction-edit-dossier-dictionary
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'dossierDictionary'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
[dossier]="dossier"
|
||||
></redaction-edit-dossier-dictionary>
|
||||
|
||||
<redaction-edit-dossier-team-members
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'members'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
[dossierWrapper]="dossier"
|
||||
></redaction-edit-dossier-team-members>
|
||||
|
||||
<redaction-edit-dossier-attributes
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'dossierAttributes'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
[dossierWrapper]="dossier"
|
||||
></redaction-edit-dossier-attributes>
|
||||
|
||||
<redaction-edit-dossier-deleted-documents
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'deletedDocuments'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
[dossier]="dossier"
|
||||
></redaction-edit-dossier-deleted-documents>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectorRef, Component, Inject, ViewChild } from '@angular/core';
|
||||
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { EditDossierGeneralInfoComponent } from './general-info/edit-dossier-general-info.component';
|
||||
import { EditDossierDownloadPackageComponent } from './download-package/edit-dossier-download-package.component';
|
||||
import { EditDossierSectionInterface } from './edit-dossier-section.interface';
|
||||
@ -22,7 +22,7 @@ type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'member
|
||||
export class EditDossierDialogComponent {
|
||||
readonly navItems: { key: Section; title?: string; sideNavTitle?: string }[];
|
||||
activeNav: Section;
|
||||
dossierWrapper: DossierWrapper;
|
||||
dossier: Dossier;
|
||||
|
||||
@ViewChild(EditDossierGeneralInfoComponent) generalInfoComponent: EditDossierGeneralInfoComponent;
|
||||
@ViewChild(EditDossierDownloadPackageComponent) downloadPackageComponent: EditDossierDownloadPackageComponent;
|
||||
@ -37,7 +37,7 @@ export class EditDossierDialogComponent {
|
||||
private readonly _changeRef: ChangeDetectorRef,
|
||||
@Inject(MAT_DIALOG_DATA)
|
||||
private readonly _data: {
|
||||
dossierWrapper: DossierWrapper;
|
||||
dossierWrapper: Dossier;
|
||||
afterSave: Function;
|
||||
section?: Section;
|
||||
}
|
||||
@ -73,7 +73,7 @@ export class EditDossierDialogComponent {
|
||||
}
|
||||
];
|
||||
|
||||
this.dossierWrapper = _data.dossierWrapper;
|
||||
this.dossier = _data.dossierWrapper;
|
||||
this.activeNav = _data.section || 'dossierInfo';
|
||||
}
|
||||
|
||||
@ -105,8 +105,8 @@ export class EditDossierDialogComponent {
|
||||
}
|
||||
|
||||
updatedDossier() {
|
||||
this._toaster.success(_('edit-dossier-dialog.change-successful'), { params: { dossierName: this.dossierWrapper.dossierName } });
|
||||
this.dossierWrapper = this._appStateService.getDossierById(this.dossierWrapper.dossierId);
|
||||
this._toaster.success(_('edit-dossier-dialog.change-successful'), { params: { dossierName: this.dossier.dossierName } });
|
||||
this.dossier = this._appStateService.getDossierById(this.dossier.id);
|
||||
this._changeRef.detectChanges();
|
||||
this.afterSave();
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ import { DossierTemplateModel } from '@redaction/red-ui-http';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { AppStateService } from '../../../../../state/app-state.service';
|
||||
import * as moment from 'moment';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
@ -27,7 +27,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
|
||||
hasDueDate: boolean;
|
||||
dossierTemplates: DossierTemplateModel[];
|
||||
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Input() dossierWrapper: Dossier;
|
||||
@Output() updateDossier = new EventEmitter<any>();
|
||||
|
||||
constructor(
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { TeamMembersManagerComponent } from '../../../components/team-members-manager/team-members-manager.component';
|
||||
import { UserService } from '@services/user.service';
|
||||
@ -13,7 +13,7 @@ import { UserService } from '@services/user.service';
|
||||
export class EditDossierTeamMembersComponent implements EditDossierSectionInterface {
|
||||
readonly currentUser = this._userService.currentUser;
|
||||
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Input() dossierWrapper: Dossier;
|
||||
@Output() updateDossier = new EventEmitter<any>();
|
||||
|
||||
@ViewChild(TeamMembersManagerComponent) managerComponent: TeamMembersManagerComponent;
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { AfterViewInit, Component, forwardRef, Injector, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';
|
||||
import { Dossier } from '@redaction/red-ui-http';
|
||||
import { DossierStatuses } from '@redaction/red-ui-http';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { DoughnutChartConfig } from '@shared/components/simple-doughnut-chart/simple-doughnut-chart.component';
|
||||
import { groupBy } from '@utils/functions';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { timer } from 'rxjs';
|
||||
import { tap } from 'rxjs/operators';
|
||||
import { TranslateChartService } from '@services/translate-chart.service';
|
||||
@ -29,7 +29,7 @@ import { PermissionsService } from '@services/permissions.service';
|
||||
providers: [...DefaultListingServices, { provide: ListingComponent, useExisting: forwardRef(() => DossierListingScreenComponent) }]
|
||||
})
|
||||
export class DossierListingScreenComponent
|
||||
extends ListingComponent<DossierWrapper>
|
||||
extends ListingComponent<Dossier>
|
||||
implements OnInit, AfterViewInit, OnDestroy, OnAttach, OnDetach
|
||||
{
|
||||
readonly currentUser = this._userService.currentUser;
|
||||
@ -43,7 +43,7 @@ export class DossierListingScreenComponent
|
||||
type: 'primary'
|
||||
}
|
||||
];
|
||||
tableColumnConfigs: TableColumnConfig<DossierWrapper>[];
|
||||
tableColumnConfigs: TableColumnConfig<Dossier>[];
|
||||
dossiersChartData: DoughnutChartConfig[] = [];
|
||||
documentsChartData: DoughnutChartConfig[] = [];
|
||||
@ViewChild('nameTemplate', { static: true }) nameTemplate: TemplateRef<never>;
|
||||
@ -57,7 +57,7 @@ export class DossierListingScreenComponent
|
||||
static: true
|
||||
})
|
||||
private readonly _needsWorkFilterTemplate: TemplateRef<unknown>;
|
||||
@ViewChild(TableComponent) private readonly _tableComponent: TableComponent<DossierWrapper>;
|
||||
@ViewChild(TableComponent) private readonly _tableComponent: TableComponent<Dossier>;
|
||||
|
||||
constructor(
|
||||
private readonly _router: Router,
|
||||
@ -76,14 +76,14 @@ export class DossierListingScreenComponent
|
||||
}
|
||||
|
||||
private get _activeDossiersCount(): number {
|
||||
return this.entitiesService.all.filter(p => p.status === Dossier.StatusEnum.ACTIVE).length;
|
||||
return this.entitiesService.all.filter(p => p.status === DossierStatuses.ACTIVE).length;
|
||||
}
|
||||
|
||||
private get _inactiveDossiersCount(): number {
|
||||
return this.entitiesService.all.length - this._activeDossiersCount;
|
||||
}
|
||||
|
||||
routerLinkFn = (dossier: DossierWrapper) => ['/main/dossiers/' + dossier.dossierId];
|
||||
routerLinkFn = (dossier: Dossier) => ['/main/dossiers/' + dossier.id];
|
||||
|
||||
ngOnInit(): void {
|
||||
this._configureTableColumns();
|
||||
@ -120,7 +120,7 @@ export class DossierListingScreenComponent
|
||||
|
||||
openAddDossierDialog(): void {
|
||||
this._dialogService.openDialog('addDossier', null, null, async addResponse => {
|
||||
await this._router.navigate([`/main/dossiers/${addResponse.dossier.dossierId}`]);
|
||||
await this._router.navigate([`/main/dossiers/${addResponse.dossier.id}`]);
|
||||
if (addResponse.addMembers) {
|
||||
this._dialogService.openDialog('editDossier', null, {
|
||||
dossierWrapper: addResponse.dossier,
|
||||
@ -273,7 +273,7 @@ export class DossierListingScreenComponent
|
||||
this.filterService.addFilterGroup({
|
||||
slug: 'quickFilters',
|
||||
filters: quickFilters,
|
||||
checker: (dw: DossierWrapper) => quickFilters.reduce((acc, f) => acc || (f.checked && f.checker(dw)), false)
|
||||
checker: (dw: Dossier) => quickFilters.reduce((acc, f) => acc || (f.checked && f.checker(dw)), false)
|
||||
});
|
||||
|
||||
const dossierFilters = this.entitiesService.all.map<NestedFilter>(dossier => ({
|
||||
@ -296,22 +296,22 @@ export class DossierListingScreenComponent
|
||||
{
|
||||
key: 'my-dossiers',
|
||||
label: myDossiersLabel,
|
||||
checker: (dw: DossierWrapper) => dw.ownerId === this.currentUser.id
|
||||
checker: (dw: Dossier) => dw.ownerId === this.currentUser.id
|
||||
},
|
||||
{
|
||||
key: 'to-approve',
|
||||
label: this._translateService.instant('dossier-listing.quick-filters.to-approve'),
|
||||
checker: (dw: DossierWrapper) => dw.approverIds.includes(this.currentUser.id)
|
||||
checker: (dw: Dossier) => dw.approverIds.includes(this.currentUser.id)
|
||||
},
|
||||
{
|
||||
key: 'to-review',
|
||||
label: this._translateService.instant('dossier-listing.quick-filters.to-review'),
|
||||
checker: (dw: DossierWrapper) => dw.memberIds.includes(this.currentUser.id)
|
||||
checker: (dw: Dossier) => dw.memberIds.includes(this.currentUser.id)
|
||||
},
|
||||
{
|
||||
key: 'other',
|
||||
label: this._translateService.instant('dossier-listing.quick-filters.other'),
|
||||
checker: (dw: DossierWrapper) => !dw.memberIds.includes(this.currentUser.id)
|
||||
checker: (dw: Dossier) => !dw.memberIds.includes(this.currentUser.id)
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@ -52,7 +52,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { annotationFilterChecker } from '@utils/filter-utils';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { RouterHistoryService } from '@services/router-history.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Router } from '@angular/router';
|
||||
import { FileActionService } from '../../services/file-action.service';
|
||||
import StatusEnum = FileStatus.StatusEnum;
|
||||
@ -95,7 +95,7 @@ export class DossierOverviewScreenComponent extends ListingComponent<FileStatusW
|
||||
@ViewChild('needsWorkFilterTemplate', { read: TemplateRef, static: true })
|
||||
private readonly _needsWorkFilterTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('fileInput') private readonly _fileInput: ElementRef;
|
||||
@ViewChild(TableComponent) private readonly _tableComponent: TableComponent<DossierWrapper>;
|
||||
@ViewChild(TableComponent) private readonly _tableComponent: TableComponent<Dossier>;
|
||||
|
||||
constructor(
|
||||
private readonly _toaster: Toaster,
|
||||
@ -210,7 +210,7 @@ export class DossierOverviewScreenComponent extends ListingComponent<FileStatusW
|
||||
}
|
||||
|
||||
routerLinkFn = (fileStatus: FileStatusWrapper) =>
|
||||
fileStatus.canBeOpened ? [`/main/dossiers/${this.currentDossier.dossierId}/file/${fileStatus.fileId}`] : [];
|
||||
fileStatus.canBeOpened ? [`/main/dossiers/${this.currentDossier.id}/file/${fileStatus.fileId}`] : [];
|
||||
|
||||
disabledFn = (fileStatus: FileStatusWrapper) => fileStatus.excluded;
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import {
|
||||
CircleButtonTypes,
|
||||
Debounce,
|
||||
FilterService,
|
||||
List,
|
||||
LoadingService,
|
||||
NestedFilter,
|
||||
processFilters,
|
||||
@ -113,7 +114,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni
|
||||
});
|
||||
}
|
||||
|
||||
get singleUsersSelectOptions(): string[] {
|
||||
get singleUsersSelectOptions(): List {
|
||||
return this.appStateService.activeFile?.isUnderApproval
|
||||
? this.appStateService.activeDossier.approverIds
|
||||
: this.appStateService.activeDossier.memberIds;
|
||||
@ -200,9 +201,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni
|
||||
}
|
||||
|
||||
get canAssignReviewer(): boolean {
|
||||
return (
|
||||
!this.currentReviewer && this.permissionsService.canAssignUser() && this.appStateService.activeDossier.hasMoreThanOneReviewer
|
||||
);
|
||||
return !this.currentReviewer && this.permissionsService.canAssignUser() && this.appStateService.activeDossier.hasReviewers;
|
||||
}
|
||||
|
||||
updateViewMode(): void {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Component, forwardRef, Injector, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';
|
||||
import { DefaultListingServices, keyChecker, Listable, ListingComponent, LoadingService, TableColumnConfig } from '@iqser/common-ui';
|
||||
import { DefaultListingServices, IListable, keyChecker, ListingComponent, LoadingService, TableColumnConfig } from '@iqser/common-ui';
|
||||
import { MatchedDocument, SearchControllerService, SearchResult } from '@redaction/red-ui-http';
|
||||
import { BehaviorSubject, Observable } from 'rxjs';
|
||||
import { debounceTime, map, skip, switchMap, tap } from 'rxjs/operators';
|
||||
@ -9,11 +9,11 @@ import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { fileStatusTranslations } from '../../translations/file-status-translations';
|
||||
import { SearchPositions } from '@shared/components/page-header/models/search-positions.type';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { RouterHistoryService } from '@services/router-history.service';
|
||||
|
||||
interface ListItem extends Listable {
|
||||
interface ListItem extends IListable {
|
||||
readonly dossierId: string;
|
||||
readonly filename: string;
|
||||
readonly unmatched: readonly string[] | null;
|
||||
@ -73,10 +73,10 @@ export class SearchScreenComponent extends ListingComponent<ListItem> implements
|
||||
filterceptionPlaceholder: this._translateService.instant('search-screen.filters.search-placeholder'),
|
||||
icon: 'red:folder',
|
||||
filters: this._appStateService.allDossiers.map(dossier => ({
|
||||
key: dossier.dossierId,
|
||||
key: dossier.id,
|
||||
label: dossier.dossierName
|
||||
})),
|
||||
checker: keyChecker('dossierId')
|
||||
checker: keyChecker('id')
|
||||
});
|
||||
|
||||
this.addSubscription = _activatedRoute.queryParamMap
|
||||
@ -141,7 +141,7 @@ export class SearchScreenComponent extends ListingComponent<ListItem> implements
|
||||
return this._appStateService.getFileById(dossierId, fileId);
|
||||
}
|
||||
|
||||
private _getDossierWrapper(dossierId: string): DossierWrapper {
|
||||
private _getDossierWrapper(dossierId: string): Dossier {
|
||||
return this._appStateService.getDossierById(dossierId);
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Dossier, DossierControllerService } from '@redaction/red-ui-http';
|
||||
import { IDossier, DossierControllerService } from '@redaction/red-ui-http';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@ -7,7 +7,7 @@ import { Dossier, DossierControllerService } from '@redaction/red-ui-http';
|
||||
export class DossiersService {
|
||||
constructor(private readonly _dossierControllerService: DossierControllerService) {}
|
||||
|
||||
createOrUpdate(dossier: Dossier): Promise<Dossier> {
|
||||
createOrUpdate(dossier: IDossier): Promise<IDossier> {
|
||||
return this._dossierControllerService.createOrUpdateDossier(dossier).toPromise();
|
||||
}
|
||||
|
||||
@ -15,11 +15,11 @@ export class DossiersService {
|
||||
return this._dossierControllerService.deleteDossier(dossierId).toPromise();
|
||||
}
|
||||
|
||||
getAll(): Promise<Dossier[]> {
|
||||
getAll(): Promise<IDossier[]> {
|
||||
return this._dossierControllerService.getDossiers().toPromise();
|
||||
}
|
||||
|
||||
getDeleted(): Promise<Dossier[]> {
|
||||
getDeleted(): Promise<IDossier[]> {
|
||||
return this._dossierControllerService.getDeletedDossiers().toPromise();
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { isArray } from 'rxjs/internal-compatibility';
|
||||
import { DossiersDialogService } from './dossiers-dialog.service';
|
||||
import { ConfirmationDialogInput } from '../../shared/dialogs/confirmation-dialog/confirmation-dialog.component';
|
||||
import { ConfirmationDialogInput } from '@shared/dialogs/confirmation-dialog/confirmation-dialog.component';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
@ -25,11 +25,7 @@ export class FileActionService {
|
||||
if (!fileStatusWrapper) {
|
||||
fileStatusWrapper = this._appStateService.activeFile;
|
||||
}
|
||||
return this._reanalysisControllerService.reanalyzeFile(
|
||||
this._appStateService.activeDossier.dossierId,
|
||||
fileStatusWrapper.fileId,
|
||||
true
|
||||
);
|
||||
return this._reanalysisControllerService.reanalyzeFile(this._appStateService.activeDossier.id, fileStatusWrapper.fileId, true);
|
||||
}
|
||||
|
||||
toggleAnalysis(fileStatusWrapper?: FileStatusWrapper) {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { UserService, UserWrapper } from '@services/user.service';
|
||||
import { List } from '@redaction/red-ui-http';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-assign-user-dropdown',
|
||||
@ -9,7 +10,7 @@ import { UserService, UserWrapper } from '@services/user.service';
|
||||
})
|
||||
export class AssignUserDropdownComponent {
|
||||
oldUser: UserWrapper | string;
|
||||
@Input() options: (UserWrapper | string)[];
|
||||
@Input() options: List<UserWrapper | string>;
|
||||
@Output() save = new EventEmitter<UserWrapper | string>();
|
||||
@Output() cancel = new EventEmitter<never>();
|
||||
private _currentUser: UserWrapper | string;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, Input, OnDestroy } from '@angular/core';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { FileDownloadService } from '@upload-download/services/file-download.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
@ -17,7 +17,7 @@ export type MenuState = 'OPEN' | 'CLOSED';
|
||||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class FileDownloadBtnComponent extends AutoUnsubscribe implements OnDestroy {
|
||||
@Input() dossier: DossierWrapper;
|
||||
@Input() dossier: Dossier;
|
||||
@Input() file: FileStatusWrapper | FileStatusWrapper[];
|
||||
@Input() tooltipPosition: 'above' | 'below' | 'before' | 'after' = 'above';
|
||||
@Input() type: CircleButtonType = CircleButtonTypes.default;
|
||||
|
||||
@ -4,7 +4,7 @@ import { AppStateService } from '@state/app-state.service';
|
||||
import { Debounce, IconButtonTypes } from '@iqser/common-ui';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, take } from 'rxjs/operators';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../../../../state/model/dossier';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import ICodeEditor = monaco.editor.ICodeEditor;
|
||||
import IDiffEditor = monaco.editor.IDiffEditor;
|
||||
@ -55,13 +55,13 @@ export class DictionaryManagerComponent implements OnChanges, OnInit {
|
||||
this.currentEntries = this.initialEntries;
|
||||
}
|
||||
|
||||
private _dossier: DossierWrapper = this.selectDossier as DossierWrapper;
|
||||
private _dossier: Dossier = this.selectDossier as Dossier;
|
||||
|
||||
get dossier() {
|
||||
return this._dossier;
|
||||
}
|
||||
|
||||
set dossier(dossier: DossierWrapper) {
|
||||
set dossier(dossier: Dossier) {
|
||||
this._dossier = dossier;
|
||||
|
||||
if (dossier === this.selectDossier) {
|
||||
@ -204,8 +204,8 @@ export class DictionaryManagerComponent implements OnChanges, OnInit {
|
||||
this._codeEditor.revealLineInCenter(range.startLineNumber, SMOOTH_SCROLL);
|
||||
}
|
||||
|
||||
private _onDossierChanged({ dossierId, dossierTemplateId }: DossierWrapper): Observable<string> {
|
||||
const dictionary$ = this._dictionaryControllerService.getDictionaryForType(dossierTemplateId, 'dossier_redaction', dossierId);
|
||||
private _onDossierChanged({ id, dossierTemplateId }: Dossier): Observable<string> {
|
||||
const dictionary$ = this._dictionaryControllerService.getDictionaryForType(dossierTemplateId, 'dossier_redaction', id);
|
||||
|
||||
return dictionary$.pipe(map(data => this._toString(data.entries)));
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ import {
|
||||
DossierAttributesControllerService,
|
||||
DossierAttributesRes
|
||||
} from '@redaction/red-ui-http';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { Observable } from 'rxjs';
|
||||
@ -19,10 +19,10 @@ export class DossierAttributesService {
|
||||
private readonly _appStateService: AppStateService
|
||||
) {}
|
||||
|
||||
async getValues(dossierWrapper: DossierWrapper): Promise<DossierAttributeWithValue[]> {
|
||||
const attributes = await this._dossierAttributesControllerService.getDossierAttributes(dossierWrapper.dossierId).toPromise();
|
||||
async getValues(dossier: Dossier): Promise<DossierAttributeWithValue[]> {
|
||||
const attributes = await this._dossierAttributesControllerService.getDossierAttributes(dossier.id).toPromise();
|
||||
const attributesConfig = await this._dossierAttributesControllerService
|
||||
.getDossierAttributesConfig(dossierWrapper.dossierTemplateId)
|
||||
.getDossierAttributesConfig(dossier.dossierTemplateId)
|
||||
.toPromise();
|
||||
|
||||
return attributesConfig.dossierAttributeConfigs.map(config => ({
|
||||
@ -31,10 +31,8 @@ export class DossierAttributesService {
|
||||
}));
|
||||
}
|
||||
|
||||
setValues(dossierWrapper: DossierWrapper, dossierAttributeList: DossierAttributeReq[]): Promise<DossierAttributesRes> {
|
||||
return this._dossierAttributesControllerService
|
||||
.setDossierAttributes({ dossierAttributeList }, dossierWrapper.dossierId)
|
||||
.toPromise();
|
||||
setValues(dossier: Dossier, dossierAttributeList: DossierAttributeReq[]): Promise<DossierAttributesRes> {
|
||||
return this._dossierAttributesControllerService.setDossierAttributes({ dossierAttributeList }, dossier.id).toPromise();
|
||||
}
|
||||
|
||||
deleteConfigs(ids: string[], dossierTemplateId = this._appStateService.activeDossierTemplateId): Promise<void> {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { DownloadDetails, DownloadStatus } from '@redaction/red-ui-http';
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
|
||||
export class DownloadStatusWrapper implements Listable {
|
||||
export class DownloadStatusWrapper implements IListable {
|
||||
inProgress: boolean;
|
||||
|
||||
constructor(private _downloadStatus: DownloadStatus) {}
|
||||
|
||||
@ -3,7 +3,7 @@ import { DownloadControllerService, FileManagementControllerService } from '@red
|
||||
import { interval, Observable } from 'rxjs';
|
||||
import { ConfigService } from '@services/config.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { mergeMap, tap } from 'rxjs/operators';
|
||||
import { DownloadStatusWrapper } from '../model/download-status.wrapper';
|
||||
@ -34,11 +34,11 @@ export class FileDownloadService {
|
||||
});
|
||||
}
|
||||
|
||||
downloadFiles(fileStatusWrappers: FileStatusWrapper[], dossier: DossierWrapper): Observable<any> {
|
||||
downloadFiles(fileStatusWrappers: FileStatusWrapper[], dossier: Dossier): Observable<any> {
|
||||
return this._downloadControllerService
|
||||
.prepareDownload({
|
||||
fileIds: fileStatusWrappers.map(f => f.fileId),
|
||||
dossierId: dossier.dossierId
|
||||
dossierId: dossier.id
|
||||
})
|
||||
.pipe(mergeMap(() => this.getDownloadStatus()));
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ import { AppStateService } from '@state/app-state.service';
|
||||
import { UserService } from './user.service';
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { Comment } from '@redaction/red-ui-http';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../state/model/dossier';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@ -15,7 +15,7 @@ export class PermissionsService {
|
||||
return this._appStateService.activeFile;
|
||||
}
|
||||
|
||||
private get _activeDossier(): DossierWrapper | undefined {
|
||||
private get _activeDossier(): Dossier | undefined {
|
||||
return this._appStateService.activeDossier;
|
||||
}
|
||||
|
||||
@ -42,14 +42,14 @@ export class PermissionsService {
|
||||
return fileStatus.currentReviewer === this._userService.currentUser.id;
|
||||
}
|
||||
|
||||
canDeleteFile(fileStatus = this._activeFile, dossier?: DossierWrapper): boolean {
|
||||
canDeleteFile(fileStatus = this._activeFile, dossier?: Dossier): boolean {
|
||||
return (this.isOwner(dossier) && !fileStatus.isApproved) || fileStatus.isUnassigned;
|
||||
}
|
||||
|
||||
canAssignToSelf(fileStatus = this._activeFile): boolean {
|
||||
const precondition = this.isDossierMember() && !fileStatus.isProcessing && !fileStatus.isError && !fileStatus.isApproved;
|
||||
|
||||
const isTheOnlyReviewer = !this._appStateService.activeDossier?.hasMoreThanOneReviewer;
|
||||
const isTheOnlyReviewer = !this._appStateService.activeDossier?.hasReviewers;
|
||||
|
||||
if (precondition) {
|
||||
if (
|
||||
@ -66,10 +66,10 @@ export class PermissionsService {
|
||||
const precondition = !fileStatus.isProcessing && !fileStatus.isError && !fileStatus.isApproved && this.isApprover();
|
||||
|
||||
if (precondition) {
|
||||
if ((fileStatus.isUnassigned || fileStatus.isUnderReview) && this._activeDossier.hasMoreThanOneReviewer) {
|
||||
if ((fileStatus.isUnassigned || fileStatus.isUnderReview) && this._activeDossier.hasReviewers) {
|
||||
return true;
|
||||
}
|
||||
if (fileStatus.isUnderApproval && this._activeDossier.hasMoreThanOneApprover) {
|
||||
if (fileStatus.isUnderApproval && this._activeDossier.approverIds.length > 1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import { User, UserControllerService } from '@redaction/red-ui-http';
|
||||
import { wipeCaches } from '@redaction/red-cache';
|
||||
import { BASE_HREF } from '../tokens';
|
||||
import { Subject } from 'rxjs';
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
|
||||
export interface ProfileModel {
|
||||
username?: string;
|
||||
@ -16,7 +16,7 @@ export interface ProfileModel {
|
||||
language: string;
|
||||
}
|
||||
|
||||
export class UserWrapper implements Listable {
|
||||
export class UserWrapper implements IListable {
|
||||
constructor(private readonly _user: KeycloakProfile | User, public roles: string[], public id: string) {}
|
||||
|
||||
email = this._user.email;
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import {
|
||||
DictionaryControllerService,
|
||||
Dossier,
|
||||
DossierTemplateControllerService,
|
||||
FileAttributesConfig,
|
||||
FileAttributesControllerService,
|
||||
FileStatus,
|
||||
IDossier,
|
||||
ReanalysisControllerService,
|
||||
StatusControllerService
|
||||
} from '@redaction/red-ui-http';
|
||||
@ -17,7 +17,7 @@ import { forkJoin, Observable, of, Subject } from 'rxjs';
|
||||
import { catchError, map, tap } from 'rxjs/operators';
|
||||
import { FALLBACK_COLOR, hexToRgb } from '@utils/functions';
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { DossierWrapper } from './model/dossier.wrapper';
|
||||
import { Dossier } from './model/dossier';
|
||||
import { TypeValueWrapper } from '@models/file/type-value.wrapper';
|
||||
import { DossierTemplateModelWrapper } from '@models/file/dossier-template-model.wrapper';
|
||||
import { DossiersService } from '../modules/dossier/services/dossiers.service';
|
||||
@ -25,7 +25,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { UserPreferenceService } from '@services/user-preference.service';
|
||||
|
||||
export interface AppState {
|
||||
dossiers: DossierWrapper[];
|
||||
dossiers: Dossier[];
|
||||
dossierTemplates: DossierTemplateModelWrapper[];
|
||||
activeDossierId: string;
|
||||
activeFileId: string;
|
||||
@ -42,7 +42,7 @@ export interface AppState {
|
||||
export class AppStateService {
|
||||
readonly fileChanged$ = new Subject<FileStatusWrapper>();
|
||||
readonly fileReanalysed$ = new Subject<FileStatusWrapper>();
|
||||
readonly dossierChanged$ = new Subject<DossierWrapper>();
|
||||
readonly dossierChanged$ = new Subject<Dossier>();
|
||||
readonly dossierTemplateChanged$ = new Subject<DossierTemplateModelWrapper>();
|
||||
|
||||
private _appState: AppState;
|
||||
@ -121,11 +121,11 @@ export class AppStateService {
|
||||
return this._appState.activeDossierId;
|
||||
}
|
||||
|
||||
get activeDossier(): DossierWrapper | undefined {
|
||||
return this.allDossiers.find(p => p.dossierId === this.activeDossierId);
|
||||
get activeDossier(): Dossier | undefined {
|
||||
return this.allDossiers.find(p => p.id === this.activeDossierId);
|
||||
}
|
||||
|
||||
get allDossiers(): DossierWrapper[] {
|
||||
get allDossiers(): Dossier[] {
|
||||
return this._appState.dossiers;
|
||||
}
|
||||
|
||||
@ -208,7 +208,7 @@ export class AppStateService {
|
||||
}
|
||||
|
||||
getDossierById(id: string) {
|
||||
return this.allDossiers.find(dossier => dossier.dossierId === id);
|
||||
return this.allDossiers.find(dossier => dossier.id === id);
|
||||
}
|
||||
|
||||
getFileById(dossierId: string, fileId: string) {
|
||||
@ -222,12 +222,12 @@ export class AppStateService {
|
||||
}
|
||||
|
||||
const mappedDossiers = dossiers.map(
|
||||
p => new DossierWrapper(p, this.getDossierTemplateById(p.dossierTemplateId).name, this._getExistingFiles(p.dossierId))
|
||||
p => new Dossier(p, this.getDossierTemplateById(p.dossierTemplateId).name, this._getExistingFiles(p.dossierId))
|
||||
);
|
||||
const fileData = await this._statusControllerService.getFileStatusForDossiers(mappedDossiers.map(p => p.dossierId)).toPromise();
|
||||
const fileData = await this._statusControllerService.getFileStatusForDossiers(mappedDossiers.map(p => p.id)).toPromise();
|
||||
|
||||
for (const dossierId of Object.keys(fileData)) {
|
||||
const dossier = mappedDossiers.find(p => p.dossierId === dossierId);
|
||||
const dossier = mappedDossiers.find(p => p.id === dossierId);
|
||||
this._processFiles(dossier, fileData[dossierId], emitEvents);
|
||||
}
|
||||
|
||||
@ -261,14 +261,14 @@ export class AppStateService {
|
||||
return activeFileWrapper;
|
||||
}
|
||||
|
||||
async getFiles(dossier: DossierWrapper = this.activeDossier, emitEvents = true) {
|
||||
const files = await this._statusControllerService.getDossierStatus(dossier.dossierId).toPromise();
|
||||
async getFiles(dossier: Dossier = this.activeDossier, emitEvents = true) {
|
||||
const files = await this._statusControllerService.getDossierStatus(dossier.id).toPromise();
|
||||
|
||||
return this._processFiles(dossier, files, emitEvents);
|
||||
}
|
||||
|
||||
async reanalyzeDossier({ dossierId }: DossierWrapper = this.activeDossier) {
|
||||
await this._reanalysisControllerService.reanalyzeDossier(dossierId, true).toPromise();
|
||||
async reanalyzeDossier({ id }: Dossier = this.activeDossier) {
|
||||
await this._reanalysisControllerService.reanalyzeDossier(id, true).toPromise();
|
||||
}
|
||||
|
||||
async activateDossier(dossierId: string) {
|
||||
@ -337,29 +337,29 @@ export class AppStateService {
|
||||
this._appState.activeDictionaryType = null;
|
||||
}
|
||||
|
||||
deleteDossier(dossier: DossierWrapper) {
|
||||
return this._dossiersService.delete(dossier.dossierId).then(
|
||||
deleteDossier(dossier: Dossier) {
|
||||
return this._dossiersService.delete(dossier.id).then(
|
||||
() => {
|
||||
const index = this.allDossiers.findIndex(p => p.dossierId === dossier.dossierId);
|
||||
const index = this.allDossiers.findIndex(p => p.id === dossier.id);
|
||||
this._appState.dossiers.splice(index, 1);
|
||||
},
|
||||
() => this._toaster.error(_('dossier-listing.delete.delete-failed'), { params: dossier })
|
||||
);
|
||||
}
|
||||
|
||||
async createOrUpdateDossier(dossier: Dossier) {
|
||||
async createOrUpdateDossier(dossier: IDossier) {
|
||||
try {
|
||||
const updatedDossier = await this._dossiersService.createOrUpdate(dossier);
|
||||
let foundDossier = this.allDossiers.find(p => p.dossierId === updatedDossier.dossierId);
|
||||
let foundDossier = this.allDossiers.find(p => p.id === updatedDossier.dossierId);
|
||||
if (foundDossier) {
|
||||
this._appState.dossiers.splice(this._appState.dossiers.indexOf(foundDossier), 1);
|
||||
foundDossier = new DossierWrapper(
|
||||
foundDossier = new Dossier(
|
||||
updatedDossier,
|
||||
this.getDossierTemplateById(updatedDossier.dossierTemplateId).name,
|
||||
foundDossier.files
|
||||
);
|
||||
} else {
|
||||
foundDossier = new DossierWrapper(updatedDossier, this.getDossierTemplateById(updatedDossier.dossierTemplateId).name, []);
|
||||
foundDossier = new Dossier(updatedDossier, this.getDossierTemplateById(updatedDossier.dossierTemplateId).name, []);
|
||||
}
|
||||
|
||||
this._appState.dossiers.push(foundDossier);
|
||||
@ -689,11 +689,11 @@ export class AppStateService {
|
||||
}
|
||||
|
||||
private _getExistingFiles(dossierId: string): FileStatusWrapper[] {
|
||||
const dossier = this.allDossiers.find(p => p.dossierId === dossierId);
|
||||
const dossier = this.allDossiers.find(p => p.id === dossierId);
|
||||
return dossier?.files ?? [];
|
||||
}
|
||||
|
||||
private _processFiles(dossier: DossierWrapper, files: FileStatus[], emitEvents: boolean = true) {
|
||||
private _processFiles(dossier: Dossier, files: FileStatus[], emitEvents: boolean = true) {
|
||||
const oldFiles = [...dossier.files];
|
||||
|
||||
const fileStatusChangedEvent = [];
|
||||
@ -712,7 +712,7 @@ export class AppStateService {
|
||||
this.getFileAttributeConfig(file.dossierTemplateId)
|
||||
);
|
||||
fileStatusWrapper.lastOpened =
|
||||
fileStatusWrapper.fileId === this._userPreferenceService.getLastOpenedFileForDossier(dossier.dossierId);
|
||||
fileStatusWrapper.fileId === this._userPreferenceService.getLastOpenedFileForDossier(dossier.id);
|
||||
if (JSON.stringify(oldFile) !== JSON.stringify(fileStatusWrapper)) {
|
||||
fileStatusChangedEvent.push(fileStatusWrapper);
|
||||
}
|
||||
@ -749,7 +749,7 @@ export class AppStateService {
|
||||
fileStatusChangedEvent.forEach(file => this.fileChanged$.next(file));
|
||||
}
|
||||
|
||||
const lastOpenedFileId = this._userPreferenceService.getLastOpenedFileForDossier(dossier.dossierId);
|
||||
const lastOpenedFileId = this._userPreferenceService.getLastOpenedFileForDossier(dossier.id);
|
||||
|
||||
dossier.files.forEach(file => (file.lastOpened = file.fileId === lastOpenedFileId));
|
||||
|
||||
@ -764,7 +764,6 @@ export class AppStateService {
|
||||
this.allDossiers.forEach(d => {
|
||||
totalDocuments += d.files.length;
|
||||
d.memberIds?.forEach(m => totalPeople.add(m));
|
||||
d.totalNumberOfPages = d.files.reduce((acc, file) => acc + file.numberOfPages, 0);
|
||||
totalAnalysedPages += d.totalNumberOfPages;
|
||||
});
|
||||
|
||||
|
||||
@ -1,29 +1,25 @@
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import * as moment from 'moment';
|
||||
import { Dictionary, Dossier } from '@redaction/red-ui-http';
|
||||
import { Listable } from '@iqser/common-ui';
|
||||
import { Dictionary, DossierStatus, DownloadFileType, IDossier, List } from '@redaction/red-ui-http';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
|
||||
export class DossierWrapper implements Dossier, Listable {
|
||||
readonly approverIds = this._dossier.approverIds;
|
||||
readonly date = this._dossier.date;
|
||||
readonly description = this._dossier.description;
|
||||
readonly dossierId = this._dossier.dossierId;
|
||||
readonly dossierName = this._dossier.dossierName;
|
||||
readonly dossierTemplateId = this._dossier.dossierTemplateId;
|
||||
readonly downloadFileTypes = this._dossier.downloadFileTypes;
|
||||
readonly dueDate = this._dossier.dueDate;
|
||||
readonly hardDeletedTime = this._dossier.hardDeletedTime;
|
||||
readonly memberIds = this._dossier.memberIds;
|
||||
readonly ownerId = this._dossier.ownerId;
|
||||
readonly reportTemplateIds = this._dossier.reportTemplateIds;
|
||||
readonly reportTypes = this._dossier.reportTypes;
|
||||
readonly softDeletedTime = this._dossier.softDeletedTime;
|
||||
readonly status = this._dossier.status;
|
||||
readonly watermarkEnabled = this._dossier.watermarkEnabled;
|
||||
|
||||
readonly hasMoreThanOneApprover = this.approverIds.length > 1;
|
||||
readonly hasMoreThanOneReviewer = this.memberIds.length > 1;
|
||||
readonly memberCount = this.memberIds.length;
|
||||
export class Dossier implements IDossier, IListable {
|
||||
readonly id: string;
|
||||
readonly ownerId: string;
|
||||
readonly memberIds: List;
|
||||
readonly approverIds: List;
|
||||
readonly reportTemplateIds: List;
|
||||
readonly dossierTemplateId: string;
|
||||
readonly dossierName: string;
|
||||
readonly date: string;
|
||||
readonly description: string;
|
||||
readonly downloadFileTypes: List<DownloadFileType>;
|
||||
readonly dueDate: string;
|
||||
readonly hardDeletedTime: string;
|
||||
readonly reportTypes: List;
|
||||
readonly softDeletedTime: string;
|
||||
readonly status: DossierStatus;
|
||||
readonly watermarkEnabled: boolean;
|
||||
readonly hasReviewers: boolean;
|
||||
|
||||
reanalysisRequired = this._files.some(file => file.analysisRequired);
|
||||
hasFiles = this._files.length > 0;
|
||||
@ -39,12 +35,26 @@ export class DossierWrapper implements Dossier, Listable {
|
||||
allFilesApproved?: boolean;
|
||||
type?: Dictionary;
|
||||
|
||||
constructor(private readonly _dossier: Dossier, readonly dossierTemplateName, private _files: FileStatusWrapper[] = []) {
|
||||
this._recomputeFileStatus();
|
||||
}
|
||||
constructor(dossier: IDossier, readonly dossierTemplateName: string, private _files: FileStatusWrapper[] = []) {
|
||||
this.id = dossier.dossierId;
|
||||
this.approverIds = dossier.approverIds;
|
||||
this.date = dossier.date;
|
||||
this.description = dossier.description;
|
||||
this.dossierName = dossier.dossierName;
|
||||
this.dossierTemplateId = dossier.dossierTemplateId;
|
||||
this.downloadFileTypes = dossier.downloadFileTypes;
|
||||
this.dueDate = dossier.dueDate;
|
||||
this.hardDeletedTime = dossier.hardDeletedTime;
|
||||
this.memberIds = dossier.memberIds;
|
||||
this.ownerId = dossier.ownerId;
|
||||
this.reportTemplateIds = dossier.reportTemplateIds;
|
||||
this.reportTypes = dossier.reportTypes;
|
||||
this.softDeletedTime = dossier.softDeletedTime;
|
||||
this.status = dossier.status;
|
||||
this.watermarkEnabled = dossier.watermarkEnabled;
|
||||
this.hasReviewers = this.memberIds.length > 1;
|
||||
|
||||
get id() {
|
||||
return this.dossierId;
|
||||
this._recomputeFileStatus();
|
||||
}
|
||||
|
||||
get files() {
|
||||
@ -61,11 +71,7 @@ export class DossierWrapper implements Dossier, Listable {
|
||||
}
|
||||
|
||||
hasMember(memberId: string) {
|
||||
return this._dossier.memberIds.indexOf(memberId) >= 0;
|
||||
}
|
||||
|
||||
addedDateMatches(key: string) {
|
||||
return moment(this.date).format('DD/MM/YYYY') === key;
|
||||
return this.memberIds.indexOf(memberId) >= 0;
|
||||
}
|
||||
|
||||
private _recomputeFileStatus() {
|
||||
@ -1,7 +1,7 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { Dossier } from '@redaction/red-ui-http';
|
||||
import { DownloadFileType } from '@redaction/red-ui-http';
|
||||
|
||||
export const downloadTypesTranslations: { [key in Dossier.DownloadFileTypesEnum]: string } = {
|
||||
export const downloadTypesTranslations: { [key in DownloadFileType]: string } = {
|
||||
ORIGINAL: _('download-type.original'),
|
||||
PREVIEW: _('download-type.preview'),
|
||||
REDACTED: _('download-type.redacted'),
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { FileUploadModel } from '@upload-download/model/file-upload.model';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../state/model/dossier';
|
||||
|
||||
export function handleFileDrop(event: DragEvent, dossier: DossierWrapper, uploadFiles: (files: FileUploadModel[]) => void) {
|
||||
export function handleFileDrop(event: DragEvent, dossier: Dossier, uploadFiles: (files: FileUploadModel[]) => void) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
const { dataTransfer } = event;
|
||||
@ -30,7 +30,7 @@ export function isCsv(file: FileUploadModel): boolean {
|
||||
return file.file.type?.toLowerCase() === 'text/csv' || file.file.name.toLowerCase().endsWith('.csv');
|
||||
}
|
||||
|
||||
export function convertFiles(files: FileList | File[], dossier: DossierWrapper): FileUploadModel[] {
|
||||
export function convertFiles(files: FileList | File[], dossier: Dossier): FileUploadModel[] {
|
||||
let uploadFiles: FileUploadModel[] = [];
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
const file = files[i];
|
||||
@ -39,7 +39,7 @@ export function convertFiles(files: FileList | File[], dossier: DossierWrapper):
|
||||
progress: 0,
|
||||
completed: false,
|
||||
error: null,
|
||||
dossierId: dossier.dossierId,
|
||||
dossierId: dossier.id,
|
||||
dossierName: dossier.dossierName,
|
||||
sizeError: false,
|
||||
retryCount: 0,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
|
||||
import { DossierWrapper } from '@state/model/dossier.wrapper';
|
||||
import { Dossier } from '../state/model/dossier';
|
||||
import { handleCheckedValue, NestedFilter } from '@iqser/common-ui';
|
||||
|
||||
export function handleFilterDelta(oldFilters: NestedFilter[], newFilters: NestedFilter[], allFilters: NestedFilter[]) {
|
||||
@ -45,10 +45,10 @@ export function handleFilterDelta(oldFilters: NestedFilter[], newFilters: Nested
|
||||
});
|
||||
}
|
||||
|
||||
export const annotationFilterChecker = (input: FileStatusWrapper | DossierWrapper, filter: NestedFilter) => {
|
||||
export const annotationFilterChecker = (input: FileStatusWrapper | Dossier, filter: NestedFilter) => {
|
||||
switch (filter.key) {
|
||||
case 'analysis': {
|
||||
if (input instanceof DossierWrapper) {
|
||||
if (input instanceof Dossier) {
|
||||
return input.reanalysisRequired;
|
||||
} else {
|
||||
return input.analysisRequired;
|
||||
@ -78,10 +78,10 @@ export const annotationFilterChecker = (input: FileStatusWrapper | DossierWrappe
|
||||
}
|
||||
};
|
||||
|
||||
export const dossierStatusChecker = (dw: DossierWrapper, filter: NestedFilter) => dw.hasStatus(filter.key);
|
||||
export const dossierStatusChecker = (dw: Dossier, filter: NestedFilter) => dw.hasStatus(filter.key);
|
||||
|
||||
export const dossierMemberChecker = (dw: DossierWrapper, filter: NestedFilter) => dw.hasMember(filter.key);
|
||||
export const dossierMemberChecker = (dw: Dossier, filter: NestedFilter) => dw.hasMember(filter.key);
|
||||
|
||||
export const dossierTemplateChecker = (dw: DossierWrapper, filter: NestedFilter) => dw.dossierTemplateId === filter.key;
|
||||
export const dossierTemplateChecker = (dw: Dossier, filter: NestedFilter) => dw.dossierTemplateId === filter.key;
|
||||
|
||||
export const dossierApproverChecker = (dw: DossierWrapper, filter: NestedFilter) => dw.approverIds.includes(filter.key);
|
||||
export const dossierApproverChecker = (dw: Dossier, filter: NestedFilter) => dw.approverIds.includes(filter.key);
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 0dc6d05cef931e2682bb9584ad0d0cb31144e5c6
|
||||
Subproject commit 4ffdb4e413a71bbcafadab719dc19a565d489128
|
||||
@ -16,7 +16,7 @@ import { CustomHttpUrlEncodingCodec } from '../encoder';
|
||||
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
import { Dossier } from '../model/dossier';
|
||||
import { IDossier } from '../model/dossier';
|
||||
import { DossierRequest } from '../model/dossierRequest';
|
||||
|
||||
import { BASE_PATH } from '../variables';
|
||||
@ -49,11 +49,11 @@ export class DossierControllerService {
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
*/
|
||||
public createOrUpdateDossier(body: DossierRequest, observe?: 'body', reportProgress?: boolean): Observable<Dossier>;
|
||||
public createOrUpdateDossier(body: DossierRequest, observe?: 'body', reportProgress?: boolean): Observable<IDossier>;
|
||||
|
||||
public createOrUpdateDossier(body: DossierRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Dossier>>;
|
||||
public createOrUpdateDossier(body: DossierRequest, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<IDossier>>;
|
||||
|
||||
public createOrUpdateDossier(body: DossierRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Dossier>>;
|
||||
public createOrUpdateDossier(body: DossierRequest, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<IDossier>>;
|
||||
|
||||
public createOrUpdateDossier(body: DossierRequest, observe: any = 'body', reportProgress: boolean = false): Observable<any> {
|
||||
if (body === null || body === undefined) {
|
||||
@ -83,7 +83,7 @@ export class DossierControllerService {
|
||||
headers = headers.set('Content-Type', httpContentTypeSelected);
|
||||
}
|
||||
|
||||
return this.httpClient.request<Dossier>('post', `${this.basePath}/dossier`, {
|
||||
return this.httpClient.request<IDossier>('post', `${this.basePath}/dossier`, {
|
||||
body: body,
|
||||
withCredentials: this.configuration.withCredentials,
|
||||
headers: headers,
|
||||
@ -140,11 +140,11 @@ export class DossierControllerService {
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
*/
|
||||
public getDeletedDossiers(observe?: 'body', reportProgress?: boolean): Observable<Array<Dossier>>;
|
||||
public getDeletedDossiers(observe?: 'body', reportProgress?: boolean): Observable<Array<IDossier>>;
|
||||
|
||||
public getDeletedDossiers(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<Dossier>>>;
|
||||
public getDeletedDossiers(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<IDossier>>>;
|
||||
|
||||
public getDeletedDossiers(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<Dossier>>>;
|
||||
public getDeletedDossiers(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<IDossier>>>;
|
||||
|
||||
public getDeletedDossiers(observe: any = 'body', reportProgress: boolean = false): Observable<any> {
|
||||
let headers = this.defaultHeaders;
|
||||
@ -163,7 +163,7 @@ export class DossierControllerService {
|
||||
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
||||
}
|
||||
|
||||
return this.httpClient.request<Array<Dossier>>('get', `${this.basePath}/deleted-dossiers`, {
|
||||
return this.httpClient.request<Array<IDossier>>('get', `${this.basePath}/deleted-dossiers`, {
|
||||
withCredentials: this.configuration.withCredentials,
|
||||
headers: headers,
|
||||
observe: observe,
|
||||
@ -178,11 +178,11 @@ export class DossierControllerService {
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
*/
|
||||
public getDossier(dossierId: string, observe?: 'body', reportProgress?: boolean): Observable<Dossier>;
|
||||
public getDossier(dossierId: string, observe?: 'body', reportProgress?: boolean): Observable<IDossier>;
|
||||
|
||||
public getDossier(dossierId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Dossier>>;
|
||||
public getDossier(dossierId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<IDossier>>;
|
||||
|
||||
public getDossier(dossierId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Dossier>>;
|
||||
public getDossier(dossierId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<IDossier>>;
|
||||
|
||||
public getDossier(dossierId: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {
|
||||
if (dossierId === null || dossierId === undefined) {
|
||||
@ -205,7 +205,7 @@ export class DossierControllerService {
|
||||
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
||||
}
|
||||
|
||||
return this.httpClient.request<Dossier>('get', `${this.basePath}/dossier/${encodeURIComponent(String(dossierId))}`, {
|
||||
return this.httpClient.request<IDossier>('get', `${this.basePath}/dossier/${encodeURIComponent(String(dossierId))}`, {
|
||||
withCredentials: this.configuration.withCredentials,
|
||||
headers: headers,
|
||||
observe: observe,
|
||||
@ -219,11 +219,11 @@ export class DossierControllerService {
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
*/
|
||||
public getDossiers(observe?: 'body', reportProgress?: boolean): Observable<Array<Dossier>>;
|
||||
public getDossiers(observe?: 'body', reportProgress?: boolean): Observable<Array<IDossier>>;
|
||||
|
||||
public getDossiers(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<Dossier>>>;
|
||||
public getDossiers(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<IDossier>>>;
|
||||
|
||||
public getDossiers(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<Dossier>>>;
|
||||
public getDossiers(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<IDossier>>>;
|
||||
|
||||
public getDossiers(observe: any = 'body', reportProgress: boolean = false): Observable<any> {
|
||||
let headers = this.defaultHeaders;
|
||||
@ -242,7 +242,7 @@ export class DossierControllerService {
|
||||
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
||||
}
|
||||
|
||||
return this.httpClient.request<Array<Dossier>>('get', `${this.basePath}/dossier`, {
|
||||
return this.httpClient.request<Array<IDossier>>('get', `${this.basePath}/dossier`, {
|
||||
withCredentials: this.configuration.withCredentials,
|
||||
headers: headers,
|
||||
observe: observe,
|
||||
|
||||
@ -3,3 +3,4 @@ export * from './model/models';
|
||||
export * from './variables';
|
||||
export * from './configuration';
|
||||
export * from './api.module';
|
||||
export * from './red-types';
|
||||
|
||||
@ -9,38 +9,38 @@
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
import { List } from '../red-types';
|
||||
|
||||
export interface Dossier {
|
||||
approverIds?: Array<string>;
|
||||
date?: string;
|
||||
description?: string;
|
||||
dossierId?: string;
|
||||
dossierName?: string;
|
||||
dossierTemplateId?: string;
|
||||
downloadFileTypes?: Array<Dossier.DownloadFileTypesEnum>;
|
||||
dueDate?: string;
|
||||
hardDeletedTime?: string;
|
||||
memberIds?: Array<string>;
|
||||
ownerId?: string;
|
||||
reportTemplateIds?: Array<string>;
|
||||
reportTypes?: Array<string>;
|
||||
softDeletedTime?: string;
|
||||
status?: Dossier.StatusEnum;
|
||||
watermarkEnabled?: boolean;
|
||||
export interface IDossier {
|
||||
readonly approverIds?: List;
|
||||
readonly date?: string;
|
||||
readonly description?: string;
|
||||
readonly dossierId?: string;
|
||||
readonly dossierName?: string;
|
||||
readonly dossierTemplateId?: string;
|
||||
readonly downloadFileTypes?: List<DownloadFileType>;
|
||||
readonly dueDate?: string;
|
||||
readonly hardDeletedTime?: string;
|
||||
readonly memberIds?: List;
|
||||
readonly ownerId?: string;
|
||||
readonly reportTemplateIds?: List;
|
||||
readonly reportTypes?: List;
|
||||
readonly softDeletedTime?: string;
|
||||
readonly status?: DossierStatus;
|
||||
readonly watermarkEnabled?: boolean;
|
||||
}
|
||||
|
||||
export namespace Dossier {
|
||||
export type DownloadFileTypesEnum = 'ANNOTATED' | 'FLATTEN' | 'ORIGINAL' | 'PREVIEW' | 'REDACTED';
|
||||
export const DownloadFileTypesEnum = {
|
||||
ANNOTATED: 'ANNOTATED' as DownloadFileTypesEnum,
|
||||
FLATTEN: 'FLATTEN' as DownloadFileTypesEnum,
|
||||
ORIGINAL: 'ORIGINAL' as DownloadFileTypesEnum,
|
||||
PREVIEW: 'PREVIEW' as DownloadFileTypesEnum,
|
||||
REDACTED: 'REDACTED' as DownloadFileTypesEnum
|
||||
};
|
||||
export type StatusEnum = 'ACTIVE' | 'DELETED';
|
||||
export const StatusEnum = {
|
||||
ACTIVE: 'ACTIVE' as StatusEnum,
|
||||
DELETED: 'DELETED' as StatusEnum
|
||||
};
|
||||
}
|
||||
export const DownloadFileTypes = {
|
||||
ANNOTATED: 'ANNOTATED',
|
||||
FLATTEN: 'FLATTEN',
|
||||
ORIGINAL: 'ORIGINAL',
|
||||
PREVIEW: 'PREVIEW',
|
||||
REDACTED: 'REDACTED'
|
||||
} as const;
|
||||
export type DownloadFileType = keyof typeof DownloadFileTypes;
|
||||
|
||||
export const DossierStatuses = {
|
||||
ACTIVE: 'ACTIVE',
|
||||
DELETED: 'DELETED'
|
||||
} as const;
|
||||
export type DossierStatus = keyof typeof DossierStatuses;
|
||||
|
||||
@ -10,6 +10,8 @@
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { List } from "../red-types";
|
||||
|
||||
/**
|
||||
* Object containing information about a dossier.
|
||||
*/
|
||||
@ -17,51 +19,51 @@ export interface DossierRequest {
|
||||
/**
|
||||
* The id(s) of approvers associated to this dossier.
|
||||
*/
|
||||
approverIds?: Array<string>;
|
||||
readonly approverIds?: List;
|
||||
/**
|
||||
* The dossier's description (optional).
|
||||
*/
|
||||
description?: string;
|
||||
readonly description?: string;
|
||||
/**
|
||||
* The id of the dossier, can be null for create requests.
|
||||
*/
|
||||
dossierId?: string;
|
||||
readonly dossierId?: string;
|
||||
/**
|
||||
* The name of the dossier. Must be unique.
|
||||
*/
|
||||
dossierName?: string;
|
||||
readonly dossierName?: string;
|
||||
/**
|
||||
* The dossierTemplateId for this dossier. can be null for update request.
|
||||
*/
|
||||
dossierTemplateId?: string;
|
||||
readonly dossierTemplateId?: string;
|
||||
/**
|
||||
* Download File Types for this dossiers submission package.
|
||||
*/
|
||||
downloadFileTypes?: Array<DossierRequest.DownloadFileTypesEnum>;
|
||||
readonly downloadFileTypes?: List<DossierRequest.DownloadFileTypesEnum>;
|
||||
/**
|
||||
* The date when the dossier is due.
|
||||
*/
|
||||
dueDate?: string;
|
||||
readonly dueDate?: string;
|
||||
/**
|
||||
* The id(s) of members associated to this dossier.
|
||||
*/
|
||||
memberIds?: Array<string>;
|
||||
readonly memberIds?: List;
|
||||
/**
|
||||
* The id of the owning user.
|
||||
*/
|
||||
ownerId?: string;
|
||||
readonly ownerId?: string;
|
||||
/**
|
||||
* Id(s) of the word report templates used to generate downloads
|
||||
*/
|
||||
reportTemplateIds?: Array<string>;
|
||||
readonly reportTemplateIds?: List;
|
||||
/**
|
||||
* Report File Types for this dossiers submission package.
|
||||
*/
|
||||
reportTypes?: Array<string>;
|
||||
readonly reportTypes?: List;
|
||||
/**
|
||||
* Whether a watermark will be applied to the redacted files or not.
|
||||
*/
|
||||
watermarkEnabled?: boolean;
|
||||
readonly watermarkEnabled?: boolean;
|
||||
}
|
||||
|
||||
export namespace DossierRequest {
|
||||
|
||||
1
libs/red-ui-http/src/lib/red-types.ts
Normal file
1
libs/red-ui-http/src/lib/red-types.ts
Normal file
@ -0,0 +1 @@
|
||||
export type List<T = string> = readonly T[];
|
||||
@ -106,8 +106,8 @@
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-airbnb-typescript": "^14.0.0",
|
||||
"eslint-config-prettier": "8.3.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"eslint-plugin-import": "2.24.2",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"google-translate-api-browser": "^1.1.71",
|
||||
"husky": "4.3.8",
|
||||
"jest": "27.1.1",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user