src/app/core/basic-datatypes/configurable-enum/configurable-enum-datatype/configurable-enum.datatype.ts
Properties |
|
Methods |
|
Public transformToDatabaseFormat | ||||||||
transformToDatabaseFormat(value: ConfigurableEnumValue)
|
||||||||
Inherited from
DefaultDatatype
|
||||||||
Defined in
DefaultDatatype:24
|
||||||||
transforms Objects of InteractionType to strings to save in DB
Parameters :
Returns :
string
|
Public transformToObjectFormat | ||||||||||||
transformToObjectFormat(value: string, schemaField: EntitySchemaField)
|
||||||||||||
Inherited from
DefaultDatatype
|
||||||||||||
Defined in
DefaultDatatype:33
|
||||||||||||
transforms saved strings from the DB to Objects of InteractionType
Parameters :
Returns :
ConfigurableEnumValue
|
importIncompleteAdditionalConfigBadge | ||||||
importIncompleteAdditionalConfigBadge(col: ColumnMapping)
|
||||||
Inherited from
DefaultDatatype
|
||||||
Defined in
DefaultDatatype:37
|
||||||
Parameters :
Returns :
string
|
Async importMapFunction | ||||||||||||
importMapFunction(val, schemaField: EntitySchemaField, additional: literal type)
|
||||||||||||
Inherited from
DefaultDatatype
|
||||||||||||
Defined in
DefaultDatatype:29
|
||||||||||||
Parameters :
Returns :
unknown
|
Async anonymize | ||||||||||||||||
anonymize(value: EntityType, schemaField: EntitySchemaField, parent: any)
|
||||||||||||||||
Inherited from
DefaultDatatype
|
||||||||||||||||
Defined in
DefaultDatatype:148
|
||||||||||||||||
(Partially) anonymize to "retain-anonymized" for reporting purposes without personal identifiable information.
Parameters :
Returns :
Promise<any>
|
Static dataType |
Type : string
|
Default value : "configurable-enum"
|
Inherited from
DefaultDatatype
|
Defined in
DefaultDatatype:14
|
Public Readonly editComponent |
Type : string
|
Default value : "EditConfigurableEnum"
|
Inherited from
DefaultDatatype
|
Defined in
DefaultDatatype:18
|
Static label |
Type : string
|
Default value : $localize`:datatype-label:dropdown option`
|
Inherited from
DefaultDatatype
|
Defined in
DefaultDatatype:15
|
Public Readonly viewComponent |
Type : string
|
Default value : "DisplayConfigurableEnum"
|
Inherited from
DefaultDatatype
|
Defined in
DefaultDatatype:17
|
importConfigComponent |
Type : string
|
Default value : "DiscreteImportConfig"
|
Inherited from
DefaultDatatype
|
Defined in
DefaultDatatype:15
|
Readonly importAllowsMultiMapping |
Type : boolean
|
Default value : false
|
Inherited from
DefaultDatatype
|
Defined in
DefaultDatatype:48
|
Whether this datatype allows multiple values to be mapped to the same entity field during import. |
import { EntitySchemaField } from "../../../entity/schema/entity-schema-field";
import { ConfigurableEnumService } from "../configurable-enum.service";
import { Injectable, inject } from "@angular/core";
import { DiscreteDatatype } from "../../discrete/discrete.datatype";
import { ConfigurableEnumValue } from "../configurable-enum.types";
@Injectable()
export class ConfigurableEnumDatatype extends DiscreteDatatype<
ConfigurableEnumValue,
string
> {
private enumService = inject(ConfigurableEnumService);
static override dataType = "configurable-enum";
static override label: string = $localize`:datatype-label:dropdown option`;
public override readonly viewComponent = "DisplayConfigurableEnum";
public override readonly editComponent = "EditConfigurableEnum";
/**
* transforms Objects of InteractionType to strings to save in DB
* @param value Object to be saved as specified in config file; e.g. `{id: 'CALL', label:'Phone Call', color:'#FFFFFF'}`
*/
public transformToDatabaseFormat(value: ConfigurableEnumValue): string {
return value?.id;
}
/**
* transforms saved strings from the DB to Objects of InteractionType
* @param value string from database as specified in config file; e.g. 'PHONE_CALL'
* @param schemaField
*/
public transformToObjectFormat(
value: string,
schemaField: EntitySchemaField,
): ConfigurableEnumValue {
if (value === undefined) {
return undefined;
}
let enumId = schemaField.additional;
let enumOption = this.enumService
.getEnumValues(enumId)
?.find((option) => option.id === value);
if (!enumOption) {
enumOption = this.generateOptionForInvalid(value);
}
return enumOption;
}
/**
* Build a dummy option so that invalid values are not lost on the next save and users can manually correct issues.
* @param optionValue
* @private
*/
private generateOptionForInvalid(optionValue: string) {
return {
id: optionValue,
isInvalidOption: true,
label:
$localize`:enum option label prefix for invalid id dummy:[invalid option]` +
" " +
optionValue,
};
}
}