API mission
This commit is contained in:
147
www/index.html
147
www/index.html
@@ -35,6 +35,10 @@
|
||||
<span class="navDot"></span>
|
||||
Missions
|
||||
</a>
|
||||
<a class="navItem" href="#" data-page="integrations">
|
||||
<span class="navDot"></span>
|
||||
Tích hợp
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<div class="sidebarFooter">
|
||||
@@ -587,6 +591,79 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page" id="pageIntegrations" data-page-content="integrations" hidden>
|
||||
<div class="integrationsPage">
|
||||
<section class="card">
|
||||
<div class="cardHeader">
|
||||
<div>
|
||||
<div class="cardTitle">Modbus trigger</div>
|
||||
<div class="cardSub">System → Triggers — coil 1001–2000 gắn mission_id. Thiết bị remote bật coil (Modbus TCP :5502) → mission vào queue.</div>
|
||||
</div>
|
||||
<button id="integrationAddTriggerBtn" type="button" class="btn primary">Thêm trigger</button>
|
||||
</div>
|
||||
<div class="cardBody">
|
||||
<div id="integrationTriggerEmpty" class="mutedNote">Chưa có trigger Modbus.</div>
|
||||
<div id="integrationTriggerList" class="missionList"></div>
|
||||
<div class="integrationCoilSection">
|
||||
<div class="integrationSectionLabel">Coil đã gán (bấm để mô phỏng rising edge)</div>
|
||||
<div id="integrationCoilGrid" class="integrationCoilGrid"></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card">
|
||||
<div class="cardHeader">
|
||||
<div>
|
||||
<div class="cardTitle">REST API — MiR v2.0.0</div>
|
||||
<div class="cardSub">Hệ thống bên ngoài POST mission vào queue qua REST.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cardBody integrationApiBody">
|
||||
<div class="row rowWide">
|
||||
<label>Base URL</label>
|
||||
<div id="integrationApiBaseUrl" class="mono integrationCode">—</div>
|
||||
</div>
|
||||
<div class="integrationApiBlock">
|
||||
<div class="integrationSectionLabel">POST /mission_queue</div>
|
||||
<pre class="integrationPre">curl -X POST "<span class="integrationCurlHost">http://localhost:8080</span>/api/v2.0.0/mission_queue" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"mission_id":"<mission_id>","priority":0,"robot_id":"default"}'</pre>
|
||||
</div>
|
||||
<div class="integrationApiBlock">
|
||||
<div class="integrationSectionLabel">GET /mission_queue · GET /missions · GET /status</div>
|
||||
<pre class="integrationPre">GET /api/v2.0.0/mission_queue
|
||||
GET /api/v2.0.0/missions
|
||||
GET /api/v2.0.0/status</pre>
|
||||
</div>
|
||||
<div class="row rowWide integrationTestRow">
|
||||
<label for="integrationRestMission">Thử nhanh</label>
|
||||
<div class="integrationTestActions">
|
||||
<select id="integrationRestMission"></select>
|
||||
<button id="integrationRestTestBtn" type="button" class="btn subtle">POST queue</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card">
|
||||
<div class="cardHeader">
|
||||
<div>
|
||||
<div class="cardTitle">MiRFleet — Lên lịch mission</div>
|
||||
<div class="cardSub">Ưu tiên, gán robot, chạy ASAP hoặc theo thời gian.</div>
|
||||
</div>
|
||||
<div class="integrationHeaderActions">
|
||||
<button id="integrationRefreshBtn" type="button" class="btn subtle">Tải lại</button>
|
||||
<button id="integrationAddScheduleBtn" type="button" class="btn primary">Thêm lịch</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cardBody">
|
||||
<div id="integrationScheduleEmpty" class="mutedNote">Chưa có lịch fleet.</div>
|
||||
<div id="integrationScheduleList" class="missionList"></div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="configSplitter" class="splitter" role="separator" aria-orientation="vertical" tabindex="0"></div>
|
||||
|
||||
<div class="contentRight" id="contentRight">
|
||||
@@ -773,8 +850,78 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<dialog id="integrationAddTriggerDialog" class="missionDialog">
|
||||
<form id="integrationAddTriggerForm" method="dialog" class="missionDialogForm">
|
||||
<div class="missionDialogHeader">
|
||||
<h3>Modbus trigger</h3>
|
||||
<button type="button" class="iconBtn missionDialogClose" data-close-dialog="integrationAddTriggerDialog" aria-label="Đóng">×</button>
|
||||
</div>
|
||||
<div class="missionDialogBody">
|
||||
<div class="row rowWide">
|
||||
<label for="integrationTriggerName">Tên trigger</label>
|
||||
<input id="integrationTriggerName" type="text" required placeholder="VD: PLC line 1 start" />
|
||||
</div>
|
||||
<div class="row rowWide">
|
||||
<label for="integrationTriggerCoil">Coil ID</label>
|
||||
<input id="integrationTriggerCoil" type="number" min="1001" max="2000" value="1001" required />
|
||||
</div>
|
||||
<div class="row rowWide">
|
||||
<label for="integrationTriggerMission">Mission</label>
|
||||
<select id="integrationTriggerMission" required></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="missionDialogFooter">
|
||||
<button type="button" class="btn subtle" data-close-dialog="integrationAddTriggerDialog">Hủy</button>
|
||||
<button type="submit" class="btn primary">Thêm</button>
|
||||
</div>
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<dialog id="integrationAddScheduleDialog" class="missionDialog">
|
||||
<form id="integrationAddScheduleForm" method="dialog" class="missionDialogForm">
|
||||
<div class="missionDialogHeader">
|
||||
<h3>Lịch MiRFleet</h3>
|
||||
<button type="button" class="iconBtn missionDialogClose" data-close-dialog="integrationAddScheduleDialog" aria-label="Đóng">×</button>
|
||||
</div>
|
||||
<div class="missionDialogBody">
|
||||
<div class="row rowWide">
|
||||
<label for="integrationScheduleName">Tên lịch</label>
|
||||
<input id="integrationScheduleName" type="text" required placeholder="VD: Ca sáng — đi dock" />
|
||||
</div>
|
||||
<div class="row rowWide">
|
||||
<label for="integrationScheduleMission">Mission</label>
|
||||
<select id="integrationScheduleMission" required></select>
|
||||
</div>
|
||||
<div class="row rowWide">
|
||||
<label for="integrationScheduleRobot">Robot</label>
|
||||
<select id="integrationScheduleRobot"></select>
|
||||
</div>
|
||||
<div class="row rowWide">
|
||||
<label for="integrationSchedulePriority">Ưu tiên</label>
|
||||
<input id="integrationSchedulePriority" type="number" value="0" />
|
||||
</div>
|
||||
<div class="row rowWide">
|
||||
<label for="integrationScheduleMode">Chế độ</label>
|
||||
<select id="integrationScheduleMode">
|
||||
<option value="asap">ASAP — vào queue ngay</option>
|
||||
<option value="scheduled">Scheduled — theo thời gian</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row rowWide" id="integrationScheduleStartAtRow" hidden>
|
||||
<label for="integrationScheduleStartAt">Thời gian bắt đầu</label>
|
||||
<input id="integrationScheduleStartAt" type="datetime-local" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="missionDialogFooter">
|
||||
<button type="button" class="btn subtle" data-close-dialog="integrationAddScheduleDialog">Hủy</button>
|
||||
<button type="submit" class="btn primary">Thêm</button>
|
||||
</div>
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<script src="/missions.js"></script>
|
||||
<script src="/dashboard.js"></script>
|
||||
<script src="/integrations.js"></script>
|
||||
<script src="/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user