Reference

Field types

These pages describe how each field type is configured. What the people entering data see in the layout and how they enter values is covered in the user handbook under Field types . Each page here links to its counterpart there.

Field types are built into the program and cannot be created. What you create are fields, see Fields and Create a field .

Catalogue

The groups follow the selection you see when you create a field. The identifier is what appears there and under Field type in the field details.

GroupField typeIdentifierPage
TextTexttextText
Formatted texthtmlFormatted text
LinklinkLink
Numbers and measurementsDecimal number, integerdecimal, intNumber
Date and timeDatedateDate
TimetimeTime
Date and timedatetimeDate and time
SelectionSelect listselectSelect list
Selection treetreeselectSelection tree
Hierarchical select listtreesvelecteHierarchical select list
SwitchswitchSwitch
Links, authority data, addressesAuthority recordnormdataAuthority record
AddressaddressAddress
GeolocationgeolocationGeolocation
ObjectobjectObject
PlanplanWall planner
Files and mediaImageimageImage
FilefileFile
3D model3d3D
Computed, JSON, custom codeJSONjsonJSON
JSON schemajson_schemaJSON schema
Virtual fieldvirtualVirtual field
Template fieldcustom_text, custom_int, custom_decimal, custom_svelte_text, custom_svelte_int, custom_svelte_decimalTemplate field

The identifiers are English and lower case. That is how they also appear in exports and configurations.

No input form yet

These field types can be created, but the selection lists them with the note “no input form yet”. A field of this type only shows a locked text box with the raw value.

IdentifierUse insteadSwitch without data loss
keywordsselect with multiple and creatable, or normdata for a maintained vocabularyto select, yes
audio, video, panoramafileyes
number_formatted, number_labeleddecimalyes

The keywords of a file are something else: they belong to the file and can be reached through Bildfeld~keywords.

Parameters and the field type default

You maintain the configuration of a field in the field details under Data model › Fields:

SectionContents
BasicsField name, field group, note, sample content, field type
ParametersThe keys of the field type as a form, plus the storage location that every field type has, with All parameters as JSON below
Field points to a linkThe link type, for example for the object field
OutputOutput formatters, see Formatting
ConditionsRequired, uniqueness, custom rule, suspected duplicates
CleanupSteps before saving, see Cleanup
Custom codeHTML template or Svelte component of template fields
PermissionsRead and write permissions for everyone and per group
UsageProjects, layouts and objects that use the field

The tables on the field type pages state in the column If omitted what the field does when the key is missing. On top of that, every field type has a default, maintained under Data model › Field types as “Default parameters”. It applies only to fields without a configuration of their own. As soon as a field has its own parameters, only those apply. “Field type default” in the field details merges the keys of the default into the field’s own configuration if you want it to. The form under Parameters leaves a key out when its value matches the form’s default.

How the configuration is built, how a configuration hook overrides it per project and what happens with invalid JSON is described under Field configuration .

Formatting

A formatting (output formatter) is a second reading of the raw value: 1 234,50 cm instead of 1234.5, the postal address instead of the chain of identifiers. It takes effect in the gallery, table and kanban, in the Excel export and in Word templates. Since version 1.4.23 every field type except text comes with at least one formatting:

Field typeFormattings of the field typePreselected in the views
decimal, intNumber · Number with unitno
dateDate DD.MM.YYYYno
timeTime HH:MMno
datetimeTimestamp DD.MM.YYYY HH:MMno
switchLabelno
htmlText onlyyes
linkWithout protocol · Domain onlyno
select, keywordsSeparated by middle dotsno
treeselect, treesvelecteLowest level onlyno
normdataLabel only · Label with sourceyes (Label only)
objectShort citation · Full citationno
addressAddress on one lineyes
geolocationLocation on one lineyes
image, file, 3d, audio, video, panoramaFile titleyes
jsonEntries on one lineno

In exports the raw value stays preselected everywhere. Saved Excel presets and templates are not affected. Date, timestamp and switch are deliberately not preselected in the views either: there the display already follows each person’s own setting.

Field type and field

Formattings exist at two levels. The field type brings its own under Data model › Field types; a field adds its own under Output. Both are merged by identifier: where the identifier is the same, the field wins, and everything else from the field type remains available on the field. A new formatting of your own therefore gets an identifier that is not yet taken. The variant standard is the one addressed by the plain field name in templates; the others are called Feld#kennung.

The preselection can be set separately for each place and changed on a single field without copying the body of the field type’s formatter. An entry with an identifier and no body says exactly that:

