src/app/features/skill/external-profile.datatype.ts

Description

Datatype for linking (and storing a selected link) to an external profile (also see SkillApiService).

Usage in config (see ExternalProfileLinkConfig):

Example :
{
  "name": "myExternalProfile",
  "schema": {
    "dataType": "external-profile-link",
    "label": "Related external profile",
    "additional": {
      "searchFields": {
        "fullName": ["firstname", "lastname"],
        "email": ["email"],
      },
      "applyData": [
        { from: "email", to: "emailAddedFromExternal" },
      ],
    }
  }
}

Extends

StringDatatype

Relationships

Used by

No results matching.

Depends on

Index

Properties
Methods

Methods

Async anonymize
anonymize(value: string, schemaField: EntitySchemaField, parent: any)
Inherited from DefaultDatatype
Parameters :
Name Type Optional
value string No
schemaField EntitySchemaField No
parent any No
Returns : Promise<string>
transformToDatabaseFormat
transformToDatabaseFormat(value: unknown)
Inherited from DefaultDatatype
Parameters :
Name Type Optional
value unknown No
Returns : any
transformToObjectFormat
transformToObjectFormat(value: unknown)
Inherited from DefaultDatatype
Parameters :
Name Type Optional
value unknown No
Returns : any
Static detectAllFieldsInEntity
detectAllFieldsInEntity(entityOrType: Entity | EntityConstructor, dataTypes: string | string[])
Inherited from DefaultDatatype

Detect all fields of the given datatype(s) in an entity's schema.

Parameters :
Name Type Optional Description
entityOrType Entity | EntityConstructor No

An entity instance or entity constructor to inspect.

dataTypes string | string[] No

One or more datatype identifiers to match against.

Returns : literal type[]

Array of matching fields with their id and schema definition.

Static detectFieldInEntity
detectFieldInEntity(entityOrType: Entity | EntityConstructor, dataTypes: string | string[])
Inherited from DefaultDatatype

Detect the first field of the given datatype(s) in an entity's schema.

Scans the schema for a field whose dataType matches one of the provided strings and returns its property name.

Subclasses typically override this without the extra dataTypes parameter, forwarding their own relevant datatype identifiers.

Parameters :
Name Type Optional Description
entityOrType Entity | EntityConstructor No

An entity instance or entity constructor to inspect.

dataTypes string | string[] No

One or more datatype identifiers to match against.

Returns : string | undefined

The field name of the first matching field, or undefined if none is found.

getExportColumns
getExportColumns(schemaField: EntitySchemaField)
Inherited from DefaultDatatype

Export columns for a field using this datatype.

Each returned column contributes a CSV header and its own value resolver. The returned keySuffix is appended to the field id to form the exported column key.

The default implementation returns a single column with the raw field value. Readable formatting can be applied by callers during CSV transformation. Override this to provide custom or additional columns (e.g. entity references can add a human-readable name column alongside the ID column).

Parameters :
Name Type Optional
schemaField EntitySchemaField No
Returns : ExportColumnMapping[]
getReferenceSelector
getReferenceSelector(fieldId: string, schemaField: EntitySchemaField, referencedId: string)
Inherited from DefaultDatatype

Mango conditions matching documents whose fieldId references the given entity id, used to query related entities instead of loading a whole entity type (see EntityRelationsService.loadAllLinkingToEntity).

The conditions are matched against the database format, so only the datatype that writes that format can build them - which is why this lives here rather than in the calling service. Return every shape the value may have been stored in rather than branching on schemaField.isArray: existing documents may have been written while the field had the other setting (see FilterService and EntityFilter).

The caller treats these as candidates only and still post-filters in memory, so matching too much is harmless - matching too little silently loses references.

Example :
     cannot be expressed as a query, which makes the caller load the whole type.
     Never return an empty array: `{$or: []}` matches nothing.
Parameters :
Name Type Optional
fieldId string No
schemaField EntitySchemaField No
referencedId string No
Returns : [] | undefined

the conditions to OR together, or undefined if this datatype's stored format cannot be expressed as a query, which makes the caller load the whole type. Never return an empty array: {$or: []} matches nothing.

Async importMapFunction
importMapFunction(val: any, schemaField: EntitySchemaField, additional?: any, importProcessingContext?: any)
Inherited from DefaultDatatype

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 :
Name Type Optional Description
val any No

The value from an imported cell to be mapped

schemaField EntitySchemaField No

