Skip to content

apps/panel 0.84.0 ​

English · Русский

Released on 28 September 2026. Previous release: 0.83.0.

Compatibility ​

  • This version works only with an API that has the new file storage. The Files panel requests files, their cards and thumbnails from that storage, and the operator terminal requests the parameters and content of its documents; with an older API, they cannot open files.
  • The panel does not move files of the earlier storage. If the API owner has not moved their content, their cards still appear, but the content cannot be opened; on the test API such files answer 404.

What changed ​

Operator terminal: work commands ​

The changes in this section and the next two apply to an operator terminal whose panel.request is a standard request on WorkOrderOperation.

  • The terminal now sends the work commands to the API: Start for a quantity of the operation's batch or for the chosen serial items, Pause, resuming a paused operation with Start, Good and completion of the selected task. The notice that commands are not connected no longer appears for this source.
  • The Start and Good forms read the material instances of the operation when they open: a batch operation shows its batch and the allowed quantity, a serial operation shows a card for each item in the queue or in work.
  • After each successful command the terminal reads the operation and its tasks again. It shows the task in work; after Pause, resuming or Good it keeps the chosen task.
  • When the API refuses a command, the terminal shows the API message above the workspace and changes nothing. For example, the API refused good items while a task of the operation was still in work and accepted them after the tasks were completed.

Operator terminal: tasks and items ​

  • When it opens an operation and after each successful command, the terminal reads the tasks, their states and their order from operation/init. The start and finish tasks of the workflow graph are not shown.
  • For a serial operation, Item chooses one item of the operation. When the work instruction is shown, the terminal reads it again for this item; after that read, the header row Serial / batch no. (Сер. № / № партии in Russian) shows the item's serial number.

Operator terminal: live updates ​

  • With live updates enabled for the deployment, the terminal applies a notice about the opened operation that it can apply exactly: a timer notice with the status, stateEnteredAt and remainingDuration continues the timer from them, and a quantity notice replaces only the counts it carries, even when the quantities arrive in separate notices. Other notices still make the terminal read the operation again.
  • A notice that arrives during a read or a command is not applied: the terminal reads the operation again after that work, because the read made meanwhile may already be newer than the notice.

Operator terminal: list, header and tasks ​

These changes apply to every operation source, including the local demonstration, unless a standard request is named.

  • Operation cards show the icon of the operation metatype. With a standard request, the terminal reads it from /MetaTypes/{metaTypeName}; the demonstration returns it with each operation.
  • With a standard request, the list no longer shows operations in development or scheduling (inDevelopment, inScheduling), whatever the search and filters.
  • The search button adjoins the search field, and the planned start on an operation card has no comma between the date and the time.
  • Operation tasks take less room: each task button shows a state icon instead of a sequence number and the task name in at most two lines, cut with an ellipsis when it does not fit, and the wider row under the task content repeats the name of the selected task.
  • When headerFields is omitted, the header shows the order, the material (materialDefinition), the serial or batch number and the workplace; the operation name is no longer shown there.

With a standard request, each default header row shows its value only when request.attributeList names its attribute: workOrder, materialDefinition or selectedWorkUnit.name. Without it, the row shows —; add materialDefinition for the new material row. To keep the operation name in the header, list the header rows yourself, for example:

json
{
  "panel": {
    "type": "operatorTerminal",
    "terminalConfig": {
      "headerFields": [
        { "label": { "ru": "Операция", "en": "Operation" }, "parts": [{ "attribute": "name" }] },
        { "label": { "ru": "Заказ", "en": "Order" }, "parts": [{ "attribute": "workOrder" }] },
        { "label": { "ru": "Материал", "en": "Material" }, "parts": [{ "attribute": "materialDefinition" }] },
        { "label": { "ru": "Сер. № / № партии", "en": "Serial / batch no." }, "parts": [{ "context": "materialInstance" }] },
        { "label": { "ru": "Рабочее место", "en": "Workplace" }, "parts": [{ "attribute": "selectedWorkUnit.name" }] }
      ]
    }
  }
}

