From 74c4138bad40d0507e0feeda0b95c4fcd4d7d0ca Mon Sep 17 00:00:00 2001 From: uwap Date: Tue, 7 Nov 2017 06:55:48 +0100 Subject: [PATCH] semi working drawer --- css/styles.css | 2 +- package.json | 1 + src/components/App.js | 22 +++++++++++++++++----- src/components/ControlMap.js | 11 +++++++---- src/components/SideBar.js | 9 +++++---- 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/css/styles.css b/css/styles.css index 9b2dc9b..fc5146b 100644 --- a/css/styles.css +++ b/css/styles.css @@ -16,7 +16,7 @@ body .leaflet-div-icon { border: 0; background: transparent; } -.leaflet-marker-icon .mdi { +.leaflet-marker-icon.mdi { line-height: 1; } #drawer_uiComponents .mdi { diff --git a/package.json b/package.json index 8dbdb02..2b83983 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "dependencies": { "babel-preset-env": "^1.6.0", "leaflet": "^1.2.0", + "lodash": "^4.17.4", "material-ui": "next", "material-ui-old": "npm:material-ui@latest", "mdi": "^2.0.46", diff --git a/src/components/App.js b/src/components/App.js index 26cae86..836de6b 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -15,12 +15,17 @@ export type AppProps = { }; export type AppState = { - selectedControl: string + selectedControl: ?Control, + drawerOpened: boolean }; -class App extends React.Component { +class App extends React.Component { constructor(props: AppProps & Classes) { super(props); + this.state = { + selectedControl: null, + drawerOpened: false + }; } static styles(_theme: Object) { @@ -39,8 +44,12 @@ class App extends React.Component { }); } - get selectedControl(): Control { - return this.props.config.controls[this.state.selectedControl]; + changeControl(control: ?Control = null) { + this.setState({selectedControl: control, drawerOpened: control != null}); + } + + closeDrawer() { + this.setState({drawerOpened: false}); } render() { @@ -50,12 +59,15 @@ class App extends React.Component {
- {false && } +
); diff --git a/src/components/ControlMap.js b/src/components/ControlMap.js index 26b9dc5..9ec0d74 100644 --- a/src/components/ControlMap.js +++ b/src/components/ControlMap.js @@ -2,6 +2,7 @@ import React from "react"; import { Map, ImageOverlay, Marker, LayersControl } from "react-leaflet"; import Leaflet from "leaflet"; +import _ from "lodash"; export type Point = [number, number]; @@ -12,7 +13,8 @@ export type ControlMapProps = { height: number, zoom: number, layers: Array, - controls: Controls + controls: Controls, + onChangeControl: (control: Control) => void }; export default class ControlMap extends React.Component { @@ -39,7 +41,7 @@ export default class ControlMap extends React.Component { } renderMarkers() { - return Object.values(this.props.controls).map(this.renderMarker.bind(this)); + return _.map(this.props.controls, this.renderMarker.bind(this)); } createLeafletIcon(iconRaw: string) { @@ -51,11 +53,12 @@ export default class ControlMap extends React.Component { }); } - renderMarker(control: Control) { + renderMarker(control: Control, key: string) { return ( this.props.onChangeControl(control)} > ); diff --git a/src/components/SideBar.js b/src/components/SideBar.js index 421025b..00f0c0d 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -10,7 +10,8 @@ import Toolbar from "material-ui/Toolbar"; import List from "material-ui/List"; export type SideBarProps = { - control: Control, + control: ?Control, + open: boolean, onCloseRequest: () => void }; @@ -36,7 +37,7 @@ class SideBar extends React.Component { render() { return ( - { > - + - {this.props.control.name} + {this.props.control == null || this.props.control.name}