aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamarth Agarwal <samarth.agarwal@mail.utoronto.ca>2019-03-29 18:04:33 +0000
committerSamarth Agarwal <samarth.agarwal@mail.utoronto.ca>2019-03-29 18:04:33 +0000
commita062626028fb80b5ab6b61af65d88ca9b7140243 (patch)
tree3aaedd2053b6c3071aaf767df4fd6d61261b83de
parentbab72114837b27eb939d5d9838b788f132478ce8 (diff)
Implemented feature so that whenever a point is clicked a red dot shows up at its base to focus on it and the screen zooms to put the point in the center.
-rw-r--r--web/models/mockpoints.js3
-rw-r--r--web/models/points.js3
-rw-r--r--web/public/assets/blue-icon-focused.pngbin0 -> 4220 bytes
-rw-r--r--web/public/assets/orange-icon-focused.pngbin0 -> 7428 bytes
-rw-r--r--web/public/assets/orange-icon.pngbin7382 -> 12341 bytes
-rw-r--r--web/public/javascripts/map.js46
6 files changed, 47 insertions, 5 deletions
diff --git a/web/models/mockpoints.js b/web/models/mockpoints.js
index ac9ecd4..1bff370 100644
--- a/web/models/mockpoints.js
+++ b/web/models/mockpoints.js
@@ -10,7 +10,8 @@ var dumbJsonSchema = new Schema({
race: String,
longhair: Boolean,
longbeard: Boolean,
- extra: String
+ extra: String,
+ status: {type: String, default: "new"}
});
// Mongoose Model definition
diff --git a/web/models/points.js b/web/models/points.js
index d27f2a7..28d43b7 100644
--- a/web/models/points.js
+++ b/web/models/points.js
@@ -10,7 +10,8 @@ var JsonSchema = new Schema({
race: String,
longhair: Boolean,
longbeard: Boolean,
- extra: String
+ extra: String,
+ status: {type: String, default: "new"}
});
// Mongoose Model definition
diff --git a/web/public/assets/blue-icon-focused.png b/web/public/assets/blue-icon-focused.png
new file mode 100644
index 0000000..728d06d
--- /dev/null
+++ b/web/public/assets/blue-icon-focused.png
Binary files differ
diff --git a/web/public/assets/orange-icon-focused.png b/web/public/assets/orange-icon-focused.png
new file mode 100644
index 0000000..26d8b52
--- /dev/null
+++ b/web/public/assets/orange-icon-focused.png
Binary files differ
diff --git a/web/public/assets/orange-icon.png b/web/public/assets/orange-icon.png
index dd725de..4b89e0e 100644
--- a/web/public/assets/orange-icon.png
+++ b/web/public/assets/orange-icon.png
Binary files differ
diff --git a/web/public/javascripts/map.js b/web/public/javascripts/map.js
index 544da9e..33b0ed6 100644
--- a/web/public/javascripts/map.js
+++ b/web/public/javascripts/map.js
@@ -2,7 +2,13 @@
// L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
// attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
// }).addTo(map);
-let currPoint;
+let currPoint = null;
+
+const orangeIcon = L.icon({
+ iconUrl: '../assets/orange-icon.png',
+ iconSize: [25, 41],
+ iconAnchor: [12, 41]
+});
const Races = {
"White" : "European or White",
@@ -18,7 +24,13 @@ function plotPointsOnMap(points) {
pointToLayer: function (feature, latlng) {
//return L.circleMarker(latlng);
latlngbounds.extend(latlng);
- return L.marker(latlng);
+ if (feature.status === "pending") {
+ return L.marker(latlng, {icon: orangeIcon});
+ }
+ else if (feature.status === "new") {
+ return L.marker(latlng);
+ }
+
}
}).on('click', showDetails).addTo(map);
@@ -30,10 +42,29 @@ function plotPointsOnMap(points) {
// show details about point
// e is the event info
function showDetails(e) {
+ if(currPoint !== null) {
+ if (currPoint.feature.geometry.status === "new") {
+ currPoint._icon.src = '../assets/blue-icon.png';
+ }
+ else if (currPoint.feature.geometry.status === "pending") {
+ currPoint._icon.src = '../assets/orange-icon.png';
+ }
+ }
+
// layer.feature.geometry gives you access to all the fields
let layer = e.layer;
currPoint = layer;
+ if (currPoint.feature.geometry.status === "new") {
+ currPoint._icon.src = '../assets/blue-icon-focused.png';
+ }
+ else if (currPoint.feature.geometry.status === "pending") {
+ currPoint._icon.src = '../assets/orange-icon-focused.png';
+ }
+
+ const pointBounds = [currPoint.getLatLng()];
+ map.fitBounds(pointBounds);
+
let sideBar = document.getElementById('sidebar');
if (getComputedStyle(sideBar).visibility === 'hidden') {
@@ -93,16 +124,25 @@ function showDetails(e) {
}
function markAsPending(e) {
- currPoint._icon.src = '../assets/orange-icon.png';
+ currPoint._icon.src = '../assets/orange-icon-focused.png';
+ currPoint.feature.geometry.status = "pending";
}
function markAsCompleted(e) {
map.removeLayer(currPoint);
+ currPoint.feature.geometry.status = "completed";
}
function closeDetails(e) {
let details = document.getElementById('sidebar')
details.style.visibility = 'hidden';
+
+ if (currPoint.feature.geometry.status === "pending") {
+ currPoint._icon.src = '../assets/orange-icon.png';
+ }
+ else if (currPoint.feature.geometry.status === "new") {
+ currPoint._icon.src = '../assets/blue-icon.png';
+ }
}
// different basemap