Mapboxes.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import React, {Profiler} from "react";
  2. import Mapbox from "./../maps/Mapbox";
  3. import {measureTime} from './../helpers/measureTime';
  4. import {CustomInput, Input} from "reactstrap";
  5. import {mapTestState} from "./../config/variables"
  6. import {
  7. createRandomMarkers,
  8. calcMarkerPosition,
  9. changeSwitch,
  10. setNoOfMarkers
  11. } from "./../helpers/randomMarkers";
  12. import {
  13. didMountSwitchLatLng,
  14. componentDidUpdate,
  15. componentWillUnmount
  16. } from "./../helpers/testLifecycle"
  17. export default class MapGLs extends React.Component{
  18. constructor(props) {
  19. super(props)
  20. this.state = {
  21. ...mapTestState,
  22. markerType: "feature"
  23. }
  24. this.measurementsDiv = React.createRef()
  25. this.markerInfoDiv = React.createRef()
  26. this.createRandomMarkers = createRandomMarkers.bind(this)
  27. this.calcMarkerPosition = calcMarkerPosition.bind(this)
  28. this.changeSwitch = changeSwitch.bind(this)
  29. this.setNoOfMarkers = setNoOfMarkers.bind(this)
  30. this.componentDidUpdate = componentDidUpdate.bind(this)
  31. this.componentWillUnmount = componentWillUnmount.bind(this)
  32. }
  33. componentDidMount() {
  34. didMountSwitchLatLng(this, true)
  35. }
  36. handleRadioChange = (event) => {
  37. this.setState({
  38. markerType: event.target.value
  39. })
  40. this.measurementsDiv.current.innerHTML = ""
  41. }
  42. render(){
  43. return (
  44. <div className="mapTestContainer">
  45. <div className="mapTime">
  46. <CustomInput type="switch" onChange={this.changeSwitch} id="moveSwitch" name="moveSwitch" label="Move markers" />
  47. <div ref={this.markerInfoDiv}>
  48. <span>{this.state.currStep} steps</span>
  49. </div>
  50. <input type="radio" value="feature" id="feature" onChange={this.handleRadioChange} name="markerType" defaultChecked/>
  51. <label htmlFor="feature" className="ml-2 mr-2">feature</label>
  52. <input type="radio" value="marker" id="marker" onChange={this.handleRadioChange} name="markerType"/>
  53. <label htmlFor="marker"className="ml-2">marker</label><br/>
  54. <span>Number of Markers: {this.state.noOfMarkers}</span><br/>
  55. <Input type="text" onChange={(e) => this.setNoOfMarkers(e, true)} value={this.state.noOfMarkers}/>
  56. <div ref={this.measurementsDiv}>
  57. </div>
  58. </div>
  59. <div className="mapTest">
  60. <Profiler id="mapbox" onRender={measureTime(this, this.state.noOfMarkers, this.state.markerType)}>
  61. <Mapbox markers={this.state.markers} markerType={this.state.markerType}/>
  62. </Profiler>
  63. </div>
  64. </div>
  65. );
  66. }
  67. }