src/app/features/file/file.datatype.ts
Datatype for saving a file on an entity property.
The name of the file is saved on the property while the file itself is stored in another database.
Usage in code:
Example :@DatabaseProperty({ dataType: "file", label: "My label"}) myFileProperty: string;Usage in config:
Example :{
"name": "myFileProperty",
"schema": {
"dataType": "file",
"label": "My label"
}
}
Properties |
|
Methods |
| Async anonymize | ||||||||||||
anonymize(value: string, schemaField: EntitySchemaField, parent: any)
|
||||||||||||
|
Inherited from
DefaultDatatype
|
||||||||||||
|
Defined in
DefaultDatatype:33
|
||||||||||||
|
Parameters :
Returns :
Promise<any>
|
| transformToDatabaseFormat | ||||||
transformToDatabaseFormat(value: unknown)
|
||||||
|
Inherited from
DefaultDatatype
|
||||||
|
Defined in
DefaultDatatype:38
|
||||||
|
Parameters :
Returns :
any
|
| transformToObjectFormat | ||||||
transformToObjectFormat(value: unknown)
|
||||||
|
Inherited from
DefaultDatatype
|
||||||
|
Defined in
DefaultDatatype:45
|
||||||
|
Parameters :
Returns :
any
|
| Static detectFieldInEntity | ||||||||||||
detectFieldInEntity(entityOrType: Entity | EntityConstructor, dataTypes: string | string[])
|
||||||||||||
|
Inherited from
DefaultDatatype
|
||||||||||||
|
Defined in
DefaultDatatype:57
|
||||||||||||
|
Detect the first field of the given datatype(s) in an entity's schema. Scans the schema for a field whose Subclasses typically override this without the extra
Parameters :
Returns :
string | undefined
The field name of the first matching field, or |
| importIncompleteAdditionalConfigBadge | ||||||
importIncompleteAdditionalConfigBadge(col: ColumnMapping)
|
||||||
|
Inherited from
DefaultDatatype
|
||||||
|
Defined in
DefaultDatatype:166
|
||||||
|
Output a label indicating whether the given column mapping needs user configuration for the "additional" config or has a valid, complete "additional" config. returns "undefined" if no user action is required.
Parameters :
Returns :
string
|
| Async importMapFunction | ||||||||||||||||||||
importMapFunction(val: any, schemaField: EntitySchemaField, additional?: any, importProcessingContext?: any)
|
||||||||||||||||||||
|
Inherited from
DefaultDatatype
|
||||||||||||||||||||
|
Defined in
DefaultDatatype:145
|
||||||||||||||||||||
|
The function used to map values from the import data to values in the entities to be created. to share information across processing of multiple columns and rows.
Parameters :
Returns :
Promise<EntityType>
|
| normalizeSchemaField | ||||||||
normalizeSchemaField(schemaField: EntitySchemaField)
|
||||||||
|
Inherited from
DefaultDatatype
|
||||||||
|
Defined in
DefaultDatatype:182
|
||||||||
|
Return the (potentially adjusted) schema field for this datatype. Called when schema fields are set up (e.g. from config), allowing the datatype to normalize or fill in required settings. Override this in a subclass to enforce constraints
(e.g. always setting
Parameters :
Returns :
EntitySchemaField
The schema field to use (default: unchanged) |
| Static dataType |
Type : string
|
Default value : "file"
|
|
Inherited from
DefaultDatatype
|
|
Defined in
DefaultDatatype:27
|
| editComponent |
Type : string
|
Default value : "EditFile"
|
|
Inherited from
DefaultDatatype
|
|
Defined in
DefaultDatatype:31
|
| Static label |
Type : string
|
Default value : $localize`:datatype-label:file attachment`
|
|
Inherited from
DefaultDatatype
|
|
Defined in
DefaultDatatype:28
|
| viewComponent |
Type : string
|
Default value : "ViewFile"
|
|
Inherited from
DefaultDatatype
|
|
Defined in
DefaultDatatype:30
|
| Readonly importAllowsMultiMapping |
Type : boolean
|
Default value : false
|
|
Inherited from
DefaultDatatype
|
|
Defined in
DefaultDatatype:80
|
|
Whether this datatype allows multiple values to be mapped to the same entity field during import. |
| Optional importConfigComponent |
Type : string
|
|
Inherited from
DefaultDatatype
|
|
Defined in
DefaultDatatype:158
|
|
A component to be display as a dialog to configure the transformation function (e.g. defining a format or mapping) |
import { StringDatatype } from "../../core/basic-datatypes/string/string.datatype";
import { Injectable } from "@angular/core";
import { EntitySchemaField } from "../../core/entity/schema/entity-schema-field";
/**
* Datatype for saving a file on an entity property.
*
* The name of the file is saved on the property while the file itself is stored in another database.
*
* Usage in code:
* ```javascript
* @DatabaseProperty({ dataType: "file", label: "My label"}) myFileProperty: string;
* ```
* Usage in config:
* ```json
* {
* "name": "myFileProperty",
* "schema": {
* "dataType": "file",
* "label": "My label"
* }
* }
* ```
*/
@Injectable()
export class FileDatatype extends StringDatatype {
static override dataType = "file";
static override label: string = $localize`:datatype-label:file attachment`;
override viewComponent = "ViewFile";
override editComponent = "EditFile";
override async anonymize(
value: string,
schemaField: EntitySchemaField,
parent: any,
): Promise<any> {
// accessing the id of the entity property seems difficult here
// file anonymization requires the FileService to actively delete - not supporting partial anonymization for now
// --> see EntityRemoveService for full anonymization, removing files
throw new Error(
"'retain-anonymized' is not implemented for 'file' datatype",
);
}
}
/**
* (Optional) "additional" object to configure details of a "file" datatype / form field.
*/
export interface FileFieldConfig {
/**
* The accepted file types for file selection dialog.
* If not defined, allows any file.
*/
acceptedFileTypes?: string;
/**
* The maxSize to which the image will be automatically resized before upload.
*/
imageCompression?: number;
}