Tweaking the display of properties#
Note
This page has been migrated from the old documentation, and has not yet been fully revised. There might be inconsistencies or errors when using with current LinkAhead versions.
Hide or show properties for specific roles and users#
Note
This feature was introduced LinkAhead WebUI 0.10.
Warning
Hiding properties is purely cosmetics and should never be considered a security feature. The hidden properties are still communicated with the server.
Sometimes it is desirable to hide certain properties for specific users or roles, e.g., when they might be irrelevant or confusing. For example, an internal id might only be of interest to curators or administrators, whereas it is entirely meaningless to most other users.
To configure the hiding of properties, you first need to enable the build variable
BUILD_MODULE_EXT_PROPERTY_DISPLAY. Then, the display of the properties is configured in
conf/ext/json/ext_prop_display.json. In there, properties of a specific RecordType can be hidden
by specifying the name of the property, and the names of the roles and/or users from whom it should
be hidden.
{
"RecordTypeName": {
"hide": [
{
"name": "property name",
"roles": ["list", "of", "roles"],
"users": ["list", "of", "users"]
},
// ...
]
},
// ...
}
In the same way but using the show keyword, properties can be hidden for everyone but the
specified users/roles:
{
"RecordTypeName": {
"show": [
{
"name": "property name",
"roles": ["list", "of", "roles"],
"users": ["list", "of", "users"]
},
// ...
]
},
// ...
}
For example, using the data from demo.indiscale.com, the following would hide the price of all
MusicalInstruments from anonymous and their Manufacturer from the admin user.
{
"MusicalInstrument": {
"hide": [
{
"name": "price",
"roles": [
"anonymous"
],
"users": []
},
{
"name": "Manufacturer",
"roles": [],
"users": [
"admin"
]
}
]
}
}
Defining the order of properties#
Similar to above, the order in which properties are displayed can also be specified. Again, the
build variable BUILD_MODULE_EXT_PROPERTY_DISPLAY has to be enabled. Then, the order in which the
properties are displayed can be configured in the same configuration file as above, i.e., in
conf/ext/json/ext_prop_display.json:
{
"RecordTypeName": {
"order": ["ordered", "list", "of", "properties"]
},
// ...
}
This ensures that the properties of all entities with the declared types are displayed in the defined order if present. Additional properties which are not part of this list are appended in their original order as returned from the LinkAhead server.
Using again the data of demo.indiscale.com for an example, a configuration might look the following:
{
"MusicalInstrument": {
"order": [
"price",
"Manufacturer"
]
}
}
In all MusicalInstrument entities, the price would then be shown first, then the Manufacturer,
and then all remaining properties. If it doesn’t have a price property, Manufacturer is shown on
top.
Of course, this feature can be combined with the hiding of properties:
{
"MusicalInstrument": {
"hide": [
{
"name": "price",
"roles": [
"anonymous"
],
"users": []
},
{
"name": "Manufacturer",
"roles": [],
"users": [
"admin"
]
}
],
"order": [
"price",
"Manufacturer"
]
}
}
In this example, price would still be displayed on top of the list of property in every
MusicalInstrument entity, but it is hidden for the anonymous role.