update file attribute config
This commit is contained in:
parent
d5de4f5104
commit
0ac286d193
30
apps/red-ui/src/app/models/file/file-attribute-config.ts
Normal file
30
apps/red-ui/src/app/models/file/file-attribute-config.ts
Normal file
@ -0,0 +1,30 @@
|
||||
import { FileAttributeConfigType, IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
|
||||
export class FileAttributeConfig implements IFileAttributeConfig, IListable {
|
||||
readonly id: string;
|
||||
readonly csvColumnHeader?: string;
|
||||
readonly editable?: boolean;
|
||||
readonly label?: string;
|
||||
readonly placeholder?: string;
|
||||
readonly primaryAttribute?: boolean;
|
||||
readonly displayedInFileList?: boolean;
|
||||
readonly filterable?: boolean;
|
||||
readonly type?: FileAttributeConfigType;
|
||||
|
||||
constructor(fileAttributeConfig: IFileAttributeConfig) {
|
||||
this.id = fileAttributeConfig.id;
|
||||
this.csvColumnHeader = fileAttributeConfig.csvColumnHeader;
|
||||
this.editable = !!fileAttributeConfig.editable;
|
||||
this.label = fileAttributeConfig.label;
|
||||
this.placeholder = fileAttributeConfig.placeholder;
|
||||
this.primaryAttribute = fileAttributeConfig.primaryAttribute;
|
||||
this.displayedInFileList = fileAttributeConfig.displayedInFileList;
|
||||
this.filterable = !!fileAttributeConfig.filterable;
|
||||
this.type = fileAttributeConfig.type;
|
||||
}
|
||||
|
||||
get searchKey(): string {
|
||||
return this.label;
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, Inject, OnDestroy } from '@angular/core';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { DossierAttributeConfigTypes, FileAttributeConfig, IDossierAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { DossierAttributeConfigTypes, FileAttributeConfigTypes, IDossierAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { AutoUnsubscribe, LoadingService, Toaster } from '@iqser/common-ui';
|
||||
import { HttpErrorResponse } from '@angular/common/http';
|
||||
@ -38,7 +38,7 @@ export class AddEditDossierAttributeDialogComponent extends AutoUnsubscribe impl
|
||||
disabled: true
|
||||
}
|
||||
}),
|
||||
type: [this.dossierAttribute?.type || FileAttributeConfig.TypeEnum.TEXT, Validators.required]
|
||||
type: [this.dossierAttribute?.type || FileAttributeConfigTypes.TEXT, Validators.required]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Component, Inject } from '@angular/core';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { FileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { FileAttributeConfigTypes, IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { fileAttributeTypesTranslations } from '../../translations/file-attribute-types-translations';
|
||||
|
||||
@ -12,9 +12,9 @@ import { fileAttributeTypesTranslations } from '../../translations/file-attribut
|
||||
})
|
||||
export class AddEditFileAttributeDialogComponent {
|
||||
fileAttributeForm: FormGroup;
|
||||
fileAttribute: FileAttributeConfig;
|
||||
fileAttribute: IFileAttributeConfig;
|
||||
dossierTemplateId: string;
|
||||
readonly typeOptions = [FileAttributeConfig.TypeEnum.TEXT, FileAttributeConfig.TypeEnum.NUMBER, FileAttributeConfig.TypeEnum.DATE];
|
||||
readonly typeOptions = Object.keys(FileAttributeConfigTypes);
|
||||
translations = fileAttributeTypesTranslations;
|
||||
|
||||
constructor(
|
||||
@ -22,7 +22,7 @@ export class AddEditFileAttributeDialogComponent {
|
||||
private readonly _formBuilder: FormBuilder,
|
||||
public dialogRef: MatDialogRef<AddEditFileAttributeDialogComponent>,
|
||||
@Inject(MAT_DIALOG_DATA)
|
||||
public data: { fileAttribute: FileAttributeConfig; dossierTemplateId: string }
|
||||
public data: { fileAttribute: IFileAttributeConfig; dossierTemplateId: string }
|
||||
) {
|
||||
this.fileAttribute = data.fileAttribute;
|
||||
this.dossierTemplateId = data.dossierTemplateId;
|
||||
@ -30,7 +30,7 @@ export class AddEditFileAttributeDialogComponent {
|
||||
this.fileAttributeForm = this._formBuilder.group({
|
||||
label: [this.fileAttribute?.label, Validators.required],
|
||||
csvColumnHeader: [this.fileAttribute?.csvColumnHeader, Validators.required],
|
||||
type: [this.fileAttribute?.type || FileAttributeConfig.TypeEnum.TEXT, Validators.required],
|
||||
type: [this.fileAttribute?.type || FileAttributeConfigTypes.TEXT, Validators.required],
|
||||
readonly: [this.fileAttribute ? !this.fileAttribute.editable : false],
|
||||
primaryAttribute: [this.fileAttribute?.primaryAttribute],
|
||||
filterable: [this.fileAttribute?.filterable],
|
||||
@ -57,7 +57,7 @@ export class AddEditFileAttributeDialogComponent {
|
||||
}
|
||||
|
||||
async saveFileAttribute() {
|
||||
const fileAttribute: FileAttributeConfig = {
|
||||
const fileAttribute: IFileAttributeConfig = {
|
||||
id: this.fileAttribute?.id,
|
||||
editable: !this.fileAttributeForm.get('readonly').value,
|
||||
...this.fileAttributeForm.getRawValue()
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Component, Inject } from '@angular/core';
|
||||
import { FileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
|
||||
@ -9,7 +9,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
styleUrls: ['./confirm-delete-file-attribute-dialog.component.scss']
|
||||
})
|
||||
export class ConfirmDeleteFileAttributeDialogComponent {
|
||||
fileAttribute: FileAttributeConfig;
|
||||
fileAttribute: IFileAttributeConfig;
|
||||
checkboxes = [
|
||||
{ value: false, label: _('confirm-delete-file-attribute.impacted-documents') },
|
||||
{ value: false, label: _('confirm-delete-file-attribute.lost-details') }
|
||||
@ -18,7 +18,7 @@ export class ConfirmDeleteFileAttributeDialogComponent {
|
||||
|
||||
constructor(
|
||||
public dialogRef: MatDialogRef<ConfirmDeleteFileAttributeDialogComponent>,
|
||||
@Inject(MAT_DIALOG_DATA) public data: FileAttributeConfig
|
||||
@Inject(MAT_DIALOG_DATA) public data: IFileAttributeConfig
|
||||
) {
|
||||
this.fileAttribute = data;
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ import {
|
||||
ViewChild
|
||||
} from '@angular/core';
|
||||
import { Field } from '../file-attributes-csv-import-dialog.component';
|
||||
import { FileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { FileAttributeConfigTypes } from '@redaction/red-ui-http';
|
||||
import { CircleButtonTypes, DefaultListingServices, ListingComponent, TableColumnConfig } from '@iqser/common-ui';
|
||||
import { fileAttributeTypesTranslations } from '../../../translations/file-attribute-types-translations';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
@ -28,19 +28,15 @@ export class ActiveFieldsListingComponent extends ListingComponent<Field> implem
|
||||
readonly translations = fileAttributeTypesTranslations;
|
||||
readonly tableHeaderLabel = _('file-attributes-csv-import.table-header.title');
|
||||
tableColumnConfigs: TableColumnConfig<Field>[];
|
||||
readonly typeOptions = [
|
||||
FileAttributeConfig.TypeEnum.TEXT,
|
||||
FileAttributeConfig.TypeEnum.NUMBER,
|
||||
FileAttributeConfig.TypeEnum.DATE
|
||||
] as const;
|
||||
readonly typeOptions = Object.keys(FileAttributeConfigTypes);
|
||||
@ViewChild('labelTemplate', { static: true }) labelTemplate: TemplateRef<never>;
|
||||
@ViewChild('typeTemplate', { static: true }) typeTemplate: TemplateRef<never>;
|
||||
@ViewChild('readonlyTemplate', { static: true }) readonlyTemplate: TemplateRef<never>;
|
||||
@ViewChild('primaryTemplate', { static: true }) primaryTemplate: TemplateRef<never>;
|
||||
@Input() entities: Field[];
|
||||
@Output() entitiesChange = new EventEmitter<Field[]>();
|
||||
@Output() setHoveredColumn = new EventEmitter<string>();
|
||||
@Output() toggleFieldActive = new EventEmitter<Field>();
|
||||
@Output() readonly entitiesChange = new EventEmitter<Field[]>();
|
||||
@Output() readonly setHoveredColumn = new EventEmitter<string>();
|
||||
@Output() readonly toggleFieldActive = new EventEmitter<Field>();
|
||||
protected readonly _primaryKey = 'csvColumn';
|
||||
|
||||
constructor(protected readonly _injector: Injector) {
|
||||
|
||||
@ -2,17 +2,23 @@ import { Component, Inject, Injector } from '@angular/core';
|
||||
import { AbstractControl, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import * as Papa from 'papaparse';
|
||||
import { FileAttributeConfig, FileAttributesConfig, FileAttributesControllerService } from '@redaction/red-ui-http';
|
||||
import {
|
||||
FileAttributeConfigType,
|
||||
FileAttributeConfigTypes,
|
||||
FileAttributesConfig,
|
||||
FileAttributesControllerService
|
||||
} from '@redaction/red-ui-http';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, startWith } from 'rxjs/operators';
|
||||
import { DefaultListingServices, IListable, ListingComponent, TableColumnConfig, Toaster } from '@iqser/common-ui';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { FileAttributeConfig } from '@models/file/file-attribute-config';
|
||||
|
||||
export interface Field extends IListable {
|
||||
id: string;
|
||||
csvColumn: string;
|
||||
name: string;
|
||||
type: FileAttributeConfig.TypeEnum;
|
||||
type: FileAttributeConfigType;
|
||||
readonly: boolean;
|
||||
primaryAttribute: boolean;
|
||||
}
|
||||
@ -165,17 +171,15 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<Fie
|
||||
|
||||
async save() {
|
||||
const newPrimary = !!this.activeFields.find(attr => attr.primaryAttribute);
|
||||
|
||||
let fileAttributeConfigs = this.data.existingConfiguration.fileAttributeConfigs;
|
||||
if (newPrimary) {
|
||||
this.data.existingConfiguration.fileAttributeConfigs.forEach(attr => (attr.primaryAttribute = false));
|
||||
fileAttributeConfigs = fileAttributeConfigs.map(attr => new FileAttributeConfig({ ...attr, primaryAttribute: false }));
|
||||
}
|
||||
|
||||
const fileAttributes = {
|
||||
...this.baseConfigForm.getRawValue(),
|
||||
fileAttributeConfigs: [
|
||||
...this.data.existingConfiguration.fileAttributeConfigs.filter(
|
||||
a => !this.allEntities.find(entity => entity.csvColumn === a.csvColumnHeader)
|
||||
),
|
||||
...fileAttributeConfigs.filter(a => !this.allEntities.find(entity => entity.csvColumn === a.csvColumnHeader)),
|
||||
...this.activeFields.map(field => ({
|
||||
id: field.id,
|
||||
csvColumnHeader: field.csvColumn,
|
||||
@ -228,7 +232,7 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<Fie
|
||||
id: btoa(csvColumn),
|
||||
csvColumn,
|
||||
name: csvColumn,
|
||||
type: isNumber ? FileAttributeConfig.TypeEnum.NUMBER : FileAttributeConfig.TypeEnum.TEXT,
|
||||
type: isNumber ? FileAttributeConfigTypes.NUMBER : FileAttributeConfigTypes.TEXT,
|
||||
readonly: false,
|
||||
primaryAttribute: false
|
||||
};
|
||||
|
||||
@ -9,7 +9,7 @@ import {
|
||||
TemplateRef,
|
||||
ViewChild
|
||||
} from '@angular/core';
|
||||
import { FileAttributeConfig, FileAttributesConfig, FileAttributesControllerService } from '@redaction/red-ui-http';
|
||||
import { FileAttributesConfig, FileAttributesControllerService, IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { AppStateService } from '@state/app-state.service';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||
@ -24,6 +24,7 @@ import {
|
||||
import { fileAttributeTypesTranslations } from '../../translations/file-attribute-types-translations';
|
||||
import { UserService } from '@services/user.service';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { FileAttributeConfig } from '@models/file/file-attribute-config';
|
||||
|
||||
@Component({
|
||||
templateUrl: './file-attributes-listing-screen.component.html',
|
||||
@ -41,14 +42,13 @@ export class FileAttributesListingScreenComponent extends ListingComponent<FileA
|
||||
readonly translations = fileAttributeTypesTranslations;
|
||||
readonly tableHeaderLabel = _('file-attributes-listing.table-header.title');
|
||||
tableColumnConfigs: TableColumnConfig<FileAttributeConfig>[];
|
||||
@ViewChild('labelTemplate', { static: true }) labelTemplate: TemplateRef<never>;
|
||||
@ViewChild('typeTemplate', { static: true }) typeTemplate: TemplateRef<never>;
|
||||
@ViewChild('readonlyTemplate', { static: true }) readonlyTemplate: TemplateRef<never>;
|
||||
@ViewChild('csvColumnHeaderTemplate', { static: true }) csvColumnHeaderTemplate: TemplateRef<never>;
|
||||
@ViewChild('filterableTemplate', { static: true }) filterableTemplate: TemplateRef<never>;
|
||||
@ViewChild('displayedInFileListTemplate', { static: true }) displayedInFileListTemplate: TemplateRef<never>;
|
||||
@ViewChild('primaryAttributeTemplate', { static: true }) primaryAttributeTemplate: TemplateRef<never>;
|
||||
protected readonly _primaryKey = 'label';
|
||||
@ViewChild('labelTemplate', { static: true }) labelTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('typeTemplate', { static: true }) typeTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('readonlyTemplate', { static: true }) readonlyTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('csvColumnHeaderTemplate', { static: true }) csvColumnHeaderTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('filterableTemplate', { static: true }) filterableTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('displayedInFileListTemplate', { static: true }) displayedInFileListTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('primaryAttributeTemplate', { static: true }) primaryAttributeTemplate: TemplateRef<unknown>;
|
||||
private _existingConfiguration: FileAttributesConfig;
|
||||
@ViewChild('fileInput') private _fileInput: ElementRef;
|
||||
|
||||
@ -70,7 +70,7 @@ export class FileAttributesListingScreenComponent extends ListingComponent<FileA
|
||||
await this._loadData();
|
||||
}
|
||||
|
||||
openAddEditAttributeDialog($event: MouseEvent, fileAttribute?: FileAttributeConfig) {
|
||||
openAddEditAttributeDialog($event: MouseEvent, fileAttribute?: IFileAttributeConfig) {
|
||||
this._dialogService.openDialog(
|
||||
'addEditFileAttribute',
|
||||
$event,
|
||||
@ -86,7 +86,7 @@ export class FileAttributesListingScreenComponent extends ListingComponent<FileA
|
||||
);
|
||||
}
|
||||
|
||||
openConfirmDeleteAttributeDialog($event: MouseEvent, fileAttribute?: FileAttributeConfig) {
|
||||
openConfirmDeleteAttributeDialog($event: MouseEvent, fileAttribute?: IFileAttributeConfig) {
|
||||
this._dialogService.openDialog('deleteFileAttribute', $event, fileAttribute, async () => {
|
||||
this._loadingService.start();
|
||||
if (fileAttribute) {
|
||||
@ -126,7 +126,7 @@ export class FileAttributesListingScreenComponent extends ListingComponent<FileA
|
||||
this.tableColumnConfigs = [
|
||||
{
|
||||
label: _('file-attributes-listing.table-col-names.name'),
|
||||
sortByKey: 'label',
|
||||
sortByKey: 'searchKey',
|
||||
width: '2fr',
|
||||
template: this.labelTemplate
|
||||
},
|
||||
@ -170,7 +170,8 @@ export class FileAttributesListingScreenComponent extends ListingComponent<FileA
|
||||
.getFileAttributesConfiguration(this._appStateService.activeDossierTemplateId)
|
||||
.toPromise();
|
||||
this._existingConfiguration = response;
|
||||
this.entitiesService.setEntities(response?.fileAttributeConfigs || []);
|
||||
const fileAttributeConfig = response?.fileAttributeConfigs.map(item => new FileAttributeConfig(item)) || [];
|
||||
this.entitiesService.setEntities(fileAttributeConfig);
|
||||
} catch (e) {}
|
||||
|
||||
this._loadingService.stop();
|
||||
|
||||
@ -44,8 +44,6 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
@ViewChild('ownerTemplate', { static: true }) ownerTemplate: TemplateRef<never>;
|
||||
@ViewChild('deletedTimeTemplate', { static: true }) deletedTimeTemplate: TemplateRef<never>;
|
||||
@ViewChild('restoreDateTemplate', { static: true }) restoreDateTemplate: TemplateRef<never>;
|
||||
protected readonly _primaryKey = 'dossierName';
|
||||
private readonly _deleteRetentionHours = this._configService.values.DELETE_RETENTION_HOURS;
|
||||
|
||||
constructor(
|
||||
protected readonly _injector: Injector,
|
||||
@ -78,7 +76,7 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
this._loadingService.stop();
|
||||
}
|
||||
|
||||
hardDelete(dossiers = this.entitiesService.selected) {
|
||||
hardDelete(dossiers = this.entitiesService.selected): void {
|
||||
const data = new ConfirmationDialogInput({
|
||||
title: _('confirmation-dialog.delete-dossier.title'),
|
||||
titleColor: TitleColors.PRIMARY,
|
||||
@ -97,7 +95,7 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
});
|
||||
}
|
||||
|
||||
restore(dossiers = this.entitiesService.selected) {
|
||||
restore(dossiers = this.entitiesService.selected): void {
|
||||
this._loadingService.loadWhile(this._restore(dossiers));
|
||||
}
|
||||
|
||||
@ -105,7 +103,7 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
this.tableColumnConfigs = [
|
||||
{
|
||||
label: _('trash.table-col-names.name'),
|
||||
sortByKey: 'dossierName',
|
||||
sortByKey: 'searchKey',
|
||||
template: this.filenameTemplate
|
||||
},
|
||||
{
|
||||
@ -127,7 +125,7 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
||||
}
|
||||
|
||||
private _getRestoreDate(softDeletedTime: string): string {
|
||||
return moment(softDeletedTime).add(this._deleteRetentionHours, 'hours').toISOString();
|
||||
return moment(softDeletedTime).add(this._configService.values.DELETE_RETENTION_HOURS, 'hours').toISOString();
|
||||
}
|
||||
|
||||
private async _loadDossiersData(): Promise<void> {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { FileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { FileAttributeConfigType } from '@redaction/red-ui-http';
|
||||
|
||||
export const fileAttributeTypesTranslations: { [key in FileAttributeConfig.TypeEnum]: string } = {
|
||||
export const fileAttributeTypesTranslations: { [key in FileAttributeConfigType]: string } = {
|
||||
TEXT: _('file-attribute-types.text'),
|
||||
NUMBER: _('file-attribute-types.number'),
|
||||
DATE: _('file-attribute-types.date')
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { Component, Inject, OnInit } from '@angular/core';
|
||||
import { FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { FileAttributeConfig, FileAttributesControllerService, FileStatus } from '@redaction/red-ui-http';
|
||||
import { FileAttributesControllerService, FileStatus, 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';
|
||||
@ -12,7 +12,7 @@ import { Dossier } from '../../../../state/model/dossier';
|
||||
export class DocumentInfoDialogComponent implements OnInit {
|
||||
documentInfoForm: FormGroup;
|
||||
file: FileStatus;
|
||||
attributes: FileAttributeConfig[];
|
||||
attributes: IFileAttributeConfig[];
|
||||
|
||||
private _dossier: Dossier;
|
||||
|
||||
|
||||
@ -52,6 +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 { IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { Router } from '@angular/router';
|
||||
import { FileActionService } from '../../services/file-action.service';
|
||||
@ -79,7 +80,7 @@ export class DossierOverviewScreenComponent extends ListingComponent<FileStatusW
|
||||
tableColumnConfigs: readonly TableColumnConfig<FileStatusWrapper>[] = [];
|
||||
collapsedDetails = false;
|
||||
dossierAttributes: DossierAttributeWithValue[] = [];
|
||||
fileAttributeConfigs: FileAttributeConfig[];
|
||||
fileAttributeConfigs: IFileAttributeConfig[];
|
||||
@ViewChild('filenameTemplate', { static: true }) filenameTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('addedOnTemplate', { static: true }) addedOnTemplate: TemplateRef<unknown>;
|
||||
@ViewChild('attributeTemplate', { static: true }) attributeTemplate: TemplateRef<unknown>;
|
||||
|
||||
@ -5,7 +5,7 @@ import { FilterService, IListable, SearchService } from '@iqser/common-ui';
|
||||
import { distinctUntilChanged, map } from 'rxjs/operators';
|
||||
import { combineLatest, Observable, of } from 'rxjs';
|
||||
import { SearchPosition, SearchPositions } from '@shared/components/page-header/models/search-positions.type';
|
||||
import { FileAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { IFileAttributeConfig } from '@redaction/red-ui-http';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-page-header',
|
||||
@ -20,8 +20,8 @@ export class PageHeaderComponent<T extends IListable> {
|
||||
@Input() showCloseButton: boolean;
|
||||
@Input() actionConfigs: readonly ActionConfig[];
|
||||
@Input() buttonConfigs: readonly ButtonConfig[];
|
||||
@Input() fileAttributeConfigs: readonly IFileAttributeConfig[];
|
||||
@Input() viewModeSelection: TemplateRef<unknown>;
|
||||
@Input() fileAttributeConfigs: readonly FileAttributeConfig[];
|
||||
@Input() searchPlaceholder: string;
|
||||
@Input() searchWidth: number | 'full';
|
||||
@Input() searchPosition: SearchPosition = SearchPositions.afterFilters;
|
||||
|
||||
@ -10,17 +10,17 @@
|
||||
* Do not edit the class manually.
|
||||
*/ /* tslint:disable:no-unused-variable member-ordering */
|
||||
|
||||
import { Inject, Injectable, Optional } from '@angular/core';
|
||||
import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http';
|
||||
import { Inject, Injectable, Optional } from "@angular/core";
|
||||
import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from "@angular/common/http";
|
||||
|
||||
import { Observable } from 'rxjs';
|
||||
import { Observable } from "rxjs";
|
||||
|
||||
import { FileAttributeConfig } from '../model/fileAttributeConfig';
|
||||
import { FileAttributes } from '../model/fileAttributes';
|
||||
import { FileAttributesConfig } from '../model/fileAttributesConfig';
|
||||
import { IFileAttributeConfig } from "../model/fileAttributeConfig";
|
||||
import { FileAttributes } from "../model/fileAttributes";
|
||||
import { FileAttributesConfig } from "../model/fileAttributesConfig";
|
||||
|
||||
import { BASE_PATH } from '../variables';
|
||||
import { Configuration } from '../configuration';
|
||||
import { BASE_PATH } from "../variables";
|
||||
import { Configuration } from "../configuration";
|
||||
|
||||
@Injectable()
|
||||
export class FileAttributesControllerService {
|
||||
@ -432,28 +432,28 @@ export class FileAttributesControllerService {
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
*/
|
||||
public setFileAttributesConfiguration(
|
||||
body: FileAttributeConfig,
|
||||
body: IFileAttributeConfig,
|
||||
dossierTemplateId: string,
|
||||
observe?: 'body',
|
||||
reportProgress?: boolean
|
||||
): Observable<FileAttributeConfig>;
|
||||
): Observable<IFileAttributeConfig>;
|
||||
|
||||
public setFileAttributesConfiguration(
|
||||
body: FileAttributeConfig,
|
||||
body: IFileAttributeConfig,
|
||||
dossierTemplateId: string,
|
||||
observe?: 'response',
|
||||
reportProgress?: boolean
|
||||
): Observable<HttpResponse<FileAttributeConfig>>;
|
||||
): Observable<HttpResponse<IFileAttributeConfig>>;
|
||||
|
||||
public setFileAttributesConfiguration(
|
||||
body: FileAttributeConfig,
|
||||
body: IFileAttributeConfig,
|
||||
dossierTemplateId: string,
|
||||
observe?: 'events',
|
||||
reportProgress?: boolean
|
||||
): Observable<HttpEvent<FileAttributeConfig>>;
|
||||
): Observable<HttpEvent<IFileAttributeConfig>>;
|
||||
|
||||
public setFileAttributesConfiguration(
|
||||
body: FileAttributeConfig,
|
||||
body: IFileAttributeConfig,
|
||||
dossierTemplateId: string,
|
||||
observe: any = 'body',
|
||||
reportProgress: boolean = false
|
||||
@ -489,7 +489,7 @@ export class FileAttributesControllerService {
|
||||
headers = headers.set('Content-Type', httpContentTypeSelected);
|
||||
}
|
||||
|
||||
return this.httpClient.request<FileAttributeConfig>(
|
||||
return this.httpClient.request<IFileAttributeConfig>(
|
||||
'post',
|
||||
`${this.basePath}/fileAttributes/config/fileAttribute/${encodeURIComponent(String(dossierTemplateId))}`,
|
||||
{
|
||||
|
||||
@ -10,23 +10,21 @@
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
export interface FileAttributeConfig {
|
||||
id: string;
|
||||
csvColumnHeader?: string;
|
||||
editable?: boolean;
|
||||
label?: string;
|
||||
placeholder?: string;
|
||||
primaryAttribute?: boolean;
|
||||
displayedInFileList?: boolean;
|
||||
filterable?: boolean;
|
||||
type?: FileAttributeConfig.TypeEnum;
|
||||
export interface IFileAttributeConfig {
|
||||
readonly id: string;
|
||||
readonly csvColumnHeader?: string;
|
||||
readonly editable?: boolean;
|
||||
readonly label?: string;
|
||||
readonly placeholder?: string;
|
||||
readonly primaryAttribute?: boolean;
|
||||
readonly displayedInFileList?: boolean;
|
||||
readonly filterable?: boolean;
|
||||
readonly type?: FileAttributeConfigType;
|
||||
}
|
||||
|
||||
export namespace FileAttributeConfig {
|
||||
export type TypeEnum = 'DATE' | 'NUMBER' | 'TEXT';
|
||||
export const TypeEnum = {
|
||||
DATE: 'DATE' as TypeEnum,
|
||||
NUMBER: 'NUMBER' as TypeEnum,
|
||||
TEXT: 'TEXT' as TypeEnum
|
||||
};
|
||||
}
|
||||
export const FileAttributeConfigTypes = {
|
||||
DATE: 'DATE',
|
||||
NUMBER: 'NUMBER',
|
||||
TEXT: 'TEXT'
|
||||
} as const;
|
||||
export type FileAttributeConfigType = keyof typeof FileAttributeConfigTypes;
|
||||
|
||||
@ -9,10 +9,10 @@
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
import { FileAttributeConfig } from './fileAttributeConfig';
|
||||
import { IFileAttributeConfig } from './fileAttributeConfig';
|
||||
|
||||
export interface FileAttributesConfig {
|
||||
delimiter?: string;
|
||||
fileAttributeConfigs?: Array<FileAttributeConfig>;
|
||||
fileAttributeConfigs?: Array<IFileAttributeConfig>;
|
||||
filenameMappingColumnHeaderName?: string;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user