add red-domain lib

This commit is contained in:
Dan Percic 2021-10-21 14:31:59 +03:00
parent 48ee4cd444
commit 4d8342f492
56 changed files with 322 additions and 126 deletions

View File

@ -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",

View File

@ -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;

View File

@ -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',

View File

@ -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;

View File

@ -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) {

View File

@ -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,

View File

@ -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';

View File

@ -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';

View File

@ -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';

View File

@ -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,

View File

@ -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';

View File

@ -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';

View File

@ -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';

View File

@ -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();
}

View File

@ -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';

View File

@ -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';

View File

@ -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';

View File

@ -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);

View File

@ -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',

View File

@ -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',

View File

@ -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({

View File

@ -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({

View File

@ -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';

View File

@ -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';

View File

@ -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;

View File

@ -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',

View File

@ -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';

View File

@ -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';

View File

@ -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';

View File

@ -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;

View File

@ -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)),

View File

@ -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({

View File

@ -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';

View File

@ -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'),

View File

@ -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');

View File

@ -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[]) {

View 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": {}
}
]
}

View File

@ -0,0 +1 @@
# Red domain

View 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' },
};

View File

@ -0,0 +1,2 @@
export * from './lib/dossiers';
export * from './lib/shared/types';

View 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;
}

View File

@ -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;

View File

@ -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.
*/

View File

@ -0,0 +1,4 @@
export * from './dossier.interface';
export * from './dossier.model';
export * from './types';
export { IDossierRequest } from './dossier.request';

View File

@ -0,0 +1,6 @@
export const DossierStatuses = {
ACTIVE: 'ACTIVE',
DELETED: 'DELETED',
} as const;
export type DossierStatus = keyof typeof DossierStatuses;

View 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;

View File

@ -0,0 +1,2 @@
// eslint-disable-next-line import/no-extraneous-dependencies
import 'jest-preset-angular/setup-jest';

View 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
}
}

View 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"]
}

View 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"]
}

View File

@ -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;

View File

@ -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 {
/**

View File

@ -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;

View File

@ -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';

View File

@ -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": {

View File

@ -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"],