The schema field definition for the target property into which the value is mapped

additional any Yes

config as returned by the configComponent

importProcessingContext any Yes

an object that the datatype can use to store any relevant context across multiple calls to share information across processing of multiple columns and rows.

Async importMatchField
importMatchField(schemaField: EntitySchemaField, columns: ColumnImportInput[], importProcessingContext?: ImportProcessingContext)
Inherited from DefaultDatatype

Map all columns mapped to one target field to the value(s) stored there.

ImportService calls this once per target field per row with every column mapped to that field. The default handles trimming and array splitting and delegates each individual value to importMapFunction. Datatypes that need to consider several columns together (e.g. matching an entity by more than one property) override this.

(isArray=true), or undefined if nothing was mapped

Parameters :
Name Type Optional Description
schemaField EntitySchemaField No

the target property the value(s) are imported into

columns ColumnImportInput[] No

every column mapped to this field, with its raw cell value

importProcessingContext ImportProcessingContext Yes

shared context across columns and rows

Returns : Promise<unknown>

the value to store: a single value (isArray=false) or array (isArray=true), or undefined if nothing was mapped

normalizeSchemaField
normalizeSchemaField(schemaField: EntitySchemaField)
Inherited from DefaultDatatype

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 isArray: true).

Parameters :
Name Type Optional Description
schemaField EntitySchemaField No

The current schema field definition

Returns : EntitySchemaField

The schema field to use (default: unchanged)

sortValue
sortValue(_fieldValue: EntityType)
Inherited from DefaultDatatype

Return a comparable primitive for sorting this field's value in a list column. Return undefined to fall through to the default sort logic. Override this in datatypes that store arrays or complex objects where the raw value cannot be sorted meaningfully.

Parameters :
Name Type Optional
_fieldValue EntityType No
Returns : number | string | undefined

Properties

Static dataType
Type : string
Default value : "external-profile"
Inherited from DefaultDatatype
editComponent
Type : string
Default value : "EditExternalProfileLink"
Inherited from DefaultDatatype
Static label
Type : string
Default value : $localize`:datatype-label:text`
Inherited from DefaultDatatype
Readonly importAllowsMultiMapping
Type : boolean
Default value : false
Inherited from DefaultDatatype

Whether this datatype allows multiple values to be mapped to the same entity field during import.

Optional importConfigComponent
Type : string
Inherited from DefaultDatatype

A component to be rendered inline to configure the import transformation (e.g. defining a format or value mapping).

The component receives inputs: col, rawData, entityType, otherColumnMappings, additionalSettings, onColumnMappingChange

Optional importConfigDialog
Type : string
Inherited from DefaultDatatype

A dialog component in which the import transformation is configured (see MappingDialogData for the data it receives).

Datatypes that require such a dialog get it opened automatically as soon as the user maps a column to one of their fields, so that the suggested settings are reviewed and confirmed rather than silently skipped.

Readonly internalValidators
Type : ValidatorFn[]
Default value : []
Inherited from DefaultDatatype

Validators that every value of this datatype has to pass in entity forms, in addition to the validators configured for the field.

viewComponent
Type : string
Default value : "DisplayText"
Inherited from DefaultDatatype

The default component how this datatype should be displayed in lists and forms.

The edit component has to be a registered component. Components that are registered contain the DynamicComponent decorator

import { StringDatatype } from "../../core/basic-datatypes/string/string.datatype";
import { Injectable } from "@angular/core";

/**
 * Datatype for linking (and storing a selected link) to an external profile
 * (also see SkillApiService).
 *
 * Usage in config (see ExternalProfileLinkConfig):
 * ```json
 * {
 *   "name": "myExternalProfile",
 *   "schema": {
 *     "dataType": "external-profile-link",
 *     "label": "Related external profile",
 *     "additional": {
 *       "searchFields": {
 *         "fullName": ["firstname", "lastname"],
 *         "email": ["email"],
 *       },
 *       "applyData": [
 *         { from: "email", to: "emailAddedFromExternal" },
 *       ],
 *     }
 *   }
 * }
 * ```
 */
@Injectable()
export class ExternalProfileDatatype extends StringDatatype {
  static override dataType = "external-profile";

  // do not define human-readable label to hide this datatype from the admin users (because required config does not have a UI currently)
  // static override label: string = $localize`:datatype-label:external profile integration`;

  override editComponent = "EditExternalProfileLink";
}

results matching ""

    No results matching ""