Skip to content
Snippets Groups Projects
Commit ef7468a6 authored by Oleksandr Husak's avatar Oleksandr Husak
Browse files

agent properties in the popup

parent 35080dd3
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@
- Public MQTT broker and client from [hivemq](https://www.hivemq.com/public-mqtt-broker/). MQTT client with a standart settings.
- `ipos/client/position`: relative position of an agent to a curent root point
- `ipos/client/root`: update a root point. Default is `{"latitude": 51.02545, "longitude": 13.72295}`.
- `ipos/client/extracted` extracted attributes. Related with VDA5050
- Messages description: [SimpleSceneIntegration Interface](https://md.inf.tu-dresden.de/IPos_IFSimpleSceneIntegration).
### Online app
......@@ -30,39 +31,44 @@ Connection settings
- topic `ipos/client/position`
- new positions
- ```json
{
"objects": [
{
"id": "Employee1",
"sensorId": "UWB_1",
"type": "HUMAN",
"sensorType": "UWB",
"position": {
"refSystemId": "ROOT",
"point": {
"x": 3,
"y": 2,
"z": 3
},
"accuracy": 1
},
"orientation": {
"x": 1,
"y": 0.5,
"z": 1,
"w": 1.5
},
"lastPosUpdate": "2021-09-14T09:41:20+00:00",
"zoneDescriptors": [
"objects": [
{
"zoneId": "door_zone",
"notificationType": "EntryNotification"
"id": "Employee1",
"sensorId": "UWB_1",
"type": "HUMAN",
"sensorType": "UWB",
"position": {
"refSystemId": "ROOT",
"point": {
"x": 28,
"y": -12,
"z": 20
},
"accuracy": 1
},
"orientation": {
"x": 1,
"y": 0.5,
"z": 1,
"w": 1.5
},
"extractedAttributes": {
"batteryChargeLevel": 70,
"loadedItems": [23, 1, 25, 17],
"errors": [2, 1, 6]
},
"lastPosUpdate": "2021-09-14T09:41:20+00:00",
"zoneDescriptors": [
{
"zoneId": "door_zone",
"notificationType": "EntryNotification"
}
]
}
]
],
"type": "EntryNotification"
}
],
"type": "EntryNotification"
}
```
- More objects can be added to the `"object": []`
- There are special colours for objects with id `"Employee1"` - `"Employee4"`. Config: [MarkerColorMap](src/environments/environment.ts)
......
......@@ -40,11 +40,11 @@ export class MapComponent implements OnInit {
});
}
ngOnInit(): void { }
ngOnInit(): void { }
// --- Controllers
// --- Controllers
ref2root(pos: RelativePos) {
ref2root(pos: RelativePos) {
// convert a relative position to WFG84 format
let source = <WGS84>this.root.point
let origin = L.latLng([source.latitude, source.longitude])
......@@ -66,10 +66,22 @@ export class MapComponent implements OnInit {
// --- Info
let pos = desc["position"]
this.agentsInfo[key] = desc
this.addMarker(key, pos)
var props = undefined
if (desc.extractedAttributes) {
props = `<p> \
<h3>${key}</h3>
<strong>Charge</strong>: ${desc.extractedAttributes.batteryChargeLevel}% <br>\
<strong>Items</strong>: ${desc.extractedAttributes.loadedItems}\
</p>`
} else {
props = `<p><h3>${key}</h3></p>`
}
this.addMarker(key, pos, props)
}
addMarker(key: string, pos: Position) {
addMarker(key: string, pos: Position, popup: string) {
let point = pos.point
if ('x' in point) {
......@@ -94,7 +106,7 @@ export class MapComponent implements OnInit {
shadowUrl: 'assets/marker-shadow.png',
className: 'true-position-marker'
})
}).bindPopup(key).openPopup();
}).bindPopup(popup).openPopup();
marker.addTo(this.markOverlays[key])
// --- Accuracy
......
......@@ -13,6 +13,7 @@ export interface Object {
orientation?: Orientation
lastPosUpdate: string
zoneDescriptors: ZoneDesc[]
extractedAttributes?: ExtAttribute
}
export interface Position {
......@@ -47,7 +48,7 @@ interface Orientation {
export enum NotificationType {
"EntryNotification",
"ExitNotification",
"ExitNotification",
"Unknown"
}
......@@ -62,6 +63,10 @@ enum SensorType {
"Bluetooth",
"WiFi"
}
interface ExtAttribute {
batteryChargeLevel: number
loadedItems: number[]
errors: number[]
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment