refactored some uneven spacing from server-side push, changed test sql to be more appropriate characters, and disabled camera functionality for demo.

main
Fan-Wu Yang 7 years ago
parent de6f166171
commit 77940d2235

@ -76,7 +76,8 @@ export default class App extends Component<Props> {
], 'rgba(0,0,255, 1)', 'rgba(0,0,255, 0.2)', 53) ], 'rgba(0,0,255, 1)', 'rgba(0,0,255, 0.2)', 53)
], ],
watchID, watchID,
activity: "map" activity: "map",
lastPolygon: ""
}; };
} }
@ -108,10 +109,11 @@ export default class App extends Component<Props> {
.then(data => { .then(data => {
console.log(data); console.log(data);
if (data != []) { if (data != []) {
this.takePicture(data.polygonID); // this.showCamera(data.polygonID);
// this.takePicture(data.polygonID);
} }
}); });
this.setState({activeWalk: false}) this.setState({activeWalk: false, walkMarkers: []})
} }
@ -119,17 +121,18 @@ export default class App extends Component<Props> {
navigator.geolocation.stopWatch(this.state.watchID); navigator.geolocation.stopWatch(this.state.watchID);
} }
takePicture = async function(polygonID) { takePicture = async function() {
if (this.camera) { if (this.camera) {
const options = { quality: 0.5, base64: true }; const options = { quality: 0.5, base64: true };
const data = await this.camera.takePictureAsync(options) console.log("called");
const data = await this.camera.takePictureAsync(options);
console.log(data.uri); console.log(data.uri);
this.setState({activity: "map"}); this.setState({activity: "map"});
} }
}; };
showCamera() { showCamera(polygonID) {
this.setState({activity: "takePicture"}); this.setState({activity: "takePicture", lastPolygon: polygonID});
} }

@ -2,19 +2,30 @@ DROP DATABASE IF EXISTS `territory-walker`;
CREATE DATABASE `territory-walker`; CREATE DATABASE `territory-walker`;
USE `territory-walker`; USE `territory-walker`;
DROP PROCEDURE IF EXISTS `deletePolygon`;
DROP PROCEDURE IF EXISTS `insertPolygon`;
DROP PROCEDURE IF EXISTS `selectNonUserPolygon`;
DROP PROCEDURE IF EXISTS `selectUserPolygon`;
DROP PROCEDURE IF EXISTS `getPolygonPoints`;
DROP TABLE IF EXISTS `polygonPoints`;
DROP TABLE IF EXISTS `polygonArea`;
DROP TABLE IF EXISTS `userJoinedGames`;
DROP TABLE IF EXISTS `gameInstances`;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `gameInstances` ( CREATE TABLE `gameInstances` (
gameID VARCHAR(6) UNIQUE NOT NULL, gameID VARCHAR(6) UNIQUE NOT NULL,
PRIMARY KEY (gameID) PRIMARY KEY (gameID)
); );
CREATE TABLE `users` ( CREATE TABLE `users` (
userID VARCHAR(6) UNIQUE NOT NULL, userID VARCHAR(40) UNIQUE NOT NULL,
nickname VARCHAR (40) NOT NULL, nickname VARCHAR (40) NOT NULL,
PRIMARY KEY (userID) PRIMARY KEY (userID)
); );
CREATE TABLE `userJoinedGames` ( CREATE TABLE `userJoinedGames` (
userID VARCHAR(6) NOT NULL, userID VARCHAR(40) NOT NULL,
gameID VARCHAR(6) NOT NULL, gameID VARCHAR(6) NOT NULL,
colour VARCHAR(6) NOT NULL, colour VARCHAR(6) NOT NULL,
FOREIGN KEY (userID) REFERENCES users(userID), FOREIGN KEY (userID) REFERENCES users(userID),
@ -25,7 +36,7 @@ CREATE TABLE `userJoinedGames` (
CREATE TABLE `polygonArea` ( CREATE TABLE `polygonArea` (
gameID VARCHAR(6) NOT NULL, gameID VARCHAR(6) NOT NULL,
polygonID VARCHAR(36) UNIQUE NOT NULL, polygonID VARCHAR(36) UNIQUE NOT NULL,
userID VARCHAR(6) NOT NULL, userID VARCHAR(40) NOT NULL,
area DOUBLE(30,4) NOT NULL, area DOUBLE(30,4) NOT NULL,
PRIMARY KEY (polygonID), PRIMARY KEY (polygonID),
FOREIGN KEY (gameID) REFERENCES gameInstances(gameID), FOREIGN KEY (gameID) REFERENCES gameInstances(gameID),
@ -56,7 +67,7 @@ DELIMITER ;
DELIMITER // DELIMITER //
CREATE PROCEDURE selectUserPolygon CREATE PROCEDURE selectUserPolygon
(IN gID VARCHAR(6), (IN gID VARCHAR(6),
IN usID VARCHAR(6)) IN usID VARCHAR(40))
BEGIN BEGIN
SELECT * FROM `polygonPoints` SELECT * FROM `polygonPoints`
JOIN `polygonArea` ON JOIN `polygonArea` ON
@ -71,7 +82,7 @@ DELIMITER ;
DELIMITER // DELIMITER //
CREATE PROCEDURE selectNonUserPolygon CREATE PROCEDURE selectNonUserPolygon
(IN gID VARCHAR(6), (IN gID VARCHAR(6),
IN usID VARCHAR(6)) IN usID VARCHAR(40))
BEGIN BEGIN
SELECT * FROM `polygonPoints` SELECT * FROM `polygonPoints`
JOIN `polygonArea` ON JOIN `polygonArea` ON
@ -86,7 +97,7 @@ DELIMITER ;
DELIMITER // DELIMITER //
CREATE PROCEDURE insertPolygon CREATE PROCEDURE insertPolygon
(IN gID VARCHAR(6), (IN gID VARCHAR(6),
IN usID VARCHAR(6), IN usID VARCHAR(40),
IN a DOUBLE(30,4)) IN a DOUBLE(30,4))
BEGIN BEGIN
DECLARE lastid VARCHAR(36) DEFAULT UUID(); DECLARE lastid VARCHAR(36) DEFAULT UUID();
@ -108,18 +119,19 @@ BEGIN
END // END //
DELIMITER ; DELIMITER ;
INSERT INTO `gameInstances` (gameID) VALUES ("samdum"); INSERT INTO `gameInstances` (gameID) VALUES ("U39FME");
INSERT INTO `users` (userID, nickname) VALUES ("samded", "Lesmaux"); INSERT INTO `users` (userID, nickname) VALUES ("Sam Bates", "Lesmaux");
INSERT INTO `users` (userID, nickname) VALUES ("fanded", "Umbra Sheep"); INSERT INTO `users` (userID, nickname) VALUES ("Fan-Wu Yang", "Umbra Sheep");
INSERT INTO `userJoinedGames` (userID, gameID, colour) VALUES ("samded", "samdum", "0000FF"); INSERT INTO `userJoinedGames` (userID, gameID, colour) VALUES ("Sam Bates", "U39FME", "0000FF");
INSERT INTO `polygonArea` (gameID, polygonID, userID, area) VALUES INSERT INTO `userJoinedGames` (userID, gameID, colour) VALUES ("Fan-Wu Yang", "U39FME", "00FF00");
("samdum", "someuniqueid", "samded", 100000.1); -- INSERT INTO `polygonArea` (gameID, polygonID, userID, area) VALUES
INSERT INTO `polygonPoints` (polygonID, lat, lng) VALUES -- ("samdum", "someuniqueid", "samded", 100000.1);
("someuniqueid", -43.5623, 172.5655), -- INSERT INTO `polygonPoints` (polygonID, lat, lng) VALUES
("someuniqueid", -43.5623, 172.5650), -- ("someuniqueid", -43.5623, 172.5655),
("someuniqueid", -43.5628, 172.5650), -- ("someuniqueid", -43.5623, 172.5650),
("someuniqueid", -43.5628, 172.5655), -- ("someuniqueid", -43.5628, 172.5650),
("someuniqueid", -43.5623, 172.5655); -- ("someuniqueid", -43.5628, 172.5655),
-- ("someuniqueid", -43.5623, 172.5655);
-- TODO CREATE PROCEDURE FOR GENERATING GAME ID -- TODO CREATE PROCEDURE FOR GENERATING GAME ID
-- concat(substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1), -- concat(substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),
-- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1), -- substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', rand()*36+1, 1),

@ -47,15 +47,11 @@ module.exports = {
let firstPoint = points[0]; let firstPoint = points[0];
let lastPoint = points[points.length - 1]; let lastPoint = points[points.length - 1];
let distance = mathFunc.gpsToMeters(firstPoint.lat, firstPoint.lng, lastPoint.lat, lastPoint.lng); let distance = mathFunc.gpsToMeters(firstPoint.lat, firstPoint.lng, lastPoint.lat, lastPoint.lng);
console.log(distance);
if (distance < 20) { if (distance < 20) {
console.log(lastPoint);
console.log(firstPoint);
if (lastPoint.lat != firstPoint.lat || lastPoint.lng != firstPoint.lng) { if (lastPoint.lat != firstPoint.lat || lastPoint.lng != firstPoint.lng) {
// points.pop(); // points.pop();
points.push({lat: firstPoint.lat, lng: lastPoint.lng}); points.push({lat: firstPoint.lat, lng: lastPoint.lng});
} }
console.log(points);
areaFunctions.collatePolygons(res, gameID, userID, points); areaFunctions.collatePolygons(res, gameID, userID, points);
} else { } else {
res.send([]); res.send([]);

@ -26,7 +26,6 @@ module.exports = {
}, },
submitFinalCollation(res, gameID, userID, points, area, mergedPolygonIDs) { submitFinalCollation(res, gameID, userID, points, area, mergedPolygonIDs) {
let query = util.format("CALL insertPolygon(\"%s\", \"%s\", %d)", gameID, userID, area); let query = util.format("CALL insertPolygon(\"%s\", \"%s\", %d)", gameID, userID, area);
console.log(query);
db.get().query(query, function(err, rows) { db.get().query(query, function(err, rows) {
if (err) { if (err) {
console.log(err); console.log(err);
@ -60,7 +59,6 @@ module.exports = {
deleteMergedPolygons(mergedPolygonIDs, next) { deleteMergedPolygons(mergedPolygonIDs, next) {
if (mergedPolygonIDs.length > 0) { if (mergedPolygonIDs.length > 0) {
let id = mergedPolygonIDs.pop(); let id = mergedPolygonIDs.pop();
console.log(id);
let deleteQuery = util.format("CALL deletePolygon(\"%s\");", id); let deleteQuery = util.format("CALL deletePolygon(\"%s\");", id);
db.get().query(deleteQuery, function(err, pointRows) { db.get().query(deleteQuery, function(err, pointRows) {
if (err) { if (err) {
@ -87,10 +85,8 @@ module.exports = {
let polygonResult = []; let polygonResult = [];
let polygonsMerged = []; let polygonsMerged = [];
polygons.map((polygon) => { polygons.map((polygon) => {
console.log(polygon);
if (polygon.coords[0].lat != polygon.coords[polygon.coords.length - 1].lat && if (polygon.coords[0].lat != polygon.coords[polygon.coords.length - 1].lat &&
polygon.coords[0].lng != polygon.coords[polygon.coords.length - 1].lng) { polygon.coords[0].lng != polygon.coords[polygon.coords.length - 1].lng) {
console.log("Duplicated");
polygon.coords.push({lat: polygon.coords[0].lat, lng: polygon.coords[0].lng}) polygon.coords.push({lat: polygon.coords[0].lat, lng: polygon.coords[0].lng})
} }
let intersect = module.exports.checkIntersects(polygonPoints, polygon.coords); let intersect = module.exports.checkIntersects(polygonPoints, polygon.coords);
@ -118,8 +114,6 @@ module.exports = {
checkIntersects(points1, points2) { checkIntersects(points1, points2) {
let arrayPoints1 = [module.exports.convertPointsObjToArray(points1)]; let arrayPoints1 = [module.exports.convertPointsObjToArray(points1)];
let arrayPoints2 = [module.exports.convertPointsObjToArray(points2)]; let arrayPoints2 = [module.exports.convertPointsObjToArray(points2)];
console.log("apt1: %s", arrayPoints1);
console.log("apt2: %s", arrayPoints2);
let poly1 = turf.polygon(arrayPoints1); let poly1 = turf.polygon(arrayPoints1);
let poly2 = turf.polygon(arrayPoints2); let poly2 = turf.polygon(arrayPoints2);
return turf.intersect(poly1, poly2); return turf.intersect(poly1, poly2);

@ -0,0 +1,63 @@
<?xml version="1.0"?>
<gpx version="1.1" creator="gpxgenerator.com">
<wpt lat="-43.56034430559162" lon="172.56487963850645">
<ele>20.00</ele>
<time>2018-09-29T00:14:32Z</time>
</wpt>
<wpt lat="-43.560389009756214" lon="172.5645457034841">
<ele>20.00</ele>
<time>2018-09-29T00:14:33Z</time>
</wpt>
<wpt lat="-43.56057462886744" lon="172.56421847398428">
<ele>20.00</ele>
<time>2018-09-29T00:14:34Z</time>
</wpt>
<wpt lat="-43.56077482475481" lon="172.56412727887778">
<ele>20.00</ele>
<time>2018-09-29T00:14:35Z</time>
</wpt>
<wpt lat="-43.560938196226466" lon="172.56437502082076">
<ele>20.00</ele>
<time>2018-09-29T00:14:36Z</time>
</wpt>
<wpt lat="-43.561183094481144" lon="172.5645091312715">
<ele>20.00</ele>
<time>2018-09-29T00:14:37Z</time>
</wpt>
<wpt lat="-43.56154822035659" lon="172.5645983288913">
<ele>20.00</ele>
<time>2018-09-29T00:14:38Z</time>
</wpt>
<wpt lat="-43.56176590553912" lon="172.56466806632568">
<ele>20.00</ele>
<time>2018-09-29T00:14:39Z</time>
</wpt>
<wpt lat="-43.56199330797017" lon="172.56471098166992">
<ele>20.00</ele>
<time>2018-09-29T00:14:40Z</time>
</wpt>
<wpt lat="-43.56214685271595" lon="172.56482095223953">
<ele>20.00</ele>
<time>2018-09-29T00:14:41Z</time>
</wpt>
<wpt lat="-43.562273186707" lon="172.56501675349762">
<ele>19.00</ele>
<time>2018-09-29T00:14:42Z</time>
</wpt>
<wpt lat="-43.56249281286084" lon="172.56543786031295">
<ele>19.00</ele>
<time>2018-09-29T00:14:43Z</time>
</wpt>
<wpt lat="-43.56234315618805" lon="172.56567657691528">
<ele>19.04</ele>
<time>2018-09-29T00:14:44Z</time>
</wpt>
<wpt lat="-43.56218766834203" lon="172.56602526408722">
<ele>20.00</ele>
<time>2018-09-29T00:14:45Z</time>
</wpt>
<wpt lat="-43.56034430559162" lon="172.56487963850645">
<ele>20.00</ele>
<time>2018-09-29T00:14:46Z</time>
</wpt>
</gpx>
Loading…
Cancel
Save