From cfb6b500167e51cdfdbbb9cda25c8d661eb8ef37 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 17 Jul 2019 14:54:28 -0700 Subject: [PATCH 01/72] added temperature value --- src/view/App.tsx | 5 +- src/view/components/toolbar/InputSlider.tsx | 9 +- .../toolbar/TemperatureSensorBar.css | 27 +++++ .../toolbar/TemperatureSensorBar.tsx | 102 ++++++++++++++++++ 4 files changed, 135 insertions(+), 8 deletions(-) create mode 100644 src/view/components/toolbar/TemperatureSensorBar.css create mode 100644 src/view/components/toolbar/TemperatureSensorBar.tsx diff --git a/src/view/App.tsx b/src/view/App.tsx index 5084bfd38..7362382bb 100644 --- a/src/view/App.tsx +++ b/src/view/App.tsx @@ -4,7 +4,7 @@ "use strict"; import * as React from "react"; import Simulator from "./components/Simulator"; -import InputSlider from "./components/toolbar/InputSlider" +import TemperatureSensorBar from "./components/toolbar/TemperatureSensorBar" import "./App.css"; class App extends React.Component { @@ -13,7 +13,8 @@ class App extends React.Component {
- + + {
+ step={this.props.step} onChange={this.handleOnChange} value={this.state.value} defaultValue={this.props.min.toLocaleString()}/>
- {this.props.min_label} + {this.props.min}
- {this.props.max_label} + {this.props.max}
diff --git a/src/view/components/toolbar/TemperatureSensorBar.css b/src/view/components/toolbar/TemperatureSensorBar.css new file mode 100644 index 000000000..68225a0a5 --- /dev/null +++ b/src/view/components/toolbar/TemperatureSensorBar.css @@ -0,0 +1,27 @@ +.faren,.celsius{ + margin-right: 50px; + font-size: 14px; + display: inline; + + +} + +.unitChoice{ + font-size: 14px; +} +.title{ + font-size: 14px; + text-align: left; + +} + +.header{ + -webkit-appearance: none; + height: 30px; + margin-bottom: 30px; + +} + +.temperatureSensorBar{ + margin-top: 20px; +} \ No newline at end of file diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx new file mode 100644 index 000000000..ec21cafc0 --- /dev/null +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -0,0 +1,102 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import * as React from "react"; +import InputSlider from "./InputSlider"; +import "./TemperatureSensorBar.css" + + +const TEMPERATURE_SENSOR_PROPERTIES = { + MIN_LABEL: "Cold", + MAX_LABEL: "Hot", + LABEL: "Temperature sensor" + } + + +interface ITemperatureUnit { + name: string, + minValue: number, + maxValue: number +} + +const CELSIUS_STATE: ITemperatureUnit ={ + name: "F", + minValue: -40, + maxValue: 40, + +} +const FARENHEIT_STATE: ITemperatureUnit ={ + name: "C", + minValue: -400, + maxValue: 400, + +} + +class TemperatureSensorBar extends React.Component{ + + constructor(props: any){ + super(props); + this.state = CELSIUS_STATE + + + + this.handleOnUnitChange = this.handleOnUnitChange.bind(this); + } + + + render(){ + + + return ( +
+
+
{TEMPERATURE_SENSOR_PROPERTIES.LABEL}
+ +
+ + {CELSIUS_STATE.name} +
+
+ + {FARENHEIT_STATE.name} +
+ +
+ + +
+ + + ) + } + + private handleOnUnitChange(event: React.ChangeEvent){ + const newValue = event.target.value; + + if(this.state.name == CELSIUS_STATE.name && newValue == FARENHEIT_STATE.name ){ + this.setState(FARENHEIT_STATE); + } + + if(this.state.name == FARENHEIT_STATE.name && newValue == CELSIUS_STATE.name ){ + this.setState(CELSIUS_STATE); + } + + + } + + + private convertCelsiusToFaren(value:number): number{ + return value*1.8+32 + } + + private convertsFarenToCelsius(value:number): number{ + return (value-32)/1.8 + } + + +} + +export default TemperatureSensorBar; + From 834974cf2b17421e8c4876d3a5280663aeb62353 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 17 Jul 2019 14:55:25 -0700 Subject: [PATCH 02/72] removed deead code --- src/view/components/toolbar/TemperatureSensorBar.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index ec21cafc0..65e45dade 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -86,15 +86,6 @@ class TemperatureSensorBar extends React.Component{ } - - private convertCelsiusToFaren(value:number): number{ - return value*1.8+32 - } - - private convertsFarenToCelsius(value:number): number{ - return (value-32)/1.8 - } - } From 914539e8a302f829616e48f688e4cd016d2fbd71 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 17 Jul 2019 16:17:24 -0700 Subject: [PATCH 03/72] removed dummy --- src/view/components/toolbar/InputSlider.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 00199834e..d5b155437 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -19,8 +19,7 @@ class InputSlider extends React.Component{ constructor(props: ISliderProps){ super(props); this.state = { - value:0, - dummy: 0 + value:0 }; this.handleOnChange = this.handleOnChange.bind(this); @@ -53,7 +52,6 @@ class InputSlider extends React.Component{ -
{this.state.dummy}
From 0ac8399ce689bcaf9950fbc3365e474893cf15ff Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 17 Jul 2019 17:19:47 -0700 Subject: [PATCH 04/72] added type to the slider --- src/view/components/toolbar/InputSlider.tsx | 1 + src/view/components/toolbar/TemperatureSensorBar.tsx | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index d5b155437..f62a1b954 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -10,6 +10,7 @@ interface ISliderProps{ min_label: string; max_label: string; step:number; + type:string; } diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index 65e45dade..ff93898b6 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -9,7 +9,8 @@ import "./TemperatureSensorBar.css" const TEMPERATURE_SENSOR_PROPERTIES = { MIN_LABEL: "Cold", MAX_LABEL: "Hot", - LABEL: "Temperature sensor" + LABEL: "Temperature sensor", + TYPE: "temperature", } @@ -62,7 +63,7 @@ class TemperatureSensorBar extends React.Component{ - From f6ef3c586b6e3df1df4f2a1c47c3610995ffc1c1 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 17 Jul 2019 17:28:45 -0700 Subject: [PATCH 05/72] remove unit notions --- .../toolbar/TemperatureSensorBar.css | 13 ++----- .../toolbar/TemperatureSensorBar.tsx | 34 +------------------ 2 files changed, 3 insertions(+), 44 deletions(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.css b/src/view/components/toolbar/TemperatureSensorBar.css index 68225a0a5..3d64fe5fd 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.css +++ b/src/view/components/toolbar/TemperatureSensorBar.css @@ -1,14 +1,5 @@ -.faren,.celsius{ - margin-right: 50px; - font-size: 14px; - display: inline; - -} -.unitChoice{ - font-size: 14px; -} .title{ font-size: 14px; text-align: left; @@ -18,10 +9,10 @@ .header{ -webkit-appearance: none; height: 30px; - margin-bottom: 30px; + margin-bottom: 2px; } .temperatureSensorBar{ - margin-top: 20px; + margin-top: 10px; } \ No newline at end of file diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index ff93898b6..9416e1367 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -26,23 +26,14 @@ const CELSIUS_STATE: ITemperatureUnit ={ maxValue: 40, } -const FARENHEIT_STATE: ITemperatureUnit ={ - name: "C", - minValue: -400, - maxValue: 400, -} class TemperatureSensorBar extends React.Component{ constructor(props: any){ super(props); this.state = CELSIUS_STATE - - - - this.handleOnUnitChange = this.handleOnUnitChange.bind(this); - } + } render(){ @@ -52,15 +43,6 @@ class TemperatureSensorBar extends React.Component{
{TEMPERATURE_SENSOR_PROPERTIES.LABEL}
- -
- - {CELSIUS_STATE.name} -
-
- - {FARENHEIT_STATE.name} -
{ ) } - private handleOnUnitChange(event: React.ChangeEvent){ - const newValue = event.target.value; - - if(this.state.name == CELSIUS_STATE.name && newValue == FARENHEIT_STATE.name ){ - this.setState(FARENHEIT_STATE); - } - - if(this.state.name == FARENHEIT_STATE.name && newValue == CELSIUS_STATE.name ){ - this.setState(CELSIUS_STATE); - } - - - } - } From 3f2d4a1ffa0c84af9bdf1107d554f409c58f6368 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 17 Jul 2019 17:57:02 -0700 Subject: [PATCH 06/72] changes --- src/adafruit_circuitplayground/express.py | 7 ++++++- src/view/components/toolbar/InputSlider.tsx | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 5e09de72c..b702a64b3 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -29,7 +29,8 @@ def __init__(self): (0, 0, 0) ], 'red_led': False, - 'switch': False + 'switch': False, + 'temperature':0 } self.pixels = Pixel(self.__state) @@ -57,6 +58,10 @@ def red_led(self, value): def switch(self): return self.__state['switch'] + @property + def temperature(self): + return self.__state['temperature'] + def __show(self): utils.show(self.__state) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index d5b155437..c7ddf13c6 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -4,12 +4,25 @@ import * as React from "react"; import "./InputSlider.css" +interface vscode { + postMessage(message: any): void; +} + +declare const vscode: vscode; + +const sendMessage = (state: any) => { + console.log("sendmessage"); + vscode.postMessage({ command: "sensor-changed", text: state }); +}; + + interface ISliderProps{ min:number; max: number; min_label: string; max_label: string; step:number; + type:string; } @@ -62,8 +75,14 @@ class InputSlider extends React.Component{ this.updateValue(event); this.validateRange(); + this.setMessage(); + + } + setMessage() { + return {'type':this.props.t} + } private updateValue(event: React.ChangeEvent){ From 48b265b7272d045c24f4637f23239f8aeec98730 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 09:15:06 -0700 Subject: [PATCH 07/72] changes to the api --- src/constants.ts | 3 ++- src/extension.ts | 6 +++++ src/process_user_code.py | 2 ++ src/view/components/toolbar/InputSlider.tsx | 25 +++++++++++++-------- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index df789ecd6..88e8c1096 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -118,7 +118,8 @@ export enum TelemetryEventName { export enum WebviewMessages { BUTTON_PRESS = "button-press", - PLAY_SIMULATOR = "play-simulator" + PLAY_SIMULATOR = "play-simulator", + SENSOR_CHANGED= "sensor-changed" } // tslint:disable-next-line: no-namespace diff --git a/src/extension.ts b/src/extension.ts index 0c0bed4d4..857859259 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -93,6 +93,12 @@ export function activate(context: vscode.ExtensionContext) { killProcessIfRunning(); } break; + case WebviewMessages.SENSOR_CHANGED: + console.log("sensor changed"); + console.log(JSON.stringify(message.text) + "\n"); + console.log(JSON.parse(JSON.stringify(message.text) + "\n")) + childProcess.stdin.write(JSON.stringify(message.text) + "\n"); + break; default: vscode.window.showInformationMessage( CONSTANTS.ERROR.UNEXPECTED_MESSAGE diff --git a/src/process_user_code.py b/src/process_user_code.py index 863320d9b..ac1c6050e 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -30,6 +30,8 @@ def run(self): 'button_b', cpx._Express__state['button_b']) cpx._Express__state['switch'] = new_state.get( 'switch', cpx._Express__state['switch']) + cpx._Express__state['temperature'] = new_state.get( + 'temperature', cpx._Express__state['temperature']) except Exception as e: print("Error trying to send event to the process : ", e, file=sys.stderr, flush=True) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index c7ddf13c6..b4a2c65a5 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -44,7 +44,7 @@ class InputSlider extends React.Component{ return (
+ onInputCapture={this.handleOnChange} defaultValue={this.props.min.toLocaleString()} pattern="[-?0-9]*" onKeyUp={this.validateRange}/>
@@ -72,23 +72,30 @@ class InputSlider extends React.Component{ } private handleOnChange(event: React.ChangeEvent){ - + console.log(this.state.value) this.updateValue(event); this.validateRange(); - this.setMessage(); + console.log(this.state.value) + let newSensorState = this.setMessage(event) + if(newSensorState){ + sendMessage(newSensorState) + } + console.log(this.state.value) - - } - setMessage() { - return {'type':this.props.t} + setMessage(event: React.ChangeEvent) { + if(this.props.type && this.state.value && (event.target.valueAsNumber)) + return { + temperature: (event.target.valueAsNumber) + } + return ; } private updateValue(event: React.ChangeEvent){ - const newValue = (event.target.validity.valid) ? event.target.value : this.state.value; + const newValue = (event.target.validity.valid) ? event.target.value : this.state.value; this.setState({value:newValue}); - + } private validateRange(){ From 4f3a05209931187b3fe357765d592f4fecba2ce3 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 10:10:25 -0700 Subject: [PATCH 08/72] created new variable --- src/view/components/toolbar/InputSlider.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.css b/src/view/components/toolbar/InputSlider.css index 3a2bfd9f7..8c94b7a70 100644 --- a/src/view/components/toolbar/InputSlider.css +++ b/src/view/components/toolbar/InputSlider.css @@ -1,4 +1,6 @@ - +:root{ + --unknown-gray-color:#cccccc; +} .inputSlider{ height: 50px; margin-bottom: 100px; @@ -16,7 +18,7 @@ .slider{ -webkit-appearance: none; - background-color: #cccccc; + background-color: var(--unknown-gray-color); height: 1px; width: 280px; vertical-align: middle; @@ -66,7 +68,6 @@ } .downLabelArea{ - /* background-color: goldenrod; */ width: 280px; height: 15px; margin-top: 10px From d2f2fc838a567407be1a443e342ec2b685d5fb9d Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 10:24:01 -0700 Subject: [PATCH 09/72] added degree sign --- src/view/components/toolbar/TemperatureSensorBar.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index 9416e1367..aa4b84f28 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -21,7 +21,7 @@ interface ITemperatureUnit { } const CELSIUS_STATE: ITemperatureUnit ={ - name: "F", + name: "°C", minValue: -40, maxValue: 40, @@ -42,7 +42,7 @@ class TemperatureSensorBar extends React.Component{ return (
-
{TEMPERATURE_SENSOR_PROPERTIES.LABEL}
+
{TEMPERATURE_SENSOR_PROPERTIES.LABEL+" "+CELSIUS_STATE.name}
Date: Thu, 18 Jul 2019 10:27:54 -0700 Subject: [PATCH 10/72] removed extra spaces --- src/view/components/toolbar/TemperatureSensorBar.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.css b/src/view/components/toolbar/TemperatureSensorBar.css index 3d64fe5fd..70709bc12 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.css +++ b/src/view/components/toolbar/TemperatureSensorBar.css @@ -3,14 +3,12 @@ .title{ font-size: 14px; text-align: left; - } .header{ -webkit-appearance: none; height: 30px; margin-bottom: 2px; - } .temperatureSensorBar{ From b1825278ccd486abc967585badff831dddacf0a8 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 10:28:33 -0700 Subject: [PATCH 11/72] more extra spaces removed --- src/view/components/toolbar/TemperatureSensorBar.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index aa4b84f28..3d304e1fd 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -23,8 +23,7 @@ interface ITemperatureUnit { const CELSIUS_STATE: ITemperatureUnit ={ name: "°C", minValue: -40, - maxValue: 40, - + maxValue: 40 } @@ -33,7 +32,7 @@ class TemperatureSensorBar extends React.Component{ constructor(props: any){ super(props); this.state = CELSIUS_STATE - } + } render(){ @@ -50,8 +49,6 @@ class TemperatureSensorBar extends React.Component{ step={1} />
- - ) } From 3129ea5d3fd311a5ae8820f04c8e57608d0e31dd Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 10:35:40 -0700 Subject: [PATCH 12/72] using varaiable for the slider color --- src/view/components/toolbar/InputSlider.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.css b/src/view/components/toolbar/InputSlider.css index d9e292823..cafea8012 100644 --- a/src/view/components/toolbar/InputSlider.css +++ b/src/view/components/toolbar/InputSlider.css @@ -1,4 +1,6 @@ - +:root{ + --slider-gray-color:#cccccc; +} .inputSlider{ height: 50px; margin-bottom: 100px; @@ -15,7 +17,7 @@ .slider{ -webkit-appearance: none; - background-color: #cccccc; + background-color: var(--slider-gray-color); height: 1px; width: 280px; vertical-align: middle; From 3c36ae9a3bbc7af4e29c86d19c05486d2ab614ab Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 11:02:16 -0700 Subject: [PATCH 13/72] added null check --- src/extension.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 857859259..06f3df90c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -97,7 +97,9 @@ export function activate(context: vscode.ExtensionContext) { console.log("sensor changed"); console.log(JSON.stringify(message.text) + "\n"); console.log(JSON.parse(JSON.stringify(message.text) + "\n")) - childProcess.stdin.write(JSON.stringify(message.text) + "\n"); + if(childProcess){ + childProcess.stdin.write(JSON.stringify(message.text) + "\n"); + } break; default: vscode.window.showInformationMessage( From 52b5deed6581a7e844012b375b6193e7018981d3 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 11:15:53 -0700 Subject: [PATCH 14/72] beautifying --- src/view/components/toolbar/TemperatureSensorBar.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index 3d304e1fd..6b9fe5494 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -44,9 +44,14 @@ class TemperatureSensorBar extends React.Component{
{TEMPERATURE_SENSOR_PROPERTIES.LABEL+" "+CELSIUS_STATE.name}
- +
) From f956493a9bb657d8e2564d404bb612ffd077b883 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 18 Jul 2019 11:17:38 -0700 Subject: [PATCH 15/72] beuatifying --- src/view/components/toolbar/InputSlider.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 679f05005..bbe8984fb 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -54,8 +54,15 @@ class InputSlider extends React.Component{ {this.props.max_label}
- +
{this.props.min} From 6e8a885debfb0618f3c75a9c1b32905241b39aff Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Fri, 19 Jul 2019 22:55:36 -0700 Subject: [PATCH 16/72] solving issues --- src/extension.ts | 1 + src/view/components/toolbar/InputSlider.tsx | 18 ++++++++---------- .../toolbar/TemperatureSensorBar.tsx | 6 +++--- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index e6f1771aa..52eff5e59 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -103,6 +103,7 @@ export function activate(context: vscode.ExtensionContext) { if(childProcess){ childProcess.stdin.write(JSON.stringify(message.text) + "\n"); } + break; case WebviewMessages.REFRESH_SIMULATOR: console.log("Refresh button"); runSimulatorCommand(); diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 25791ac56..eb1afcda7 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -82,26 +82,24 @@ class InputSlider extends React.Component{ this.updateValue(event); this.validateRange(); console.log(this.state.value) - let newSensorState = this.setMessage(event) + const newSensorState = this.setMessage(event) if(newSensorState){ sendMessage(newSensorState) } console.log(this.state.value) } - setMessage(event: React.ChangeEvent) { - if(this.props.type && this.state.value && (event.target.valueAsNumber)) - return { - temperature: (event.target.valueAsNumber) - } - - return ; + private setMessage(event: React.ChangeEvent) { + let newSensorState; + if(this.props.type && this.state.value && (event.target.valueAsNumber)){ + newSensorState ={temperature: event.target.valueAsNumber} + } + return newSensorState } private updateValue(event: React.ChangeEvent){ - const newValue = (event.target.validity.valid) ? event.target.value : this.state.value; + const newValue = (event.target.validity.valid) ? event.target.value : this.state.value; this.setState({value:newValue}); - } private validateRange(){ diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index 0b09f67d5..c415d1d3c 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -13,7 +13,7 @@ const TEMPERATURE_SENSOR_PROPERTIES = { }; interface ITemperatureUnit { - name: string; + unitLabel: string; minValue: number; maxValue: number; } @@ -21,7 +21,7 @@ interface ITemperatureUnit { const CELSIUS_STATE: ITemperatureUnit = { maxValue: 40, minValue: -40, - name: "°C" + unitLabel: "°C" }; class TemperatureSensorBar extends React.Component { @@ -35,7 +35,7 @@ class TemperatureSensorBar extends React.Component {
- {TEMPERATURE_SENSOR_PROPERTIES.LABEL + " " + CELSIUS_STATE.name} + {TEMPERATURE_SENSOR_PROPERTIES.LABEL + " " + CELSIUS_STATE.unitLabel}
Date: Fri, 19 Jul 2019 22:57:16 -0700 Subject: [PATCH 17/72] Update src/view/components/toolbar/InputSlider.tsx Co-Authored-By: Jonathan Wang --- src/view/components/toolbar/InputSlider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index eb1afcda7..01eb662eb 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -83,7 +83,7 @@ class InputSlider extends React.Component{ this.validateRange(); console.log(this.state.value) const newSensorState = this.setMessage(event) - if(newSensorState){ + if (newSensorState){ sendMessage(newSensorState) } console.log(this.state.value) From 8e3d1f21f3e70ec68b0e178975b3dd625283f225 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Fri, 19 Jul 2019 22:59:10 -0700 Subject: [PATCH 18/72] used prettier --- src/view/components/toolbar/InputSlider.tsx | 186 +++++++++----------- 1 file changed, 88 insertions(+), 98 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index eb1afcda7..9be71d863 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -2,118 +2,108 @@ // Licensed under the MIT license. import * as React from "react"; -import "./InputSlider.css" +import "./InputSlider.css"; interface vscode { - postMessage(message: any): void; + postMessage(message: any): void; } - + declare const vscode: vscode; const sendMessage = (state: any) => { - console.log("sendmessage"); - vscode.postMessage({ command: "sensor-changed", text: state }); + console.log("sendmessage"); + vscode.postMessage({ command: "sensor-changed", text: state }); }; - - -interface ISliderProps{ - min:number; - max: number; - min_label: string; - max_label: string; - step:number; - type: string; -} - - - -class InputSlider extends React.Component{ - constructor(props: ISliderProps){ - super(props); - this.state = { - value: 0 - }; - - this.handleOnChange = this.handleOnChange.bind(this); - this.validateRange = this.validateRange.bind(this); - } +interface ISliderProps { + min: number; + max: number; + min_label: string; + max_label: string; + step: number; + type: string; +} - - render(){ - return ( -
- -
-
-
- {this.props.min_label} -
-
- {this.props.max_label} -
-
- -
-
- {this.props.min} -
-
- {this.props.max} -
-
-
+class InputSlider extends React.Component { + constructor(props: ISliderProps) { + super(props); + this.state = { + value: 0 + }; + + this.handleOnChange = this.handleOnChange.bind(this); + this.validateRange = this.validateRange.bind(this); + } + + render() { + return ( +
+ +
+
+
{this.props.min_label}
+
{this.props.max_label}
+
+ +
+
{this.props.min}
+
{this.props.max}
+
- - - ) +
+ ); + } + + private handleOnChange(event: React.ChangeEvent) { + this.updateValue(event); + this.validateRange(); + console.log(this.state.value); + const newSensorState = this.setMessage(event); + if (newSensorState) { + sendMessage(newSensorState); } - - private handleOnChange(event: React.ChangeEvent){ - this.updateValue(event); - this.validateRange(); - console.log(this.state.value) - const newSensorState = this.setMessage(event) - if(newSensorState){ - sendMessage(newSensorState) - } - console.log(this.state.value) - + console.log(this.state.value); + } + private setMessage(event: React.ChangeEvent) { + let newSensorState; + if (this.props.type && this.state.value && event.target.valueAsNumber) { + newSensorState = { temperature: event.target.valueAsNumber }; } - private setMessage(event: React.ChangeEvent) { - let newSensorState; - if(this.props.type && this.state.value && (event.target.valueAsNumber)){ - newSensorState ={temperature: event.target.valueAsNumber} - } - return newSensorState + return newSensorState; + } + + private updateValue(event: React.ChangeEvent) { + const newValue = event.target.validity.valid + ? event.target.value + : this.state.value; + this.setState({ value: newValue }); + } + + private validateRange() { + if (this.state.value < this.props.min) { + this.setState({ value: this.props.min, dummy: 2 }); } - - private updateValue(event: React.ChangeEvent){ - const newValue = (event.target.validity.valid) ? event.target.value : this.state.value; - this.setState({value:newValue}); + if (this.state.value > this.props.max) { + this.setState({ value: this.props.max, dummy: 1 }); } - - private validateRange(){ - if(this.state.valuethis.props.max){ - this.setState({value:this.props.max,dummy:1}); - } - - } - - + } } export default InputSlider; - From 86a02f1cd216c42946d3c83b186262523a409b1d Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Fri, 19 Jul 2019 23:08:59 -0700 Subject: [PATCH 19/72] removed dummy --- src/adafruit_circuitplayground/express.py | 2 +- src/view/components/toolbar/InputSlider.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index b702a64b3..568c3fa1d 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -30,7 +30,7 @@ def __init__(self): ], 'red_led': False, 'switch': False, - 'temperature':0 + 'temperature': 0 } self.pixels = Pixel(self.__state) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index c219889b8..263670af3 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -99,10 +99,10 @@ class InputSlider extends React.Component { private validateRange() { if (this.state.value < this.props.min) { - this.setState({ value: this.props.min, dummy: 2 }); + this.setState({ value: this.props.min }); } if (this.state.value > this.props.max) { - this.setState({ value: this.props.max, dummy: 1 }); + this.setState({ value: this.props.max }); } } } From fc2a780c3d9823554f5bd3980e421275582fa00e Mon Sep 17 00:00:00 2001 From: FMounz Date: Sat, 20 Jul 2019 01:02:47 -0700 Subject: [PATCH 20/72] prettier again --- src/constants.ts | 2 +- src/extension.ts | 55 +++++++++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index 494fdea61..1efe8f56f 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -125,7 +125,7 @@ export enum TelemetryEventName { export enum WebviewMessages { BUTTON_PRESS = "button-press", PLAY_SIMULATOR = "play-simulator", - SENSOR_CHANGED= "sensor-changed", + SENSOR_CHANGED = "sensor-changed", REFRESH_SIMULATOR = "refresh-simulator" } diff --git a/src/extension.ts b/src/extension.ts index 52eff5e59..9053241cc 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -99,8 +99,8 @@ export function activate(context: vscode.ExtensionContext) { case WebviewMessages.SENSOR_CHANGED: console.log("sensor changed"); console.log(JSON.stringify(message.text) + "\n"); - console.log(JSON.parse(JSON.stringify(message.text) + "\n")) - if(childProcess){ + console.log(JSON.parse(JSON.stringify(message.text) + "\n")); + if (childProcess) { childProcess.stdin.write(JSON.stringify(message.text) + "\n"); } break; @@ -390,17 +390,17 @@ export function activate(context: vscode.ExtensionContext) { } }); - // Std error output - deviceProcess.stderr.on("data", data => { - telemetryAI.trackFeatureUsage( - TelemetryEventName.ERROR_PYTHON_DEVICE_PROCESS, - { error: `${data}` } - ); - console.error( - `Error from the Python device process through stderr: ${data}` - ); - logToOutputChannel(outChannel, `[ERROR] ${data} \n`, true); - }); + // Std error output + deviceProcess.stderr.on("data", data => { + telemetryAI.trackFeatureUsage( + TelemetryEventName.ERROR_PYTHON_DEVICE_PROCESS, + { error: `${data}` } + ); + console.error( + `Error from the Python device process through stderr: ${data}` + ); + logToOutputChannel(outChannel, `[ERROR] ${data} \n`, true); + }); // When the process is done deviceProcess.on("end", (code: number) => { @@ -439,33 +439,38 @@ export function activate(context: vscode.ExtensionContext) { const getActivePythonFile = () => { const editors: vscode.TextEditor[] = vscode.window.visibleTextEditors; - const activeEditor = editors.find((editor) => editor.document.languageId === "python"); + const activeEditor = editors.find( + editor => editor.document.languageId === "python" + ); return activeEditor ? activeEditor.document.fileName : ""; -} +}; const getFileFromFilePicker = () => { const options: vscode.OpenDialogOptions = { canSelectMany: false, filters: { - 'All files': ['*'], - 'Python files': ['py'] + "All files": ["*"], + "Python files": ["py"] }, - openLabel: 'Run File' + openLabel: "Run File" }; return vscode.window.showOpenDialog(options).then(fileUri => { if (fileUri && fileUri[0]) { - console.log('Selected file: ' + fileUri[0].fsPath); + console.log("Selected file: " + fileUri[0].fsPath); return fileUri[0].fsPath; } }); -} +}; -const updateCurrentFileIfPython = async (activeTextEditor: vscode.TextEditor | undefined) => { +const updateCurrentFileIfPython = async ( + activeTextEditor: vscode.TextEditor | undefined +) => { if (activeTextEditor && activeTextEditor.document.languageId === "python") { currentFileAbsPath = activeTextEditor.document.fileName; } else if (currentFileAbsPath === "") { - currentFileAbsPath = getActivePythonFile() || await getFileFromFilePicker() || ""; + currentFileAbsPath = + getActivePythonFile() || (await getFileFromFilePicker()) || ""; } }; @@ -504,7 +509,9 @@ const logToOutputChannel = ( show: boolean = false ) => { if (outChannel) { - if (show) { outChannel.show(true); } + if (show) { + outChannel.show(true); + } outChannel.append(message); } }; @@ -530,4 +537,4 @@ function getWebviewContent(context: vscode.ExtensionContext) { } // this method is called when your extension is deactivated -export function deactivate() { } +export function deactivate() {} From fa7288493ed7b2777f48f874f818644fade2cea7 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sat, 20 Jul 2019 20:09:07 -0700 Subject: [PATCH 21/72] following good unsollicited advices 1 --- src/extension.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 9053241cc..03c531d90 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -77,19 +77,20 @@ export function activate(context: vscode.ExtensionContext) { // Handle messages from webview messageListener = currentPanel.webview.onDidReceiveMessage( message => { + const messageJson = JSON.stringify(message.text); switch (message.command) { case WebviewMessages.BUTTON_PRESS: // Send input to the Python process handleButtonPressTelemetry(message.text); console.log("About to write"); - console.log(JSON.stringify(message.text) + "\n"); + console.log(messageJson + "\n"); if (childProcess) { - childProcess.stdin.write(JSON.stringify(message.text) + "\n"); + childProcess.stdin.write(messageJson + "\n"); } break; case WebviewMessages.PLAY_SIMULATOR: console.log("Play button"); - console.log(JSON.stringify(message.text) + "\n"); + console.log(messageJson + "\n"); if (message.text as boolean) { runSimulatorCommand(); } else { @@ -98,10 +99,9 @@ export function activate(context: vscode.ExtensionContext) { break; case WebviewMessages.SENSOR_CHANGED: console.log("sensor changed"); - console.log(JSON.stringify(message.text) + "\n"); - console.log(JSON.parse(JSON.stringify(message.text) + "\n")); + console.log(messageJson + "\n"); if (childProcess) { - childProcess.stdin.write(JSON.stringify(message.text) + "\n"); + childProcess.stdin.write(messageJson + "\n"); } break; case WebviewMessages.REFRESH_SIMULATOR: From 38d4acd91dfb89ca30cced5c9a5ce6a0f347d5b0 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sat, 20 Jul 2019 20:13:18 -0700 Subject: [PATCH 22/72] cleaning up --- src/view/components/Simulator.tsx | 1 - src/view/components/toolbar/InputSlider.tsx | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/view/components/Simulator.tsx b/src/view/components/Simulator.tsx index 1f16b360a..23896f4e4 100644 --- a/src/view/components/Simulator.tsx +++ b/src/view/components/Simulator.tsx @@ -55,7 +55,6 @@ interface vscode { declare const vscode: vscode; const sendMessage = (type: string, state: any) => { - console.log("sendmessage"); vscode.postMessage({ command: type, text: state }); }; diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 263670af3..411dbf303 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -11,7 +11,6 @@ interface vscode { declare const vscode: vscode; const sendMessage = (state: any) => { - console.log("sendmessage"); vscode.postMessage({ command: "sensor-changed", text: state }); }; @@ -74,12 +73,10 @@ class InputSlider extends React.Component { private handleOnChange(event: React.ChangeEvent) { this.updateValue(event); this.validateRange(); - console.log(this.state.value); const newSensorState = this.setMessage(event); if (newSensorState) { sendMessage(newSensorState); } - console.log(this.state.value); } private setMessage(event: React.ChangeEvent) { From 061ec8eae7dafe62b4defa17f3d9006b20efca1f Mon Sep 17 00:00:00 2001 From: FMounz Date: Sat, 20 Jul 2019 23:49:27 -0700 Subject: [PATCH 23/72] adding light sensor cimponent --- ...eSensorBar.css => LightSensorBar copy.css} | 0 .../components/toolbar/LightSensorBar.css | 19 +++++++ .../components/toolbar/LightSensorBar.tsx | 55 +++++++++++++++++++ ...rBar.tsx => TemperatureSensorBar copy.tsx} | 0 4 files changed, 74 insertions(+) rename src/view/components/toolbar/{TemperatureSensorBar.css => LightSensorBar copy.css} (100%) create mode 100644 src/view/components/toolbar/LightSensorBar.css create mode 100644 src/view/components/toolbar/LightSensorBar.tsx rename src/view/components/toolbar/{TemperatureSensorBar.tsx => TemperatureSensorBar copy.tsx} (100%) diff --git a/src/view/components/toolbar/TemperatureSensorBar.css b/src/view/components/toolbar/LightSensorBar copy.css similarity index 100% rename from src/view/components/toolbar/TemperatureSensorBar.css rename to src/view/components/toolbar/LightSensorBar copy.css diff --git a/src/view/components/toolbar/LightSensorBar.css b/src/view/components/toolbar/LightSensorBar.css new file mode 100644 index 000000000..bdd2d8573 --- /dev/null +++ b/src/view/components/toolbar/LightSensorBar.css @@ -0,0 +1,19 @@ + + +.title{ + font-size: 14px; + text-align: left; +} + +.header{ + -webkit-appearance: none; + height: 30px; + margin-bottom: 2px; +} + +.temperatureSensorBar{ + margin-top: 10px; + width: 440px; + margin-left: auto; + margin-right: auto; +} diff --git a/src/view/components/toolbar/LightSensorBar.tsx b/src/view/components/toolbar/LightSensorBar.tsx new file mode 100644 index 000000000..038dd1052 --- /dev/null +++ b/src/view/components/toolbar/LightSensorBar.tsx @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import * as React from "react"; +import InputSlider from "./InputSlider"; +import "./LightSensorBar.css"; +import Constants from "../../../constants" + +const TEMPERATURE_SENSOR_PROPERTIES = { + LABEL: "Temperature sensor", + MAX_LABEL: "Hot", + MIN_LABEL: "Cold", + TYPE: "temperature" +}; + +interface ITemperatureUnit { + unitLabel: string; + minValue: number; + maxValue: number; +} + +const CELSIUS_STATE: ITemperatureUnit = { + maxValue: 40, + minValue: -40, + unitLabel: "°C" +}; + +class TemperatureSensorBar extends React.Component { + constructor(props: any) { + super(props); + this.state = CELSIUS_STATE; + } + + render() { + return ( +
+
+
+ {TEMPERATURE_SENSOR_PROPERTIES.LABEL + " " + CELSIUS_STATE.unitLabel} +
+
+ +
+ ); + } +} + +export default TemperatureSensorBar; diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar copy.tsx similarity index 100% rename from src/view/components/toolbar/TemperatureSensorBar.tsx rename to src/view/components/toolbar/TemperatureSensorBar copy.tsx From 48c99778d43cb6ebe64db60382572cb89d6dc522 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sat, 20 Jul 2019 23:50:14 -0700 Subject: [PATCH 24/72] adding temp sensor --- src/view/components/toolbar/LightSensorBar.tsx | 2 +- .../toolbar/{LightSensorBar.css => TemperatureSensorBar.css} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/view/components/toolbar/{LightSensorBar.css => TemperatureSensorBar.css} (100%) diff --git a/src/view/components/toolbar/LightSensorBar.tsx b/src/view/components/toolbar/LightSensorBar.tsx index 038dd1052..3b77cb362 100644 --- a/src/view/components/toolbar/LightSensorBar.tsx +++ b/src/view/components/toolbar/LightSensorBar.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import InputSlider from "./InputSlider"; import "./LightSensorBar.css"; -import Constants from "../../../constants" +import {} from "../../../constants" const TEMPERATURE_SENSOR_PROPERTIES = { LABEL: "Temperature sensor", diff --git a/src/view/components/toolbar/LightSensorBar.css b/src/view/components/toolbar/TemperatureSensorBar.css similarity index 100% rename from src/view/components/toolbar/LightSensorBar.css rename to src/view/components/toolbar/TemperatureSensorBar.css From e12f43524cab1c01a6897c0763c27c3070842fde Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 00:44:25 -0700 Subject: [PATCH 25/72] changes --- src/view/components/toolbar/InputSlider.tsx | 35 +++++------- .../components/toolbar/LightSensorBar.tsx | 51 ++++++++---------- .../toolbar/TemperatureSensorBar copy.tsx | 54 ------------------- .../toolbar/TemperatureSensorBar.tsx | 50 +++++++++++++++++ .../components/toolbar/Toolbar_ressources.tsx | 13 +++++ 5 files changed, 99 insertions(+), 104 deletions(-) delete mode 100644 src/view/components/toolbar/TemperatureSensorBar copy.tsx create mode 100644 src/view/components/toolbar/TemperatureSensorBar.tsx create mode 100644 src/view/components/toolbar/Toolbar_ressources.tsx diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 411dbf303..8e23482cc 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -3,6 +3,7 @@ import * as React from "react"; import "./InputSlider.css"; +import {ISliderProps} from "./Toolbar_ressources"; interface vscode { postMessage(message: any): void; @@ -14,15 +15,6 @@ const sendMessage = (state: any) => { vscode.postMessage({ command: "sensor-changed", text: state }); }; -interface ISliderProps { - min: number; - max: number; - min_label: string; - max_label: string; - step: number; - type: string; -} - class InputSlider extends React.Component { constructor(props: ISliderProps) { super(props); @@ -42,28 +34,27 @@ class InputSlider extends React.Component { className="sliderValue" value={this.state.value} onInputCapture={this.handleOnChange} - defaultValue={this.props.min.toLocaleString()} + defaultValue={this.props.minValue.toLocaleString()} pattern="[-?0-9]*" onKeyUp={this.validateRange} />
-
{this.props.min_label}
-
{this.props.max_label}
+
{this.props.minLabel}
+
{this.props.maxLabel}
-
{this.props.min}
-
{this.props.max}
+
{this.props.minValue}
+
{this.props.maxValue}
@@ -95,11 +86,11 @@ class InputSlider extends React.Component { } private validateRange() { - if (this.state.value < this.props.min) { - this.setState({ value: this.props.min }); + if (this.state.value < this.props.minValue) { + this.setState({ value: this.props.minValue }); } - if (this.state.value > this.props.max) { - this.setState({ value: this.props.max }); + if (this.state.value > this.props.maxValue) { + this.setState({ value: this.props.maxValue }); } } } diff --git a/src/view/components/toolbar/LightSensorBar.tsx b/src/view/components/toolbar/LightSensorBar.tsx index 3b77cb362..93625ba74 100644 --- a/src/view/components/toolbar/LightSensorBar.tsx +++ b/src/view/components/toolbar/LightSensorBar.tsx @@ -3,53 +3,48 @@ import * as React from "react"; import InputSlider from "./InputSlider"; -import "./LightSensorBar.css"; -import {} from "../../../constants" +import "./TemperatureSensorBar.css"; +import { ISensorProps, ISliderProps } from "./Toolbar_ressources"; -const TEMPERATURE_SENSOR_PROPERTIES = { - LABEL: "Temperature sensor", - MAX_LABEL: "Hot", - MIN_LABEL: "Cold", - TYPE: "temperature" +const LIGHT_SLIDER_PROPS: ISliderProps = { + maxValue: 125, + minValue: -55, + minLabel: "Dark", + maxLabel: "Bright", + type: "light" }; -interface ITemperatureUnit { - unitLabel: string; - minValue: number; - maxValue: number; -} - -const CELSIUS_STATE: ITemperatureUnit = { - maxValue: 40, - minValue: -40, - unitLabel: "°C" +const LIGHT_SENSOR_PROPERTIES: ISensorProps = { + LABEL: "Light sensor", + sliderProps: LIGHT_SLIDER_PROPS, + unitLabel: "Lux" }; -class TemperatureSensorBar extends React.Component { +class LightSensorBar extends React.Component{ constructor(props: any) { super(props); - this.state = CELSIUS_STATE; } render() { return ( -
+
- {TEMPERATURE_SENSOR_PROPERTIES.LABEL + " " + CELSIUS_STATE.unitLabel} + {LIGHT_SENSOR_PROPERTIES.LABEL + + " " + + LIGHT_SENSOR_PROPERTIES.unitLabel}
); } } -export default TemperatureSensorBar; +export default LightSensorBar; diff --git a/src/view/components/toolbar/TemperatureSensorBar copy.tsx b/src/view/components/toolbar/TemperatureSensorBar copy.tsx deleted file mode 100644 index c415d1d3c..000000000 --- a/src/view/components/toolbar/TemperatureSensorBar copy.tsx +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import * as React from "react"; -import InputSlider from "./InputSlider"; -import "./TemperatureSensorBar.css"; - -const TEMPERATURE_SENSOR_PROPERTIES = { - LABEL: "Temperature sensor", - MAX_LABEL: "Hot", - MIN_LABEL: "Cold", - TYPE: "temperature" -}; - -interface ITemperatureUnit { - unitLabel: string; - minValue: number; - maxValue: number; -} - -const CELSIUS_STATE: ITemperatureUnit = { - maxValue: 40, - minValue: -40, - unitLabel: "°C" -}; - -class TemperatureSensorBar extends React.Component { - constructor(props: any) { - super(props); - this.state = CELSIUS_STATE; - } - - render() { - return ( -
-
-
- {TEMPERATURE_SENSOR_PROPERTIES.LABEL + " " + CELSIUS_STATE.unitLabel} -
-
- -
- ); - } -} - -export default TemperatureSensorBar; diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx new file mode 100644 index 000000000..9a2d8b6b3 --- /dev/null +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import * as React from "react"; +import InputSlider from "./InputSlider"; +import "./TemperatureSensorBar.css"; +import { ISensorProps, ISliderProps } from "./Toolbar_ressources"; + +const TEMPERATURE_SLIDER_PROPS: ISliderProps = { + maxValue: 125, + minValue: -55, + minLabel: "Cold", + maxLabel: "Hot", + type: "temperature" +}; + +const TEMPERATURE_SENSOR_PROPERTIES: ISensorProps = { + LABEL: "Temperature sensor", + sliderProps: TEMPERATURE_SLIDER_PROPS, + unitLabel: "°C" +}; + +class TemperatureSensorBar extends React.Component{ + constructor(props: any) { + super(props); + } + + render() { + return ( +
+
+
+ {TEMPERATURE_SENSOR_PROPERTIES.LABEL + + " " + + TEMPERATURE_SENSOR_PROPERTIES.unitLabel} +
+
+ +
+ ); + } +} + +export default TemperatureSensorBar; diff --git a/src/view/components/toolbar/Toolbar_ressources.tsx b/src/view/components/toolbar/Toolbar_ressources.tsx new file mode 100644 index 000000000..1655f45dc --- /dev/null +++ b/src/view/components/toolbar/Toolbar_ressources.tsx @@ -0,0 +1,13 @@ +export interface ISliderProps { + minValue: number; + maxValue: number; + maxLabel: string; + minLabel: string; + type: string; +} + +export interface ISensorProps { + LABEL: string; + sliderProps: ISliderProps; + unitLabel: string; +} From 2571ec6c12b55d442b47ff7a201a607b26cbbcde Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 01:01:53 -0700 Subject: [PATCH 26/72] added view for light sensor --- src/view/App.tsx | 3 +++ .../{LightSensorBar copy.css => LightSensorBar.css} | 2 +- src/view/components/toolbar/LightSensorBar.tsx | 12 ++++++------ src/view/components/toolbar/TemperatureSensorBar.tsx | 8 ++++---- 4 files changed, 14 insertions(+), 11 deletions(-) rename src/view/components/toolbar/{LightSensorBar copy.css => LightSensorBar.css} (90%) diff --git a/src/view/App.tsx b/src/view/App.tsx index 006c92f2f..b1689b41c 100644 --- a/src/view/App.tsx +++ b/src/view/App.tsx @@ -5,6 +5,7 @@ import * as React from "react"; import Simulator from "./components/Simulator"; import TemperatureSensorBar from "./components/toolbar/TemperatureSensorBar" +import LightSensorBar from "./components/toolbar/LightSensorBar" import "./App.css"; class App extends React.Component { @@ -14,6 +15,8 @@ class App extends React.Component {
+ +
); diff --git a/src/view/components/toolbar/LightSensorBar copy.css b/src/view/components/toolbar/LightSensorBar.css similarity index 90% rename from src/view/components/toolbar/LightSensorBar copy.css rename to src/view/components/toolbar/LightSensorBar.css index bdd2d8573..3d4dddfa7 100644 --- a/src/view/components/toolbar/LightSensorBar copy.css +++ b/src/view/components/toolbar/LightSensorBar.css @@ -11,7 +11,7 @@ margin-bottom: 2px; } -.temperatureSensorBar{ +.lightSensorBar{ margin-top: 10px; width: 440px; margin-left: auto; diff --git a/src/view/components/toolbar/LightSensorBar.tsx b/src/view/components/toolbar/LightSensorBar.tsx index 93625ba74..ea2310167 100644 --- a/src/view/components/toolbar/LightSensorBar.tsx +++ b/src/view/components/toolbar/LightSensorBar.tsx @@ -3,7 +3,7 @@ import * as React from "react"; import InputSlider from "./InputSlider"; -import "./TemperatureSensorBar.css"; +import "./LightSensorBar.css"; import { ISensorProps, ISliderProps } from "./Toolbar_ressources"; const LIGHT_SLIDER_PROPS: ISliderProps = { @@ -20,19 +20,19 @@ const LIGHT_SENSOR_PROPERTIES: ISensorProps = { unitLabel: "Lux" }; -class LightSensorBar extends React.Component{ +class LightSensorBar extends React.Component { constructor(props: any) { super(props); } render() { return ( -
+
- {LIGHT_SENSOR_PROPERTIES.LABEL + - " " + - LIGHT_SENSOR_PROPERTIES.unitLabel} + {`${LIGHT_SENSOR_PROPERTIES.LABEL} (${ + LIGHT_SENSOR_PROPERTIES.unitLabel + })`}
- {TEMPERATURE_SENSOR_PROPERTIES.LABEL + - " " + - TEMPERATURE_SENSOR_PROPERTIES.unitLabel} + {`${TEMPERATURE_SENSOR_PROPERTIES.LABEL} (${ + TEMPERATURE_SENSOR_PROPERTIES.unitLabel + })`}
Date: Sun, 21 Jul 2019 01:13:58 -0700 Subject: [PATCH 27/72] refectored process --- src/process_user_code.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/process_user_code.py b/src/process_user_code.py index ac1c6050e..c465faf71 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -10,6 +10,14 @@ from pathlib import Path import traceback +AWAITED_EVENTLIST =[ + 'button_a', + 'button_b', + 'switch' + 'temperature', + 'light' +] + read_val = "" class UserInput(threading.Thread): @@ -24,14 +32,10 @@ def run(self): sys.stdin.flush() try: new_state = json.loads(read_val) - cpx._Express__state['button_a'] = new_state.get( - 'button_a', cpx._Express__state['button_a']) - cpx._Express__state['button_b'] = new_state.get( - 'button_b', cpx._Express__state['button_b']) - cpx._Express__state['switch'] = new_state.get( - 'switch', cpx._Express__state['switch']) - cpx._Express__state['temperature'] = new_state.get( - 'temperature', cpx._Express__state['temperature']) + for event in AWAITED_EVENTLIST: + cpx._Express__state[event] = new_state.get( + event, cpx._Express__state[event]) + except Exception as e: print("Error trying to send event to the process : ", e, file=sys.stderr, flush=True) From 85e625a4a1acb6eac1a4ecf86cfc01e56def7581 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 01:21:11 -0700 Subject: [PATCH 28/72] added api call --- src/adafruit_circuitplayground/express.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 7000f445e..f54e9359a 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -8,7 +8,6 @@ from .pixel import Pixel from . import utils - class Express: def __init__(self): # State in the Python process @@ -30,7 +29,8 @@ def __init__(self): ], 'red_led': False, 'switch': False, - 'temperature': 0 + 'temperature': 0, + 'light': 0 } self.pixels = Pixel(self.__state) @@ -61,6 +61,10 @@ def switch(self): def temperature(self): return self.__state['temperature'] + @property + def light(self):(self): + return self.__state['light'] + def __show(self): utils.show(self.__state) From b06b5db90e17865c047c1ac35941357aff2f5c4e Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Sun, 21 Jul 2019 01:28:50 -0700 Subject: [PATCH 29/72] solved error --- src/adafruit_circuitplayground/express.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index f54e9359a..895745186 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -62,7 +62,7 @@ def temperature(self): return self.__state['temperature'] @property - def light(self):(self): + def light(self): return self.__state['light'] def __show(self): From a1ecab00a06f428dc8e075b7365e4489d0d4a101 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Sun, 21 Jul 2019 01:58:37 -0700 Subject: [PATCH 30/72] added API call --- src/process_user_code.py | 2 +- src/view/components/toolbar/InputSlider.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/process_user_code.py b/src/process_user_code.py index c465faf71..c2ec29ada 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -13,7 +13,7 @@ AWAITED_EVENTLIST =[ 'button_a', 'button_b', - 'switch' + 'switch', 'temperature', 'light' ] diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 8e23482cc..64c5bf2d8 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -73,7 +73,7 @@ class InputSlider extends React.Component { private setMessage(event: React.ChangeEvent) { let newSensorState; if (this.props.type && this.state.value && event.target.valueAsNumber) { - newSensorState = { temperature: event.target.valueAsNumber }; + newSensorState = { [this.props.type]: event.target.valueAsNumber }; } return newSensorState; } From e2c4bd8d99dcd2776a3a983409db07c0856c29db Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Sun, 21 Jul 2019 02:27:33 -0700 Subject: [PATCH 31/72] adding support for stop button --- src/view/components/toolbar/InputSlider.tsx | 27 ++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 263670af3..458eae439 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -35,6 +35,31 @@ class InputSlider extends React.Component { this.validateRange = this.validateRange.bind(this); } + handleMessage = (event: any): void => { + const message = event.data; // The JSON data our extension sent + switch (message.command) { + case "reset-state": + this.setState({ value: 0 }); + break; + case "set-state": + console.log("Setting the state: " + JSON.stringify(message.state)); + break; + default: + console.log("Invalid message received from the extension."); + this.setState({ value: 0 }); + break; + } + }; + + componentDidMount() { + console.log("Mounted"); + window.addEventListener("message", this.handleMessage); + } + + componentWillUnmount() { + // Make sure to remove the DOM listener when the component is unmounted. + window.removeEventListener("message", this.handleMessage); + } render() { return (
@@ -85,7 +110,7 @@ class InputSlider extends React.Component { private setMessage(event: React.ChangeEvent) { let newSensorState; if (this.props.type && this.state.value && event.target.valueAsNumber) { - newSensorState = { temperature: event.target.valueAsNumber }; + newSensorState = { [this.props.type]: event.target.valueAsNumber }; } return newSensorState; } From 8f837fbcc1bb67ac72ce0f79fb9c1f952cc09502 Mon Sep 17 00:00:00 2001 From: FMounz <43461676+FMounz@users.noreply.github.com> Date: Sun, 21 Jul 2019 03:00:33 -0700 Subject: [PATCH 32/72] Update src/extension.ts Co-Authored-By: Luke Slevinsky --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 03c531d90..d0b4363b1 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -457,7 +457,7 @@ const getFileFromFilePicker = () => { return vscode.window.showOpenDialog(options).then(fileUri => { if (fileUri && fileUri[0]) { - console.log("Selected file: " + fileUri[0].fsPath); + console.log(`Selected file: ${fileUri[0].fsPath}`); return fileUri[0].fsPath; } }); From a6813b68e3456b1a3bbe351ccf857939563d50c5 Mon Sep 17 00:00:00 2001 From: FMounz <43461676+FMounz@users.noreply.github.com> Date: Sun, 21 Jul 2019 03:00:43 -0700 Subject: [PATCH 33/72] Update src/view/components/toolbar/TemperatureSensorBar.tsx Co-Authored-By: Luke Slevinsky --- src/view/components/toolbar/TemperatureSensorBar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index c415d1d3c..c49622edd 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -35,7 +35,7 @@ class TemperatureSensorBar extends React.Component {
- {TEMPERATURE_SENSOR_PROPERTIES.LABEL + " " + CELSIUS_STATE.unitLabel} + {TEMPERATURE_SENSOR_PROPERTIES.LABEL} {CELSIUS_STATE.unitLabel}
Date: Sun, 21 Jul 2019 03:06:48 -0700 Subject: [PATCH 34/72] rework setmessage --- src/view/components/toolbar/InputSlider.tsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 411dbf303..c4dc476ae 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -43,7 +43,7 @@ class InputSlider extends React.Component { value={this.state.value} onInputCapture={this.handleOnChange} defaultValue={this.props.min.toLocaleString()} - pattern="[-?0-9]*" + pattern="^-?[0-9]*$" onKeyUp={this.validateRange} />
@@ -73,18 +73,16 @@ class InputSlider extends React.Component { private handleOnChange(event: React.ChangeEvent) { this.updateValue(event); this.validateRange(); - const newSensorState = this.setMessage(event); + const newSensorState = this.writeMessage(event); if (newSensorState) { sendMessage(newSensorState); } } - private setMessage(event: React.ChangeEvent) { - let newSensorState; - if (this.props.type && this.state.value && event.target.valueAsNumber) { - newSensorState = { temperature: event.target.valueAsNumber }; - } - return newSensorState; + private writeMessage(event: React.ChangeEvent) { + return this.props.type && this.state.value && event.target.valueAsNumber + ? { temperature: event.target.valueAsNumber } + : undefined; } private updateValue(event: React.ChangeEvent) { From 35719eab256d8b56715889dcb5f08c306d6fe740 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 03:12:38 -0700 Subject: [PATCH 35/72] reformat --- src/extension.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index d0b4363b1..a5b026c11 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -158,11 +158,9 @@ export function activate(context: vscode.ExtensionContext) { vscode.window .showInformationMessage( CONSTANTS.INFO.NEW_PROJECT, - ...[ DialogResponses.DONT_SHOW, DialogResponses.EXAMPLE_CODE, DialogResponses.TUTORIALS - ] ) .then((selection: vscode.MessageItem | undefined) => { if (selection === DialogResponses.DONT_SHOW) { @@ -365,7 +363,7 @@ export function activate(context: vscode.ExtensionContext) { vscode.window .showErrorMessage( CONSTANTS.ERROR.NO_DEVICE, - ...[DialogResponses.HELP] + DialogResponses.HELP ) .then((selection: vscode.MessageItem | undefined) => { if (selection === DialogResponses.HELP) { From 9e114a40c0c19755dfe208ae0bd6b3d98f29421a Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 11:09:05 -0700 Subject: [PATCH 36/72] let's follow best practices --- src/view/components/toolbar/TemperatureSensorBar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index c49622edd..a7ee96360 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -35,7 +35,7 @@ class TemperatureSensorBar extends React.Component {
- {TEMPERATURE_SENSOR_PROPERTIES.LABEL} {CELSIUS_STATE.unitLabel} + {`${TEMPERATURE_SENSOR_PROPERTIES.LABEL} ${CELSIUS_STATE.unitLabel}`}
Date: Sun, 21 Jul 2019 12:32:38 -0700 Subject: [PATCH 37/72] resolved issue with input --- src/view/components/toolbar/InputSlider.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index a026c50ff..0c2eccdbf 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -66,7 +66,7 @@ class InputSlider extends React.Component { type="text" className="sliderValue" value={this.state.value} - onInputCapture={this.handleOnChange} + onInput={this.handleOnChange} defaultValue={this.props.min.toLocaleString()} pattern="^-?[0-9]*$" onKeyUp={this.validateRange} @@ -105,8 +105,9 @@ class InputSlider extends React.Component { } private writeMessage(event: React.ChangeEvent) { - return this.props.type && this.state.value && event.target.valueAsNumber - ? { temperature: event.target.valueAsNumber } + parseInt(event.target.value, 10); + return this.props.type && this.state.value && event.target.value + ? { temperature: parseInt(event.target.value, 10) } : undefined; } @@ -114,6 +115,7 @@ class InputSlider extends React.Component { const newValue = event.target.validity.valid ? event.target.value : this.state.value; + console.log(`set state to ${this.state.value}`); this.setState({ value: newValue }); } From 6dfc25577211f88cdf5d945f53d957aa75448b4d Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Sun, 21 Jul 2019 12:40:16 -0700 Subject: [PATCH 38/72] removed dead lines --- src/view/components/toolbar/InputSlider.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 6bb92a990..1b719c3a8 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -96,7 +96,6 @@ class InputSlider extends React.Component { } private writeMessage(event: React.ChangeEvent) { - parseInt(event.target.value, 10); return this.props.type && this.state.value && event.target.value ? { temperature: parseInt(event.target.value, 10) } : undefined; From 1f8927f4f1593a5efe941c9ad3307c722cb2ea60 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 19:36:33 -0700 Subject: [PATCH 39/72] added motion sensor control --- src/view/App.tsx | 2 + src/view/components/toolbar/InputSlider.css | 2 +- .../components/toolbar/LightSensorBar.tsx | 12 +-- .../components/toolbar/MotionSensorBar.css | 19 +++++ .../components/toolbar/MotionSensorBar.tsx | 82 +++++++++++++++++++ .../toolbar/TemperatureSensorBar.tsx | 13 ++- .../components/toolbar/Toolbar_ressources.tsx | 2 +- 7 files changed, 117 insertions(+), 15 deletions(-) create mode 100644 src/view/components/toolbar/MotionSensorBar.css create mode 100644 src/view/components/toolbar/MotionSensorBar.tsx diff --git a/src/view/App.tsx b/src/view/App.tsx index b1689b41c..3d80b6e68 100644 --- a/src/view/App.tsx +++ b/src/view/App.tsx @@ -5,6 +5,7 @@ import * as React from "react"; import Simulator from "./components/Simulator"; import TemperatureSensorBar from "./components/toolbar/TemperatureSensorBar" +import MotionSensorBar from "./components/toolbar/MotionSensorBar" import LightSensorBar from "./components/toolbar/LightSensorBar" import "./App.css"; @@ -16,6 +17,7 @@ class App extends React.Component { +
diff --git a/src/view/components/toolbar/InputSlider.css b/src/view/components/toolbar/InputSlider.css index cafea8012..c7c1ce401 100644 --- a/src/view/components/toolbar/InputSlider.css +++ b/src/view/components/toolbar/InputSlider.css @@ -3,7 +3,7 @@ } .inputSlider{ height: 50px; - margin-bottom: 100px; + margin-bottom: 40px; } .sliderValue{ text-align: center; diff --git a/src/view/components/toolbar/LightSensorBar.tsx b/src/view/components/toolbar/LightSensorBar.tsx index ea2310167..0c501bd11 100644 --- a/src/view/components/toolbar/LightSensorBar.tsx +++ b/src/view/components/toolbar/LightSensorBar.tsx @@ -16,7 +16,7 @@ const LIGHT_SLIDER_PROPS: ISliderProps = { const LIGHT_SENSOR_PROPERTIES: ISensorProps = { LABEL: "Light sensor", - sliderProps: LIGHT_SLIDER_PROPS, + sliderProps: [LIGHT_SLIDER_PROPS], unitLabel: "Lux" }; @@ -36,11 +36,11 @@ class LightSensorBar extends React.Component {
); diff --git a/src/view/components/toolbar/MotionSensorBar.css b/src/view/components/toolbar/MotionSensorBar.css new file mode 100644 index 000000000..3d4dddfa7 --- /dev/null +++ b/src/view/components/toolbar/MotionSensorBar.css @@ -0,0 +1,19 @@ + + +.title{ + font-size: 14px; + text-align: left; +} + +.header{ + -webkit-appearance: none; + height: 30px; + margin-bottom: 2px; +} + +.lightSensorBar{ + margin-top: 10px; + width: 440px; + margin-left: auto; + margin-right: auto; +} diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx new file mode 100644 index 000000000..84e2c346f --- /dev/null +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +import * as React from "react"; +import InputSlider from "./InputSlider"; +import "./MotionSensorBar.css"; +import { ISensorProps, ISliderProps } from "./Toolbar_ressources"; + +const MOTION_SLIDER_PROPS_X: ISliderProps = { + maxValue: 125, + minValue: -55, + minLabel: "Left", + maxLabel: "Right", + type: "motion_x" +}; +const MOTION_SLIDER_PROPS_Y: ISliderProps = { + maxValue: 125, + minValue: -55, + minLabel: "Back", + maxLabel: "Front", + type: "motion_y" +}; +const MOTION_SLIDER_PROPS_Z: ISliderProps = { + maxValue: 125, + minValue: -55, + minLabel: "Up", + maxLabel: "Down", + type: "motion_z" +}; + +const MOTION_SENSOR_PROPERTIES: ISensorProps = { + LABEL: "Motion sensor", + sliderProps: [ + MOTION_SLIDER_PROPS_X, + MOTION_SLIDER_PROPS_Y, + MOTION_SLIDER_PROPS_Z + ], + unitLabel: "Lux" +}; + +class MotionSensorBar extends React.Component { + constructor(props: any) { + super(props); + } + + render() { + return ( +
+
+
+ {`${MOTION_SENSOR_PROPERTIES.LABEL} (${ + MOTION_SENSOR_PROPERTIES.unitLabel + })`} +
+
+ + + +
+ ); + } +} + +export default MotionSensorBar; diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index 81badd082..e407c43cf 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -13,10 +13,9 @@ const TEMPERATURE_SLIDER_PROPS: ISliderProps = { maxLabel: "Hot", type: "temperature" }; - const TEMPERATURE_SENSOR_PROPERTIES: ISensorProps = { LABEL: "Temperature sensor", - sliderProps: TEMPERATURE_SLIDER_PROPS, + sliderProps: [TEMPERATURE_SLIDER_PROPS], unitLabel: "°C" }; @@ -36,11 +35,11 @@ class TemperatureSensorBar extends React.Component {
); diff --git a/src/view/components/toolbar/Toolbar_ressources.tsx b/src/view/components/toolbar/Toolbar_ressources.tsx index 1655f45dc..d9189faf2 100644 --- a/src/view/components/toolbar/Toolbar_ressources.tsx +++ b/src/view/components/toolbar/Toolbar_ressources.tsx @@ -8,6 +8,6 @@ export interface ISliderProps { export interface ISensorProps { LABEL: string; - sliderProps: ISliderProps; + sliderProps: ISliderProps[]; unitLabel: string; } From 795db38259b7ad818ae28462050f4ffeeeeb8013 Mon Sep 17 00:00:00 2001 From: FMounz Date: Sun, 21 Jul 2019 19:39:06 -0700 Subject: [PATCH 40/72] added api call --- src/process_user_code.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/process_user_code.py b/src/process_user_code.py index ff033200b..cc86cd5ad 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -15,7 +15,11 @@ 'button_b', 'switch', 'temperature', - 'light' + 'light', + 'motion_x', + 'motion_y', + 'motion_z' + ] read_val = "" From 98e57354c84e49365345da4b2c14c771e1e9929c Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Mon, 29 Jul 2019 11:22:06 -0700 Subject: [PATCH 41/72] added scrollbar for sensors --- src/view/App.css | 8 ++++++++ src/view/App.tsx | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/view/App.css b/src/view/App.css index 96dc96391..027396a59 100644 --- a/src/view/App.css +++ b/src/view/App.css @@ -12,3 +12,11 @@ margin-top: 51px; margin-bottom: 53px; } + +.sensor-scrollbox { + overflow-y: scroll; + max-height: 250px; + margin-left: auto; + margin-right: auto; + width: fit-content; +} \ No newline at end of file diff --git a/src/view/App.tsx b/src/view/App.tsx index 006c92f2f..ea772a13e 100644 --- a/src/view/App.tsx +++ b/src/view/App.tsx @@ -13,7 +13,9 @@ class App extends React.Component {
- +
+ +
); From 9971cee189b1986fb1b6a73fe8a8a631a98f9295 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Mon, 29 Jul 2019 11:22:57 -0700 Subject: [PATCH 42/72] reduced size so people can see --- src/view/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/view/App.css b/src/view/App.css index 027396a59..2f03d23fd 100644 --- a/src/view/App.css +++ b/src/view/App.css @@ -15,7 +15,7 @@ .sensor-scrollbox { overflow-y: scroll; - max-height: 250px; + max-height: 50px; margin-left: auto; margin-right: auto; width: fit-content; From e5f5ef02ba5f8c44ce98dbe43419d271fe117c63 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Mon, 29 Jul 2019 13:02:59 -0700 Subject: [PATCH 43/72] adding logic for sensor --- src/adafruit_circuitplayground/express.py | 20 ++++++++++++++++---- src/view/components/toolbar/InputSlider.tsx | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 895745186..764ea29d3 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -8,6 +8,7 @@ from .pixel import Pixel from . import utils + class Express: def __init__(self): # State in the Python process @@ -30,12 +31,19 @@ def __init__(self): 'red_led': False, 'switch': False, 'temperature': 0, - 'light': 0 + 'light': 0, + 'motion_x': 0, + 'motion_y': 0, + 'motion_z': 0 } self.pixels = Pixel(self.__state) self.__abs_path_to_code_file = '' + @property + def acceleration(self): + return (self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) + @property def button_a(self): return self.__state['button_a'] @@ -70,8 +78,10 @@ def __show(self): def play_file(self, file_name): file_name = utils.remove_leading_slashes(file_name) - abs_path_parent_dir = os.path.abspath(os.path.join(self.__abs_path_to_code_file, os.pardir)) - abs_path_wav_file = os.path.normpath(os.path.join(abs_path_parent_dir, file_name)) + abs_path_parent_dir = os.path.abspath( + os.path.join(self.__abs_path_to_code_file, os.pardir)) + abs_path_wav_file = os.path.normpath( + os.path.join(abs_path_parent_dir, file_name)) if sys.implementation.version[0] >= 3: if file_name.endswith(".wav"): @@ -79,10 +89,12 @@ def play_file(self, file_name): playsound(abs_path_wav_file) except: # TODO TASK: 29054 Verfication of a "valid" .wav file - raise EnvironmentError("Your .wav file is not suitable for the Circuit Playground Express.") + raise EnvironmentError( + "Your .wav file is not suitable for the Circuit Playground Express.") else: raise TypeError(file_name + " is not a path to a .wav file.") else: raise NotImplementedError("Please use Python 3 or higher.") + cpx = Express() diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 75dffc3d0..a99c2df77 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -97,7 +97,7 @@ class InputSlider extends React.Component { private writeMessage(event: React.ChangeEvent) { return this.props.type && this.state.value && event.target.value - ? { temperature: parseInt(event.target.value, 10) } + ? { [this.props.type]: parseInt(event.target.value, 10) } : undefined; } From 6c295666da6f435f066de5615182f5bff49fd5bc Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Mon, 29 Jul 2019 13:06:56 -0700 Subject: [PATCH 44/72] removed API call --- src/adafruit_circuitplayground/express.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 764ea29d3..6648b7b0d 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -32,17 +32,11 @@ def __init__(self): 'switch': False, 'temperature': 0, 'light': 0, - 'motion_x': 0, - 'motion_y': 0, - 'motion_z': 0 } self.pixels = Pixel(self.__state) self.__abs_path_to_code_file = '' - @property - def acceleration(self): - return (self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) @property def button_a(self): From dbdc1065169cfeccb5f7ee4c2b65a4269136164a Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 31 Jul 2019 14:46:14 -0700 Subject: [PATCH 45/72] solved font color for light theme --- src/view/components/toolbar/InputSlider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/view/components/toolbar/InputSlider.css b/src/view/components/toolbar/InputSlider.css index 06488ac8e..2851b172a 100644 --- a/src/view/components/toolbar/InputSlider.css +++ b/src/view/components/toolbar/InputSlider.css @@ -17,6 +17,7 @@ margin-right: 15px; margin-top: auto; margin-bottom: auto; + color: var(--badge-foreground); } .slider { From 0309e65dfba66cd1238138d2466308d632c1bb32 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 31 Jul 2019 16:24:14 -0700 Subject: [PATCH 46/72] adding shake function --- src/adafruit_circuitplayground/express.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 0af1a9bfe..7d5af435f 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -34,7 +34,8 @@ def __init__(self): 'light': 0, 'motion_x': 0, 'motion_y': 0, - 'motion_z': 0 + 'motion_z': 0, + 'shake': False } self.pixels = Pixel(self.__state) @@ -72,6 +73,9 @@ def light(self): def __show(self): utils.show(self.__state) + def shake(self, shake_threshold=30): + return return self.__state['shake'] + def play_file(self, file_name): file_name = utils.remove_leading_slashes(file_name) abs_path_parent_dir = os.path.abspath( From 69ab94640969791155c0063237e4201ec02cd273 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 31 Jul 2019 18:04:07 -0700 Subject: [PATCH 47/72] adding event --- src/adafruit_circuitplayground/express.py | 2 +- src/process_user_code.py | 3 ++- src/view/components/toolbar/MotionSensorBar.tsx | 2 +- src/view/components/toolbar/Toolbar_ressources.tsx | 13 ------------- 4 files changed, 4 insertions(+), 16 deletions(-) delete mode 100644 src/view/components/toolbar/Toolbar_ressources.tsx diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 7d5af435f..9b389beba 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -74,7 +74,7 @@ def __show(self): utils.show(self.__state) def shake(self, shake_threshold=30): - return return self.__state['shake'] + return self.__state['shake'] def play_file(self, file_name): file_name = utils.remove_leading_slashes(file_name) diff --git a/src/process_user_code.py b/src/process_user_code.py index e22f2cb96..9fe0cb5a9 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -18,7 +18,8 @@ 'light', 'motion_x', 'motion_y', - 'motion_z' + 'motion_z', + 'shake', ] diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx index 0268a210c..da777c679 100644 --- a/src/view/components/toolbar/MotionSensorBar.tsx +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import InputSlider from "./InputSlider"; import "./MotionSensorBar.css"; -import { ISensorProps, ISliderProps } from "./Toolbar_ressources"; +import { ISensorProps, ISliderProps } from "./Toolbar_utils"; const MOTION_SLIDER_PROPS_X: ISliderProps = { maxValue: 125, diff --git a/src/view/components/toolbar/Toolbar_ressources.tsx b/src/view/components/toolbar/Toolbar_ressources.tsx deleted file mode 100644 index d9189faf2..000000000 --- a/src/view/components/toolbar/Toolbar_ressources.tsx +++ /dev/null @@ -1,13 +0,0 @@ -export interface ISliderProps { - minValue: number; - maxValue: number; - maxLabel: string; - minLabel: string; - type: string; -} - -export interface ISensorProps { - LABEL: string; - sliderProps: ISliderProps[]; - unitLabel: string; -} From 0aeae7ddc59855d216554d682bd48cc2262e6778 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 31 Jul 2019 18:26:15 -0700 Subject: [PATCH 48/72] restaored api call --- src/adafruit_circuitplayground/express.py | 4 ++++ src/view/components/toolbar/InputSlider.tsx | 12 +++++++++++- src/view/components/toolbar/Toolbar_utils.tsx | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 0af1a9bfe..764ea29d3 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -40,6 +40,10 @@ def __init__(self): self.pixels = Pixel(self.__state) self.__abs_path_to_code_file = '' + @property + def acceleration(self): + return (self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) + @property def button_a(self): return self.__state['button_a'] diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 81ad1a121..30a0f62e8 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -3,7 +3,11 @@ import * as React from "react"; import "./InputSlider.css"; -import { ISliderProps } from "./Toolbar_utils"; +import { + ISliderProps, + SHAKE_SENSOR_EVENT, + MOTION_PREFIX +} from "./Toolbar_utils"; interface vscode { postMessage(message: any): void; @@ -98,6 +102,9 @@ class InputSlider extends React.Component { if (newSensorState) { sendMessage(newSensorState); } + if (this.props.type.includes(MOTION_PREFIX)) { + sendMessage(this.writeShakeMessage); + } } private writeMessage(event: React.ChangeEvent) { @@ -121,6 +128,9 @@ class InputSlider extends React.Component { this.setState({ value: this.props.maxValue }); } } + private writeShakeMessage() { + return { [SHAKE_SENSOR_EVENT]: true }; + } } export default InputSlider; diff --git a/src/view/components/toolbar/Toolbar_utils.tsx b/src/view/components/toolbar/Toolbar_utils.tsx index d85ee3f1f..efe980035 100644 --- a/src/view/components/toolbar/Toolbar_utils.tsx +++ b/src/view/components/toolbar/Toolbar_utils.tsx @@ -13,3 +13,6 @@ export interface ISensorProps { sliderProps: ISliderProps[]; unitLabel: string; } + +export const SHAKE_SENSOR_EVENT: string = "shake"; +export const MOTION_PREFIX: string = "motion"; From 3ea4dcc6d79510cf44606d96efbfd5eea28741cb Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 31 Jul 2019 18:50:08 -0700 Subject: [PATCH 49/72] added shake state with no out condition --- src/process_user_code.py | 5 +- ...ode.py.5a0ed1b4cd171c783e2b1c47dfc4284b.py | 90 +++++++++++++++++++ src/view/components/toolbar/InputSlider.tsx | 3 +- 3 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 src/process_user_code.py.5a0ed1b4cd171c783e2b1c47dfc4284b.py diff --git a/src/process_user_code.py b/src/process_user_code.py index 9fe0cb5a9..d533e04be 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -19,8 +19,6 @@ 'motion_x', 'motion_y', 'motion_z', - 'shake', - ] read_val = "" @@ -41,6 +39,9 @@ def run(self): for event in EXPECTED_INPUT_EVENTS: cpx._Express__state[event] = new_state.get( event, cpx._Express__state[event]) + if event.find('motion') >= 0: + cpx._Express__state['shake'] = True + print('motion detected') except Exception as e: print("Error trying to send event to the process : ", diff --git a/src/process_user_code.py.5a0ed1b4cd171c783e2b1c47dfc4284b.py b/src/process_user_code.py.5a0ed1b4cd171c783e2b1c47dfc4284b.py new file mode 100644 index 000000000..d533e04be --- /dev/null +++ b/src/process_user_code.py.5a0ed1b4cd171c783e2b1c47dfc4284b.py @@ -0,0 +1,90 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +import os +import sys +import json +import threading +import copy +from adafruit_circuitplayground.express import cpx +from pathlib import Path +import traceback + +EXPECTED_INPUT_EVENTS = [ + 'button_a', + 'button_b', + 'switch', + 'temperature', + 'light', + 'motion_x', + 'motion_y', + 'motion_z', +] + +read_val = "" + + +class UserInput(threading.Thread): + + def __init__(self): + threading.Thread.__init__(self) + + def run(self): + from adafruit_circuitplayground.express import cpx + while True: + read_val = sys.stdin.readline() + sys.stdin.flush() + try: + new_state = json.loads(read_val) + for event in EXPECTED_INPUT_EVENTS: + cpx._Express__state[event] = new_state.get( + event, cpx._Express__state[event]) + if event.find('motion') >= 0: + cpx._Express__state['shake'] = True + print('motion detected') + + except Exception as e: + print("Error trying to send event to the process : ", + e, file=sys.stderr, flush=True) + + +# Insert absolute path to Adafruit library into sys.path +abs_path_to_parent_dir = os.path.dirname(os.path.abspath(__file__)) +library_name = "adafruit_circuitplayground" +abs_path_to_lib = os.path.join(abs_path_to_parent_dir, library_name) +sys.path.insert(0, abs_path_to_lib) + +threads = [] +user_input = UserInput() +threads.append(user_input) +user_input.start() + +# User code thread + + +def execute_user_code(abs_path_to_code_file): + cpx._Express__abs_path_to_code_file = abs_path_to_code_file + # Execute the user's code.py file + with open(abs_path_to_code_file) as file: + user_code = file.read() + try: + codeObj = compile(user_code, abs_path_to_code_file, 'exec') + exec(codeObj) + sys.stdout.flush() + except Exception as e: + exc_type, exc_value, exc_traceback = sys.exc_info() + errorMessage = '\n\tTraceback of code execution : \n' + stackTrace = traceback.format_exception( + exc_type, exc_value, exc_traceback) + + for frameIndex in range(2, len(stackTrace) - 1): + errorMessage += '\t' + str(stackTrace[frameIndex]) + print(e, errorMessage, file=sys.stderr, flush=True) + + +user_code = threading.Thread(args=(sys.argv[1],), target=execute_user_code) +threads.append(user_code) +user_code.start() + +for thread in threads: + thread.join() diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 30a0f62e8..da7a34c24 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -15,7 +15,7 @@ interface vscode { declare const vscode: vscode; -const sendMessage = (state: any) => { +const sendMessage = (state: any, shake?: boolean) => { vscode.postMessage({ command: "sensor-changed", text: state }); }; @@ -103,6 +103,7 @@ class InputSlider extends React.Component { sendMessage(newSensorState); } if (this.props.type.includes(MOTION_PREFIX)) { + console.log("motion detected"); sendMessage(this.writeShakeMessage); } } From be8622cc96474950e25cda8f12b9a68231e07fdd Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 1 Aug 2019 08:12:31 -0700 Subject: [PATCH 50/72] added shake button --- src/view/components/toolbar/MotionSensorBar.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx index da777c679..b73ac3fad 100644 --- a/src/view/components/toolbar/MotionSensorBar.tsx +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -76,6 +76,10 @@ class MotionSensorBar extends React.Component { minLabel={MOTION_SENSOR_PROPERTIES.sliderProps[2].minLabel} maxLabel={MOTION_SENSOR_PROPERTIES.sliderProps[2].maxLabel} /> +
+
); } From c8df8ddfe4c73844fe351ada161c69f0d79f7a03 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 1 Aug 2019 11:03:42 -0700 Subject: [PATCH 51/72] adding a sensor button --- src/process_user_code.py | 6 +-- src/view/components/toolbar/InputSlider.tsx | 16 ++----- .../components/toolbar/MotionSensorBar.tsx | 5 +-- src/view/components/toolbar/SensorButton.tsx | 43 +++++++++++++++++++ src/view/components/toolbar/Toolbar_utils.tsx | 5 +++ src/view/styles/SensorButton.css | 0 6 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 src/view/components/toolbar/SensorButton.tsx create mode 100644 src/view/styles/SensorButton.css diff --git a/src/process_user_code.py b/src/process_user_code.py index d533e04be..d7f142d67 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -19,6 +19,7 @@ 'motion_x', 'motion_y', 'motion_z', + 'shake' ] read_val = "" @@ -36,12 +37,11 @@ def run(self): sys.stdin.flush() try: new_state = json.loads(read_val) + print('newstae is ') + print(new_state) for event in EXPECTED_INPUT_EVENTS: cpx._Express__state[event] = new_state.get( event, cpx._Express__state[event]) - if event.find('motion') >= 0: - cpx._Express__state['shake'] = True - print('motion detected') except Exception as e: print("Error trying to send event to the process : ", diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index da7a34c24..ddea77737 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -3,11 +3,7 @@ import * as React from "react"; import "./InputSlider.css"; -import { - ISliderProps, - SHAKE_SENSOR_EVENT, - MOTION_PREFIX -} from "./Toolbar_utils"; +import { ISliderProps } from "./Toolbar_utils"; interface vscode { postMessage(message: any): void; @@ -15,7 +11,8 @@ interface vscode { declare const vscode: vscode; -const sendMessage = (state: any, shake?: boolean) => { +const sendMessage = (state: any) => { + console.log("posting shake"); vscode.postMessage({ command: "sensor-changed", text: state }); }; @@ -102,10 +99,6 @@ class InputSlider extends React.Component { if (newSensorState) { sendMessage(newSensorState); } - if (this.props.type.includes(MOTION_PREFIX)) { - console.log("motion detected"); - sendMessage(this.writeShakeMessage); - } } private writeMessage(event: React.ChangeEvent) { @@ -129,9 +122,6 @@ class InputSlider extends React.Component { this.setState({ value: this.props.maxValue }); } } - private writeShakeMessage() { - return { [SHAKE_SENSOR_EVENT]: true }; - } } export default InputSlider; diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx index b73ac3fad..a1703797c 100644 --- a/src/view/components/toolbar/MotionSensorBar.tsx +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -5,6 +5,7 @@ import * as React from "react"; import InputSlider from "./InputSlider"; import "./MotionSensorBar.css"; import { ISensorProps, ISliderProps } from "./Toolbar_utils"; +import SensorButton from "./SensorButton"; const MOTION_SLIDER_PROPS_X: ISliderProps = { maxValue: 125, @@ -77,9 +78,7 @@ class MotionSensorBar extends React.Component { maxLabel={MOTION_SENSOR_PROPERTIES.sliderProps[2].maxLabel} />
- +
); } diff --git a/src/view/components/toolbar/SensorButton.tsx b/src/view/components/toolbar/SensorButton.tsx new file mode 100644 index 000000000..baffb355e --- /dev/null +++ b/src/view/components/toolbar/SensorButton.tsx @@ -0,0 +1,43 @@ +import * as React from "react"; +import { ISensorButtonProps } from "./Toolbar_utils"; + +interface vscode { + postMessage(message: any): void; +} + +declare const vscode: vscode; + +const sendMessage = (state: any) => { + vscode.postMessage({ command: "sensor-changed", text: state }); +}; + +class SensorButton extends React.Component { + constructor(props: any) { + super(props); + this.state = { + isActive: false + }; + this.handleOnclick = this.handleOnclick.bind(this); + } + + render() { + return ( + + ); + } + + private handleOnclick() { + this.writeMessage(true); + } + private writeMessage(isActive: boolean) { + const messageState = { [this.props.type]: true }; + sendMessage(messageState); + } +} + +export default SensorButton; diff --git a/src/view/components/toolbar/Toolbar_utils.tsx b/src/view/components/toolbar/Toolbar_utils.tsx index efe980035..0d86abf35 100644 --- a/src/view/components/toolbar/Toolbar_utils.tsx +++ b/src/view/components/toolbar/Toolbar_utils.tsx @@ -8,6 +8,11 @@ export interface ISliderProps { type: string; } +export interface ISensorButtonProps { + label: string; + type: string; +} + export interface ISensorProps { LABEL: string; sliderProps: ISliderProps[]; diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css new file mode 100644 index 000000000..e69de29bb From de287c68fb7da145eb707849c56606a2b1ff26c9 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 1 Aug 2019 17:00:16 -0700 Subject: [PATCH 52/72] adding accessibility function --- src/view/components/toolbar/SensorButton.tsx | 49 ++++++++++++++++---- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/src/view/components/toolbar/SensorButton.tsx b/src/view/components/toolbar/SensorButton.tsx index baffb355e..3a08d950a 100644 --- a/src/view/components/toolbar/SensorButton.tsx +++ b/src/view/components/toolbar/SensorButton.tsx @@ -14,16 +14,17 @@ const sendMessage = (state: any) => { class SensorButton extends React.Component { constructor(props: any) { super(props); - this.state = { - isActive: false - }; - this.handleOnclick = this.handleOnclick.bind(this); + this.onMouseUp = this.onMouseUp.bind(this); + this.onMouseDown = this.onMouseDown.bind(this); + this.onKeyEvent = this.onKeyEvent.bind(this); } render() { return ( diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css index e69de29bb..8bee10af9 100644 --- a/src/view/styles/SensorButton.css +++ b/src/view/styles/SensorButton.css @@ -0,0 +1,21 @@ +.sensor-button { + color: var(--vscode-badge-foreground); + text-align: center; + background-color: var(--vscode-button-background); + width: 343px; + height: 32px; + border: none; + font-weight: bolder; + margin-top: 30px; +} + +.sensor-button:focus { + outline: var(--vscode-focusBorder); + outline-width: thick; + outline-offset: 15px; + outline-style: auto; +} +.sensor-button:hover { + outline: none; + background-color: var(--vscode-button-hoverBackground); +} From 69850b91a7c483906be85be8de507e863fc60ea9 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 1 Aug 2019 18:49:34 -0700 Subject: [PATCH 55/72] moved button to top --- src/view/components/toolbar/MotionSensorBar.tsx | 3 ++- src/view/styles/ModalButton.css | 3 --- src/view/styles/SensorButton.css | 3 +++ 3 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 src/view/styles/ModalButton.css diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx index 61133739b..359211089 100644 --- a/src/view/components/toolbar/MotionSensorBar.tsx +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -58,6 +58,8 @@ class MotionSensorBar extends React.Component {
{MOTION_SENSOR_PROPERTIES.LABEL}
+ +

-
); } diff --git a/src/view/styles/ModalButton.css b/src/view/styles/ModalButton.css deleted file mode 100644 index c25231c87..000000000 --- a/src/view/styles/ModalButton.css +++ /dev/null @@ -1,3 +0,0 @@ -.modal_button { - display: inline; -} diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css index 8bee10af9..34df0028c 100644 --- a/src/view/styles/SensorButton.css +++ b/src/view/styles/SensorButton.css @@ -7,6 +7,9 @@ border: none; font-weight: bolder; margin-top: 30px; + margin-bottom: 30px; + float: left; + padding-left: 20px; } .sensor-button:focus { From 546eec17c884fc36e9944aa8219b1b6f479c6fe4 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 1 Aug 2019 18:55:58 -0700 Subject: [PATCH 56/72] removed useless lines --- src/process_user_code.py | 2 -- src/view/components/toolbar/InputSlider.tsx | 1 - 2 files changed, 3 deletions(-) diff --git a/src/process_user_code.py b/src/process_user_code.py index 8d6e03018..0169e38dd 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -34,8 +34,6 @@ def run(self): sys.stdin.flush() try: new_state = json.loads(read_val) - print('newstae is ') - print(new_state) for event in EXPECTED_INPUT_EVENTS: cpx._Express__state[event] = new_state.get( event, cpx._Express__state[event]) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 75ad83a6e..a2adb8011 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -12,7 +12,6 @@ interface vscode { declare const vscode: vscode; const sendMessage = (state: any) => { - console.log("posting shake"); vscode.postMessage({ command: "sensor-changed", text: state }); }; From 9d4e5fe107fa47cb555e335859eb6c61aa7c60d1 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 1 Aug 2019 18:57:36 -0700 Subject: [PATCH 57/72] dead code removed --- src/view/components/toolbar/Toolbar_utils.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/view/components/toolbar/Toolbar_utils.tsx b/src/view/components/toolbar/Toolbar_utils.tsx index 8ca9f5557..36983dd8b 100644 --- a/src/view/components/toolbar/Toolbar_utils.tsx +++ b/src/view/components/toolbar/Toolbar_utils.tsx @@ -19,7 +19,6 @@ export interface ISensorProps { unitLabel: string; } -export const SHAKE_SENSOR_EVENT: string = "shake"; export const X_SLIDER_INDEX = 0; export const Y_SLIDER_INDEX = 1; export const Z_SLIDER_INDEX = 2; From 309783ce7c6b23ce51786fad09680a4bdae3407d Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Fri, 2 Aug 2019 08:58:41 -0700 Subject: [PATCH 58/72] cleaning up according to reviews --- src/view/components/toolbar/SensorButton.tsx | 31 +++++++------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/view/components/toolbar/SensorButton.tsx b/src/view/components/toolbar/SensorButton.tsx index 7ccc2b265..92bc50fbd 100644 --- a/src/view/components/toolbar/SensorButton.tsx +++ b/src/view/components/toolbar/SensorButton.tsx @@ -16,10 +16,6 @@ const sendMessage = (state: any) => { class SensorButton extends React.Component { constructor(props: any) { super(props); - this.onMouseUp = this.onMouseUp.bind(this); - this.onMouseDown = this.onMouseDown.bind(this); - this.onKeyUp = this.onKeyUp.bind(this); - this.onKeyDown = this.onKeyDown.bind(this); } render() { @@ -37,25 +33,20 @@ class SensorButton extends React.Component { ); } - private onMouseDown() { - this.handleOnclick(true); - } - private onKeyUp(event: React.KeyboardEvent) { + private onMouseDown = () => this.handleOnclick(true); + + private onKeyUp = (event: React.KeyboardEvent) => this.onKeyEvent(event, false); - } - private onKeyDown(event: React.KeyboardEvent) { + + private onKeyDown = (event: React.KeyboardEvent) => this.onKeyEvent(event, true); - } - private onMouseUp() { - this.handleOnclick(false); - } - private handleOnclick(active: boolean) { - this.writeMessage(active); - } - private writeMessage(isActive: boolean) { - const messageState = { [this.props.type]: isActive }; + + private onMouseUp = () => this.handleOnclick(false); + + private handleOnclick = (active: boolean) => { + const messageState = { [this.props.type]: active }; sendMessage(messageState); - } + }; private onKeyEvent( event: React.KeyboardEvent, From 53d909bf23e17cd05cd8eb22d1ca9ff063fca8a2 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Tue, 6 Aug 2019 11:04:45 -0700 Subject: [PATCH 59/72] solved issu from merge --- src/process_user_code.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/process_user_code.py b/src/process_user_code.py index 9487f9249..0aa037185 100644 --- a/src/process_user_code.py +++ b/src/process_user_code.py @@ -16,7 +16,7 @@ 'switch', 'temperature', 'light', - 'shake' + 'shake', 'motion_x', 'motion_y', 'motion_z' From 085f4a1c119522b144b3433b0afaeb495420622e Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Tue, 6 Aug 2019 11:05:34 -0700 Subject: [PATCH 60/72] solved more issues from merge --- src/adafruit_circuitplayground/express.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index de149b409..841e17d19 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -49,10 +49,6 @@ def acceleration(self): return Acceleration(self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) - @property - def acceleration(self): - return (self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) - @property def button_a(self): return self.__state['button_a'] From 5826af35f0dcc0684738e14dd587d16eb5625a64 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Tue, 6 Aug 2019 11:07:18 -0700 Subject: [PATCH 61/72] added role --- src/view/components/toolbar/SensorButton.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/view/components/toolbar/SensorButton.tsx b/src/view/components/toolbar/SensorButton.tsx index 92bc50fbd..215e160b7 100644 --- a/src/view/components/toolbar/SensorButton.tsx +++ b/src/view/components/toolbar/SensorButton.tsx @@ -25,8 +25,9 @@ class SensorButton extends React.Component { onMouseDown={this.onMouseDown} onKeyUp={this.onKeyUp} onKeyDown={this.onKeyDown} - aria-label={`${this.props.type} sensor button`} + aria-label={`${this.props.type} sensor`} className="sensor-button" + role="button" > {this.props.label} From ef9c217cc0d3581e933a12284c478b08bde57121 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Tue, 6 Aug 2019 11:27:55 -0700 Subject: [PATCH 62/72] chenges sensorButton to functionnal component --- .../components/toolbar/MotionSensorBar.tsx | 44 +++++++++++- src/view/components/toolbar/SensorButton.tsx | 68 ++++--------------- src/view/components/toolbar/Toolbar_utils.tsx | 4 ++ 3 files changed, 60 insertions(+), 56 deletions(-) diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx index 359211089..ce409e85d 100644 --- a/src/view/components/toolbar/MotionSensorBar.tsx +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -14,6 +14,17 @@ import { } from "./Toolbar_utils"; import "../../styles/MotionSensorBar.css"; +import { CONSTANTS } from "../../constants"; + +interface vscode { + postMessage(message: any): void; +} + +declare const vscode: vscode; + +const sendMessage = (state: any) => { + vscode.postMessage({ command: "sensor-changed", text: state }); +}; const MOTION_SLIDER_PROPS_X: ISliderProps = { maxValue: 125, @@ -58,7 +69,14 @@ class MotionSensorBar extends React.Component {
{MOTION_SENSOR_PROPERTIES.LABEL}
- +
); } + + private onMouseDown = () => this.handleOnclick(true, "shake"); + + private onKeyUp = (event: React.KeyboardEvent) => + this.onKeyEvent(event, false); + + private onKeyDown = (event: React.KeyboardEvent) => + this.onKeyEvent(event, true); + + private onMouseUp = () => this.handleOnclick(false, "shake"); + + private handleOnclick = (active: boolean, type: string) => { + const messageState = { [type]: active }; + sendMessage(messageState); + }; + + private onKeyEvent( + event: React.KeyboardEvent, + active: boolean + ) { + if ([event.keyCode, event.key].includes(CONSTANTS.KEYBOARD_KEYS.ENTER)) { + this.handleOnclick(active, "shake"); + } + } } export default MotionSensorBar; diff --git a/src/view/components/toolbar/SensorButton.tsx b/src/view/components/toolbar/SensorButton.tsx index 215e160b7..766dafdce 100644 --- a/src/view/components/toolbar/SensorButton.tsx +++ b/src/view/components/toolbar/SensorButton.tsx @@ -1,62 +1,20 @@ import * as React from "react"; import { ISensorButtonProps } from "./Toolbar_utils"; -import { CONSTANTS } from "../../constants"; import "../../styles/SensorButton.css"; -interface vscode { - postMessage(message: any): void; -} - -declare const vscode: vscode; - -const sendMessage = (state: any) => { - vscode.postMessage({ command: "sensor-changed", text: state }); +const SensorButton: React.FC = props => { + return ( + + ); }; -class SensorButton extends React.Component { - constructor(props: any) { - super(props); - } - - render() { - return ( - - ); - } - - private onMouseDown = () => this.handleOnclick(true); - - private onKeyUp = (event: React.KeyboardEvent) => - this.onKeyEvent(event, false); - - private onKeyDown = (event: React.KeyboardEvent) => - this.onKeyEvent(event, true); - - private onMouseUp = () => this.handleOnclick(false); - - private handleOnclick = (active: boolean) => { - const messageState = { [this.props.type]: active }; - sendMessage(messageState); - }; - - private onKeyEvent( - event: React.KeyboardEvent, - active: boolean - ) { - if ([event.keyCode, event.key].includes(CONSTANTS.KEYBOARD_KEYS.ENTER)) { - this.handleOnclick(active); - } - } -} - export default SensorButton; diff --git a/src/view/components/toolbar/Toolbar_utils.tsx b/src/view/components/toolbar/Toolbar_utils.tsx index 36983dd8b..2473d1051 100644 --- a/src/view/components/toolbar/Toolbar_utils.tsx +++ b/src/view/components/toolbar/Toolbar_utils.tsx @@ -11,6 +11,10 @@ export interface ISliderProps { export interface ISensorButtonProps { label: string; type: string; + onMouseUp: () => void; + onMouseDown: () => void; + onKeyUp: (event: React.KeyboardEvent) => void; + onKeyDown: (event: React.KeyboardEvent) => void; } export interface ISensorProps { From cc663be865a2875d259aa7a3a91f9be3b8534c08 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 09:56:53 -0700 Subject: [PATCH 63/72] added test for shake sesor --- .../test/test_express.py | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/adafruit_circuitplayground/test/test_express.py b/src/adafruit_circuitplayground/test/test_express.py index cc8a443fe..12094ac52 100644 --- a/src/adafruit_circuitplayground/test/test_express.py +++ b/src/adafruit_circuitplayground/test/test_express.py @@ -3,6 +3,7 @@ from ..express import Express from ..pixel import Pixel + class TestExpress(object): def setup_method(self): @@ -17,11 +18,11 @@ def setup_method(self): } self.pixels = Pixel(self.__state) self.__speaker_enabled = False - + def test_button_a(self): self.cpx._Express__state['button_a'] = True assert True == self.cpx.button_a - + def test_button_b(self): self.cpx._Express__state['button_b'] = True assert True == self.cpx.button_b @@ -29,11 +30,11 @@ def test_button_b(self): def test_red_led(self): self.cpx._Express__state['red_led'] = True assert True == self.cpx.red_led - + def test_red_led_int(self): self.cpx.red_led = 3 assert True == self.cpx.red_led - + def test_red_led_string(self): self.cpx.red_led = 'foo' assert True == self.cpx.red_led @@ -53,11 +54,15 @@ def test_set_item_list(self): def test_set_item_hex(self): self.cpx.pixels[0] = 0xFFFFFF assert (255, 255, 255) == self.cpx._Express__state['pixels'][0] - + def test_set_item_invalid(self): with pytest.raises(ValueError): self.cpx.pixels[0] = "hello" - + + def test_shake(self): + self.cpx._Express__state['shake'] = True + assert True == self.cpx.shake() + def test_play_file_mp4(self): with pytest.raises(TypeError): self.cpx.play_file('sample.mp4') @@ -68,21 +73,24 @@ def test_fill(self): assert expected_pixels == self.cpx._Express__state['pixels'] def test_extract_pixel_value_list(self): - assert (0, 255, 0) == self.cpx.pixels._Pixel__extract_pixel_value((0, 255, 0)) - + assert (0, 255, 0) == self.cpx.pixels._Pixel__extract_pixel_value( + (0, 255, 0)) + def test_extract_pixel_value_list1(self): - assert (123, 123, 123) == self.cpx.pixels._Pixel__extract_pixel_value([123, 123, 123]) + assert (123, 123, 123) == self.cpx.pixels._Pixel__extract_pixel_value( + [123, 123, 123]) def test_extract_pixel_value_int(self): assert (0, 0, 255) == self.cpx.pixels._Pixel__extract_pixel_value(255) def test_extract_pixel_value_tuple(self): - assert (0, 255, 0) == self.cpx.pixels._Pixel__extract_pixel_value((0, 255, 0)) + assert (0, 255, 0) == self.cpx.pixels._Pixel__extract_pixel_value( + (0, 255, 0)) def test_extract_pixel_value_invalid_length(self): with pytest.raises(ValueError): - self.cpx.pixels._Pixel__extract_pixel_value((1,2,3,4)) - + self.cpx.pixels._Pixel__extract_pixel_value((1, 2, 3, 4)) + def test_extract_pixel_value_invalid_tuple_value(self): with pytest.raises(ValueError): self.cpx.pixels._Pixel__extract_pixel_value((0, 222, "hello")) From 632fa054be4dfde4885e97cef15afd5c1f48189a Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 10:36:46 -0700 Subject: [PATCH 64/72] add focus border --- src/view/styles/SensorButton.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css index 34df0028c..7a162256f 100644 --- a/src/view/styles/SensorButton.css +++ b/src/view/styles/SensorButton.css @@ -13,7 +13,6 @@ } .sensor-button:focus { - outline: var(--vscode-focusBorder); outline-width: thick; outline-offset: 15px; outline-style: auto; @@ -22,3 +21,7 @@ outline: none; background-color: var(--vscode-button-hoverBackground); } +.sensor-button:active { + outline: none; + background-color: var(--vscode-button-hoverBackground); +} From 0762eb080ee622764f7e58a326c21689d6ffab41 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 11:07:36 -0700 Subject: [PATCH 65/72] change focus style --- src/view/styles/SensorButton.css | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css index 7a162256f..0c8a67f1f 100644 --- a/src/view/styles/SensorButton.css +++ b/src/view/styles/SensorButton.css @@ -6,16 +6,14 @@ height: 32px; border: none; font-weight: bolder; - margin-top: 30px; - margin-bottom: 30px; float: left; padding-left: 20px; } .sensor-button:focus { outline-width: thick; - outline-offset: 15px; - outline-style: auto; + outline-offset: 4px; + outline: 2px solid var(--vscode-focusBorder); } .sensor-button:hover { outline: none; From 216e88156a14c409c7786781d244d8b664b0f56f Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 15:27:39 -0700 Subject: [PATCH 66/72] added style push --- src/view/styles/SensorButton.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css index 0c8a67f1f..814e3217a 100644 --- a/src/view/styles/SensorButton.css +++ b/src/view/styles/SensorButton.css @@ -8,18 +8,18 @@ font-weight: bolder; float: left; padding-left: 20px; + margin-bottom: 20px; + margin-top: 20px; } -.sensor-button:focus { +.sensor-button:focus, +.sensor-button:active { outline-width: thick; outline-offset: 4px; outline: 2px solid var(--vscode-focusBorder); -} -.sensor-button:hover { - outline: none; background-color: var(--vscode-button-hoverBackground); } -.sensor-button:active { +.sensor-button:hover { outline: none; background-color: var(--vscode-button-hoverBackground); } From 822a4a2e61c84085590cb013e2f86b5073767234 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 15:51:57 -0700 Subject: [PATCH 67/72] added outline on hover --- src/view/styles/SensorButton.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/view/styles/SensorButton.css b/src/view/styles/SensorButton.css index 814e3217a..d7003af41 100644 --- a/src/view/styles/SensorButton.css +++ b/src/view/styles/SensorButton.css @@ -20,6 +20,5 @@ background-color: var(--vscode-button-hoverBackground); } .sensor-button:hover { - outline: none; background-color: var(--vscode-button-hoverBackground); } From b05c13446ec6d23b00062dd32dedfa888a78fdf2 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 16:35:19 -0700 Subject: [PATCH 68/72] removed duplicate --- src/adafruit_circuitplayground/express.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 841e17d19..4eb49159f 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -37,7 +37,6 @@ def __init__(self): 'motion_y': 0, 'motion_z': 0, 'shake': False, - 'motion_z': 0 } self.pixels = Pixel(self.__state) From 1bffb1e32a17cac69083dfb6614c00b9936ac8b8 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 16:40:15 -0700 Subject: [PATCH 69/72] undo prettier formatting --- src/adafruit_circuitplayground/test/test_express.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/adafruit_circuitplayground/test/test_express.py b/src/adafruit_circuitplayground/test/test_express.py index 12094ac52..267ad4228 100644 --- a/src/adafruit_circuitplayground/test/test_express.py +++ b/src/adafruit_circuitplayground/test/test_express.py @@ -73,8 +73,7 @@ def test_fill(self): assert expected_pixels == self.cpx._Express__state['pixels'] def test_extract_pixel_value_list(self): - assert (0, 255, 0) == self.cpx.pixels._Pixel__extract_pixel_value( - (0, 255, 0)) + assert (0, 255, 0) == self.cpx.pixels._Pixel__extract_pixel_value((0, 255, 0)) def test_extract_pixel_value_list1(self): assert (123, 123, 123) == self.cpx.pixels._Pixel__extract_pixel_value( From 6a74712095775914dd41e171d67b7c01de8136fe Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 16:41:15 -0700 Subject: [PATCH 70/72] removed extra line --- src/adafruit_circuitplayground/express.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 4eb49159f..731af6a09 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -45,7 +45,6 @@ def __init__(self): @property def acceleration(self): Acceleration = namedtuple('acceleration', ['x', 'y', 'z']) - return Acceleration(self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) @property From 3c69d4850386613cd5dfa9f1d2385abe4106d791 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Wed, 7 Aug 2019 21:12:53 -0700 Subject: [PATCH 71/72] renamed util file --- src/view/components/toolbar/InputSlider.tsx | 2 +- src/view/components/toolbar/LightSensorBar.tsx | 2 +- src/view/components/toolbar/MotionSensorBar.tsx | 2 +- src/view/components/toolbar/SensorButton.tsx | 2 +- src/view/components/toolbar/TemperatureSensorBar.tsx | 2 +- .../components/toolbar/{Toolbar_utils.tsx => ToolbarUtils.tsx} | 0 6 files changed, 5 insertions(+), 5 deletions(-) rename src/view/components/toolbar/{Toolbar_utils.tsx => ToolbarUtils.tsx} (100%) diff --git a/src/view/components/toolbar/InputSlider.tsx b/src/view/components/toolbar/InputSlider.tsx index 53482bb03..bb2a9444f 100644 --- a/src/view/components/toolbar/InputSlider.tsx +++ b/src/view/components/toolbar/InputSlider.tsx @@ -2,7 +2,7 @@ // Licensed under the MIT license. import * as React from "react"; -import { ISliderProps } from "./Toolbar_utils"; +import { ISliderProps } from "./ToolbarUtils"; import "../../styles/InputSlider.css"; interface vscode { diff --git a/src/view/components/toolbar/LightSensorBar.tsx b/src/view/components/toolbar/LightSensorBar.tsx index fdb374578..4bf8c8848 100644 --- a/src/view/components/toolbar/LightSensorBar.tsx +++ b/src/view/components/toolbar/LightSensorBar.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import InputSlider from "./InputSlider"; import "./LightSensorBar.css"; -import { ISensorProps, ISliderProps, X_SLIDER_INDEX } from "./Toolbar_utils"; +import { ISensorProps, ISliderProps, X_SLIDER_INDEX } from "./ToolbarUtils"; const LIGHT_SLIDER_PROPS: ISliderProps = { maxValue: 255, diff --git a/src/view/components/toolbar/MotionSensorBar.tsx b/src/view/components/toolbar/MotionSensorBar.tsx index ce409e85d..0fa9ec59d 100644 --- a/src/view/components/toolbar/MotionSensorBar.tsx +++ b/src/view/components/toolbar/MotionSensorBar.tsx @@ -11,7 +11,7 @@ import { X_SLIDER_INDEX, Z_SLIDER_INDEX, Y_SLIDER_INDEX -} from "./Toolbar_utils"; +} from "./ToolbarUtils"; import "../../styles/MotionSensorBar.css"; import { CONSTANTS } from "../../constants"; diff --git a/src/view/components/toolbar/SensorButton.tsx b/src/view/components/toolbar/SensorButton.tsx index 766dafdce..f9cc5deb2 100644 --- a/src/view/components/toolbar/SensorButton.tsx +++ b/src/view/components/toolbar/SensorButton.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { ISensorButtonProps } from "./Toolbar_utils"; +import { ISensorButtonProps } from "./ToolbarUtils"; import "../../styles/SensorButton.css"; const SensorButton: React.FC = props => { diff --git a/src/view/components/toolbar/TemperatureSensorBar.tsx b/src/view/components/toolbar/TemperatureSensorBar.tsx index 3b682e93b..ee6bd2f2f 100644 --- a/src/view/components/toolbar/TemperatureSensorBar.tsx +++ b/src/view/components/toolbar/TemperatureSensorBar.tsx @@ -3,7 +3,7 @@ import * as React from "react"; import InputSlider from "./InputSlider"; -import { ISensorProps, ISliderProps, X_SLIDER_INDEX } from "./Toolbar_utils"; +import { ISensorProps, ISliderProps, X_SLIDER_INDEX } from "./ToolbarUtils"; import "../../styles/TemperatureSensorBar.css"; const TEMPERATURE_SLIDER_PROPS: ISliderProps = { diff --git a/src/view/components/toolbar/Toolbar_utils.tsx b/src/view/components/toolbar/ToolbarUtils.tsx similarity index 100% rename from src/view/components/toolbar/Toolbar_utils.tsx rename to src/view/components/toolbar/ToolbarUtils.tsx From eaaf6f787654c58123c1ebfc7f22bdb4bd2ca383 Mon Sep 17 00:00:00 2001 From: Fatou Mounzeo Date: Thu, 8 Aug 2019 07:22:14 -0700 Subject: [PATCH 72/72] moved type decl --- src/adafruit_circuitplayground/express.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/adafruit_circuitplayground/express.py b/src/adafruit_circuitplayground/express.py index 731af6a09..088144b49 100644 --- a/src/adafruit_circuitplayground/express.py +++ b/src/adafruit_circuitplayground/express.py @@ -9,6 +9,8 @@ from . import utils from collections import namedtuple +Acceleration = namedtuple('acceleration', ['x', 'y', 'z']) + class Express: def __init__(self): @@ -44,7 +46,6 @@ def __init__(self): @property def acceleration(self): - Acceleration = namedtuple('acceleration', ['x', 'y', 'z']) return Acceleration(self.__state['motion_x'], self.__state['motion_y'], self.__state['motion_z']) @property