-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFleetPills.js
More file actions
129 lines (110 loc) · 3.28 KB
/
FleetPills.js
File metadata and controls
129 lines (110 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import SignalPills from "./reusable/SignalPills.js"
import SignalTile from "./reusable/SignalTile.js"
import LineChart from "./reusable/LineChart.js"
const plugin = ({ widgets, simulator, modelObjectCreator }) => {
const fleet = modelObjectCreator("Fleet")
const NumberOfMovingVehiclesTile = {
signal: "Fleet.NumberOfMovingVehicles",
label: "NumberOfMovingVehicles",
icon: "route",
}
const NumberOfChargingVehiclesTile = {
signal: "Fleet.NumberOfChargingVehicles",
label: "NumberOfChargingVehicles",
icon: "charging-station",
}
const NumberOfStuckVehicles = {
signal: "Fleet.NumberOfStuckVehicles",
label: "NumberOfStuckVehicles",
icon: "car-burst",
}
const NumberOfQueuedVehicles = {
signal: "Fleet.NumberOfQueuedVehicles",
label: "NumberOfQueuedVehicles",
icon: "car-side",
}
widgets.register(
"VehicleActions",
SignalPills(
[
NumberOfMovingVehiclesTile,
NumberOfChargingVehiclesTile,
NumberOfStuckVehicles,
NumberOfQueuedVehicles
],
fleet
)
)
widgets.register(
"VehicleActions_Dev",
SignalPills(
[
NumberOfMovingVehiclesTile,
NumberOfChargingVehiclesTile,
],
fleet
)
)
const AverageSpeedTile = {
signal: "Fleet.AverageSpeed",
label: "AverageSpeed",
icon: "gauge-high",
}
widgets.register(
"AverageSpeed",
SignalTile(
AverageSpeedTile,
fleet
)
)
widgets.register(
"AverageSpeedChart",
LineChart(
[
AverageSpeedTile
],
fleet,
5000
),
)
widgets.register(
"NumberOfVehiclesChart",
LineChart(
[
NumberOfMovingVehiclesTile,
NumberOfChargingVehiclesTile,
NumberOfStuckVehicles,
NumberOfQueuedVehicles
],
fleet,
5000
)
)
// Here's an object that stores the current value of each signal (initialized with the value of 0)
const currentSignalValues = {
"Fleet.NumberOfMovingVehicles": 0,
"Fleet.NumberOfChargingVehicles": 0,
"Fleet.NumberOfQueuedVehicles": 0,
"Fleet.NumberOfStuckVehicles": 0,
"Fleet.AverageSpeed": 0,
}
// Simulators for each signal, that return the current value of the signal
for (const signal in currentSignalValues) {
simulator(signal, "get", async () => {
return currentSignalValues[signal]
})
}
const updateFleet = async () => {
const response = await fetch("https://fleetsim.onrender.com/fleet")
const fleetJson = await response.json()
for (const signal in currentSignalValues) {
currentSignalValues[signal] = fleetJson[signal].value
}
}
// Every 5 sec, Fetch from https://evfleetsim.onrender.com/fleet a json object (has the same keys as currentSignalValues), and update currentSignalValues
setInterval(() => {
updateFleet()
}, 5000)
updateFleet()
}
export default plugin