src/app/features/public-form/public-form-config.ts
Each entity of this type defines a new publicly accessible form that can be reached through the given route even by users without being logged in used in the public forms where we wanted to linked multiple entities in one form.
No results matching.
Properties |
|
Methods |
|
Accessors |
| columns |
|
Use |
Type : FieldGroup[]
|
Decorators :
@DatabaseField({label: undefined, editComponent: 'EditPublicFormColumns', isArray: true})
|
| description |
Type : string
|
Decorators :
@DatabaseField({label: undefined, dataType: undefined})
|
| entity |
|
Use |
Type : string
|
Decorators :
@DatabaseField({label: undefined, description: undefined, editComponent: 'EditEntityType', viewComponent: 'DisplayEntityType', validators: undefined})
|
| forms |
Type : PublicFormEntityFormConfig[]
|
Decorators :
@DatabaseField({label: undefined, isArray: true})
|
| Static isInternalEntity |
Type : unknown
|
Default value : true
|
|
Inherited from
Entity
|
| Static label |
Type : unknown
|
Default value : $localize`:PublicFormConfig:Public Form`
|
|
Inherited from
Entity
|
| Static labelPlural |
Type : unknown
|
Default value : $localize`:PublicFormConfig:Public Forms`
|
| linkedEntities |
|
Use |
Type : string[]
|
Decorators :
@DatabaseField({label: undefined, editComponent: 'EditPublicFormRelatedEntitiesComponent', isArray: true})
|
| logo |
Type : string
|
Decorators :
@DatabaseField({label: undefined, description: undefined, dataType: 'file', additional: 300})
|
| prefilled |
|
Use |
Type : { }
|
Decorators :
@DatabaseField({label: undefined, editComponent: 'EditPrefilledValuesComponent'})
|
| Static route |
Type : string
|
Default value : "admin/public-form"
|
| route |
Type : string
|
Decorators :
@DatabaseField({label: undefined, validators: undefined, editComponent: 'EditPublicformRoute'})
|
| showSubmitAnotherButton |
Type : boolean
|
Default value : false
|
Decorators :
@DatabaseField({label: undefined, description: undefined, dataType: 'boolean'})
|
| title |
Type : string
|
Decorators :
@DatabaseField({label: undefined})
|
| Static toStringAttributes |
Type : []
|
Default value : ["title"]
|
|
Inherited from
Entity
|
| Static Optional _isCustomizedType |
| todo: This property is no longer used and will be removed in future versions. |
Type : boolean
|
|
Inherited from
Entity
|
|
True if this type's schema has been customized dynamically from the config. |
| _rev |
Type : string
|
Decorators :
@DatabaseField({anonymize: 'retain', isInternalField: true})
|
|
Inherited from
Entity
|
|
internal database doc revision, used to detect conflicts by PouchDB/CouchDB |
| anonymized |
Type : boolean
|
Decorators :
@DatabaseField({anonymize: 'retain', isInternalField: true})
|
|
Inherited from
Entity
|
|
Whether this entity has been anonymized and therefore cannot be re-activated. |
| Static color |
Type : string | ColorMapping[]
|
|
Inherited from
Entity
|
|
color used for to highlight this entity type across the app. Can be either:
|
| created |
Type : UpdateMetadata
|
Decorators :
@DatabaseField({anonymize: 'retain', isInternalField: true})
|
|
Inherited from
Entity
|
| Static DATABASE |
Type : string
|
Default value : "app"
|
|
Inherited from
Entity
|
|
The database where these entities are stored. |
| Static Optional enableUserAccounts |
Type : boolean
|
|
Inherited from
Entity
|
|
Whether to enable user account creation for this entity type. When true, the UI will allow management of user accounts associated with this entity. |
| Static ENTITY_TYPE |
Type : string
|
Default value : "Entity"
|
|
Inherited from
Entity
|
|
The entity's type.
In classes extending Entity this is usually overridden by the class annotation |
| Static hasPII |
Type : boolean
|
Default value : false
|
|
Inherited from
Entity
|
|
whether this entity type can contain "personally identifiable information" (PII) and therefore should follow strict data protection requirements and offer a function to anonymize records. |
| Static icon |
Type : IconName
|
|
Inherited from
Entity
|
|
icon id used for this entity |
| inactive |
Type : boolean
|
Decorators :
@DatabaseField({anonymize: 'retain', isInternalField: true})
|
|
Inherited from
Entity
|
| Static schema |
Type : EntitySchema
|
|
Inherited from
Entity
|
|
EntitySchema defining property transformations from/to the database.
This is auto-generated from the property annotations see /additional-documentation/how-to-guides/create-a-new-entity-type.html |
| Static Optional toBlockDetailsAttributes |
Type : EntityBlockConfig
|
|
Inherited from
Entity
|
|
Defining which attributes will be displayed in a tooltip on hover when the record is displayed as an entity-block. |
| updated |
Type : UpdateMetadata
|
Decorators :
@DatabaseField({anonymize: 'retain', isInternalField: true})
|
|
Inherited from
Entity
|
| assertValid |
assertValid()
|
|
Inherited from
Entity
|
|
Checks if the entity is valid and if the check fails, throws an error explaining the failed check.
Returns :
void
|
| Public copy | ||||||||||
copy(newId: string | boolean)
|
||||||||||
|
Inherited from
Entity
|
||||||||||
|
Deep copy of the entity. The resulting entity will be of the same type as this (taking into account subclassing). All schema field values that are objects or arrays are deep-cloned to avoid shared mutable state between original and copy.
Parameters :
Returns :
unknown
|
| Static createPrefixedId | ||||||||||||
createPrefixedId(type: string, id: string)
|
||||||||||||
|
Inherited from
Entity
|
||||||||||||
|
Create a prefixed id by adding the type prefix if it isn't already part of the given id.
Parameters :
Returns :
string
|
| Static extractEntityIdFromId | ||||||||
extractEntityIdFromId(id: string)
|
||||||||
|
Inherited from
Entity
|
||||||||
|
Extract entityId without prefix.
Parameters :
Returns :
string
|
| Static extractTypeFromId | ||||||||
extractTypeFromId(id: string)
|
||||||||
|
Inherited from
Entity
|
||||||||
|
Extract the ENTITY_TYPE from an id.
Parameters :
Returns :
string
|
| Public getColor |
getColor()
|
|
Inherited from
Entity
|
|
Used by some generic UI components to set the color for the entity instance. Override this method as needed.
Returns :
string
|
| Static getColorWithConditions | ||||||
getColorWithConditions(entity: Entity)
|
||||||
|
Inherited from
Entity
|
||||||
|
Static method to evaluate conditional colors for an entity based on ColorMapping configuration.
Parameters :
Returns :
string
|
| getConstructor |
getConstructor()
|
|
Inherited from
Entity
|
|
Get the class (Entity or the actual subclass of the instance) to call static methods on the correct class considering inheritance
Returns :
EntityConstructor<unknown>
|
| Public getId | ||||||||
getId(withoutPrefix: unknown)
|
||||||||
|
Inherited from
Entity
|
||||||||
|
Returns the id of this entity. Note that an id is final and can't be changed after the object has been instantiated, hence there is no
Parameters :
Returns :
string
the unique id of this entity |
| getSchema |
getSchema()
|
|
Inherited from
Entity
|
|
Get the entity schema of this class
Returns :
EntitySchema
|
| Public getType |
getType()
|
|
Inherited from
Entity
|
|
Returns the type which is used to categorize this entity in the database. Important: Do not overwrite this method! Types are handled internally.
Returns :
string
the entity's type (which is the class name). |
| Public getWarningLevel |
getWarningLevel()
|
|
Inherited from
Entity
|
|
Override getWarningLevel() to define when the entity is in a critical condition and should be color-coded and highlighted in generic components of the UI.
Returns :
WarningLevel
|
| isActive |
getisActive()
|
import { Entity } from "../../core/entity/model/entity";
import { DatabaseEntity } from "../../core/entity/database-entity.decorator";
import { DatabaseField } from "../../core/entity/database-field.decorator";
import { LongTextDatatype } from "app/core/basic-datatypes/string/long-text.datatype";
import { FieldGroup } from "app/core/entity-details/form/field-group";
import { DefaultValueConfig } from "#src/app/core/default-values/default-value-config";
/**
* Configuration for a single entity form within a public form.
* Supports multiple entity types in one public form submission.
*/
export interface PublicFormEntityFormConfig {
/**
* The type of record that is created when someone submits the form.
* (e.g. if you select "Note" here, the form will create new entries in your "Notes List"
* and you can select only fields of your "Note" data structure for this form)
*/
entity: string;
/**
* Fields to display in the form, organized into field groups/columns.
*/
columns: FieldGroup[];
/**
* Fields with default/prefilled values.
* Key is the field ID, value is the default value configuration.
*/
prefilled?: { [key: string]: DefaultValueConfig };
/**
* Field IDs that link to other entities in the same form submission.
* These fields will be automatically populated with IDs of entities created
* by other forms in the same submission or passed as URL parameters.
*/
linkedEntities?: string[];
/**
* Field IDs that should be linked from other forms in the same submission.
* Uses schema metadata to decide which form's entity ID to apply.
*/
linkedFromForm?: string[];
}
/**
* Each entity of this type defines a new publicly accessible form
* that can be reached through the given route even by users without being logged in
* used in the public forms where we wanted to linked multiple entities in one form.
*/
@DatabaseEntity("PublicFormConfig")
export class PublicFormConfig extends Entity {
static override label = $localize`:PublicFormConfig:Public Form`;
static override labelPlural = $localize`:PublicFormConfig:Public Forms`;
static override route = "admin/public-form";
static override toStringAttributes = ["title"];
static override isInternalEntity = true;
@DatabaseField({
label: $localize`:PublicFormConfig:Form Logo`,
description: $localize`:PublicFormConfig:Add an image to be displayed at the top of the form`,
dataType: "file",
additional: 300,
})
logo: string;
@DatabaseField({
label: $localize`:PublicFormConfig:Title`,
})
title: string;
@DatabaseField({
label: $localize`:PublicFormConfig:Form Link ID`,
validators: {
required: true,
},
editComponent: "EditPublicformRoute",
})
route: string;
@DatabaseField({
label: $localize`:PublicFormConfig:Description`,
dataType: LongTextDatatype.dataType,
})
description: string;
/** @deprecated Use `forms` array instead for multi-form support */
@DatabaseField({
label: $localize`:PublicFormConfig:Record`,
description: $localize`:PublicFormConfig:The type of record that is created when a someone submits the form (e.g. if you select "Note" here, the form will create new entries in your "Notes List" and you can select only fields of your "Note" data structure for this form)`,
editComponent: "EditEntityType",
viewComponent: "DisplayEntityType",
validators: {
required: true,
readonlyAfterSet: true,
},
})
entity: string;
/** @deprecated Use `forms` array instead for multi-form support */
@DatabaseField({
label: $localize`:PublicFormConfig:Fields`,
editComponent: "EditPublicFormColumns",
isArray: true,
})
columns: FieldGroup[];
/** @deprecated Use `forms` array instead for multi-form support */
@DatabaseField({
label: $localize`:PublicFormConfig:Prefilled Fields`,
editComponent: "EditPrefilledValuesComponent",
})
prefilled: { [key: string]: DefaultValueConfig };
/** @deprecated Use `forms` array instead for multi-form support */
@DatabaseField({
label: $localize`:PublicFormConfig:Linked Entities`,
editComponent: "EditPublicFormRelatedEntitiesComponent",
isArray: true,
})
linkedEntities: string[];
@DatabaseField({
label: $localize`:PublicFormConfig:Multiple Forms`,
isArray: true,
})
forms: PublicFormEntityFormConfig[];
@DatabaseField({
label: $localize`:PublicFormConfig:Show "Submit Another Form" Button`,
description: $localize`:PublicFormConfig:If enabled, users will see a "Submit Another Form" button after a successful submission. This helps when you want multiple submissions from the same user.`,
dataType: "boolean",
})
showSubmitAnotherButton: boolean = false;
override get isActive(): boolean {
// hide the new style public forms (nested `forms` array) because the Admin UI is not ready yet
// TODO: remove after implementing https://github.com/Aam-Digital/ndb-core/issues/3610
if (this.forms?.length) {
return false;
}
return super.isActive;
}
}