Persist circuit reorders
This commit is contained in:
@@ -27,7 +27,8 @@ The public dispatcher currently supports `circuit.update`, `circuit.insert`,
|
||||
`circuit.delete`, `circuit-device-row.update`,
|
||||
`circuit-device-row.insert`, `circuit-device-row.delete`,
|
||||
`circuit-device-row.move`, `circuit-device-row.move-with-new-circuit`,
|
||||
`circuit.reorder-section`, `circuit.renumber-section` and
|
||||
`circuit.reorder-section`, `circuit.reorder-sections`,
|
||||
`circuit.renumber-section` and
|
||||
`project-device.update`, `project-device.insert`, `project-device.delete` and
|
||||
`project-device.sync-rows`, all with schema version `1`. Other command types
|
||||
are rejected. Insert commands contain the complete entity or circuit block
|
||||
@@ -37,8 +38,8 @@ contain each row's expected and target circuit plus its exact expected and
|
||||
target sort order. This makes deletion and moves undoable without generating
|
||||
replacement identities or renumbering circuits. Existing Circuit and
|
||||
CircuitDeviceRow cell edits, standalone insert/delete actions and device-row
|
||||
moves in the editor consume these endpoints. Reorder and renumber UI paths are
|
||||
still being migrated.
|
||||
moves and reorders in the editor consume these endpoints. The renumber UI path
|
||||
is still being migrated.
|
||||
|
||||
`circuit-device-row.move` targets existing circuits in the same circuit list.
|
||||
`circuit-device-row.move-with-new-circuit` atomically creates exactly one
|
||||
@@ -52,6 +53,11 @@ in the section. Each assignment records the expected and target `sortOrder`.
|
||||
The command and its inverse change no circuit field other than `sortOrder`;
|
||||
equipment identifiers and complete device-row blocks remain unchanged.
|
||||
|
||||
`circuit.reorder-sections` contains one complete assignment block per affected
|
||||
section. All blocks are validated before any write and commit or roll back
|
||||
together as one revision and one undo step. The editor uses it when applying a
|
||||
sorted view that changes multiple sections.
|
||||
|
||||
`circuit.renumber-section` is an explicit operation requiring one assignment
|
||||
for every circuit in the section. Assignments contain expected and target
|
||||
equipment identifiers. The store rejects stale values, duplicate targets and
|
||||
@@ -169,24 +175,12 @@ Response sketch:
|
||||
- `GET /circuit-sections/:sectionId/next-identifier`
|
||||
- preview next identifier for section (`prefix + maxSuffix + 1`)
|
||||
|
||||
Circuit and device-row field updates, standalone insertions/deletions and
|
||||
single or bulk device-row moves are available only as the corresponding
|
||||
versioned commands through `POST /projects/:projectId/commands`. There are no
|
||||
direct field-update PATCH, structure POST, move, Circuit DELETE or
|
||||
CircuitDeviceRow DELETE routes.
|
||||
|
||||
### Reorder Circuits
|
||||
|
||||
- `PATCH /circuit-sections/:sectionId/circuits/reorder`
|
||||
- Purpose: persist explicit circuit order within one section.
|
||||
|
||||
Request sketch:
|
||||
|
||||
```json
|
||||
{
|
||||
"orderedCircuitIds": ["cir_2", "cir_1", "cir_3"]
|
||||
}
|
||||
```
|
||||
Circuit and device-row field updates, standalone insertions/deletions, single
|
||||
or bulk device-row moves and circuit reorders are available only as the
|
||||
corresponding versioned commands through
|
||||
`POST /projects/:projectId/commands`. There are no direct field-update PATCH,
|
||||
structure POST, move, reorder, Circuit DELETE or CircuitDeviceRow DELETE
|
||||
routes.
|
||||
|
||||
### Renumber Section
|
||||
|
||||
|
||||
Reference in New Issue
Block a user