http api refactor

This commit is contained in:
Timo 2021-06-01 09:48:12 +03:00
parent 0f0a349679
commit e064646dc9
17 changed files with 102 additions and 62 deletions

View File

@ -0,0 +1,52 @@
import { DossierTemplateModel } from '@redaction/red-ui-http';
export class DossierTemplateModelWrapper {
dictionariesCount = 0;
totalDictionaryEntries = 0;
constructor(public dossierTemplateModel: DossierTemplateModel) {}
get createdBy() {
return this.dossierTemplateModel.createdBy;
}
get dateAdded() {
return this.dossierTemplateModel.dateAdded;
}
get dateModified() {
return this.dossierTemplateModel.dateModified;
}
get description() {
return this.dossierTemplateModel.description;
}
get dossierTemplateId() {
return this.dossierTemplateModel.dossierTemplateId;
}
get downloadFileTypes() {
return this.dossierTemplateModel.downloadFileTypes;
}
get modifiedBy() {
return this.dossierTemplateModel.modifiedBy;
}
get name() {
return this.dossierTemplateModel.name;
}
get reportTypes() {
return this.dossierTemplateModel.reportTypes;
}
get validFrom() {
return this.dossierTemplateModel.validFrom;
}
get validTo() {
return this.dossierTemplateModel.validTo;
}
}

View File

