Skip to content

Edit an operation

The edit form lives at /operations/{id}/edit. It is structurally the same form as the create page, pre-filled from the existing missions/{id} document and saved via updateMission() (a merge patch, not a replace).

Access is gated by the operationOwnerGuard. You need the operations.edit permission and ownership of the document — org admins, the creator, or explicitly granted editors.

Opening the editor

  • From the operations list, open the row kebab menu → Edit.
  • From the operation detail header, click the EDIT button (requires operations.edit).
  • Direct URL: /operations/{id}/edit.

What the editor loads

On open, the form subscribes to missions/{id} and patches:

  • All identity, classification, schedule, and C2 fields.
  • Objectives, ROE, and Comms Plan into their dynamic form arrays.
  • CAS config into the embedded panel.
  • Selected teams and individual operatives, reconstructed from assetIds[] minus any UID that belongs to a currently selected team.
  • Map region into the Google Map via fitBounds.

What you can edit

Practically every field that exists on MissionData is editable from this form:

  • Name, codename, description.
  • Mission type, classification, priority, status.
  • Start and end dates.
  • Half-duplex PTT toggle.
  • Commander UID, primary POI, HQ/OPORD notes, tags.
  • Objectives, ROE, and Comms Plan (add, reorder via remove-and-re-add, delete).
  • CAS configuration (all six numeric thresholds plus the master enable).
  • Personnel — add or remove teams and individual operatives. On save, assetIds[] is recomputed as the deduplicated union of direct operatives plus team members.
  • AO map bounds — pan or zoom the map; mission.region is overwritten with the current viewport.

What is not editable here

  • Privacy blur — set at create time; there is no blur panel in the edit form.
  • Mission media — the create form’s uploader is not rendered here. Existing media is preserved untouched (media: m?.media ?? []). Add or remove media from the detail page’s Mission Media panel.
  • Organisation ownershiporgId / orgIds are left as-is; there is no org picker in the edit form.

Saving

Save validates, calls updateMission(id, patch), and routes to /operations/{id}. Nothing is written until you press it — closing the tab discards local changes.

Promoting through states

Moving from planningreadyactivecompleted is done by changing the Status dropdown and saving. There is no separate “Start operation” button here — that lives on the operation detail page. In practice, commanders tend to promote to ready/active from the detail page and use this form for settings.

Deleting

Deletion is not exposed in the edit form. Use the row kebab menu on the operations listDelete. It is a hard deleteDoc today (no soft-delete or restore).