|
@@ -1,6 +1,4 @@
|
|
|
import React, { Component } from 'react';
|
|
|
-//import persons from './persons';
|
|
|
-//import ReactDOM from 'react-dom';
|
|
|
import './App.css';
|
|
|
import Tables from './Tables';
|
|
|
|
|
@@ -8,6 +6,8 @@ import Tables from './Tables';
|
|
|
class App extends Component {
|
|
|
constructor(props){
|
|
|
super(props);
|
|
|
+ this.apiUrl = "http://localhost:5000";
|
|
|
+ this.name = null;
|
|
|
this.state = {
|
|
|
persons: []
|
|
|
};
|
|
@@ -17,140 +17,62 @@ class App extends Component {
|
|
|
|
|
|
// is called once when loading the page
|
|
|
componentDidMount() {
|
|
|
- //fetch("http://192.168.8.100:3001/persons")
|
|
|
- fetch("http://localhost:5000/users")
|
|
|
- .then(response => {
|
|
|
- if (response.ok) {
|
|
|
- return response;
|
|
|
- } else {
|
|
|
- let errorMessage = "${response.status(${response.statusText})",
|
|
|
- error = new Error(errorMessage);
|
|
|
- throw(error);
|
|
|
- }
|
|
|
- })
|
|
|
+ this.reloadLocations();
|
|
|
+ setInterval(this.updateLocation, 10000);
|
|
|
+ }
|
|
|
+
|
|
|
+ reloadLocations = () => {
|
|
|
+ fetch(this.apiUrl + "/users")
|
|
|
.then(response => response.json())
|
|
|
- .then(json =>{
|
|
|
- console.log(json["users"]);
|
|
|
- this.setState({ persons: json["users"] })
|
|
|
+ .then(data =>{
|
|
|
+ console.log(data["users"]);
|
|
|
+ this.setState({ persons: data["users"] })
|
|
|
}).catch(error => {
|
|
|
console.log(error);
|
|
|
});
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- /*change = () => {
|
|
|
- const newPersons = [...this.state.persons];
|
|
|
- const id = 0;
|
|
|
- newPersons.map( person => {
|
|
|
- if (id == person.id) {
|
|
|
- const axios = require('axios');
|
|
|
- let longitude = Math.floor((Math.random() * 150) + 1);
|
|
|
- let latitude = Math.floor((Math.random() * 150) + 1);
|
|
|
-
|
|
|
- //axios.put('http://192.168.8.100:3001/persons/0/', {
|
|
|
- axios.put('http://localhost:3001/persons/0/', {
|
|
|
- longitude: longitude,
|
|
|
- latitude: latitude,
|
|
|
- shortName: "VEN",
|
|
|
- name: "Martin",
|
|
|
- speed: 1,
|
|
|
- color: "#ddd"
|
|
|
- }).catch(error => {
|
|
|
- console.log(error);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- })
|
|
|
- this.componentDidMount()
|
|
|
-
|
|
|
- }*/
|
|
|
|
|
|
- getLocation = (name) => {
|
|
|
+ receivedPosition = (position) => {
|
|
|
const axios = require('axios');
|
|
|
- const newPersons = [...this.state.persons];
|
|
|
-
|
|
|
- if (navigator.geolocation) { //check if geolocation is available
|
|
|
- navigator.geolocation.getCurrentPosition(function(position){
|
|
|
- console.log(position);
|
|
|
- console.log({"longitude": position.coords.longitude, "latitude": position.coords.latitude, "timestamp": position.timestamp, "name": name})
|
|
|
-
|
|
|
- axios.put('http://localhost:5000/report-location', {
|
|
|
- "longitude": position.coords.longitude,
|
|
|
- "latitude": position.coords.latitude,
|
|
|
- "timestamp": position.timestamp,
|
|
|
- "name": name}).catch(error => {
|
|
|
- console.log(error);
|
|
|
- });
|
|
|
-
|
|
|
- newPersons.map( person => {
|
|
|
- if (name == person.name) {
|
|
|
- person.longitude = position.coords.longitude
|
|
|
- person.latitude = position.coords.latitude
|
|
|
- }
|
|
|
- })
|
|
|
- });
|
|
|
- }
|
|
|
- this.setState({ persons: newPersons });
|
|
|
+ axios.put(this.apiUrl + "/report-location", {
|
|
|
+ "longitude": position.coords.longitude + Math.random()*10,
|
|
|
+ "latitude": position.coords.latitude,
|
|
|
+ "timestamp": position.timestamp/1000, // in seconds
|
|
|
+ "name": this.name
|
|
|
+ }).then(this.reloadLocations)
|
|
|
+ .catch(error => {
|
|
|
+ console.log(error);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
+ updateLocation = () => {
|
|
|
+ if (this.name!=null && navigator.geolocation) { //check if geolocation is available
|
|
|
+ navigator.geolocation.getCurrentPosition(this.receivedPosition);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
-
|
|
|
- /*create = (id) => {
|
|
|
- const axios = require('axios');
|
|
|
- let longitude = Math.floor((Math.random() * 100) + 1);
|
|
|
- let latitude = Math.floor((Math.random() * 100) + 1);
|
|
|
-
|
|
|
- if (navigator.geolocation) { //check if geolocation is available
|
|
|
- navigator.geolocation.getCurrentPosition(
|
|
|
- function(position){
|
|
|
- console.log(position);
|
|
|
- longitude = position.coords.longitude
|
|
|
- latitude = position.coords.latitude
|
|
|
- })
|
|
|
- };
|
|
|
-
|
|
|
- //axios.put('http://localhost:3001/persons/0/', {
|
|
|
- axios.put('http://localhost:3001/persons/0/', {
|
|
|
- longitude: longitude,
|
|
|
- latitude: latitude,
|
|
|
- shortName: "VEN",
|
|
|
- name: "Martin", // *** getAttribute
|
|
|
- speed: 1,
|
|
|
- color: "#ddd"
|
|
|
- }).catch(error => {
|
|
|
- console.log(error);
|
|
|
- });
|
|
|
- }*/
|
|
|
-
|
|
|
render (){
|
|
|
- //setTimeout(this.componentDidMount, 10000)
|
|
|
-
|
|
|
return (
|
|
|
<div id="wrapper">
|
|
|
<Tables persons={this.state.persons}/>
|
|
|
- <div id="debug"> </div>
|
|
|
+
|
|
|
<button
|
|
|
onClick={ () => {
|
|
|
- this.getLocation("Bernie");
|
|
|
- }}
|
|
|
- > Bernie </button>
|
|
|
+ this.name = "Bernie";
|
|
|
+ }}> Bernie </button>
|
|
|
<button
|
|
|
onClick={ () => {
|
|
|
- this.getLocation("Martin");
|
|
|
- }}
|
|
|
- > Martin </button>
|
|
|
+ this.name = "Martin";
|
|
|
+ }}> Martin </button>
|
|
|
<button
|
|
|
onClick={ () => {
|
|
|
- this.getLocation("Simon");
|
|
|
- }}
|
|
|
- > Simon </button>
|
|
|
+ this.name = "Simon";
|
|
|
+ }}> Simon </button>
|
|
|
<button
|
|
|
onClick={ () => {
|
|
|
- this.getLocation("Lukas");
|
|
|
- }}
|
|
|
- > Lukas </button>
|
|
|
+ this.name = "Lukas";
|
|
|
+ }}> Lukas </button>
|
|
|
</div>
|
|
|
);
|
|
|
}
|