update file attribute config

This commit is contained in:
Dan Percic 2021-09-26 11:04:24 +03:00
parent d5de4f5104
commit 0ac286d193
15 changed files with 118 additions and 90 deletions

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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))}`,
{

View File

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

View File

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