aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/views/nodes/MapBox/MapBox.scss9
-rw-r--r--src/client/views/nodes/MapBox/MapBox.tsx107
2 files changed, 50 insertions, 66 deletions
diff --git a/src/client/views/nodes/MapBox/MapBox.scss b/src/client/views/nodes/MapBox/MapBox.scss
index 39fa3262e..a910f294e 100644
--- a/src/client/views/nodes/MapBox/MapBox.scss
+++ b/src/client/views/nodes/MapBox/MapBox.scss
@@ -11,12 +11,13 @@
padding: 12;
font-size: 17;
}
- .mapBox-searchbar{
- display:flex;
+ .mapBox-searchbar {
+ display: flex;
flex-direction: row;
+ width: calc(100% - 40px);
}
- .mapBox-topbar{
- display:flex;
+ .mapBox-topbar {
+ display: flex;
flex-direction: row;
}
diff --git a/src/client/views/nodes/MapBox/MapBox.tsx b/src/client/views/nodes/MapBox/MapBox.tsx
index 58a43c55a..0eafe4312 100644
--- a/src/client/views/nodes/MapBox/MapBox.tsx
+++ b/src/client/views/nodes/MapBox/MapBox.tsx
@@ -1,7 +1,8 @@
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { Tooltip } from '@mui/material';
import { GoogleMapProps, Marker } from '@react-google-maps/api';
import BingMapsReact from 'bingmaps-react';
-import { EditableText, IconButton, Toggle, Type } from 'browndash-components';
+import { Button, EditableText, IconButton, Toggle, Type } from 'browndash-components';
import { tickStep } from 'd3';
import { action, computed, IReactionDisposer, observable, ObservableMap, reaction, runInAction } from 'mobx';
import { observer } from 'mobx-react';
@@ -697,7 +698,7 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
* Toggles mode for placing a pin down on map
*/
@observable
- placePinOn = true;
+ placePinOn = false;
@action
togglePlacePin = () => {
if (this.placePinOn) this.placePinOn = false;
@@ -742,39 +743,35 @@ export class MapBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatableProps
// Keeps track of when dragging a pin onto map
draggingPin = false;
- dragToggle = (e:React.PointerEvent) => {
- console.log("DRAGGING TOGGLE")
- document.addEventListener('drop', this.dropPin, true)
- document.addEventListener('pointermove', this.pinMove, true)
- e.stopPropagation();
- }
- pinMove = (e:PointerEvent) => {
- console.log("MOVING");
+ dragToggle = (e: React.PointerEvent) => {
+ console.log('DRAGGING TOGGLE');
+ document.addEventListener('drop', this.dropPin, true);
+ document.addEventListener('pointermove', this.pinMove, true);
e.stopPropagation();
- }
- dropPin = (e:DragEvent) => {
- // document.removeChild(ele);
-
-
- let target = document.elementFromPoint(e.x, e.y);
-
- while (target != null){
- if (target === this._ref.current){
- const location = this.MicrosoftMaps.tryPixelToLocation(new this.MicrosoftMaps.Point(e.clientX,e.clientY))
-
-console.log(location)
+ };
+ pinMove = (e: PointerEvent) => {
+ console.log('MOVING');
+ e.stopPropagation();
+ };
+ dropPin = (e: DragEvent) => {
+ e.stopPropagation();
+ e.preventDefault();
+ document.removeEventListener('drop', this.dropPin, true);
+ document.removeEventListener('pointermove', this.pinMove, true);
+ let target = document.elementFromPoint(e.x, e.y);
+
+ while (target != null) {
+ if (target === this._ref.current) {
+ const cpt = this.props.ScreenToLocalTransform().transformPoint(e.clientX, e.clientY);
+ const x = cpt[0] - this.props.PanelWidth() / 2;
+ const y = cpt[1] - 32 - this.props.PanelHeight() / 2;
+ const location = this._bingMap.current.tryPixelToLocation(new this.MicrosoftMaps.Point(x, y));
this.createPushpin(location.latitude, location.longitude);
-
- e.stopPropagation();
-
break;
}
- target = target.parentElement
- }
- document.removeEventListener('drop', this.dropPin)
- }
-
-
+ target = target.parentElement;
+ }
+ };
searchbarKeyDown = (e: any) => {
if (e.key === 'Enter') {
@@ -805,13 +802,13 @@ console.log(location)
{this.annotationLayer}
<div className="mapBox-searchbar">
- <EditableText
- // editing
- setVal={(newText: string | number) => typeof newText === 'string' && this.searchbarOnEdit(newText)}
- placeholder="Boston"
-
- // text="text"
- />
+ <div style={{ width: 'calc(100% - 40px)' }}>
+ <EditableText
+ // editing
+ setVal={(newText: string | number) => typeof newText === 'string' && this.searchbarOnEdit(newText)}
+ placeholder="Boston"
+ />
+ </div>
<IconButton
icon={
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="magnifying-glass" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" color="#DFDFDF">
@@ -829,34 +826,20 @@ console.log(location)
onPointerUp={function noRefCheck() {}}
type={Type.TERT}
/>
- <input type="checkbox" id="switch" className="checkbox" checked={this.placePinOn} onChange={this.togglePlacePin} />
-
- <label htmlFor="switch" className="toggle">
- <p>{this.placePinOn ? 'Place Pin ON' : 'Place Pin OFF'}</p>
- </label>
- <div draggable={true} onPointerDown={this.dragToggle}
- >
- <FontAwesomeIcon className="right" icon="angle-double-left" size="lg" />
- {/* <Toggle
- toggleStatus = {this.placePinOn}
- onClick={this.togglePlacePin}
- iconPlacement={"right"}
- text="amongus" /> */}
+ <div draggable={true} style={{ width: 30, height: 30 }} onPointerDown={this.dragToggle}>
+ <Button tooltip="drag to place a pushpin" icon={<FontAwesomeIcon size={'lg'} icon={'bullseye'} />} />
</div>
</div>
-
-
- <BingMapsReact
- onMapReady={this.bingMapReady}
- bingMapsKey={bingApiKey}
- height="100%"
- mapOptions={this.bingMapOptions}
- width="100%"
+ <BingMapsReact
+ onMapReady={this.bingMapReady}
+ bingMapsKey={bingApiKey}
+ height="100%"
+ mapOptions={this.bingMapOptions}
+ width="100%"
viewOptions={this.bingViewOptions}
- onPointerUp{...()=>this.draggingPin=false}
-
- ></BingMapsReact>
+ onPointerUp
+ {...() => (this.draggingPin = false)}></BingMapsReact>
<div>
{!this._mapReady
? null