Customization Capabilities¶
OneRank is built on top of a Low-Code/No-Code EAV platform. This means that every field you see can be configured and adjusted to whatever you are trying to achieve. Almost everything can be changed, but with an appropriate permission level. The entire platform is built on three core blocks:
- Definition
- Attribute
- Entity
Definition¶
A Definition is a container for attributes. It defines what attributes will be available for an Entity when it’s created.
Definitions are represented as a tree. Every definition has to have a parent and will inherit its parent's attributes. The root definition is called Root Definition and has only a single inheritable and required attribute, the Name attribute.
Definitions have two access levels: system and user. System definitions most of the time can’t be changed, but if needed, please reach out to our support. User definitions can be adjusted by any user with Admin role.
To create a definition, a user must specify the following fields:
- GUID - unique identifier, mostly used with direct API access.
- Name - the name that a user will see in the definition tree.
- Short Name - the name that a user will see during entity creation.
- Parent - parent definition. By default, it will be the currently selected definition.
- Icon & Color - a definition icon and its color, usually used during entity creation, in the roadmap planner, and an entity view page.
Attribute¶
An Attribute defines how a value on an entity will look like, based on attribute type.
Attribute Types:¶
- String
- Integer
- Double
- Boolean
- Enumeration
- List
- Set
- Map
- Entity Reference
- Attribute Reference
- Definition Reference
- Custom Type
- Functional 🚀
Simple Types¶
String¶
A String attribute represents a random string. This attribute has the following settings:
- Value Type - defines a format of the value (e.g., date, email, number).
- Value Format - defines how a value will be represented in the user interface (Outlined, Contained, Markdown).
- Text Area - if selected, the text input becomes a text area, convenient for long texts like a Jira Query.
Integer & Double¶
Representation of a number, where Integer defines a whole number, and Double defines a number with a decimal value. These attributes don’t have any additional settings.
Boolean¶
A Boolean attribute allows a user to create a Yes/No choice selection. This attribute has settings that control how the value will change its color based on Yes or No.
Enumeration¶
An Enumeration represents a predefined list of choices. This attribute doesn’t have any additional settings.
Collections¶
List & Set¶
Define a list of elements. The only difference between a list and a set is that a set doesn’t allow duplicates. This attribute has the following settings:
- Value Type - type of the value (e.g., String, Integer, etc.).
- Multi-selection - whether a user can select multiple items.
Map¶
Represents key/value pairs. This attribute has no additional settings.
References¶
Entity Reference¶
Represents a reference to another entity. It has the following settings:
- Definition - limits entities of which definitions can be selected.
- Include Children - whether to include children of the selected definition.
- Display Attribute - which attribute’s value to use in the dropdown when the user has selected an entity (usually, the name attribute is sufficient).
- Color Attribute - if selected, the value will be highlighted by a defined color (e.g., team’s color).
Attribute Reference¶
Reference to an attribute. Mostly used as system attributes. It has the following settings:
- Definition - limits entities of which definitions can be selected.
- Include Children - whether to include children of the selected definition.
Definition Reference¶
Reference to a definition. Mostly used as system attributes. It has the following settings:
- Definition - limits entities of which definitions can be selected.
- Include Children - whether to include children of the selected definition.
Backward Reference¶
Even though this type is described here, it’s available only as a Value Type for a List or Set. Backward Reference always works in combination with an Entity Reference attribute. For example, if we have a ticket definition that has an entity reference attribute named Parent Ref, which essentially defines a ticket's parent (e.g., epic for a user story), and we want to see all of its children, the Backward Reference type comes to the rescue. On the epic level, you can create a list attribute with a value type Backward Reference and set Parent Reference as a connection attribute. Now, whenever you look at the epic, you will see all children linked to the epic. Another example is assigning a team to a ticket, and as a backward reference, you can see all linked tickets to a team.
Advanced Types¶
Custom Type¶
A Custom Type represents an embedded entity. It has the following settings:
- Definition - limits entities of which definitions can be selected.
- Include Children - whether to include children of the selected definition.
This is an advanced attribute that allows a user to create complex configuration dialogs like display configuration fields based on the selected definition, as done in the roadmap definition where you can select an integration with Jira that will add specific configuration fields. This type is mostly used for integrations and as part of the platform standard configuration.
Functional¶
This is where the platform shifts from no-code to low-code. A Functional attribute allows the user to create custom scripted attributes using JavaScript. These attributes are automatically calculated based on a trigger condition.
Each functional attribute script is evaluated in the context of a specific entity. To get access to other values of the entity and some other information, there are predefined variables that get injected into each script (do not override them):
$entity
- the current entity the functional attribute belongs to.$definition
- entity’s definition.$tenantId
- current tenant ID.$update
- this is a function that allows the user to update another entity in the platform.
It has the following additional settings:
- Script Value - the JavaScript code that needs to be evaluated.
- Value Type - type of the return value from the script.
- Expand Attributes - entity reference attributes that need to be expanded before evaluation.
- Expand Level - how deep the entity references have to be expanded.
- Sort Attributes - used in combination with Expand Attributes. During the expanding process, this defines how the entities have to be sorted.
- Dependencies - defines which attributes will trigger re-evaluation of this functional script.
Attribute Evaluation Triggers:
- When a new entity is created, every functional attribute will be evaluated.
- When the functional attribute definition changes, all entities that contain that attribute will re-evaluate it.
- If one of the dependencies changed.
For more information and examples, please refer to the specific guides in the documentation.