@canterbury-air-patrol/speed-time-distance
Advanced tools
Comparing version 0.0.1 to 0.0.2
{ | ||
"name": "@canterbury-air-patrol/speed-time-distance", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "Speed Time Distance Calculator", | ||
@@ -5,0 +5,0 @@ "main": "speed-time-distance.js", |
52
react.js
@@ -199,5 +199,5 @@ import React from 'react' | ||
this.state = { | ||
speed: new Speed(1, Speed.speedUnits[0]), | ||
time: new Time(1), | ||
distance: new Distance(1, Distance.distanceUnits[0]), | ||
speed: this.props.speed !== undefined ? this.props.speed : new Speed(1, Speed.speedUnits[0]), | ||
time: this.props.time !== undefined ? this.props.time : new Time(1), | ||
distance: this.props.distance !== undefined ? this.props.distance : new Distance(1, Distance.distanceUnits[0]), | ||
calculate: this.props.calculate !== undefined ? this.props.calculate : 'distance' | ||
@@ -209,6 +209,15 @@ } | ||
this.setState(function (oldState) { | ||
if (this.props.updateSpeed !== undefined) { | ||
this.props.updateSpeed(newSpeed) | ||
} | ||
if (oldState.calculate === 'distance') { | ||
oldState.distance.setDistance(newSpeed.getSpeed('m/s') * oldState.time.getTime('seconds'), 'm') | ||
if (this.props.updateDistance !== undefined) { | ||
this.props.updateDistance(oldState.distance) | ||
} | ||
} else if (oldState.calculate === 'time') { | ||
oldState.time.setTime(oldState.distance.getDistance('m') / oldState.speed.getSpeed('m/s'), 'seconds') | ||
if (this.props.updateTime !== undefined) { | ||
this.props.updateTime(oldState.time) | ||
} | ||
} | ||
@@ -225,6 +234,15 @@ return { | ||
this.setState(function (oldState) { | ||
if (this.props.updateTime !== undefined) { | ||
this.props.updateTime(newTime) | ||
} | ||
if (oldState.calculate === 'distance') { | ||
oldState.distance.setDistance(oldState.speed.getSpeed('m/s') * oldState.time.getTime('seconds'), 'm') | ||
if (this.props.updateDistance !== undefined) { | ||
this.props.updateDistance(oldState.distance) | ||
} | ||
} else if (oldState.calculate === 'speed') { | ||
oldState.speed.setSpeed(oldState.distance.getDistance('m') / newTime.getTime('seconds'), 'm/s') | ||
if (this.props.updateSpeed !== undefined) { | ||
this.props.updateSpeed(oldState.speed) | ||
} | ||
} | ||
@@ -241,6 +259,15 @@ return { | ||
this.setState(function (oldState) { | ||
if (this.props.updateDistance !== undefined) { | ||
this.props.updateDistance(newDistance) | ||
} | ||
if (oldState.calculate === 'time') { | ||
oldState.time.setTime(newDistance.getDistance('m') / oldState.speed.getSpeed('m/s'), 'seconds') | ||
if (this.props.updateTime !== undefined) { | ||
this.props.updateTime(oldState.time) | ||
} | ||
} else if (oldState.calculate === 'speed') { | ||
oldState.speed.setSpeed(newDistance.getDistance('m') / oldState.time.getTime('seconds'), 'm/s') | ||
if (this.props.updateSpeed !== undefined) { | ||
this.props.updateSpeed(oldState.speed) | ||
} | ||
} | ||
@@ -265,3 +292,3 @@ return { | ||
let selector = null | ||
if (!this.props.locked) { | ||
if (!this.props.lockSelector) { | ||
selector = ( | ||
@@ -285,5 +312,5 @@ <tr> | ||
{selector} | ||
<tr><td><Form.Label>Speed</Form.Label></td><td><SpeedUI speed={this.state.speed} updateSpeed={this.onChangeSpeed} locked={this.state.calculate === 'speed'} /></td></tr> | ||
<tr><td><Form.Label>Time</Form.Label></td><td><TimeUI time={this.state.time} updateTime={this.onChangeTime} locked={this.state.calculate === 'time'} /></td></tr> | ||
<tr><td><Form.Label>Distance</Form.Label></td><td><DistanceUI distance={this.state.distance} updateDistance={this.onChangeDistance} locked={this.state.calculate === 'distance'} /></td></tr> | ||
<tr><td><Form.Label>Speed</Form.Label></td><td><SpeedUI speed={this.state.speed} updateSpeed={this.onChangeSpeed} locked={this.props.lockSpeed || this.state.calculate === 'speed'} /></td></tr> | ||
<tr><td><Form.Label>Time</Form.Label></td><td><TimeUI time={this.state.time} updateTime={this.onChangeTime} locked={this.props.lockTime || this.state.calculate === 'time'} /></td></tr> | ||
<tr><td><Form.Label>Distance</Form.Label></td><td><DistanceUI distance={this.state.distance} updateDistance={this.onChangeDistance} locked={this.props.lockDistance || this.state.calculate === 'distance'} /></td></tr> | ||
</tbody> | ||
@@ -296,5 +323,14 @@ </Table> | ||
calculate: PropTypes.string, | ||
locked: PropTypes.bool | ||
lockSelector: PropTypes.bool, | ||
lockSpeed: PropTypes.bool, | ||
lockTime: PropTypes.bool, | ||
lockDistance: PropTypes.bool, | ||
speed: PropTypes.object, | ||
time: PropTypes.object, | ||
distance: PropTypes.object, | ||
updateSpeed: PropTypes.func, | ||
updateTime: PropTypes.func, | ||
updateDistance: PropTypes.func | ||
} | ||
export { SpeedUI, DistanceUI, TimeUI, SpeedTimeDistanceUI } |
16913
421