@ -1,6 +1,8 @@
import { TypeValue } from '@redaction/red-ui-http';
export class TypeValueWrapper {
entries: string[] = [];
constructor(public typeValue: TypeValue, public label?: string, public virtual?: boolean) {}
get addToDictionaryAction() {

View File

@ -4,7 +4,7 @@ import { PermissionsService } from '@services/permissions.service';
import { UserPreferenceService } from '@services/user-preference.service';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { BaseListingComponent } from '@shared/base/base-listing.component';
import { DossierTemplateModel } from '@redaction/red-ui-http';
import { DossierTemplateModelWrapper } from '../../../../models/file/dossier-template-model.wrapper';
@Component({
selector: 'redaction-dossier-templates-listing-screen',
@ -12,7 +12,7 @@ import { DossierTemplateModel } from '@redaction/red-ui-http';
styleUrls: ['./dossier-templates-listing-screen.component.scss']
})
export class DossierTemplatesListingScreenComponent
extends BaseListingComponent<DossierTemplateModel>
extends BaseListingComponent<DossierTemplateModelWrapper>
implements OnInit
{
protected readonly _searchKey = 'name';

View File

@ -6,20 +6,20 @@ import { environment } from '@environments/environment';
import { HttpClient } from '@angular/common/http';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { debounce } from '@utils/debounce';
import { WatermarkControllerService, WatermarkModel } from '@redaction/red-ui-http';
import { WatermarkControllerService, WatermarkModelRes } from '@redaction/red-ui-http';
import { NotificationService, NotificationType } from '@services/notification.service';
import { TranslateService } from '@ngx-translate/core';
import { ActivatedRoute } from '@angular/router';
import { hexToRgb } from '@utils/functions';
import { BASE_HREF } from '../../../../tokens';
export const DEFAULT_WATERMARK: WatermarkModel = {
export const DEFAULT_WATERMARK: WatermarkModelRes = {
text: null,
hexColor: '#dd4d50',
opacity: 70,
fontSize: 11,
fontType: 'sans-serif',
orientation: WatermarkModel.WatermarkOrientationEnum.DIAGONAL
orientation: WatermarkModelRes.OrientationEnum.DIAGONAL
};
@Component({
@ -31,7 +31,7 @@ export class WatermarkScreenComponent implements OnInit {
viewReady = false;
configForm: FormGroup;
private _instance: WebViewerInstance;
private _watermark: WatermarkModel = {};
private _watermark: WatermarkModelRes = {};
@ViewChild('viewer', { static: true })
private _viewer: ElementRef;
@ -194,7 +194,7 @@ export class WatermarkScreenComponent implements OnInit {
const text = this.configForm.get('text').value || '';
const fontSize = this.configForm.get('fontSize').value;
const fontType = this.configForm.get('fontType').value;
const orientation: WatermarkModel.WatermarkOrientationEnum =
const orientation: WatermarkModelRes.OrientationEnum =
this.configForm.get('orientation').value;
const opacity = this.configForm.get('opacity').value;
const color = this.configForm.get('hexColor').value;
@ -208,13 +208,13 @@ export class WatermarkScreenComponent implements OnInit {
await stamper.setOpacity(opacity / 100);
switch (orientation) {
case WatermarkModel.WatermarkOrientationEnum.VERTICAL:
case WatermarkModelRes.OrientationEnum.VERTICAL:
await stamper.setAlignment(0, 0);
await stamper.setRotation(-90);
break;
case WatermarkModel.WatermarkOrientationEnum.HORIZONTAL:
case WatermarkModelRes.OrientationEnum.HORIZONTAL:
break;
case WatermarkModel.WatermarkOrientationEnum.DIAGONAL:
case WatermarkModelRes.OrientationEnum.DIAGONAL:
default:
await stamper.setAlignment(0, 0);
await stamper.setRotation(-45);

View File

@ -2,8 +2,6 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { DossierWrapper } from '@state/model/dossier.wrapper';
import { StatusSorter } from '@utils/sorters/status-sorter';
import { download } from '@utils/file-download-utils';
import { computerize } from '@utils/functions';
import { FileManagementControllerService } from '@redaction/red-ui-http';
import { AppStateService } from '@state/app-state.service';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
@ -44,31 +42,6 @@ export class DossierListingActionsComponent {
});
}
// Download Files
downloadRedactedFiles($event: MouseEvent, dossier: DossierWrapper) {
$event.stopPropagation();
this._fileManagementControllerService
.downloadRedactedFiles(
{ fileIds: dossier.files.map((file) => file.fileId) },
dossier.dossierId,
false,
'response'
)
.subscribe((data) => {
download(data, 'redacted_files_' + computerize(dossier.name) + '.zip');
});
}
canDownloadRedactedFiles(dossier: DossierWrapper) {
return (
dossier.files.length > 0 &&
dossier.files.reduce(
(acc, file) => acc && this.permissionsService.canDownloadRedactedFile(file),
true
)
);
}
getDossierStatusConfig(pw: DossierWrapper) {
const obj = pw.files.reduce((acc, file) => {
const status = file.status;

View File

@ -1,5 +1,4 @@
import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';
import { TypeValue } from '@redaction/red-ui-http';
import { TypeValueWrapper } from '@models/file/type-value.wrapper';
@Component({

View File

@ -34,12 +34,12 @@ export class FileDownloadBtnComponent {
return (
this.file.length > 0 &&
this.file.reduce(
(acc, file) => acc && this._permissionsService.canDownloadRedactedFile(file),
(acc, file) => acc && this._permissionsService.canDownloadFiles(file),
true
)
);
} else {
return this._permissionsService.canDownloadRedactedFile(this.file);
return this._permissionsService.canDownloadFiles(this.file);
}
}

View File

@ -44,7 +44,7 @@ export class DictionaryManagerComponent implements OnChanges {
searchText = '';
selectDossierTemplate = { name: 'dictionary-overview.compare.select-dossier-template' };
selectDictionary = { label: 'dictionary-overview.compare.select-dictionary' };
selectDictionary = new TypeValueWrapper(null, 'dictionary-overview.compare.select-dictionary');
dossierTemplates: DossierTemplateModel[];
dictionaries: TypeValueWrapper[] = [this.selectDictionary];
form: FormGroup;

View File

@ -41,13 +41,7 @@ export class FileDownloadService {
return this._downloadControllerService
.prepareDownload({
fileIds: fileStatusWrappers.map((f) => f.fileId),
dossierId: dossier.dossierId,
reportTypes: [
'WORD_SINGLE_FILE_EFSA_TEMPLATE',
'WORD_SINGLE_FILE_SYNGENTA_TEMPLATE',
'EXCEL_MULTI_FILE'
],
downloadFileTypes: ['PREVIEW', 'REDACTED']
dossierId: dossier.dossierId
})
.pipe(mergeMap(() => this.getDownloadStatus()));
}

View File

@ -7,7 +7,7 @@ import { AppConfigKey, AppConfigService } from '@app-config/app-config.service';
import { TranslateService } from '@ngx-translate/core';
import { UploadDownloadDialogService } from './upload-download-dialog.service';
import { toNumber } from '@utils/functions';
import { UploadControllerService } from '../../../../../../../libs/red-ui-http/src/lib/api/uploadController.service';
import { UploadControllerService } from '@redaction/red-ui-http';
export interface ActiveUpload {
subscription: Subscription;

View File

@ -296,7 +296,7 @@ export class PermissionsService {
);
}
canDownloadRedactedFile(fileStatus: FileStatusWrapper) {
canDownloadFiles(fileStatus: FileStatusWrapper) {
if (!fileStatus) {
fileStatus = this._appStateService.activeFile;
}

View File

@ -4,7 +4,6 @@ import {
Dossier,
DossierControllerService,
DossierTemplateControllerService,
DossierTemplateModel,
FileAttributesConfig,
FileAttributesControllerService,
FileStatus,
@ -21,10 +20,11 @@ import { humanize } from '@utils/functions';
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
import { DossierWrapper } from './model/dossier.wrapper';
import { TypeValueWrapper } from '@models/file/type-value.wrapper';
import { DossierTemplateModelWrapper } from '@models/file/dossier-template-model.wrapper';
export interface AppState {
dossiers: DossierWrapper[];
dossierTemplates: DossierTemplateModel[];
dossierTemplates: DossierTemplateModelWrapper[];
activeDossierId: string;
activeFileId: string;
activeDossierTemplateId: string;
@ -99,11 +99,11 @@ export class AppStateService {
return this._appState.activeDossierTemplateId;
}
get activeDossierTemplate(): DossierTemplateModel {
get activeDossierTemplate(): DossierTemplateModelWrapper {
return this.getDossierTemplateById(this.activeDossierTemplateId);
}
get dossierTemplates(): DossierTemplateModel[] {
get dossierTemplates(): DossierTemplateModelWrapper[] {
return this._appState.dossierTemplates;
}
@ -206,7 +206,7 @@ export class AppStateService {
return color ? color : this._dictionaryData[dossierTemplateId]['default'].hexColor;
}
getDossierTemplateById(id: string): DossierTemplateModel {
getDossierTemplateById(id: string): DossierTemplateModelWrapper {
return this.dossierTemplates.find((rs) => rs.dossierTemplateId === id);
}
@ -429,9 +429,12 @@ export class AppStateService {
}
async loadAllDossierTemplates() {
this._appState.dossierTemplates = await this._dossierTemplateControllerService
const dossierTemplates = await this._dossierTemplateControllerService
.getAllDossierTemplates1()
.toPromise();
this._appState.dossierTemplates = dossierTemplates.map(
(dossierTemplate) => new DossierTemplateModelWrapper(dossierTemplate)
);
this._appState.fileAttributesConfig = {};
for (const dossierTemplate of this._appState.dossierTemplates) {
this._appState.fileAttributesConfig[dossierTemplate.dossierTemplateId] =

View File

@ -23,6 +23,7 @@ import { DigitalSignatureControllerService } from './api/digitalSignatureControl
import { AuditControllerService } from './api/auditController.service';
import { FileAttributesControllerService } from './api/fileAttributesController.service';
import { SmtpConfigurationControllerService } from './api/smtpConfigurationController.service';
import { UploadControllerService } from './api/uploadController.service';
@NgModule({
imports: [],
@ -49,7 +50,8 @@ import { SmtpConfigurationControllerService } from './api/smtpConfigurationContr
DownloadControllerService,
DigitalSignatureControllerService,
FileAttributesControllerService,
SmtpConfigurationControllerService
SmtpConfigurationControllerService,
UploadControllerService
]
})
export class ApiModule {

View File

@ -22,6 +22,7 @@ import { DigitalSignatureControllerService } from './digitalSignatureController.
import { FileAttributesControllerService } from './fileAttributesController.service';
import { SmtpConfigurationControllerService } from './smtpConfigurationController.service';
import { ReportTemplateControllerService } from './reportTemplateController.service';
import { UploadControllerService } from './uploadController.service';
export * from './auditController.service';
@ -71,6 +72,8 @@ export * from './smtpConfigurationController.service';
export * from './reportTemplateController.service';
export * from './uploadController.service';
export const APIS = [
AuditControllerService,
DebugControllerService,
@ -95,5 +98,6 @@ export const APIS = [
DigitalSignatureControllerService,
FileAttributesControllerService,
SmtpConfigurationControllerService,
ReportTemplateControllerService
ReportTemplateControllerService,
UploadControllerService
];

View File

@ -301,27 +301,34 @@ export class FileManagementControllerService {
dossierId: string,
fileId: string,
inline?: boolean,
indicator?: string,
observe?: 'body',
reportProgress?: boolean
): Observable<any>;
public downloadOriginalFile(
dossierId: string,
fileId: string,
inline?: boolean,
indicator?: string,
observe?: 'response',
reportProgress?: boolean
): Observable<HttpResponse<any>>;
public downloadOriginalFile(
dossierId: string,
fileId: string,
inline?: boolean,
indicator?: string,
observe?: 'events',
reportProgress?: boolean
): Observable<HttpEvent<any>>;
public downloadOriginalFile(
dossierId: string,
fileId: string,
inline?: boolean,
indicator?: string,
observe: any = 'body',
reportProgress: boolean = false
): Observable<any> {
@ -341,6 +348,9 @@ export class FileManagementControllerService {
if (inline !== undefined && inline !== null) {
queryParameters = queryParameters.set('inline', <any>inline);
}
if (indicator !== undefined && indicator !== null) {
queryParameters = queryParameters.set('indicator', <any>indicator);
}
let headers = this.defaultHeaders;
@ -361,12 +371,13 @@ export class FileManagementControllerService {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
return this.httpClient.request<any>(
return this.httpClient.request(
'get',
`${this.basePath}/redaction-gateway-v1/download/original/${encodeURIComponent(
`${this.basePath}/download/original/${encodeURIComponent(
String(dossierId)
)}/${encodeURIComponent(String(fileId))}`,
{
responseType: 'blob',
params: queryParameters,
withCredentials: this.configuration.withCredentials,
headers: headers,

View File

@ -155,7 +155,7 @@ export namespace FileStatus {
ERROR: 'ERROR' as StatusEnum,
EXCLUDED: 'EXCLUDED' as StatusEnum,
FULLREPROCESS: 'FULLREPROCESS' as StatusEnum,
OCRPROCESSING: 'OCR_PROCESSING' as StatusEnum,
OCR_PROCESSING: 'OCR_PROCESSING' as StatusEnum,
PROCESSING: 'PROCESSING' as StatusEnum,
REPROCESS: 'REPROCESS' as StatusEnum,
UNASSIGNED: 'UNASSIGNED' as StatusEnum,

View File

@ -40,7 +40,7 @@ export namespace ReportData {
ERROR: 'ERROR' as StatusEnum,
EXCLUDED: 'EXCLUDED' as StatusEnum,
FULLREPROCESS: 'FULLREPROCESS' as StatusEnum,
OCRPROCESSING: 'OCR_PROCESSING' as StatusEnum,
OCR_PROCESSING: 'OCR_PROCESSING' as StatusEnum,
PROCESSING: 'PROCESSING' as StatusEnum,
REPROCESS: 'REPROCESS' as StatusEnum,
UNASSIGNED: 'UNASSIGNED' as StatusEnum,