Initial commit: COPILOT D6 Flutter keyboard controller

Flutter web app replacing legacy WPF CCTV surveillance keyboard controller.
Includes wall overview, section view with monitor grid, camera input,
PTZ control, alarm/lock/sequence BLoCs, and legacy-matching UI styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
klas
2026-02-12 14:57:38 +01:00
commit 40143734fc
125 changed files with 65073 additions and 0 deletions

200
tests/test-gcore.http Normal file
View File

@@ -0,0 +1,200 @@
### G-Core Bridge Test Suite
### Use with VS Code REST Client extension or similar
@baseUrl = http://localhost:7721
### Health Check
GET {{baseUrl}}/health
### Root (service info)
GET {{baseUrl}}/
### Status (before connect)
GET {{baseUrl}}/status
### Connect to G-Core Server
POST {{baseUrl}}/connect
Content-Type: application/json
{
"Address": "192.168.1.20",
"Username": "operator",
"Password": "password"
}
### Status (after connect)
GET {{baseUrl}}/status
### Get Media Channels
GET {{baseUrl}}/channels
### Get Monitor States (tracked from events)
GET {{baseUrl}}/monitors
### Get Specific Monitor State
GET {{baseUrl}}/monitors/17
### Get Active Alarms (tracked from events)
GET {{baseUrl}}/alarms/active
### Get All Alarms (including stopped)
GET {{baseUrl}}/alarms
### ViewerConnectLive - Switch Camera 101 to Monitor 17
POST {{baseUrl}}/viewer/connect-live
Content-Type: application/json
{
"Viewer": 17,
"Channel": 101
}
### CrossSwitch (compatibility endpoint)
POST {{baseUrl}}/crossswitch
Content-Type: application/json
{
"VideoInput": 102,
"VideoOutput": 18,
"SwitchMode": 0
}
### ViewerClear - Clear Monitor 17
POST {{baseUrl}}/viewer/clear
Content-Type: application/json
{
"Viewer": 17
}
### PTZ Pan Right
POST {{baseUrl}}/camera/pan
Content-Type: application/json
{
"Camera": 101,
"Direction": "right",
"Speed": 50
}
### PTZ Pan Stop
POST {{baseUrl}}/camera/pan-stop
Content-Type: application/json
{
"Camera": 101
}
### PTZ Tilt Down
POST {{baseUrl}}/camera/tilt
Content-Type: application/json
{
"Camera": 101,
"Direction": "down",
"Speed": 30
}
### PTZ Zoom Out
POST {{baseUrl}}/camera/zoom
Content-Type: application/json
{
"Camera": 101,
"Direction": "out",
"Speed": 50
}
### PTZ Stop All
POST {{baseUrl}}/camera/stop
Content-Type: application/json
{
"Camera": 101
}
### PTZ Go to Preset
POST {{baseUrl}}/camera/preset
Content-Type: application/json
{
"Camera": 101,
"Preset": 2
}
### Playback - Set Play Mode (Step Forward)
POST {{baseUrl}}/viewer/set-play-mode
Content-Type: application/json
{
"Viewer": 17,
"PlayMode": "step forward",
"PlaySpeed": 1.0
}
### Playback - Jump to Time
POST {{baseUrl}}/viewer/play-from-time
Content-Type: application/json
{
"Viewer": 17,
"Channel": 101,
"PlayMode": "play forward",
"Time": "2026/02/03 09:00:00,000 GMT+01:00"
}
### Playback - Jump Forward 30 Seconds
POST {{baseUrl}}/viewer/jump-by-time
Content-Type: application/json
{
"Viewer": 17,
"Channel": 101,
"PlayMode": "play forward",
"TimeInSec": 30
}
### Digital Output - Close Contact
POST {{baseUrl}}/digital-io/close
Content-Type: application/json
{
"ContactId": 100
}
### Digital Output - Open Contact
POST {{baseUrl}}/digital-io/open
Content-Type: application/json
{
"ContactId": 100
}
### Get Message Log
GET {{baseUrl}}/messages
### Clear Message Log
POST {{baseUrl}}/messages/clear
### Send Generic Action
POST {{baseUrl}}/action
Content-Type: application/json
{
"Action": "ViewerConnectLive(17, 101)"
}
### Send Custom Action
POST {{baseUrl}}/custom-action
Content-Type: application/json
{
"TypeId": 1,
"Text": "Test custom action"
}
### Disconnect
POST {{baseUrl}}/disconnect
### Swagger UI
# Open in browser: http://localhost:7721/swagger