Files panel and documents ​

  • The Files panel and the operator terminal work with the new file storage of the API: uploads, replacements, card thumbnails, the gallery and downloads send the user's token with every file request.
  • Replacing a file keeps the same file: every dataset that refers to it shows the new content after its file list is loaded again, and the earlier content cannot be opened from the panel. The replacement dialog no longer offers to delete the old file.
  • When the API refuses a file's content, the gallery and the document area of the operator terminal show only their own message, without the general request error notification. A failed read of the file parameters or a network failure still shows that notification as well.
  • The Files panel now shows the files of an object selected after the panel opened with nothing selected. Before, it stayed empty until the page was reloaded with a selection.

Files for methods ​

  • A runMethod form can ask the user for a file: a field with "control": "scratchFile" uploads the chosen file when the user submits the form and passes its token to the method as the field's attribute.
  • When the user runs a runMethod action and the method returns a file as a download token, the panel downloads the file to the browser's downloads folder. Returned files need no configuration. Methods that the panel calls to read data, through request.methodName or the runMethod editor of a create action, do not download returned files.

A minimal action with a file field:

json
{
  "id": "import-materials",
  "method": "runMethod",
  "label": { "ru": "Импорт материалов", "en": "Import materials" },
  "editor": {
    "mode": "modal",
    "fields": [
      {
        "attribute": "scratchToken",
        "type": "String",
        "control": "scratchFile",
        "label": { "ru": "Файл импорта", "en": "Import file" }
      }
    ]
  },
  "request": {
    "parent": "MaterialDefinition",
    "methodName": "materialImport",
    "objects": [{ "getFromItem": true }]
  }
}

The method receives the token as params.scratchToken. MaterialDefinition and materialImport are example names: replace them with the metatype and the method of your API.

Known limitations ​

Operator terminal ​

  • Together with the terminal message about a refused command, the application shows its general request error notice.
  • A Start or Good form keeps the material instances it read when it opened. If the operation changes elsewhere while the form is open, press Cancel and open the form again.
  • Refresh state clears the chosen serial item; choose it again if needed.
  • Start and Good stay disabled for an operation whose traceabilityType is not 0, 1 or 2.
  • Only the work instruction task shows content; other tasks can be selected and completed.
  • The timer never turns yellow for an API operation: the API gives no planned total for the 90% threshold.
  • The timer shows the API's stateEnteredAt and remainingDuration as they are. The test API currently records stateEnteredAt about three hours late and adds about three hours to the remainder after a pause or good items, so the timer can show more time than the operation has left.
  • A timer notice that lacks stateEnteredAt or remainingDuration, a value the terminal cannot apply exactly, or notices that may have been missed make the terminal read the operation again. Task states and the list cards still change after Refresh state or reopening.
  • My operations is still unavailable.

Files ​

  • A thumbnail that the server is still preparing appears the next time the panel loads its file list: when an object is selected, and after a file is uploaded, replaced, deleted or unlinked or its metadata is edited.
  • The gallery downloads the open file in full, up to 1 GiB, before showing it; the arrows above the viewer open the previous or next file. The viewer's thumbnail strip and arrow-key navigation are no longer available.
  • Word, Excel and PowerPoint files are not shown in the viewer.
  • The file field works only in the editor of a runMethod action and needs an explicit "type": "String" without defaultValue. Otherwise the field shows a configuration error and the action does not run; correct the application JSON, because running it again unchanged does not help.
  • A chosen file can be up to 256 MiB. The server names a downloaded file in Content-Disposition. The file is saved as download when the server sends no name, or when apiPrefix points to another origin and the API does not expose that header with Access-Control-Expose-Headers; deployments behind the same-origin /backend proxy are not affected.
  • When a run returns several files, the browser may ask to allow several downloads from the page.
  • A method that still returns an old files/download-tmp/… link in download now leads to a message that its file was not downloaded; the method's owner has to return a file of the new storage.

Updated documentation ​

  • Commands of a WorkOrderOperation lists the buttons, the conditions that enable them, the requests they send and what the terminal reads after a command.
  • Choose an item describes how the operator chooses the item of a serial operation and when the header changes.
  • The operator terminal guide describes when a live update is applied from the notice and when the terminal reads the operation again, the list conditions, the task buttons and the default header rows.
  • Files describes thumbnails, the gallery, downloads and replacement with the new storage.
  • Run a MetaMethod describes the file field and the files that a method returns.
  • Editors describes the control field option and where it is allowed.