Skip to content

Settings: configure Gantt and Calendar ​

English · Русский

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 ​

  1. Find the option in the Gantt reference or Calendar reference. Check its accepted values and conditions.
  2. Use the full Settings name if the reference provides one. For a Gantt property path, add schedule.: appSettings.timezone becomes schedule.appSettings.timezone. The Calendar reference already lists full names, such as calendar.settings.timezone; copy them without adding another prefix.
  3. 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 ​

  1. Find schedule.operationTooltipConfig.[workOrder.number].label in the list. If a global record already exists, open it and edit its value. Otherwise, choose Actions → Create parameter.

  2. Fill in the new record:

    Form fieldValue
    System nameschedule.operationTooltipConfig.[workOrder.number].label
    Data typeString — code 0
    ValueScheduled work order
    DescriptionWork order number label in the operation tooltip
    Overridable?Off for this example
  3. Save the form. On success, the editor opens the record details. If an error appears, resolve it and save again.

  4. Reload the Gantt application page and open a schedule. Hover over an operation that has a work order number. If workOrder.number is 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 ​

ComponentPrefixFull name example
Gantt, @mes/apsschedule.schedule.appSettings.timezone
Calendar, @mes/aps-calendarcalendar.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].label

In 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 ​

ValueEditor typeAPI dataType
Label, template, locale, timezone, CSS textString0
Whole-number order, step count or dimensionInteger1
A number that can contain a fractionDouble2
ISO date/time, such as an initial Calendar dateDateTime3
On/off flagBoolean4
Hex color such as #1565C0Color9

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.

TasknameType / dataTypevalue
Gantt timezoneschedule.appSettings.timezoneString / 0UTC
Calendar timezonecalendar.settings.timezoneString / 0UTC
Work order number labelschedule.operationTooltipConfig.[workOrder.number].labelString / 0Scheduled work order
Work order number field orderschedule.operationTooltipConfig.[workOrder.number].orderInteger / 120
Source operation label on a dependency arrowschedule.flowArrowTooltipConfig.[fromOp.name].labelString / 0Source operation
Highlighted sequence arrow colorschedule.appSettings.drawPreferences.highlightedArrowColorDefaultColor / 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.

Open the Settings editor 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 demo

Hover 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.

BPMN uses request and graph.* in panel JSON; see the BPMN guide.