Skip to content

Commit 9132b54

Browse files
authored
Telemetry for CLUE on frontend (microsoft#300)
1 parent e24cb75 commit 9132b54

2 files changed

Lines changed: 156 additions & 0 deletions

File tree

src/constants.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ export enum TelemetryEventName {
341341
CPX_DEBUGGER_INIT_FAIL = "CPX.DEBUGGER.INIT.FAIL",
342342
MICROBIT_DEBUGGER_INIT_SUCCESS = "MICROBIT.DEBUGGER.INIT.SUCCESS",
343343
MICROBIT_DEBUGGER_INIT_FAIL = "MICROBIT.DEBUGGER.INIT.FAIL",
344+
CLUE_DEBUGGER_INIT_SUCCESS = "CLUE.DEBUGGER.INIT.SUCCESS",
345+
CLUE_DEBUGGER_INIT_FAIL = "CLUE.DEBUGGER.INIT.FAIL",
344346

345347
// Extension commands
346348
COMMAND_RUN_SIMULATOR_BUTTON = "COMMAND.RUN.SIMULATOR_BUTTON",
@@ -374,6 +376,10 @@ export enum TelemetryEventName {
374376
MICROBIT_SIMULATOR_BUTTON_B = "MICROBIT.SIMULATOR.BUTTON.B",
375377
MICROBIT_SIMULATOR_BUTTON_AB = "MICROBIT.SIMULATOR.BUTTON.AB",
376378

379+
CLUE_SIMULATOR_BUTTON_A = "CLUE.SIMULATOR.BUTTON.A",
380+
CLUE_SIMULATOR_BUTTON_B = "CLUE.SIMULATOR.BUTTON.B",
381+
CLUE_SIMULATOR_BUTTON_AB = "CLUE.SIMULATOR.BUTTON.AB",
382+
377383
// Sensors
378384
CPX_SIMULATOR_TEMPERATURE_SENSOR = "CPX.SIMULATOR.TEMPERATURE",
379385
CPX_SIMULATOR_LIGHT_SENSOR = "CPX.SIMULATOR.LIGHT",
@@ -384,6 +390,17 @@ export enum TelemetryEventName {
384390
MICROBIT_SIMULATOR_TEMPERATURE_SENSOR = "MICROBIT.SIMULATOR.TEMPERATURE",
385391
MICROBIT_SIMULATOR_LIGHT_SENSOR = "MICROBIT.SIMULATOR.LIGHT",
386392
MICROBIT_SIMULATOR_MOTION_SENSOR = "MICROBIT.SIMULATOR.MOTION",
393+
MICROBIT_SIMULATOR_GESTURE_SENSOR = "MICROBIT.SIMULATOR.GESTURE",
394+
395+
CLUE_SIMULATOR_TEMPERATURE_SENSOR = "CLUE.SIMULATOR.TEMPERATURE",
396+
CLUE_SIMULATOR_LIGHT_SENSOR = "CLUE.SIMULATOR.LIGHT",
397+
CLUE_SIMULATOR_MOTION_SENSOR = "CLUE.SIMULATOR.MOTION",
398+
CLUE_SIMULATOR_GESTURE_SENSOR = "CLUE.SIMULATOR.GESTURE",
399+
CLUE_SIMULATOR_PRESSURE_SENSOR = "CLUE.SIMULATOR.PRESSURE",
400+
CLUE_SIMULATOR_PROXIMITY_SENSOR = "CLUE.SIMULATOR.PROXIMITY",
401+
CLUE_SIMULATOR_HUMIDITY_SENSOR = "CLUE.SIMULATOR.HUMIDITY",
402+
CLUE_SIMULATOR_GYRO_SENSOR = "CLUE.SIMULATOR.GYRO",
403+
CLUE_SIMULATOR_MAGNET_SENSOR = "CLUE.SIMULATOR.MAGNET",
387404

388405
// Pop-up dialog
389406
CPX_CLICK_DIALOG_DONT_SHOW = "CPX.CLICK.DIALOG.DONT.SHOW",
@@ -394,6 +411,7 @@ export enum TelemetryEventName {
394411
CLUE_CLICK_DIALOG_HELP_DEPLOY_TO_DEVICE = "CLUE.CLICK.DIALOG.HELP.DEPLOY.TO.DEVICE",
395412

396413
ERROR_PYTHON_PROCESS = "ERROR.PYTHON.PROCESS",
414+
397415
CPX_ERROR_COMMAND_NEW_FILE = "CPX.ERROR.COMMAND.NEW.FILE",
398416
CPX_ERROR_DEPLOY_WITHOUT_DEVICE = "CPX.ERROR.DEPLOY.WITHOUT.DEVICE",
399417
CPX_ERROR_PYTHON_DEVICE_PROCESS = "CPX.ERROR.PYTHON.DEVICE.PROCESS",
@@ -404,6 +422,7 @@ export enum TelemetryEventName {
404422
MICROBIT_ERROR_PYTHON_DEVICE_PROCESS = "MICROBIT.ERROR.PYTHON.DEVICE.PROCESS",
405423
MICROBIT_SUCCESS_COMMAND_DEPLOY_DEVICE = "MICROBIT.SUCCESS.COMMAND.DEPLOY.DEVICE",
406424

425+
CLUE_ERROR_COMMAND_NEW_FILE = "CLUE.ERROR.COMMAND.NEW.FILE",
407426
CLUE_ERROR_DEPLOY_WITHOUT_DEVICE = "CLUE.ERROR.DEPLOY.WITHOUT.DEVICE",
408427
CLUE_ERROR_PYTHON_DEVICE_PROCESS = "CLUE.ERROR.PYTHON.DEVICE.PROCESS",
409428
CLUE_SUCCESS_COMMAND_DEPLOY_DEVICE = "CLUE.SUCCESS.COMMAND.DEPLOY.DEVICE",

src/service/telemetryHandlerService.ts

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ export class TelemetryHandlerService {
2929
TelemetryEventName.MICROBIT_DEBUGGER_INIT_SUCCESS
3030
);
3131
break;
32+
case CONSTANTS.DEVICE_NAME.CLUE:
33+
this.telemetryAI.trackFeatureUsage(
34+
TelemetryEventName.CLUE_DEBUGGER_INIT_SUCCESS
35+
);
36+
break;
3237
default:
3338
break;
3439
}
@@ -46,6 +51,11 @@ export class TelemetryHandlerService {
4651
TelemetryEventName.MICROBIT_DEBUGGER_INIT_FAIL
4752
);
4853
break;
54+
case CONSTANTS.DEVICE_NAME.CLUE:
55+
this.telemetryAI.trackFeatureUsage(
56+
TelemetryEventName.CLUE_DEBUGGER_INIT_FAIL
57+
);
58+
break;
4959
default:
5060
break;
5161
}
@@ -59,6 +69,9 @@ export class TelemetryHandlerService {
5969
case CONSTANTS.DEVICE_NAME.MICROBIT:
6070
this.handleMicrobitButtonPressTelemetry(buttonState);
6171
break;
72+
case CONSTANTS.DEVICE_NAME.CLUE:
73+
this.handleClueButtonPressTelemetry(buttonState);
74+
break;
6275
default:
6376
break;
6477
}
@@ -84,6 +97,9 @@ export class TelemetryHandlerService {
8497
case CONSTANTS.DEVICE_NAME.MICROBIT:
8598
this.handleMicrobitSensorTelemetry(sensor);
8699
break;
100+
case CONSTANTS.DEVICE_NAME.CLUE:
101+
this.handleClueSensorTelemetry(sensor);
102+
break;
87103
default:
88104
break;
89105
}
@@ -200,6 +216,122 @@ export class TelemetryHandlerService {
200216
TelemetryEventName.MICROBIT_SIMULATOR_MOTION_SENSOR
201217
);
202218
break;
219+
case "gesture":
220+
this.telemetryAI.trackFeatureUsage(
221+
TelemetryEventName.MICROBIT_SIMULATOR_GESTURE_SENSOR
222+
);
223+
break;
224+
}
225+
};
226+
227+
public handleClueButtonPressTelemetry = (buttonState: any) => {
228+
if (buttonState.button_a && buttonState.button_b) {
229+
this.telemetryAI.trackFeatureUsage(
230+
TelemetryEventName.CLUE_SIMULATOR_BUTTON_AB
231+
);
232+
} else if (buttonState.button_a) {
233+
this.telemetryAI.trackFeatureUsage(
234+
TelemetryEventName.CLUE_SIMULATOR_BUTTON_A
235+
);
236+
} else if (buttonState.button_b) {
237+
this.telemetryAI.trackFeatureUsage(
238+
TelemetryEventName.CLUE_SIMULATOR_BUTTON_B
239+
);
240+
}
241+
};
242+
243+
public handleClueSensorTelemetry = (sensor: string) => {
244+
switch (sensor) {
245+
case "temperature":
246+
this.telemetryAI.trackFeatureUsage(
247+
TelemetryEventName.CLUE_SIMULATOR_TEMPERATURE_SENSOR
248+
);
249+
break;
250+
case "light_r":
251+
this.telemetryAI.trackFeatureUsage(
252+
TelemetryEventName.CLUE_SIMULATOR_LIGHT_SENSOR
253+
);
254+
break;
255+
case "light_g":
256+
this.telemetryAI.trackFeatureUsage(
257+
TelemetryEventName.CLUE_SIMULATOR_LIGHT_SENSOR
258+
);
259+
break;
260+
case "light_b":
261+
this.telemetryAI.trackFeatureUsage(
262+
TelemetryEventName.CLUE_SIMULATOR_LIGHT_SENSOR
263+
);
264+
break;
265+
case "light_c":
266+
this.telemetryAI.trackFeatureUsage(
267+
TelemetryEventName.CLUE_SIMULATOR_LIGHT_SENSOR
268+
);
269+
break;
270+
case "motion_x":
271+
this.telemetryAI.trackFeatureUsage(
272+
TelemetryEventName.CLUE_SIMULATOR_MOTION_SENSOR
273+
);
274+
break;
275+
case "motion_y":
276+
this.telemetryAI.trackFeatureUsage(
277+
TelemetryEventName.CLUE_SIMULATOR_MOTION_SENSOR
278+
);
279+
break;
280+
case "motion_z":
281+
this.telemetryAI.trackFeatureUsage(
282+
TelemetryEventName.CLUE_SIMULATOR_MOTION_SENSOR
283+
);
284+
break;
285+
case "gesture":
286+
this.telemetryAI.trackFeatureUsage(
287+
TelemetryEventName.CLUE_SIMULATOR_GESTURE_SENSOR
288+
);
289+
break;
290+
case "humidity":
291+
this.telemetryAI.trackFeatureUsage(
292+
TelemetryEventName.CLUE_SIMULATOR_HUMIDITY_SENSOR
293+
);
294+
break;
295+
case "pressure":
296+
this.telemetryAI.trackFeatureUsage(
297+
TelemetryEventName.CLUE_SIMULATOR_PRESSURE_SENSOR
298+
);
299+
break;
300+
case "proximity":
301+
this.telemetryAI.trackFeatureUsage(
302+
TelemetryEventName.CLUE_SIMULATOR_PROXIMITY_SENSOR
303+
);
304+
break;
305+
case "gyro_x":
306+
this.telemetryAI.trackFeatureUsage(
307+
TelemetryEventName.CLUE_SIMULATOR_GYRO_SENSOR
308+
);
309+
break;
310+
case "gyro_y":
311+
this.telemetryAI.trackFeatureUsage(
312+
TelemetryEventName.CLUE_SIMULATOR_GYRO_SENSOR
313+
);
314+
break;
315+
case "gyro_z":
316+
this.telemetryAI.trackFeatureUsage(
317+
TelemetryEventName.CLUE_SIMULATOR_GYRO_SENSOR
318+
);
319+
break;
320+
case "magnet_x":
321+
this.telemetryAI.trackFeatureUsage(
322+
TelemetryEventName.CLUE_SIMULATOR_MAGNET_SENSOR
323+
);
324+
break;
325+
case "magnet_y":
326+
this.telemetryAI.trackFeatureUsage(
327+
TelemetryEventName.CLUE_SIMULATOR_MAGNET_SENSOR
328+
);
329+
break;
330+
case "magnet_z":
331+
this.telemetryAI.trackFeatureUsage(
332+
TelemetryEventName.CLUE_SIMULATOR_MAGNET_SENSOR
333+
);
334+
break;
203335
}
204336
};
205337

@@ -215,6 +347,11 @@ export class TelemetryHandlerService {
215347
TelemetryEventName.MICROBIT_ERROR_COMMAND_NEW_FILE
216348
);
217349
break;
350+
case CONSTANTS.DEVICE_NAME.CLUE:
351+
this.telemetryAI.trackFeatureUsage(
352+
TelemetryEventName.CLUE_ERROR_COMMAND_NEW_FILE
353+
);
354+
break;
218355
default:
219356
break;
220357
}

0 commit comments

Comments
 (0)