Skip to content

Schedule Operations drawer

Purpose

scheduleOperations configures the unscheduled-operation table opened inside a Gantt panel. It is a drawer integration, not an independently useful panel.

When to use

Use it as the panel payload of a Gantt showUnscheduledOperations action when planners must inspect operations that are not allocated and drag them onto the active schedule.

Prerequisites and ownership

  • A Gantt must have an active schedule whose response contains unscheduledOperations.
  • The config is passed by showUnscheduledOperations; the Gantt owns drawer visibility and layout.
  • The schedule-operations wrapper owns columns, local sort state, the close button, and drag start.
  • Installed @mes/aps owns the drag phantom, eligibility, and drop feedback; Gantt owns the allocation request after a valid drop.

Capability map

AreaSupported behavior
RowsReads unscheduledOperations from the active schedule response
ColumnsRenders configured TableColumn attributes, labels, widths, and sortable flags
SortPrimeVue client-side sort state
SelectionDeclared single or multiple; defaults to single
DragDedicated handle starts an APS drag session for the row
CloseLocal close button hides the drawer
Empty stateLocalized no-unscheduled-operations message
Pagination configPage-size values initialize store state, but the rendered table explicitly disables its paginator
Actions/filterDeclared surfaces exist in the type, but current action cells are placeholders and no filter UI consumes filter.fields

Behavioral model

The Gantt action copies the nested panel config into the schedule store and toggles the drawer. The drawer renders the active schedule's unscheduled rows. Dragging a row delegates placement checks to APS; a valid drop is serialized by the Gantt adapter and sent to AllocateSingleOperation, then the full schedule response is replaced.

Alternatives, defaults, and precedence

  • columns is required.
  • selectionMode defaults to single.
  • pagination.rowsPerPage defaults in store state to [10, 25, 50], with the first value selected, but the paginator is disabled.
  • Closing the drawer changes runtime state only. Invoking the Gantt action again reopens it with the action's nested config.
  • There is no supported alternative standalone data request.

Limitations

  • Direct registration as a top-level scheduleOperations panel lacks the active schedule/drawer orchestration and is not a supported journey.
  • filter.fields has no current consumer.
  • panelActions render only a placeholder area; configured actions do not run.
  • itemActions show the word “Actions”, not configured action controls; itemActionsMaxVisible therefore has no active effect.
  • pagination.rowsPerPage is not user-visible while paginator is false.
  • The action type declares drawer metadata, but the current dispatcher uses the nested panel and not the declared drawer options.

Minimal configuration

json
{
  "id": "open-unscheduled-operations-minimal",
  "method": "showUnscheduledOperations",
  "label": "Unscheduled operations",
  "panel": {
    "id": "unscheduled-operations",
    "type": "scheduleOperations",
    "columns": [
      { "attribute": "operationName", "label": "Operation" }
    ]
  }
}

Scenario: drag an unscheduled operation into Gantt

Place this action in the active Gantt's panelActions:

json
{
  "id": "gantt-actions",
  "renderType": "dropdown",
  "label": "Schedule",
  "actions": [
    {
      "id": "open-unscheduled-operations",
      "method": "showUnscheduledOperations",
      "label": "Unscheduled operations",
      "icon": "list",
      "panel": {
        "id": "unscheduled-operations",
        "type": "scheduleOperations",
        "selectionMode": "single",
        "columns": [
          {
            "attribute": "position",
            "label": "Position",
            "width": "8rem",
            "sortable": true
          },
          {
            "attribute": "operationName",
            "label": "Operation",
            "sortable": true
          },
          {
            "attribute": "workOrderName",
            "label": "Work order"
          }
        ]
      }
    }
  ]
}

Expected result: the action opens the lower Gantt drawer. Dragging its handle onto an eligible chart interval allocates the operation and refreshes the schedule.

Runnable demos

Open the Gantt fixture with the Schedule Operations drawer

Open Gantt → Нераспределённые операции. The registered action supplies the nested scheduleOperations config, and the drawer renders the active fixture schedule's real unscheduledOperations rows with position, operation, work order, and status columns. It demonstrates the supported nesting, row source, configured columns, explicit single selection, and inactive page-size config. It does not claim a successful allocation: that still requires a valid APS drop target and allocation API response.

Exact parameter reference

Next, test one successful and one rejected drop against the active APS/API runtime before claiming the allocation journey is covered.