JSON
{ "output": [{ "name": "standard", "default": { "view": "raw", "export": "raw" } }] }

A formatter sees only its own field. The body runs in the same checked sandbox as virtual fields and conditions, see Virtual field . If it fails the check, there is no formatter; the column stays raw rather than wrong. Structure and examples are under JSON , their use in templates under Output formatters in templates .

Storage location

An object can be in several projects. A field value then usually applies everywhere, as the base value; a project can override it with a value of its own, see Set a project-specific value . The Storage location decides for each field where a value is written. Every field type has it; you find it under Parameters in the section Storage location.

Storage location (in the form)project_scopeEffect
Base (default)missingAs before: Hybrid (auto) writes to the project’s value if it has one, otherwise to the base value
Preferably in the projectpreferHybrid (auto) always writes to a value of the current project and creates it if needed. Only the Base Object scope and the base value row in the field details still write the base value. Existing base values stay where they are
Always in the projectforceEvery write goes to the project’s value, even in the Base Object scope. A write without a project is refused
JSON
{ "project_scope": "force" }

The rule applies to every route by which a value is written with a project: the object view, batch editing, the Excel import, a new object, cleanup, AI suggestions, copies. This keeps a loan status or catalogue number in the project, for example, even if the object is later linked into another project.

If you switch a field to Always in the project, saving asks Move values into the projects? and gives the number of base values. Move copies each of them into every project its object is in and then empties the base. Switching back does not move anything back.

Only the field’s own configuration counts; without one, the field type default applies. A project_scope in the hooks of a project override has no effect: the server decides the same way for all projects. Inheriting and SQL migrations still write to the base.

Conditions

For every field type you can set four checks under Conditions: must not be empty, unique in the project, unique in the database, custom rule. A violated condition is a hint, not a block: the value is saved, the field shows a red exclamation mark, and a bar above the layout counts the affected fields of the whole object. Uniqueness compares text leniently (case and accents do not count); with compare strictly every character counts. Conditions are set only on the field, never in the field type default, and can be changed per project with a configuration hook. Details under Fields .

JSON
{ "conditions": { "required": true, "unique": { "message": "Inventarnummer doppelt" } } }
Object of a loan request with the bar “3 fields do not meet their condition” above it listing the affected fields, the fields themselves marked with an exclamation mark

Cleanup

Cleanup has a level for each field type: on the page Data model › Field types each field type shows its chain, with a test and Clean existing values for all fields of that type. Out of the box, all field types with text values remove whitespace at the edges, and integer and decimal number turn a decimal comma into a point. A field or a project can switch these steps off and add its own. See Cleanup .

Permissions

Read and write permissions are set in the section Permissions for everyone and per group; the higher permission applies. See Permission model . Specific to field types are:

Field typeSpecial rule
AddressAssigning needs write permission on the field; creating and editing addresses needs permission on the address book
Authority recordeditable controls which records may be changed in the form
Timedisabled locks input even with write permission
Virtual fieldNo permission of its own. Visible only to those who may read all sources

Changing the field type

Under Basics a field type can only be switched to a field type with the same storage form; the interface offers only those. The values stay untouched.

Storage formInterchangeable
Texttext, select, html, link, switch, treeselect, treesvelecte, json, json_schema, keywords, custom_text, custom_svelte_text
Integerint, custom_int, custom_svelte_int
Decimal numberdecimal, number_formatted, number_labeled, custom_decimal, custom_svelte_decimal
Datedate
Timetime
Timestampdatetime
Fileimage, file, 3d, audio, video, panorama

Reference types (address, normdata, geolocation, plan, object) each stand alone. Interchangeable does not mean equivalent: a switch becomes a select list with the values 1 and 0.

Choosing the right field type

QuestionConsequence
Will the value be filtered, sorted or grouped?A field of its own with a suitable storage form. Numbers as decimal, dates as date; otherwise comparisons become text comparisons
Is the set of values limited?select, not text. Free text produces variants (oil/canvas, oil on canvas) that can no longer be grouped
Does the set of values have levels?Selection tree or hierarchical select list. They store the path and allow grouping per level
Does the term need an identifier and a source, for LIDO for example?normdata
Does a structure repeat with a qualifier (title per language, dimensions per part)?json. One field instead of twelve
Can the value be derived from other fields?virtual instead of entering it twice
Units belong in the configuration

A field Height (cm) with free text is a common cataloguing mistake. The right choice is a decimal field with units: the value is stored in the base unit and shown in the chosen one. That keeps it comparable, sortable and usable in calculations. See Number .