Jacob Schmidt 827f3303a2 feat: add initial Docus setup and sync tool for documentation generation
- Created package.json for Docus with necessary scripts and dependencies.
- Implemented sync-docus-docs.mjs to automate the generation of documentation files from source markdown.
- Defined mappings for generated pages and virtual routes to ensure proper linking in documentation.
- Added static content files for the documentation structure, including navigation and index pages.
2026-04-21 16:07:27 -05:00

424 lines
6.1 KiB
Markdown

# Client CAD Usage Guide
The client CAD addon provides the map and dispatch UI for groups, active
tasks, task assignment, dispatch orders, support requests, and task
acknowledge/decline workflows.
## Open CAD UI
```sqf
call forge_client_cad_fnc_openUI;
```
The CAD UI opens `RscMapUI` and loads separate browser controls for:
- top bar
- bottom bar
- side panel
- dispatcher board
The native Arma map remains part of the same display.
## Repository and Bridge
`forge_client_cad_fnc_initRepository` caches the hydrated CAD payload,
selected mode, dispatch view, session data, groups, tasks, requests, and
assignments.
`forge_client_cad_fnc_initUIBridge` owns:
- ready state for side panel, top bar, and dispatcher board
- operations vs dispatch mode
- board vs map dispatch view
- hydrate requests
- task assignment, acknowledge, and decline requests
- dispatch order create/close requests
- support request submit/close requests
- group status, role, and profile requests
- map focus actions
## Browser Events
<table>
<thead>
<tr>
<th>
Event
</th>
<th>
Client behavior
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>
cad::topbar::ready
</code>
</td>
<td>
Mark top bar ready and push top bar state.
</td>
</tr>
<tr>
<td>
<code>
cad::ready
</code>
</td>
<td>
Mark side panel ready and request hydrate.
</td>
</tr>
<tr>
<td>
<code>
cad::dispatcher::ready
</code>
</td>
<td>
Mark dispatcher board ready and push hydrate data.
</td>
</tr>
<tr>
<td>
<code>
cad::mode::set
</code>
</td>
<td>
Switch between operations and dispatch mode.
</td>
</tr>
<tr>
<td>
<code>
cad::dispatchView::set
</code>
</td>
<td>
Switch dispatch board/map view.
</td>
</tr>
<tr>
<td>
<code>
cad::refresh
</code>
</td>
<td>
Request fresh CAD hydrate data.
</td>
</tr>
<tr>
<td>
<code>
cad::tasks::assign
</code>
</td>
<td>
Assign a task to a group.
</td>
</tr>
<tr>
<td>
<code>
cad::tasks::acknowledge
</code>
</td>
<td>
Acknowledge assigned task.
</td>
</tr>
<tr>
<td>
<code>
cad::tasks::decline
</code>
</td>
<td>
Decline assigned task.
</td>
</tr>
<tr>
<td>
<code>
cad::dispatchOrder::create
</code>
</td>
<td>
Create dispatch order.
</td>
</tr>
<tr>
<td>
<code>
cad::dispatchOrder::close
</code>
</td>
<td>
Close dispatch order.
</td>
</tr>
<tr>
<td>
<code>
cad::supportRequest::submit
</code>
</td>
<td>
Submit support request.
</td>
</tr>
<tr>
<td>
<code>
cad::supportRequest::close
</code>
</td>
<td>
Close support request.
</td>
</tr>
<tr>
<td>
<code>
cad::groups::status
</code>
</td>
<td>
Update group status.
</td>
</tr>
<tr>
<td>
<code>
cad::groups::role
</code>
</td>
<td>
Update group role.
</td>
</tr>
<tr>
<td>
<code>
cad::groups::profile
</code>
</td>
<td>
Update status and role together.
</td>
</tr>
<tr>
<td>
<code>
cad::groups::focus
</code>
</td>
<td>
Center map on a group.
</td>
</tr>
<tr>
<td>
<code>
cad::tasks::focus
</code>
</td>
<td>
Center map on a task.
</td>
</tr>
<tr>
<td>
<code>
cad::requests::focus
</code>
</td>
<td>
Center map on a support request.
</td>
</tr>
<tr>
<td>
<code>
map::zoomIn
</code>
</td>
<td>
Zoom native map in.
</td>
</tr>
<tr>
<td>
<code>
map::zoomOut
</code>
</td>
<td>
Zoom native map out.
</td>
</tr>
<tr>
<td>
<code>
map::search
</code>
</td>
<td>
Placeholder status update.
</td>
</tr>
<tr>
<td>
<code>
map::close
</code>
</td>
<td>
Dispose bridge state and close the display.
</td>
</tr>
</tbody>
</table>
## Response Events
The bridge pushes:
<table>
<thead>
<tr>
<th>
Event
</th>
<th>
Purpose
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>
cad::hydrate
</code>
</td>
<td>
Full hydrated CAD payload to the side panel.
</td>
</tr>
<tr>
<td>
<code>
cad::assignment::response
</code>
</td>
<td>
Task assignment/acknowledge/decline result.
</td>
</tr>
<tr>
<td>
<code>
cad::group::response
</code>
</td>
<td>
Group status/role/profile result.
</td>
</tr>
<tr>
<td>
<code>
cad::request::response
</code>
</td>
<td>
Support request result.
</td>
</tr>
</tbody>
</table>
Dispatcher board controls also receive direct `ExecJS` status and hydrate
calls.
## Task Compatibility
CAD task visibility depends on server-side task catalog entries. Tasks created
through Eden Forge task modules or `forge_server_task_fnc_startTask` are the
normal CAD-compatible task sources because they register task catalog data.
Direct handler or task-function calls only work with CAD when the task catalog
entry already exists.
## Authorization Notes
Only dispatcher sessions can enter dispatch mode. If the hydrated session is
not a dispatcher, the bridge forces the UI back to operations mode.
## Related Guides
- [CAD Usage Guide](/server-modules/cad)
- [Task Usage Guide](/server-modules/task)
- [Client Common Usage Guide](/client-addons/common)