add red-domain lib
This commit is contained in:
parent
48ee4cd444
commit
4d8342f492
23
angular.json
23
angular.json
@ -42,6 +42,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"red-domain": {
|
||||
"projectType": "library",
|
||||
"root": "libs/red-domain",
|
||||
"sourceRoot": "libs/red-domain/src",
|
||||
"prefix": "red",
|
||||
"architect": {
|
||||
"test": {
|
||||
"builder": "@nrwl/jest:jest",
|
||||
"outputs": ["coverage/libs/red-domain"],
|
||||
"options": {
|
||||
"jestConfig": "libs/red-domain/jest.config.js",
|
||||
"passWithNoTests": true
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@nrwl/linter:eslint",
|
||||
"options": {
|
||||
"lintFilePatterns": ["libs/red-domain/src/**/*.ts", "libs/red-domain/src/**/*.html"]
|
||||
},
|
||||
"outputs": ["{options.outputFile}"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"red-cache": {
|
||||
"projectType": "library",
|
||||
"root": "libs/red-cache",
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { DownloadFileType, IDossierTemplate } from '@redaction/red-ui-http';
|
||||
import { IDossierTemplate } from '@redaction/red-ui-http';
|
||||
import { IListable, List } from '@iqser/common-ui';
|
||||
import { DownloadFileType } from '@red/domain';
|
||||
|
||||
export class DossierTemplate implements IDossierTemplate, IListable {
|
||||
readonly createdBy?: string;
|
||||
|
||||
@ -4,12 +4,13 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import * as moment from 'moment';
|
||||
import { Moment } from 'moment';
|
||||
import { DownloadFileType, IDossierTemplate } from '@redaction/red-ui-http';
|
||||
import { IDossierTemplate } from '@redaction/red-ui-http';
|
||||
import { applyIntervalConstraints } from '@utils/date-inputs-utils';
|
||||
import { downloadTypesTranslations } from '../../../../translations/download-types-translations';
|
||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
||||
import { CONFLICT_ERROR_CODE, Toaster } from '@iqser/common-ui';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { DownloadFileType } from '@red/domain';
|
||||
|
||||
@Component({
|
||||
templateUrl: './add-edit-dossier-template-dialog.component.html',
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit } from '@angular/core';
|
||||
import { IDossier } from '@redaction/red-ui-http';
|
||||
import {
|
||||
CircleButtonTypes,
|
||||
ConfirmationDialogInput,
|
||||
@ -20,6 +19,7 @@ import { Observable } from 'rxjs';
|
||||
import { distinctUntilChanged, map } from 'rxjs/operators';
|
||||
import { getLeftDateTime } from '@utils/functions';
|
||||
import { RouterHistoryService } from '@services/router-history.service';
|
||||
import { IDossier } from '@red/domain';
|
||||
|
||||
interface DossierListItem extends IDossier, IListable {
|
||||
readonly canRestore: boolean;
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { DossierRequest, IDossier } from '@redaction/red-ui-http';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { Dossier, IDossier, IDossierRequest } from '@red/domain';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-team-members-manager',
|
||||
@ -56,7 +55,7 @@ export class TeamMembersManagerComponent implements OnInit {
|
||||
memberIds: this.selectedMembersList,
|
||||
approverIds: this.selectedApproversList,
|
||||
ownerId: this.selectedOwnerId,
|
||||
} as DossierRequest;
|
||||
} as IDossierRequest;
|
||||
|
||||
const result = await this._dossiersService.createOrUpdate(dossier).toPromise();
|
||||
if (result) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { MatDialogRef } from '@angular/material/dialog';
|
||||
import { DossierRequest, DownloadFileType, IDossierTemplate, ReportTemplate } from '@redaction/red-ui-http';
|
||||
import { IDossierTemplate, ReportTemplate } from '@redaction/red-ui-http';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import * as moment from 'moment';
|
||||
import { downloadTypesTranslations } from '../../../../translations/download-types-translations';
|
||||
@ -8,6 +8,7 @@ import { IconButtonTypes } from '@iqser/common-ui';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
||||
import { ReportTemplateService } from '@services/report-template.service';
|
||||
import { DownloadFileType, IDossierRequest } from '@red/domain';
|
||||
|
||||
@Component({
|
||||
templateUrl: './add-dossier-dialog.component.html',
|
||||
@ -112,7 +113,7 @@ export class AddDossierDialogComponent {
|
||||
});
|
||||
}
|
||||
|
||||
private _formToObject(): DossierRequest {
|
||||
private _formToObject(): IDossierRequest {
|
||||
return {
|
||||
dossierName: this.dossierForm.get('dossierName').value,
|
||||
description: this.dossierForm.get('description').value,
|
||||
|
||||
@ -5,7 +5,7 @@ import { UserService } from '@services/user.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { File } from '@models/file/file';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { FilesService } from '@services/entity-services/files.service';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
|
||||
@ -3,7 +3,7 @@ import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { IFile, IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { CircleButtonTypes, IconButtonTypes, LoadingService } from '@iqser/common-ui';
|
||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, EventEmitter, forwardRef, Injector, Input, OnInit, Output } from '@angular/core';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import {
|
||||
CircleButtonTypes,
|
||||
ConfirmationDialogInput,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component';
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { DownloadFileType, ReportTemplate } from '@redaction/red-ui-http';
|
||||
import { ReportTemplate } from '@redaction/red-ui-http';
|
||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier, DownloadFileType } from '@red/domain';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { downloadTypesTranslations } from '../../../../../translations/download-types-translations';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectorRef, Component, Inject, ViewChild } from '@angular/core';
|
||||
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
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';
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { DossierRequest, IDossierTemplate } from '@redaction/red-ui-http';
|
||||
import { IDossierTemplate } from '@redaction/red-ui-http';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import * as moment from 'moment';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier, IDossierRequest } from '@red/domain';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
@ -101,7 +101,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
|
||||
watermarkEnabled: this.dossierForm.get('watermarkEnabled').value,
|
||||
dueDate: this.hasDueDate ? this.dossierForm.get('dueDate').value : undefined,
|
||||
dossierTemplateId: this.dossierForm.get('dossierTemplateId').value,
|
||||
} as DossierRequest;
|
||||
} as IDossierRequest;
|
||||
await this._dossiersService.createOrUpdate(dossier).toPromise();
|
||||
this.updateDossier.emit();
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { TeamMembersManagerComponent } from '../../../components/team-members-manager/team-members-manager.component';
|
||||
import { UserService } from '@services/user.service';
|
||||
|
||||
@ -8,7 +8,7 @@ import { DossiersDialogService } from '../../../../services/dossiers-dialog.serv
|
||||
import { CircleButtonTypes, ConfirmationDialogInput, ListingService, LoadingService } from '@iqser/common-ui';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { LongPressEvent } from '@shared/directives/long-press.directive';
|
||||
import { UserPreferenceService } from '@services/user-preference.service';
|
||||
import { FileManagementService } from '../../../../shared/services/file-management.service';
|
||||
|
||||
@ -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 { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { DossiersDialogService } from '../../../../services/dossiers-dialog.service';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
||||
|
||||
@ -8,9 +8,9 @@ import { FilterService, 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';
|
||||
import { DossierRequest } from '@redaction/red-ui-http';
|
||||
import { User } from '@models/user';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { IDossierRequest } from '@red/domain';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-dossier-details',
|
||||
@ -72,7 +72,7 @@ export class DossierDetailsComponent implements OnInit {
|
||||
async assignOwner(user: User | string) {
|
||||
this.owner = typeof user === 'string' ? this._userService.find(user) : user;
|
||||
const activeDossier = this.dossiersService.activeDossier;
|
||||
const dossierRequest: DossierRequest = { ...activeDossier, dossierId: activeDossier.dossierId, ownerId: this.owner.id };
|
||||
const dossierRequest: IDossierRequest = { ...activeDossier, dossierId: activeDossier.dossierId, ownerId: this.owner.id };
|
||||
await this.dossiersService.createOrUpdate(dossierRequest).toPromise();
|
||||
|
||||
const ownerName = this._userService.getNameForId(this.owner.id);
|
||||
|
||||
@ -46,7 +46,7 @@ import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { RouterHistoryService } from '@services/router-history.service';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { Router } from '@angular/router';
|
||||
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
|
||||
import { ConfigService as AppConfigService } from '@services/config.service';
|
||||
@ -55,7 +55,7 @@ import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
||||
import { LongPressEvent } from '@shared/directives/long-press.directive';
|
||||
import { UserPreferenceService } from '@services/user-preference.service';
|
||||
import { saveAsCSV } from '../../../../../utils/csv-utils';
|
||||
import { saveAsCSV } from '@utils/csv-utils';
|
||||
|
||||
@Component({
|
||||
templateUrl: './dossier-overview-screen.component.html',
|
||||
|
||||
@ -4,10 +4,10 @@ import { StatusSorter } from '@utils/sorters/status-sorter';
|
||||
import { CircleButtonTypes, StatusBarConfig } from '@iqser/common-ui';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { DossiersDialogService } from '../../../../services/dossiers-dialog.service';
|
||||
import { LongPressEvent } from '../../../../../shared/directives/long-press.directive';
|
||||
import { UserPreferenceService } from '../../../../../../services/user-preference.service';
|
||||
import { LongPressEvent } from '@shared/directives/long-press.directive';
|
||||
import { UserPreferenceService } from '@services/user-preference.service';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-dossiers-listing-actions',
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
||||
|
||||
@Component({
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { Required } from '@iqser/common-ui';
|
||||
|
||||
@Component({
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Injectable, TemplateRef } from '@angular/core';
|
||||
import { ButtonConfig, IFilterGroup, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { UserPreferenceService } from '@services/user-preference.service';
|
||||
|
||||
@ -9,9 +9,8 @@ import {
|
||||
TemplateRef,
|
||||
ViewChild,
|
||||
} from '@angular/core';
|
||||
import { DossierStatuses } from '@redaction/red-ui-http';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier, DossierStatuses } from '@red/domain';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { TranslateChartService } from '@services/translate-chart.service';
|
||||
|
||||
@ -44,7 +44,7 @@ import { FileActionsComponent } from '../../shared/components/file-actions/file-
|
||||
import { User } from '@models/user';
|
||||
import { FilesService } from '@services/entity-services/files.service';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { FileManagementService } from '../../shared/services/file-management.service';
|
||||
import Annotation = Core.Annotations.Annotation;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Component, Input } from '@angular/core';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { File } from '@models/file/file';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-needs-work-badge',
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, Input, OnDestroy } from '@angular/core';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { Dossier } from '../../../../../state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { File } from '@models/file/file';
|
||||
import { FileDownloadService } from '@upload-download/services/file-download.service';
|
||||
import { AutoUnsubscribe, CircleButtonType, CircleButtonTypes, List, Toaster } from '@iqser/common-ui';
|
||||
|
||||
@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@a
|
||||
import { Debounce, IconButtonTypes, List } from '@iqser/common-ui';
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { catchError, map, take, tap } from 'rxjs/operators';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { DictionaryService } from '@shared/services/dictionary.service';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Injectable, Injector } from '@angular/core';
|
||||
import { DossierAttribute, DossierAttributes, DossierAttributesConfig, IDossierAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
|
||||
import { Observable } from 'rxjs';
|
||||
import { DossierAttributeConfig } from '@state/model/dossier-attribute-config';
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { DownloadFileType, DownloadStatusType, IDownloadStatus } from '@redaction/red-ui-http';
|
||||
import { DownloadStatusType, IDownloadStatus } from '@redaction/red-ui-http';
|
||||
import { IListable, List } from '@iqser/common-ui';
|
||||
import { DownloadFileType } from '@red/domain';
|
||||
|
||||
export class DownloadStatus implements IDownloadStatus, IListable {
|
||||
readonly creationDate?: string;
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
import { Injectable, Injector } from '@angular/core';
|
||||
import { DossierRequest, IDossier } from '@redaction/red-ui-http';
|
||||
import { EntitiesService, List, QueryParam, RequiredParam, Toaster, Validate } from '@iqser/common-ui';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier, IDossier, IDossierRequest } from '@red/domain';
|
||||
import { catchError, map, tap } from 'rxjs/operators';
|
||||
import { BehaviorSubject, Observable, of } from 'rxjs';
|
||||
import { ActivationEnd, Router } from '@angular/router';
|
||||
@ -98,7 +97,7 @@ export class DossiersService extends EntitiesService<Dossier, IDossier> {
|
||||
}
|
||||
|
||||
@Validate()
|
||||
createOrUpdate(@RequiredParam() dossier: DossierRequest): Observable<Dossier | undefined> {
|
||||
createOrUpdate(@RequiredParam() dossier: IDossierRequest): Observable<Dossier | undefined> {
|
||||
return this._post(dossier).pipe(
|
||||
map(updatedDossier => new Dossier(updatedDossier, this.find(updatedDossier.dossierId)?.files ?? [])),
|
||||
tap(newDossier => this.replace(newDossier)),
|
||||
|
||||
@ -3,7 +3,7 @@ import { AppStateService } from '@state/app-state.service';
|
||||
import { UserService } from './user.service';
|
||||
import { File } from '@models/file/file';
|
||||
import { Comment } from '@redaction/red-ui-http';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { DossiersService } from './entity-services/dossiers.service';
|
||||
|
||||
@Injectable({
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Colors, IDossier, IFile } from '@redaction/red-ui-http';
|
||||
import { Colors, IFile } from '@redaction/red-ui-http';
|
||||
import { ActivationEnd, Router } from '@angular/router';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { forkJoin, Observable, of, Subject } from 'rxjs';
|
||||
import { catchError, filter, first, map, tap } from 'rxjs/operators';
|
||||
import { currentComponentRoute, FALLBACK_COLOR, hexToRgb } from '@utils/functions';
|
||||
import { File } from '@models/file/file';
|
||||
import { Dossier } from './model/dossier';
|
||||
import { Dossier, IDossier } from '@red/domain';
|
||||
import { DossierTemplate } from '@models/file/dossier-template';
|
||||
import { DossiersService } from '@services/entity-services/dossiers.service';
|
||||
import { UserPreferenceService } from '@services/user-preference.service';
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { DownloadFileType } from '@redaction/red-ui-http';
|
||||
import { DownloadFileType } from '@red/domain';
|
||||
|
||||
export const downloadTypesTranslations: { [key in DownloadFileType]: string } = {
|
||||
ORIGINAL: _('download-type.original'),
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { FileUploadModel } from '@upload-download/model/file-upload.model';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
|
||||
export function isCsv(file: FileUploadModel): boolean {
|
||||
return file.file.type?.toLowerCase() === 'text/csv' || file.file.name.toLowerCase().endsWith('.csv');
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { File } from '@models/file/file';
|
||||
import { Dossier } from '../state/model/dossier';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { handleCheckedValue, INestedFilter } from '@iqser/common-ui';
|
||||
|
||||
export function handleFilterDelta(oldFilters: INestedFilter[], newFilters: INestedFilter[], allFilters: INestedFilter[]) {
|
||||
|
||||
116
libs/red-domain/.eslintrc.json
Normal file
116
libs/red-domain/.eslintrc.json
Normal file
@ -0,0 +1,116 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../.eslintrc.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts"
|
||||
],
|
||||
"extends": [
|
||||
"plugin:@nrwl/nx/angular",
|
||||
"plugin:@angular-eslint/template/process-inline-templates",
|
||||
"plugin:@angular-eslint/recommended",
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:@typescript-eslint/recommended-requiring-type-checking",
|
||||
"plugin:@angular-eslint/recommended--extra"
|
||||
],
|
||||
"parserOptions": {
|
||||
"project": [
|
||||
"libs/red-domain/tsconfig.*?.json"
|
||||
]
|
||||
},
|
||||
"rules": {
|
||||
"@angular-eslint/directive-selector": [
|
||||
"error",
|
||||
{
|
||||
"type": "attribute",
|
||||
"prefix": "red",
|
||||
"style": "camelCase"
|
||||
}
|
||||
],
|
||||
"@angular-eslint/component-selector": [
|
||||
"error",
|
||||
{
|
||||
"type": "element",
|
||||
"prefix": "red",
|
||||
"style": "kebab-case"
|
||||
}
|
||||
],
|
||||
"@angular-eslint/prefer-on-push-component-change-detection": "error",
|
||||
"@angular-eslint/use-lifecycle-interface": "error",
|
||||
"@angular-eslint/no-input-prefix": "error",
|
||||
"@angular-eslint/no-input-rename": "error",
|
||||
"@angular-eslint/no-output-on-prefix": "error",
|
||||
"@angular-eslint/no-output-rename": "error",
|
||||
"@angular-eslint/prefer-output-readonly": "error",
|
||||
"@typescript-eslint/unbound-method": "error",
|
||||
"@typescript-eslint/no-floating-promises": "off",
|
||||
"@typescript-eslint/lines-between-class-members": "off",
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
"selector": "memberLike",
|
||||
"modifiers": [
|
||||
"private"
|
||||
],
|
||||
"format": [
|
||||
"camelCase"
|
||||
],
|
||||
"leadingUnderscore": "require"
|
||||
},
|
||||
{
|
||||
"selector": "memberLike",
|
||||
"modifiers": [
|
||||
"protected"
|
||||
],
|
||||
"format": [
|
||||
"camelCase"
|
||||
],
|
||||
"leadingUnderscore": "require"
|
||||
},
|
||||
{
|
||||
"selector": "memberLike",
|
||||
"modifiers": [
|
||||
"private"
|
||||
],
|
||||
"format": [
|
||||
"UPPER_CASE",
|
||||
"camelCase"
|
||||
],
|
||||
"leadingUnderscore": "require"
|
||||
}
|
||||
],
|
||||
"import/prefer-default-export": "off",
|
||||
"no-underscore-dangle": "off",
|
||||
"no-param-reassign": "error",
|
||||
"consistent-return": "off",
|
||||
"class-methods-use-this": "off",
|
||||
"@typescript-eslint/no-unsafe-call": "off",
|
||||
"@typescript-eslint/no-unsafe-member-access": "off",
|
||||
"@typescript-eslint/restrict-template-expressions": "off"
|
||||
},
|
||||
"plugins": [
|
||||
"@angular-eslint/eslint-plugin",
|
||||
"@typescript-eslint"
|
||||
]
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.html"
|
||||
],
|
||||
"extends": [
|
||||
"plugin:@nrwl/nx/angular-template",
|
||||
"plugin:@angular-eslint/template/recommended"
|
||||
],
|
||||
"plugins": [
|
||||
"prettier"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
1
libs/red-domain/README.md
Normal file
1
libs/red-domain/README.md
Normal file
@ -0,0 +1 @@
|
||||
# Red domain
|
||||
18
libs/red-domain/jest.config.js
Normal file
18
libs/red-domain/jest.config.js
Normal file
@ -0,0 +1,18 @@
|
||||
module.exports = {
|
||||
displayName: 'red-domain',
|
||||
preset: '../../jest.preset.js',
|
||||
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
|
||||
globals: {
|
||||
'ts-jest': {
|
||||
tsconfig: '<rootDir>/tsconfig.spec.json',
|
||||
stringifyContentPathRegex: '\\.(html|svg)$',
|
||||
},
|
||||
},
|
||||
coverageDirectory: '../../coverage/libs/red-domain',
|
||||
snapshotSerializers: [
|
||||
'jest-preset-angular/build/serializers/no-ng-attributes',
|
||||
'jest-preset-angular/build/serializers/ng-snapshot',
|
||||
'jest-preset-angular/build/serializers/html-comment',
|
||||
],
|
||||
transform: { '^.+\\.(ts|js|html)$': 'jest-preset-angular' },
|
||||
};
|
||||
2
libs/red-domain/src/index.ts
Normal file
2
libs/red-domain/src/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './lib/dossiers';
|
||||
export * from './lib/shared/types';
|
||||
22
libs/red-domain/src/lib/dossiers/dossier.interface.ts
Normal file
22
libs/red-domain/src/lib/dossiers/dossier.interface.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import { DossierStatus } from './types';
|
||||
import { DownloadFileType } from '../shared/types';
|
||||
import { List } from '@iqser/common-ui';
|
||||
|
||||
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 softDeletedTime?: string;
|
||||
readonly startDate?: string;
|
||||
readonly status: DossierStatus;
|
||||
readonly watermarkEnabled: boolean;
|
||||
}
|
||||
@ -1,23 +1,26 @@
|
||||
import { File } from '@models/file/file';
|
||||
import { DossierStatus, DownloadFileType, IDictionary, IDossier } from '@redaction/red-ui-http';
|
||||
import { IDictionary } from '@redaction/red-ui-http';
|
||||
import { IListable, List } from '@iqser/common-ui';
|
||||
import { IDossier } from './dossier.interface';
|
||||
import { DossierStatus } from './types';
|
||||
import { DownloadFileType } from '../shared/types';
|
||||
|
||||
export class Dossier implements IDossier, IListable {
|
||||
readonly dossierId: string;
|
||||
readonly dossierTemplateId: string;
|
||||
readonly ownerId: string;
|
||||
readonly memberIds?: List;
|
||||
readonly approverIds?: List;
|
||||
readonly reportTemplateIds?: List;
|
||||
readonly memberIds: List;
|
||||
readonly approverIds: List;
|
||||
readonly reportTemplateIds: List;
|
||||
readonly dossierName: string;
|
||||
readonly date?: string;
|
||||
readonly date: string;
|
||||
readonly dueDate?: string;
|
||||
readonly description?: string;
|
||||
readonly downloadFileTypes?: List<DownloadFileType>;
|
||||
readonly hardDeletedTime?: string;
|
||||
readonly reportTypes?: List;
|
||||
readonly softDeletedTime?: string;
|
||||
readonly status?: DossierStatus;
|
||||
readonly startDate?: string;
|
||||
readonly status: DossierStatus;
|
||||
readonly watermarkEnabled: boolean;
|
||||
readonly hasReviewers: boolean;
|
||||
|
||||
@ -45,10 +48,10 @@ export class Dossier implements IDossier, IListable {
|
||||
this.memberIds = dossier.memberIds;
|
||||
this.ownerId = dossier.ownerId;
|
||||
this.reportTemplateIds = dossier.reportTemplateIds;
|
||||
this.reportTypes = dossier.reportTypes;
|
||||
this.softDeletedTime = dossier.softDeletedTime;
|
||||
this.startDate = dossier.startDate;
|
||||
this.status = dossier.status;
|
||||
this.watermarkEnabled = !!dossier.watermarkEnabled;
|
||||
this.watermarkEnabled = dossier.watermarkEnabled;
|
||||
this.hasReviewers = !!this.memberIds && this.memberIds.length > 1;
|
||||
|
||||
let hintsOnly = false;
|
||||
@ -1,22 +1,10 @@
|
||||
/**
|
||||
* API Documentation for Redaction Gateway
|
||||
* Description for redaction
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { List } from '../red-types';
|
||||
import { DownloadFileType } from './dossier';
|
||||
import { List } from '@iqser/common-ui';
|
||||
import { DownloadFileType } from '../shared/types';
|
||||
|
||||
/**
|
||||
* Object containing information about a dossier.
|
||||
*/
|
||||
export interface DossierRequest {
|
||||
export interface IDossierRequest {
|
||||
/**
|
||||
* The id(s) of approvers associated to this dossier.
|
||||
*/
|
||||
4
libs/red-domain/src/lib/dossiers/index.ts
Normal file
4
libs/red-domain/src/lib/dossiers/index.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export * from './dossier.interface';
|
||||
export * from './dossier.model';
|
||||
export * from './types';
|
||||
export { IDossierRequest } from './dossier.request';
|
||||
6
libs/red-domain/src/lib/dossiers/types.ts
Normal file
6
libs/red-domain/src/lib/dossiers/types.ts
Normal file
@ -0,0 +1,6 @@
|
||||
export const DossierStatuses = {
|
||||
ACTIVE: 'ACTIVE',
|
||||
DELETED: 'DELETED',
|
||||
} as const;
|
||||
|
||||
export type DossierStatus = keyof typeof DossierStatuses;
|
||||
8
libs/red-domain/src/lib/shared/types.ts
Normal file
8
libs/red-domain/src/lib/shared/types.ts
Normal file
@ -0,0 +1,8 @@
|
||||
export const DownloadFileTypes = {
|
||||
ANNOTATED: 'ANNOTATED',
|
||||
FLATTEN: 'FLATTEN',
|
||||
ORIGINAL: 'ORIGINAL',
|
||||
PREVIEW: 'PREVIEW',
|
||||
REDACTED: 'REDACTED',
|
||||
} as const;
|
||||
export type DownloadFileType = keyof typeof DownloadFileTypes;
|
||||
2
libs/red-domain/src/test-setup.ts
Normal file
2
libs/red-domain/src/test-setup.ts
Normal file
@ -0,0 +1,2 @@
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import 'jest-preset-angular/setup-jest';
|
||||
24
libs/red-domain/tsconfig.json
Normal file
24
libs/red-domain/tsconfig.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
},
|
||||
{
|
||||
"path": "./tsconfig.spec.json"
|
||||
}
|
||||
],
|
||||
"compilerOptions": {
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"strictInjectionParameters": true,
|
||||
"strictInputAccessModifiers": true,
|
||||
"strictTemplates": true
|
||||
}
|
||||
}
|
||||
15
libs/red-domain/tsconfig.lib.json
Normal file
15
libs/red-domain/tsconfig.lib.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../dist/out-tsc",
|
||||
"target": "es2015",
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"inlineSources": true,
|
||||
"strict": true,
|
||||
"types": [],
|
||||
"lib": ["dom", "es2018"]
|
||||
},
|
||||
"exclude": ["src/test-setup.ts", "**/*.spec.ts"],
|
||||
"include": ["**/*.ts"]
|
||||
}
|
||||
10
libs/red-domain/tsconfig.spec.json
Normal file
10
libs/red-domain/tsconfig.spec.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../dist/out-tsc",
|
||||
"module": "commonjs",
|
||||
"types": ["jest", "node"]
|
||||
},
|
||||
"files": ["src/test-setup.ts"],
|
||||
"include": ["**/*.spec.ts", "**/*.d.ts"]
|
||||
}
|
||||
@ -1,46 +0,0 @@
|
||||
/**
|
||||
* API Documentation for Redaction Gateway
|
||||
* Description for redaction
|
||||
*
|
||||
* OpenAPI spec version: 1.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
import { List } from '../red-types';
|
||||
|
||||
export interface IDossier {
|
||||
readonly dossierId: string;
|
||||
readonly dossierName: string;
|
||||
readonly dossierTemplateId: string;
|
||||
readonly approverIds?: List;
|
||||
readonly date?: string;
|
||||
readonly description?: 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 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;
|
||||
@ -9,8 +9,8 @@
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
import { DownloadFileType } from './dossier';
|
||||
import { List } from '../red-types';
|
||||
import { DownloadFileType } from '@red/domain';
|
||||
|
||||
export interface IDossierTemplate {
|
||||
/**
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
import { DownloadFileType } from './dossier';
|
||||
import { List } from '../red-types';
|
||||
import { DownloadFileType } from '@red/domain';
|
||||
|
||||
export interface IDownloadStatus {
|
||||
readonly creationDate?: string;
|
||||
|
||||
@ -13,12 +13,10 @@ export * from './createUserRequest';
|
||||
export * from './dictionary';
|
||||
export * from './digitalSignature';
|
||||
export * from './digitalSignatureViewModel';
|
||||
export * from './dossier';
|
||||
export * from './dossierAttributeConfig';
|
||||
export * from './dossierAttribute';
|
||||
export * from './dossierAttributesConfig';
|
||||
export * from './dossierAttributes';
|
||||
export * from './dossierRequest';
|
||||
export * from './dossierTemplate';
|
||||
export * from './downloadResponse';
|
||||
export * from './downloadStatus';
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
"build-paligo-styles": "mkdir -p dist/paligo-styles && sass --load-path=. paligo-styles/style.scss > dist/paligo-styles/redacto-theme.css && cp -r libs/common-ui/src/assets/font dist/paligo-styles/fonts",
|
||||
"i18n:extract": "ngx-translate-extract --input ./apps/red-ui/src ./libs/common-ui/src --output apps/red-ui/src/assets/i18n/en.json --clean --sort --format namespaced-json && prettier apps/red-ui/src/assets/i18n/*.json --write",
|
||||
"postinstall": "ngcc --properties es2015 browser module main",
|
||||
"lint": "ng lint --project=red-ui-http --fix && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix",
|
||||
"lint": "ng lint --project=red-domain --fix && ng lint --project=red-ui-http --fix && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix",
|
||||
"nx": "nx",
|
||||
"start": "nx serve",
|
||||
"test": "nx test",
|
||||
@ -19,7 +19,7 @@
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "pretty-quick --staged && ng lint --project=red-ui-http && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix"
|
||||
"pre-commit": "pretty-quick --staged && ng lint --project=red-ui-http && ng lint --project=red-domain --fix && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@ -29,7 +29,8 @@
|
||||
"@shared/*": ["apps/red-ui/src/app/modules/shared/*"],
|
||||
"@state/*": ["apps/red-ui/src/app/state/*"],
|
||||
"@upload-download/*": ["apps/red-ui/src/app/modules/upload-download/*"],
|
||||
"@utils/*": ["apps/red-ui/src/app/utils/*"]
|
||||
"@utils/*": ["apps/red-ui/src/app/utils/*"],
|
||||
"@red/domain": ["libs/red-domain/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules", "tmp"],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user