From bf77b676eb8bdcbc226f5f3daa4ef2047734f83b Mon Sep 17 00:00:00 2001 From: "Claudio Maggioni (maggicl)" Date: Mon, 4 May 2020 18:22:21 +0200 Subject: [PATCH 01/12] Removed current user from list of possible guests in guest modal --- smart-hut/src/components/HostModal.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/smart-hut/src/components/HostModal.js b/smart-hut/src/components/HostModal.js index 789c484..e262e3f 100644 --- a/smart-hut/src/components/HostModal.js +++ b/smart-hut/src/components/HostModal.js @@ -11,7 +11,6 @@ import { import { connect } from "react-redux"; import { RemoteService, Forms } from "../remote"; import { appActions } from "../storeActions"; -//import { update } from "immutability-helper"; class HostModal extends Component { constructor(props) { @@ -23,7 +22,8 @@ class HostModal extends Component { .then(() => { this.setState({ ...this.state, - guests: this.props.guests.map((u) => u.id), + guests: this.props.guests + .map((u) => u.id), }); }) .catch(console.error); @@ -32,7 +32,7 @@ class HostModal extends Component { .then((users) => this.setState({ ...this.state, - users: users.map((u) => ({ + users: users.filter(u => u.id !== this.props.currentUserId).map((u) => ({ key: u.id, text: `@${u.username} (${u.name})`, value: u.id, @@ -127,6 +127,7 @@ const setActiveHost = (activeHost) => { const mapStateToProps = (state) => ({ guests: state.guests, + currentUserId: state.userInfo.id }); const HostModalContainer = connect( mapStateToProps, From 246fdb1de8671395b6081fe380d4d0c00636dcb7 Mon Sep 17 00:00:00 2001 From: britea Date: Tue, 5 May 2020 15:53:07 +0200 Subject: [PATCH 02/12] points 2,3,4 --- smart-hut/src/components/HeaderController.js | 25 ++++++++++++++++++- smart-hut/src/components/SceneModal.js | 22 ++++++++++++++++ .../components/dashboard/devices/Videocam.js | 2 +- smart-hut/src/remote.js | 15 +++++++++++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/smart-hut/src/components/HeaderController.js b/smart-hut/src/components/HeaderController.js index 1d84c6b..6c797ab 100644 --- a/smart-hut/src/components/HeaderController.js +++ b/smart-hut/src/components/HeaderController.js @@ -1,5 +1,12 @@ import React from "react"; -import { Grid, Divider, Button, Label, Responsive } from "semantic-ui-react"; +import { + Grid, + Divider, + Button, + Label, + Responsive, + Checkbox, +} from "semantic-ui-react"; import { Segment, Image } from "semantic-ui-react"; import { RemoteService } from "../remote"; import { withRouter } from "react-router-dom"; @@ -35,6 +42,16 @@ export class MyHeader extends React.Component { .catch((err) => console.error("MyHeader fetch user info error", err)); } + setCameraEnabled(val) { + let enabled = { + cameraEnabled: val, + }; + this.props + .userPermissions(enabled) + .then(() => this.getInfo()) + .catch((err) => console.error("Camera enabled", err)); + } + render() { return (
@@ -60,6 +77,11 @@ export class MyHeader extends React.Component { + this.setCameraEnabled(val.checked)} + /> @@ -94,6 +116,7 @@ export class MyHeader extends React.Component { const mapStateToProps = (state, _) => ({ username: state.userInfo && state.userInfo.username ? state.userInfo.username : "", + cameraEnabled: state.userInfo ? state.userInfo.cameraEnabled : false, }); const LoginContainer = connect( mapStateToProps, diff --git a/smart-hut/src/components/SceneModal.js b/smart-hut/src/components/SceneModal.js index be03283..513c2e6 100644 --- a/smart-hut/src/components/SceneModal.js +++ b/smart-hut/src/components/SceneModal.js @@ -8,6 +8,7 @@ import { Form, Input, Dropdown, + Checkbox, } from "semantic-ui-react"; import SelectIcons from "./SelectIcons"; import { connect } from "react-redux"; @@ -23,6 +24,7 @@ class SceneModal extends Component { this.modifySceneModal = this.modifySceneModal.bind(this); this.deleteScene = this.deleteScene.bind(this); this.updateIcon = this.updateIcon.bind(this); + this.setGuestAccessEnabled = this.setGuestAccessEnabled.bind(this); this.setCopyFrom = this.setCopyFrom.bind(this); } @@ -41,6 +43,8 @@ class SceneModal extends Component { selectedIcon: "home", scenes: this.scenes, copyFrom: null, + guestAccessEnabled: + this.type === "new" ? null : this.props.scene.guestAccessEnabled, }; } @@ -79,7 +83,9 @@ class SceneModal extends Component { let data = { name: this.state.name, icon: this.state.selectedIcon, + guestAccessEnabled: this.state.guestAccessEnabled, }; + console.log(data); this.props .saveScene(data, this.props.id) @@ -119,6 +125,11 @@ class SceneModal extends Component { this.setState({ ...this.state, copyFrom: copyFrom.value }); } + setGuestAccessEnabled(val) { + console.log(this.state, val); + this.setState({ guestAccessEnabled: val }); + } + render() { const spaceDiv = { background: "#f4f4f4", @@ -210,6 +221,17 @@ class SceneModal extends Component { /> )} + {this.type === "modify" ? ( + + + this.setGuestAccessEnabled(val.checked) + } + /> + + ) : null} {this.type === "modify" ? ( diff --git a/smart-hut/src/components/dashboard/devices/Videocam.js b/smart-hut/src/components/dashboard/devices/Videocam.js index de77219..cdde004 100644 --- a/smart-hut/src/components/dashboard/devices/Videocam.js +++ b/smart-hut/src/components/dashboard/devices/Videocam.js @@ -31,7 +31,7 @@ class Videocam extends Component { setOnOff(onOff) { const turn = onOff; - if (this.props.tab === "Devices") { + if (this.props.tab === "Devices" || this.props.tab === "Hosts") { this.props .saveDevice({ ...this.props.device, on: turn }) .then((res) => diff --git a/smart-hut/src/remote.js b/smart-hut/src/remote.js index 666910b..4eec55d 100644 --- a/smart-hut/src/remote.js +++ b/smart-hut/src/remote.js @@ -242,6 +242,20 @@ export const RemoteService = { }); }, + /** + * Fetches user information via REST calls, if it is logged in + * @returns {Promise} promise that resolves to void and rejects + * with user-fiendly errors as a RemoteError + */ + userPermissions: (data) => { + return (dispatch) => { + return Endpoint.put("/user/permissions", {}, data).catch((err) => { + console.warn("Fetch user info error", err); + throw new RemoteError(["Network error"]); + }); + }; + }, + /** * Fetches user information via REST calls, if it is logged in * @returns {Promise} promise that resolves to void and rejects @@ -458,6 +472,7 @@ export const RemoteService = { data = { name: data.name, icon: data.icon, + guestAccessEnabled: sceneId ? data.guestAccessEnabled : false, }; return (sceneId From bb16d5c47538e682130f4fa0c5472428ad988741 Mon Sep 17 00:00:00 2001 From: Claudio Maggioni Date: Tue, 5 May 2020 17:04:53 +0200 Subject: [PATCH 03/12] Done 1 read scene part --- smart-hut/src/components/HostModal.js | 50 ++++++------- smart-hut/src/components/RoomModal.js | 3 +- .../src/components/dashboard/HostsPanel.js | 71 +++++++++++++------ .../dashboard/devices/DeviceSettingsModal.js | 10 +-- smart-hut/src/remote.js | 13 +++- smart-hut/src/store.js | 10 +++ smart-hut/src/storeActions.js | 5 ++ 7 files changed, 100 insertions(+), 62 deletions(-) diff --git a/smart-hut/src/components/HostModal.js b/smart-hut/src/components/HostModal.js index e262e3f..cd03809 100644 --- a/smart-hut/src/components/HostModal.js +++ b/smart-hut/src/components/HostModal.js @@ -22,8 +22,7 @@ class HostModal extends Component { .then(() => { this.setState({ ...this.state, - guests: this.props.guests - .map((u) => u.id), + guests: this.props.guests.map((u) => u.id), }); }) .catch(console.error); @@ -32,11 +31,13 @@ class HostModal extends Component { .then((users) => this.setState({ ...this.state, - users: users.filter(u => u.id !== this.props.currentUserId).map((u) => ({ - key: u.id, - text: `@${u.username} (${u.name})`, - value: u.id, - })), + users: users + .filter((u) => u.id !== this.props.currentUserId) + .map((u) => ({ + key: u.id, + text: `@${u.username} (${u.name})`, + value: u.id, + })), }) ) .catch(console.error); @@ -86,25 +87,20 @@ class HostModal extends Component {
Select guests
- -

Spaghetti!

-
- -
- - - - -
-
+
+ + + + +
+
+ + + ))} + +
+ Devices +
+ + {this.props.hostDeviceIds.map((id) => { + return ( + + ); + })} + + ); } } @@ -44,6 +72,7 @@ class HostsPanel extends Component { const mapStateToProps = (state, _) => ({ isActiveDefaultHost: state.active.activeHost === -1, activeHost: state.active.activeHost, + hostScenes: state.hostScenes[state.active.activeHost] || [], hostDevices: state.hostDevices, hostDeviceIds: Object.keys(state.hostDevices[state.active.activeHost] || {}), }); diff --git a/smart-hut/src/components/dashboard/devices/DeviceSettingsModal.js b/smart-hut/src/components/dashboard/devices/DeviceSettingsModal.js index 83773c8..c6b9408 100644 --- a/smart-hut/src/components/dashboard/devices/DeviceSettingsModal.js +++ b/smart-hut/src/components/dashboard/devices/DeviceSettingsModal.js @@ -1,13 +1,5 @@ import React, { Component, useState } from "react"; -import { - Button, - Form, - Icon, - Header, - Modal, - Input, - Checkbox, -} from "semantic-ui-react"; +import { Button, Form, Icon, Header, Modal, Input } from "semantic-ui-react"; import { connect } from "react-redux"; import { RemoteService } from "../../../remote"; diff --git a/smart-hut/src/remote.js b/smart-hut/src/remote.js index 4eec55d..f0cfcea 100644 --- a/smart-hut/src/remote.js +++ b/smart-hut/src/remote.js @@ -304,10 +304,17 @@ export const RemoteService = { * @returns {Promise} promise that resolves to void and rejects * with user-fiendly errors as a RemoteError */ - fetchAllScenes: () => { + fetchAllScenes: (hostId = null) => { return (dispatch) => { - return Endpoint.get("/scene") - .then((res) => void dispatch(actions.scenesUpdate(res.data))) + return Endpoint.get("/scene", hostId ? { hostId } : {}) + .then( + (res) => + void dispatch( + !hostId + ? actions.scenesUpdate(res.data) + : actions.hostScenesUpdate(hostId, res.data) + ) + ) .catch((err) => { console.error("Fetch all scenes error", err); throw new RemoteError(["Network error"]); diff --git a/smart-hut/src/store.js b/smart-hut/src/store.js index 1ade73b..f256839 100644 --- a/smart-hut/src/store.js +++ b/smart-hut/src/store.js @@ -120,6 +120,15 @@ function reducer(previousState, action) { createOrUpdateScene(scene); } break; + case "HOST_SCENES_UPDATE": + change = { + hostScenes: { + [action.hostId]: { $set: action.scenes }, // stored as array + }, + }; + + newState = update(previousState, change); + break; case "STATES_UPDATE": //console.log(action.sceneStates); change = null; @@ -576,6 +585,7 @@ const initState = { rooms: {}, /** @type {[integer]Scene} */ scenes: {}, + hostScenes: {}, /** @type {[integer]Automation} */ automations: {}, /** @type {[integer]Device} */ diff --git a/smart-hut/src/storeActions.js b/smart-hut/src/storeActions.js index 64c2a52..218f4b9 100644 --- a/smart-hut/src/storeActions.js +++ b/smart-hut/src/storeActions.js @@ -102,6 +102,11 @@ const actions = { type: "SCENES_UPDATE", scenes, }), + hostScenesUpdate: (hostId, scenes) => ({ + type: "HOST_SCENES_UPDATE", + hostId, + scenes, + }), deviceDelete: (deviceId) => ({ type: "DEVICE_DELETE", deviceId, From 194e502578ef1918dfcfde14518cdd1c0b047f4c Mon Sep 17 00:00:00 2001 From: "Claudio Maggioni (maggicl)" Date: Wed, 6 May 2020 11:13:17 +0200 Subject: [PATCH 04/12] Added label to share cameras button and other minor fixes --- smart-hut/src/components/HeaderController.js | 17 +++++++++++++++-- .../components/dashboard/devices/Curtains.css | 4 ---- .../components/dashboard/devices/Thermostats.js | 5 ++++- smart-hut/src/views/Dashboard.js | 4 ++-- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/smart-hut/src/components/HeaderController.js b/smart-hut/src/components/HeaderController.js index 6c797ab..f67edfe 100644 --- a/smart-hut/src/components/HeaderController.js +++ b/smart-hut/src/components/HeaderController.js @@ -58,7 +58,7 @@ export class MyHeader extends React.Component { - + @@ -68,7 +68,7 @@ export class MyHeader extends React.Component { - + } checked={this.props.cameraEnabled} toggle onChange={(e, val) => this.setCameraEnabled(val.checked)} /> + @@ -104,6 +108,15 @@ export class MyHeader extends React.Component { + + Share cameras} + checked={this.props.cameraEnabled} + toggle + onChange={(e, val) => this.setCameraEnabled(val.checked)} + /> + diff --git a/smart-hut/src/components/dashboard/devices/Curtains.css b/smart-hut/src/components/dashboard/devices/Curtains.css index 5d1939b..c4ec319 100644 --- a/smart-hut/src/components/dashboard/devices/Curtains.css +++ b/smart-hut/src/components/dashboard/devices/Curtains.css @@ -4,10 +4,6 @@ box-sizing: border-box; } -body { - overflow-y: hidden; -} - .container.curtain-container { position: relative; margin-top: 10%; diff --git a/smart-hut/src/components/dashboard/devices/Thermostats.js b/smart-hut/src/components/dashboard/devices/Thermostats.js index 9ec24ff..fcab8a6 100644 --- a/smart-hut/src/components/dashboard/devices/Thermostats.js +++ b/smart-hut/src/components/dashboard/devices/Thermostats.js @@ -164,7 +164,10 @@ class Thermostats extends Component { const mapStateToProps2 = (state, ownProps) => ({ ...mapStateToProps(state, ownProps), get tempSensorsInRoom() { - const deviceIds = state.rooms[state.devices[ownProps.id].roomId].devices; + if (state.active.activeTab !== "Devices") return false; + const room = state.rooms[state.devices[ownProps.id].roomId]; + if (!room) return false; + const deviceIds = room.devices; const devices = [...deviceIds].map((id) => state.devices[id]); const sensors = devices.filter( (d) => d.kind === "sensor" && d.sensor === "TEMPERATURE" diff --git a/smart-hut/src/views/Dashboard.js b/smart-hut/src/views/Dashboard.js index ab2c952..45cec4a 100644 --- a/smart-hut/src/views/Dashboard.js +++ b/smart-hut/src/views/Dashboard.js @@ -85,12 +85,12 @@ class Dashboard extends Component {
- + - + Date: Wed, 6 May 2020 11:28:27 +0200 Subject: [PATCH 05/12] Fixed style issues on scene share guest button --- smart-hut/src/components/SceneModal.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/smart-hut/src/components/SceneModal.js b/smart-hut/src/components/SceneModal.js index 513c2e6..8b935cc 100644 --- a/smart-hut/src/components/SceneModal.js +++ b/smart-hut/src/components/SceneModal.js @@ -9,6 +9,7 @@ import { Input, Dropdown, Checkbox, + Segment, } from "semantic-ui-react"; import SelectIcons from "./SelectIcons"; import { connect } from "react-redux"; @@ -110,15 +111,15 @@ class SceneModal extends Component { }; closeModal = (e) => { - this.setState({ openModal: false }); + this.setState({ ...this.state, openModal: false }); }; openModal = (e) => { - this.setState({ openModal: true }); + this.setState({ ...this.state, openModal: true }); }; updateIcon(e) { - this.setState({ selectedIcon: e }); + this.setState({ ...this.state, selectedIcon: e }); } setCopyFrom(_, copyFrom) { @@ -127,7 +128,7 @@ class SceneModal extends Component { setGuestAccessEnabled(val) { console.log(this.state, val); - this.setState({ guestAccessEnabled: val }); + this.setState({ ...this.state, guestAccessEnabled: val }); } render() { @@ -223,13 +224,16 @@ class SceneModal extends Component { )} {this.type === "modify" ? ( + this.setGuestAccessEnabled(val.checked) } /> + ) : null} From a223cdbb4068ada05792083ba6ea16496a20ed10 Mon Sep 17 00:00:00 2001 From: "Claudio Maggioni (maggicl)" Date: Wed, 6 May 2020 11:59:09 +0200 Subject: [PATCH 06/12] Added updated mailmap for everyone in the repo --- .mailmap | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.mailmap b/.mailmap index 3b149aa..331138e 100644 --- a/.mailmap +++ b/.mailmap @@ -1 +1,7 @@ -Claudio Maggioni Claudio Maggioni +Claudio Maggioni Claudio Maggioni (maggicl) +Filippo Cesana FilippoCesana +Filippo Cesana Fil Cesana +Andrea Brites Marto britea +Christian Capeáns Pérez christiancp +Tommaso Rodolfo Masera tommi27 + From ff26f88cfd504f5e2a35ac0c8bc627f86b55077a Mon Sep 17 00:00:00 2001 From: "Claudio Maggioni (maggicl)" Date: Wed, 6 May 2020 11:59:09 +0200 Subject: [PATCH 07/12] Added updated mailmap for everyone in the repo --- .mailmap | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.mailmap b/.mailmap index 3b149aa..3886c55 100644 --- a/.mailmap +++ b/.mailmap @@ -1 +1,8 @@ -Claudio Maggioni Claudio Maggioni +Claudio Maggioni Claudio Maggioni (maggicl) +Claudio Maggioni Claudio Maggioni (maggicl) +Filippo Cesana FilippoCesana +Filippo Cesana Fil Cesana +Andrea Brites Marto britea +Christian Capeáns Pérez christiancp +Tommaso Rodolfo Masera tommi27 + From bf8e822fc7af0795b19c15e3dfd9c8b95bc0afd4 Mon Sep 17 00:00:00 2001 From: Nicola Brunner Date: Wed, 6 May 2020 13:43:07 +0200 Subject: [PATCH 08/12] modified signup, uniformed message if no scene, device or hosts --- .../src/components/dashboard/DevicePanel.js | 37 +++++++++++++------ .../src/components/dashboard/HostsPanel.js | 17 ++++++--- .../src/components/dashboard/ScenesPanel.js | 5 ++- smart-hut/src/views/Signup.js | 2 +- 4 files changed, 42 insertions(+), 19 deletions(-) diff --git a/smart-hut/src/components/dashboard/DevicePanel.js b/smart-hut/src/components/dashboard/DevicePanel.js index 73196df..23db867 100644 --- a/smart-hut/src/components/dashboard/DevicePanel.js +++ b/smart-hut/src/components/dashboard/DevicePanel.js @@ -1,7 +1,7 @@ // vim: set ts=2 sw=2 et tw=80: import React, { Component } from "react"; -import { Segment, Card } from "semantic-ui-react"; +import { Segment, Card, Header, Icon } from "semantic-ui-react"; import Device from "./devices/Device"; import NewDevice from "./devices/NewDevice"; import { connect } from "react-redux"; @@ -25,16 +25,31 @@ class DevicePanel extends Component { render() { return ( - {this.props.devices.map((e, i) => { - return ; - })} - {!this.props.isActiveRoomHome ? ( - - - - - - ) : null} + {this.props.devices.length !== 0 ? ( + + {this.props.devices.map((e, i) => { + return ; + })} + {!this.props.isActiveRoomHome ? ( + + + + + + ) : null} + + ) : ( + +
+ + Please create a room on the left, and then add devices to the + same. +
+
+ )}
); } diff --git a/smart-hut/src/components/dashboard/HostsPanel.js b/smart-hut/src/components/dashboard/HostsPanel.js index 2fb2da6..5a6d380 100644 --- a/smart-hut/src/components/dashboard/HostsPanel.js +++ b/smart-hut/src/components/dashboard/HostsPanel.js @@ -19,12 +19,17 @@ class HostsPanel extends Component { render() { if (this.props.isActiveDefaultHost) { return ( - -
- - Please select a host to visit on the left. -
-
+ + +
+ + Please select a host to visit on the left. +
+
+
); } diff --git a/smart-hut/src/components/dashboard/ScenesPanel.js b/smart-hut/src/components/dashboard/ScenesPanel.js index a9b2210..2be4cd1 100644 --- a/smart-hut/src/components/dashboard/ScenesPanel.js +++ b/smart-hut/src/components/dashboard/ScenesPanel.js @@ -44,7 +44,10 @@ class ScenesPanel extends Component { ) : (
- + Please select a scene on the left or add a new one.
diff --git a/smart-hut/src/views/Signup.js b/smart-hut/src/views/Signup.js index 5ad8af5..c0de088 100644 --- a/smart-hut/src/views/Signup.js +++ b/smart-hut/src/views/Signup.js @@ -116,7 +116,7 @@ export default class Signup extends Component { Date: Wed, 6 May 2020 15:51:26 +0200 Subject: [PATCH 09/12] found NewDevice class --- .../components/dashboard/devices/NewDevice.js | 5 + smart-hut/yarn.lock | 217 +----------------- 2 files changed, 17 insertions(+), 205 deletions(-) diff --git a/smart-hut/src/components/dashboard/devices/NewDevice.js b/smart-hut/src/components/dashboard/devices/NewDevice.js index e5c99b4..6945a20 100644 --- a/smart-hut/src/components/dashboard/devices/NewDevice.js +++ b/smart-hut/src/components/dashboard/devices/NewDevice.js @@ -141,6 +141,11 @@ class NewDevice extends Component { case "buttonDimmer": case "knobDimmer": outputs = this.state.lightsAttached; + if (this.state.lightsAttached === undefined || + this.state.lightsAttached.length === 0) { + alert("No lights attached to this switch! Please, add a light a first."); + return; + } break; default: break; diff --git a/smart-hut/yarn.lock b/smart-hut/yarn.lock index 68fe632..affdd46 100644 --- a/smart-hut/yarn.lock +++ b/smart-hut/yarn.lock @@ -1940,11 +1940,6 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -2113,19 +2108,11 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3252,11 +3239,6 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -3744,7 +3726,7 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3780,11 +3762,6 @@ deep-equal@^1.0.1, deep-equal@^1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3845,11 +3822,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3868,11 +3840,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4967,13 +4934,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -5024,20 +4984,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -5229,11 +5175,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5491,7 +5432,7 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5522,13 +5463,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -5632,7 +5566,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.0: +ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -7235,14 +7169,6 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - minipass@^3.0.0, minipass@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" @@ -7250,13 +7176,6 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7289,7 +7208,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -7368,15 +7287,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.1.tgz#14af48732463d7475696f937626b1b993247a56a" - integrity sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -7468,35 +7378,11 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.52, node-releases@^1.1.53: version "1.1.53" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7539,27 +7425,6 @@ normalize-url@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7567,16 +7432,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -7786,11 +7641,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -7800,19 +7650,11 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -9127,16 +8969,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-app-polyfill@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" @@ -9421,7 +9253,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9787,7 +9619,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9945,7 +9777,7 @@ semantic-ui-react@^0.88.2: react-popper "^1.3.4" shallowequal "^1.1.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10007,7 +9839,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -10419,7 +10251,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10560,11 +10392,6 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - style-loader@0.23.1: version "0.23.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" @@ -10673,19 +10500,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - terser-webpack-plugin@2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz#ac045703bd8da0936ce910d8fb6350d0e1dee5fe" @@ -11398,13 +11212,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -11631,7 +11438,7 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From 74d5be79672dba5450dbeff510b05788bf298c48 Mon Sep 17 00:00:00 2001 From: omenem Date: Thu, 7 May 2020 09:29:22 +0200 Subject: [PATCH 10/12] fix --- smart-hut/src/components/RoomModal.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/smart-hut/src/components/RoomModal.js b/smart-hut/src/components/RoomModal.js index 653c763..b6d55d2 100644 --- a/smart-hut/src/components/RoomModal.js +++ b/smart-hut/src/components/RoomModal.js @@ -8,6 +8,7 @@ import { Icon, Responsive, Image, + Confirm, } from "semantic-ui-react"; import SelectIcons from "./SelectIcons"; import { connect } from "react-redux"; @@ -34,6 +35,7 @@ class RoomModal extends Component { name: this.type === "new" ? "New Room" : this.props.room.name, img: this.type === "new" ? null : this.props.room.image, openModal: false, + sure: false, }; } @@ -91,6 +93,14 @@ class RoomModal extends Component { .catch((err) => console.error("error in deleting room", err)); }; + setSureTrue = () => { + this.setState({sure: true}) + } + + setSureFalse= () => { + this.setState({sure: false}) + } + changeSomething = (event) => { let nam = event.target.name; let val = event.target.value; @@ -220,16 +230,22 @@ class RoomModal extends Component {
{this.type === "modify" ? ( +
+ Delete Room + +
+ ) : null} From bb91bb1ee2705d5f26fdc0e094031284797169a1 Mon Sep 17 00:00:00 2001 From: Nicola Brunner Date: Thu, 7 May 2020 09:51:38 +0200 Subject: [PATCH 11/12] fixed warning message in device panel thanks to andrea --- smart-hut/src/components/dashboard/DevicePanel.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/smart-hut/src/components/dashboard/DevicePanel.js b/smart-hut/src/components/dashboard/DevicePanel.js index 23db867..f55ee11 100644 --- a/smart-hut/src/components/dashboard/DevicePanel.js +++ b/smart-hut/src/components/dashboard/DevicePanel.js @@ -25,7 +25,7 @@ class DevicePanel extends Component { render() { return ( - {this.props.devices.length !== 0 ? ( + {this.props.numbeOfRooms > 0 ? ( {this.props.devices.map((e, i) => { return ; @@ -70,6 +70,9 @@ const mapStateToProps = (state, _) => ({ return state.active.activeRoom === -1; }, activeRoom: state.active.activeRoom, + get numbeOfRooms() { + return Object.keys(state.rooms).length; + }, }); const DevicePanelContainer = connect( mapStateToProps, From 74bccad6364dbd45d064c285bc9dbaf9d4dca489 Mon Sep 17 00:00:00 2001 From: Fil Cesana Date: Thu, 7 May 2020 13:13:02 +0200 Subject: [PATCH 12/12] added: icons for curtains and thermostat, all links in the footer now work, centered the toggle for the videocam component - also, I do not know if it was already merged, but the modal now looks better (I hope) --- smart-hut/public/img/curtains-icon.png | Bin 0 -> 40011 bytes smart-hut/public/img/thermostat-icon.png | Bin 0 -> 24496 bytes .../components/dashboard/devices/NewDevice.js | 8 ++++++-- .../components/dashboard/devices/Videocam.js | 14 +++++++++----- smart-hut/src/views/Home.js | 2 +- 5 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 smart-hut/public/img/curtains-icon.png create mode 100644 smart-hut/public/img/thermostat-icon.png diff --git a/smart-hut/public/img/curtains-icon.png b/smart-hut/public/img/curtains-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2772356d51a3acfbc6157e7461be74d6ade04c65 GIT binary patch literal 40011 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 DL`Hb0 literal 0 HcmV?d00001 diff --git a/smart-hut/src/components/dashboard/devices/NewDevice.js b/smart-hut/src/components/dashboard/devices/NewDevice.js index 6945a20..965ccc0 100644 --- a/smart-hut/src/components/dashboard/devices/NewDevice.js +++ b/smart-hut/src/components/dashboard/devices/NewDevice.js @@ -165,8 +165,12 @@ class NewDevice extends Component { render() { const deviceOptions = [ //stuff - { key: "thermostat", text: "Thermostat", value: "thermostat", image: {} }, - { key: "curtains", text: "Curtain", value: "curtains", image: {} }, + { key: "thermostat", text: "Thermostat", value: "thermostat", + image: {avatar: true, src: "/img/thermostat-icon.png"} + }, + { key: "curtains", text: "Curtain", value: "curtains", + image: {avatar: true, src: "/img/curtains-icon.png"} + }, //stuff ends { key: "light", diff --git a/smart-hut/src/components/dashboard/devices/Videocam.js b/smart-hut/src/components/dashboard/devices/Videocam.js index cdde004..409d467 100644 --- a/smart-hut/src/components/dashboard/devices/Videocam.js +++ b/smart-hut/src/components/dashboard/devices/Videocam.js @@ -70,12 +70,16 @@ class Videocam extends Component { /> + + + this.setOnOff(val.checked)} + /> + + - this.setOnOff(val.checked)} - /> ); diff --git a/smart-hut/src/views/Home.js b/smart-hut/src/views/Home.js index b5e904f..1347c0a 100644 --- a/smart-hut/src/views/Home.js +++ b/smart-hut/src/views/Home.js @@ -247,7 +247,7 @@ const Home = () => ( - + The Shell