Repository navigation
Expand file tree
/
Copy pathsimpleSensorSelect.ts
More file actions
52 lines (47 loc) · 1.89 KB
/
Copy pathsimpleSensorSelect.ts
File metadata and controls
52 lines (47 loc) · 1.89 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
namespace microdata {
export class SimpleSensorSelect extends ui.UiScreen {
private selectedSensors: sensors.Sensor[];
constructor(runtime: ui.UiRuntime) {
super(runtime)
this.backgroundColor = 6
this.selectedSensors = []
this.add(
new ui.UiButton(
"sensors",
"Sensors",
() => {
openSensorPicker(
getAvailableMicrobitAndJacdacSensors, {
screen: this,
selected: () => this.selectedSensors,
// Example of how to do more complex behaviours, in this case preventing deselction only of the last picked:
// pickedSensors: this.selectedSensors.length == 0 ? [] : this.selectedSensors.slice(-1),
onPick: sensor => this.selectSensor(sensor),
onUnpick: index => {
this.selectedSensors.splice(index, 1)
},
})
}
),
{centerX: 80, centerY: 60}
)
}
private selectSensor(sensor: sensors.Sensor): void {
const selectedSensorIdx = this.selectedSensors.map(s => s.name).indexOf(sensor.name)
if (selectedSensorIdx === -1)
this.selectedSensors.push(sensor)
else
this.selectedSensors.splice(selectedSensorIdx, 1)
}
handleInput(event: ui.UiInputEvent) {
if (event.action == "cancel" && event.phase == "pressed") {
this.runtime.pop()
return true;
}
return undefined;
}
render(surface: ui.DrawSurface) {
super.render(surface)
}
}
}