Appearance
Settings: configure Gantt and Calendar
Settings are separate records with a name, type, and value that Gantt and Calendar load from the API. Use them to change, for example, a tooltip field label, arrow color, or timezone. Application JSON defines the panels and their behavior; Settings records are not added to that JSON.
Choose a parameter
- Find the option in the Gantt reference or Calendar reference. Check its accepted values and conditions.
- Use the full Settings name if the reference provides one. For a Gantt property path, add
schedule.:appSettings.timezonebecomesschedule.appSettings.timezone. The Calendar reference already lists full names, such ascalendar.settings.timezone; copy them without adding another prefix. - Choose a type and value from the table below, then create the record in the Settings editor or through the API.
A global record applies to every panel of that component using the same API. A personal override changes the value for the current user.
Where to enter settings
Open the administration application containing the Core Apps Parameters interface (app: "settings"). You need access to that application and permission to change Settings in the API. Your MES configuration determines the application's name and URL.
For direct API access, use the request example.
If there is no Settings application yet
If there is no Settings application yet, an administrator can use this application configuration:
json
{
"version": "1.0.0",
"panel": {
"id": "settings-admin",
"type": "coreApps",
"app": "settings"
}
}The Core Apps guide explains that application configuration. This JSON selects the Settings interface; the API determines the user's permissions.
Example: change the work order number label
Find
schedule.operationTooltipConfig.[workOrder.number].labelin the list. If a global record already exists, open it and edit its value. Otherwise, choose Actions → Create parameter.Fill in the new record:
Form field Value System name schedule.operationTooltipConfig.[workOrder.number].labelData type String— code0Value Scheduled work orderDescription Work order number label in the operation tooltipOverridable? Off for this example Save the form. On success, the editor opens the record details. If an error appears, resolve it and save again.
Reload the Gantt application page and open a schedule. Hover over an operation that has a work order number. If
workOrder.numberis not hidden, its tooltip label becomes “Scheduled work order”.
Enter text without surrounding quotes. This form creates records with scope: "global" and isArray: false. The example assumes there is no user override with the same name; see the scope limitations below.
Create through the API
Send POST /settings to your environment's API with its normal authorization. The body is an array even when creating a single record:
json
[
{
"scope": "global",
"name": "schedule.operationTooltipConfig.[workOrder.number].label",
"description": "Work order number label in the operation tooltip",
"dataType": 0,
"isArray": false,
"overridable": false,
"value": "Scheduled work order"
}
]These are explicit choices for the example, not server defaults. To update an existing record, the editor uses PUT /settings, also with an array body. Its edit form changes the value and description; it does not select dataType, isArray, or overridable again.
Build the Settings name
| Component | Prefix | Full name example |
|---|---|---|
Gantt, @mes/aps | schedule. | schedule.appSettings.timezone |
Calendar, @mes/aps-calendar | calendar. | calendar.settings.timezone |
When the component is created, the panel requests records through POST /settings/find, removes the prefix, and builds an object from the remaining path. For example, schedule.appSettings.timezone with the string UTC becomes appSettings.timezone in the Gantt configuration.
Dots separate nested properties. If a field name itself contains a dot, wrap that name in square brackets:
text
schedule.operationTooltipConfig.[workOrder.number].label
schedule.flowArrowTooltipConfig.[fromOp.name].labelIn the first example, workOrder.number is one field name. Its label and order require two separate records. Saving the entire object as a JSON string does not replace them: the chart settings loader does not parse that string into an object.
Values for individual records
Choose the record type
| Value | Editor type | API dataType |
|---|---|---|
| Label, template, locale, timezone, CSS text | String | 0 |
| Whole-number order, step count or dimension | Integer | 1 |
| A number that can contain a fraction | Double | 2 |
| ISO date/time, such as an initial Calendar date | DateTime | 3 |
| On/off flag | Boolean | 4 |
Hex color such as #1565C0 | Color | 9 |
For named colors or rgb(...), use String: the editor's Color type validates hex values. Choose Integer only for whole numbers; Double preserves fractions.
All examples are scalar records with isArray: false. The form uses type names; the API uses numeric dataType codes.
| Task | name | Type / dataType | value |
|---|---|---|---|
| Gantt timezone | schedule.appSettings.timezone | String / 0 | UTC |
| Calendar timezone | calendar.settings.timezone | String / 0 | UTC |
| Work order number label | schedule.operationTooltipConfig.[workOrder.number].label | String / 0 | Scheduled work order |
| Work order number field order | schedule.operationTooltipConfig.[workOrder.number].order | Integer / 1 | 20 |
| Source operation label on a dependency arrow | schedule.flowArrowTooltipConfig.[fromOp.name].label | String / 0 | Source operation |
| Highlighted sequence arrow color | schedule.appSettings.drawPreferences.highlightedArrowColorDefault | Color / 9 | #1565C0 |
Send these record values as strings in the API, such as "value": "20"; the chart loader converts the integer according to dataType. You can replace UTC with a valid IANA timezone such as Europe/Moscow. The panel guides explain the conditions for timezones, tooltip fields, and highlighted arrows.
Scope and overrides
scope accepts global or user. The editor's main form creates a global record. Enable Overridable? so a user can open its details and create a personal override with another value.
The editor selects overridable when creating a global record. To change an existing record's flag, send PUT /settings with an array containing scope: "global", name, description, value, and the new overridable. If you only change the flag, keep the description and value from the global row returned by POST /settings/find, rather than copying a personal override.
A same-name user record takes precedence over global regardless of the API response order. This matches the effective value of GET /settings/{name}. Without an override, the global value applies. Deleting your override restores the global value.
Disabling Overridable? prevents new overrides but does not remove an existing one. If you still have an override for such a record, the editor shows a message and Delete your override. Confirm deletion to use the global value.
Names contain no panel, application or schedule ID. Gantt panels request schedule.* and Calendar panels calendar.* for the current API user. These records do not target only one selected chart.
Boolean values
Select Boolean in the editor and use its toggle. For direct API requests, use dataType: 4: string "true" enables the flag and "false" disables it.
For example, schedule.operationTooltipConfig.name.hidden with type 4 and value "true" hides the operation name. "false" shows it again when that field is configured and present in the data. schedule.showConstraints and schedule.showMaterialConstraints also follow the Gantt panel opening conditions.
Empty strings and compound values
For an empty label, use the API with explicit "value": "". The Settings editor serializes an empty text field as null, which is different from an empty string. For example, an empty schedule.operationInfoConfig.name.label shows just the operation name without a label or colon.
Build objects from separate leaf records, as shown for label and order. The chart loader does not parse JSON object or array strings. Component-owned arrays and state should not be set through Settings; their reference pages explain the limits.
For an existing Boolean-array record, the editor shows its stored value and blocks saving: its Boolean form supports single values only. For an application that supports arrays, edit the record through the Settings API. Gantt and Calendar do not read these arrays from Settings.
When the change takes effect
Gantt and Calendar read Settings when their components are created. After saving a record, reload the target application page so it requests Settings again. Open a schedule for Gantt, or select an object for Calendar. Saving a setting does not itself fetch schedule or object data.
If the result differs from the expected behavior, check the full name, type, and value returned by POST /settings/find for the same user. Tooltip fields also depend on the data containing the field and on its hidden setting.
Try the label example in the demo
Sign in to the demo with username demo and password demo.
Create the label record from the example above, then open this chart and click the calendar-icon Open Gantt action in a work-order row to load its schedule. Selecting the row alone does not open the schedule:
Open the Gantt demoHover over an operation to see the changed work order label. The demo stores records in server memory and applies schedule.* and calendar.* records to its charts. To restore the original label, delete the record you created in Settings, reload the Gantt page, and click Open Gantt in the work-order row again. The tooltip returns to its original Russian label, “Заказ”. Restarting the demo server also restores its initial records. Demo data is separate from your MES environment.
Related guides
- Gantt settings and capabilities.
- Complete Gantt component settings reference.
- Tooltip value transforms with
valueMap. - Calendar settings reference.
- Individual parameter reference.
BPMN uses request and graph.* in panel JSON; see the BPMN guide.