From 0d0c5c5fe387cfe1a71b1620f6a73243f053a1d3 Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 16:40:11 -0400 Subject: Changed null to undefined. --- web/public/javascripts/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/public/javascripts/map.js b/web/public/javascripts/map.js index 33b0ed6..abb988a 100644 --- a/web/public/javascripts/map.js +++ b/web/public/javascripts/map.js @@ -42,7 +42,7 @@ function plotPointsOnMap(points) { // show details about point // e is the event info function showDetails(e) { - if(currPoint !== null) { + if(currPoint !== undefined) { if (currPoint.feature.geometry.status === "new") { currPoint._icon.src = '../assets/blue-icon.png'; } -- cgit v1.2.3 From 6efb02e2e5659b8d36cec0d5e9452042b98d2fda Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 16:43:22 -0400 Subject: Removed default status value. --- web/models/mockpoints.js | 2 +- web/models/points.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/models/mockpoints.js b/web/models/mockpoints.js index 1bff370..2398fae 100644 --- a/web/models/mockpoints.js +++ b/web/models/mockpoints.js @@ -11,7 +11,7 @@ var dumbJsonSchema = new Schema({ longhair: Boolean, longbeard: Boolean, extra: String, - status: {type: String, default: "new"} + status: type: String }); // Mongoose Model definition diff --git a/web/models/points.js b/web/models/points.js index 28d43b7..159a4d6 100644 --- a/web/models/points.js +++ b/web/models/points.js @@ -11,7 +11,7 @@ var JsonSchema = new Schema({ longhair: Boolean, longbeard: Boolean, extra: String, - status: {type: String, default: "new"} + status: type: String }); // Mongoose Model definition -- cgit v1.2.3 From 4315ac98ec453f1e1463d370d361576c39ebbb1b Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 16:43:58 -0400 Subject: Removed default status value again. --- web/models/mockpoints.js | 2 +- web/models/points.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/models/mockpoints.js b/web/models/mockpoints.js index 2398fae..51bd422 100644 --- a/web/models/mockpoints.js +++ b/web/models/mockpoints.js @@ -11,7 +11,7 @@ var dumbJsonSchema = new Schema({ longhair: Boolean, longbeard: Boolean, extra: String, - status: type: String + status: String }); // Mongoose Model definition diff --git a/web/models/points.js b/web/models/points.js index 159a4d6..7bb4e24 100644 --- a/web/models/points.js +++ b/web/models/points.js @@ -11,7 +11,7 @@ var JsonSchema = new Schema({ longhair: Boolean, longbeard: Boolean, extra: String, - status: type: String + status: String }); // Mongoose Model definition -- cgit v1.2.3 From 104e885981dec31aff9a5aaacc3abe2debcc9eba Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 16:59:30 -0400 Subject: Merging. --- web/public/javascripts/map.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/web/public/javascripts/map.js b/web/public/javascripts/map.js index abb988a..c5b1583 100644 --- a/web/public/javascripts/map.js +++ b/web/public/javascripts/map.js @@ -24,12 +24,6 @@ function plotPointsOnMap(points) { pointToLayer: function (feature, latlng) { //return L.circleMarker(latlng); latlngbounds.extend(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); -- cgit v1.2.3 From d0259d4d2008afc5db87d8bd2b1705ee9c38e84a Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 17:33:36 -0400 Subject: Finished merge --- web/public/javascripts/map.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/public/javascripts/map.js b/web/public/javascripts/map.js index 3cd5821..98e046b 100644 --- a/web/public/javascripts/map.js +++ b/web/public/javascripts/map.js @@ -128,6 +128,9 @@ function markAsPending(e) { let currPointId = currPointDetails._id; if (currPointDetails.status === "pending") return; + currPoint._icon.src = '../assets/orange-icon-focused.png'; + currPointDetails.status = "pending"; + updatePointStatusInDb(currPointId, "pending") .then(function(responseJson) { alert("Your change has been saved."); -- cgit v1.2.3 From 261a9d99027d658bc2dbc36661c944314bac6f25 Mon Sep 17 00:00:00 2001 From: Fahim <32271527+fahim1997@users.noreply.github.com> Date: Fri, 29 Mar 2019 17:49:43 -0400 Subject: Update README.md --- deliverables/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deliverables/README.md b/deliverables/README.md index ee9e9f6..a324d2d 100644 --- a/deliverables/README.md +++ b/deliverables/README.md @@ -9,7 +9,8 @@ Help the Homeless is a web and mobile application that allows homeless shelters * Users from Street To Homes can view a map and see point markers overlayed on the map which represent where users of the app have submitted locations of homeless people. * This map is live-updating, so no refresh required. * Clicking on a point marker on the map brings up detailed information about the homeless person at that location. -* 'Drop Pin' was not implemented in this iteration, although the button was made and added to our app for future use. This button currently has no functionality, but once fully implemented will allow users to select a location on the map themselves and place a pin there indicating there is a homeless person who requires help. +* Drop Pin option allows users to place marker at location of homeless person on a map of Toronto, bypassing the need for user location. +*When viewing the spread of points on the map, users with access to this side can now sort between pending reports and completed reports. The markers are also colour co-ordinated to make it easier for users to tell. ## Basic instructions ### Web application -- cgit v1.2.3 From 174152dd9787c51aa16fbfb54749baa337c77307 Mon Sep 17 00:00:00 2001 From: Fahim <32271527+fahim1997@users.noreply.github.com> Date: Fri, 29 Mar 2019 17:54:37 -0400 Subject: Update README.md --- deliverables/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deliverables/README.md b/deliverables/README.md index a324d2d..b86ada8 100644 --- a/deliverables/README.md +++ b/deliverables/README.md @@ -5,7 +5,7 @@ Help the Homeless is a web and mobile application that allows homeless shelters ## Key Features * Users can send their location using the app to report where a homeless person is. -* Users can fill out details about the homeless person before reporting them. +* Users are required to fill out details of the homeless person before submitting in order to help authorities identify the specific individual. User Location and Drop Pin both redirect to the form a user would have to fill out. * Users from Street To Homes can view a map and see point markers overlayed on the map which represent where users of the app have submitted locations of homeless people. * This map is live-updating, so no refresh required. * Clicking on a point marker on the map brings up detailed information about the homeless person at that location. -- cgit v1.2.3 From ad6b31fbb0e1aa09ae1560f3d504ecee84bac148 Mon Sep 17 00:00:00 2001 From: Kumar Damani Date: Fri, 29 Mar 2019 18:28:50 -0400 Subject: d3 docs final --- deliverables/iteration-03-plan.md | 4 ++- deliverables/iteration-03-review.md | 52 +++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 deliverables/iteration-03-review.md diff --git a/deliverables/iteration-03-plan.md b/deliverables/iteration-03-plan.md index 418e387..cbfcdfc 100644 --- a/deliverables/iteration-03-plan.md +++ b/deliverables/iteration-03-plan.md @@ -3,7 +3,7 @@ ## Iteration XX * Start date: Mar 12 - * End date: Mar 22? + * End date: Mar 29 ## Process @@ -11,6 +11,7 @@ * Having a dedicated day for testing so that branches are kept up to date and master is getting consistently updated with new code. We didn't do this in the last iteration and we think it led to a bunch of code conflicts. We hope that by testing regularly, we can get code pushed to appropriate places rather than letting it just sit in its branch. We will be able to see if this is effective by doing a search in GitHub commits with message "resolving conflicts". (We usually put something similar in conflict merges). + * We will create a recurring Slack reminder in the general channel which will notify us every night to check Pull Requests. Additionally, when a developer creates a new PR, they will individually notify the reviews on Slack with the link requesting for review. This is so that tasks get to the testing phase quicker, and therefore end up getting merged back into master quicker => new tasks will have the latest master. #### Roles & responsibilities @@ -48,3 +49,4 @@ Additionally, we now have staging and production deployments for the mobile side * A mobile application with the latest master branch deployed on Appetize, or a real phone (if permitted). * A interactive web application with the latest master branch deployed on Heroku. + diff --git a/deliverables/iteration-03-review.md b/deliverables/iteration-03-review.md new file mode 100644 index 0000000..e104248 --- /dev/null +++ b/deliverables/iteration-03-review.md @@ -0,0 +1,52 @@ +# Helpthehome by The Dream Team + +## Iteration 3 - Review & Retrospect + + * When: Friday March 29th @ 3:00pm + * Where: BA 3200 + +## Process - Reflection + +#### Decisions that turned out well + + * The decision to swap mobile and web roles was a good decision because it allowed team members to get an understanding of both sides of the application. This resulted in a quicker update meeting because all team members got exposure to all parts of the application. Before switching our updates lasted on average 10-15 minutes, but after switching our updates lasted on average 5-10 minutes. + * The decision to dedicate 30-45 minutes of every weekly meeting was a good decision because it improved the test coverage on our application and helped identify bugs early on. For example, we were able to identify a bug during our weekly testing in retrieving location services that caused the application to crash and we were able to fix it before merging into the master branch. This saved us the headache of potentially trying to revert merges to see what caused the application to break. + * The decision to modify our Pull Request process (by Slack reminders and personal DMs), resulted in code getting reviewed quicker and thus we had a lot of cards tested in between meetings, and master was fairly kept up to date. This meant that when new tasks were started, the branches already contained most recent code. +#### Decisions that did not turn out as well as we hoped + +List process-related (i.e. team organization) decisions that, in retrospect, were not as successful as you thought they would be. + + - Before this iteration, we decided that code reviews should only be done by those more closely involved with that portion of the project. For example, changes to the mobile part of the project were to be reviewed by others with involvement in mobile. Unfortunately, this was not enforced due to occaisonal unresponesiveness of teammembers throughout the iteration. + - Our decision to swap mobile and web roles was not completely successful. A few teammembers were not able to switch out of their d2 roles due to the increasing complexity of certain parts of the project. In a few cases, there was not enough time for teammembers to become completely familiar with eachothers work. + +#### Planned changes + +List any process-related changes you are planning to make (if there are any) + +> Nothing as of this review meeting. + +## Product - Review + +#### Goals and/or tasks that were met/completed: + + * All goals for this iteration were completed (see planning doc Goals section) with the exception of no. 4. + +#### Goals and/or tasks that were planned but not met/completed: + + * Handling of response from the server when mobile sends out the post request so that the user knows that their report actually went through in a Greeting Page. We did not complete this goal because although we started this task, we could not complete and implement it into our application within the time constraints. + + +#### Goal not included in this iteration + * We have a backlog column of a set of goals that we did not have time for in this iteration. For example, adding additional layers to the map which showed different information such as clusters, homeless shelter locations, user profiles etc. +![](https://i.imgur.com/I7q3m5C.png) + + + +## Meeting Highlights + +Going into the next iteration, our main insights are focused on preparing for the demo + + * Go over what we are going to say. + * Make sure everyone understands how the application works and how it is designed. + * Prepare answers to potential questions that the evaluators might ask. + -- cgit v1.2.3 From 472739642a90f43970dc85ad37277f5124b8d797 Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 18:48:14 -0400 Subject: Added undef line --- web/public/javascripts/map.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web/public/javascripts/map.js b/web/public/javascripts/map.js index c5b1583..07ca190 100644 --- a/web/public/javascripts/map.js +++ b/web/public/javascripts/map.js @@ -125,6 +125,7 @@ function markAsPending(e) { function markAsCompleted(e) { map.removeLayer(currPoint); currPoint.feature.geometry.status = "completed"; + currPoint = undefined; } function closeDetails(e) { -- cgit v1.2.3 From d727ca868539d6fd69b0a0dae673c11f0653f92e Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Fri, 29 Mar 2019 18:59:02 -0400 Subject: Changed pic url for pending clicks. --- web/public/javascripts/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/public/javascripts/map.js b/web/public/javascripts/map.js index 6f06e40..5326bb2 100644 --- a/web/public/javascripts/map.js +++ b/web/public/javascripts/map.js @@ -134,7 +134,7 @@ function markAsPending(e) { updatePointStatusInDb(currPointId, "pending") .then(function(responseJson) { alert("Your change has been saved."); - currPoint._icon.src = '../assets/orange-icon.png'; + currPoint._icon.src = '../assets/orange-icon-focused.png'; }) .catch(function(error) { alert(error); -- cgit v1.2.3 From 2ed2b0d01b9207b6c5003fe083238720a8409962 Mon Sep 17 00:00:00 2001 From: Kumar Damani Date: Fri, 29 Mar 2019 19:45:31 -0400 Subject: Update README.md --- deliverables/README.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/deliverables/README.md b/deliverables/README.md index b86ada8..260f73d 100644 --- a/deliverables/README.md +++ b/deliverables/README.md @@ -1,30 +1,35 @@ # Helpthehome by The Dream Team ## High Level Description -Help the Homeless is a web and mobile application that allows homeless shelters to see the locations of homeless people in need of help in real time. Our application consists of two components: a web application and a mobile application for iOS and Android. The web application displays a map that is updated with markers in real time. Each marker shows the location of a homeless person, along with identifying details such as (age, clothing, injured or not, etc.). Markers are displayed on the map whenever a user on the mobile application sends a request for help. The mobile application is intended to be used by the public. It contains a simple form that allows the user to describe the situation to help the outreach workers identify the person in need when responding for help. +Help the Homeless is a web and mobile application that allows homeless shelters to see the locations of homeless people of Toronto in need of help in real time. Our application consists of two components: a web application and a mobile application for iOS and Android. The web application displays a map that is updated with markers in real time. Each marker shows the location of a homeless person, along with identifying details such as (age, gender, race, other salient features). Markers are displayed on the map whenever a user on the mobile application sends a request for help. The mobile application is intended to be used by the public. It contains a simple form that allows the user to describe the situation to help the outreach workers identify the person in need when responding for help. ## Key Features -* Users can send their location using the app to report where a homeless person is. -* Users are required to fill out details of the homeless person before submitting in order to help authorities identify the specific individual. User Location and Drop Pin both redirect to the form a user would have to fill out. +* Current Loacation option allows users to send their current location to report where a homeless person is. +* Drop Pin option allows users to place marker at location of homeless person on a map of Toronto, bypassing the need for user location access. +* Users are required to fill out details of the homeless person before submitting in order to help authorities identify the specific individual. +* The required form question are multiple choice options making it very easy for a user to fill out quickly. * Users from Street To Homes can view a map and see point markers overlayed on the map which represent where users of the app have submitted locations of homeless people. -* This map is live-updating, so no refresh required. +* This map is live-updating, so no refresh required to see new reports. * Clicking on a point marker on the map brings up detailed information about the homeless person at that location. -* Drop Pin option allows users to place marker at location of homeless person on a map of Toronto, bypassing the need for user location. -*When viewing the spread of points on the map, users with access to this side can now sort between pending reports and completed reports. The markers are also colour co-ordinated to make it easier for users to tell. +* The user of the map can mark a report as "Pending", or "Complete" which is color coded for UX. ## Basic instructions ### Web application -1. To access the web application, go [here](https://helpthehome-qa.herokuapp.com/map). +1. To access the web application, go [here](https://helpthehome-prod.herokuapp.com/map). 2. Click on a marker on the map to see the details of a homeless person in need. -3. A detailed box will appear on the top left hand corner containing the person's age range, clothing description, injury status, and reason for help. You can close the box by clicking the close button in the bottom right corner of the details box. +3. A detailed box will appear on the top left hand corner containing the person's details. + * You can close the box by clicking the close button in the bottom right corner of the details box. + * You can mark the point as "Pending" to make it yellow. This action is persistent. + * You can mark the point as "Complete" to remove it from the map. This action is persistent. 4. You can zoom in and out by clicking the `+` and `-` button at the top left corner of the map respectively. You can also zoom in and out by scrolling up and down on your mouse/trackpad respectively. ### Mobile application -1. In a new tab, or window go to our mobile app presently running on an android emulator at Appetize.io: https://appetize.io/app/4nzk9t6g0h0y9r9ux2zj7d3tpg?device=nexus5&scale=75&orientation=portrait&osVersion=8.1 +1. In a new tab, or window go to our mobile app presently running on an android emulator at Appetize.io: https://appetize.io/app/5gatcnptebzga4fh6up350jaq4?device=nexus5&scale=75&orientation=portrait&osVersion=8.1 2. Press "Tap to Play". -3. Once prompted for location access, press "Allow". -4. Once you see "Welcome to Helpthehome!", you can press the red button "Use Current Location". (Note: this will use the location of the Appetize server where the emulator is running, **not your actual location**) -5. Fill in all the fields on the form with the appropriate information. Although you can leave any field blank, it is **strongly** recommended that you fill in all the fields, as it helps identify the person in need. +3. Once the app loads, you can **either** press the red button "Use Current Location". (Note: this may use the location of the Appetize server where the emulator is running, **not your actual location**) **OR** press Drop a Pin button if you don't want to share your location. + * Current Location: If prompted for location access, press "Allow". + * Drop the Pin: navigate to where you see the homeless person and then tap to drop a pin. (tap the pin to remove the pin if accidental tap occurs). Once satisfied, press Proceed. +5. Fill in all the fields on the form with the appropriate information. 5. When all the information is recorded, click the "Submit" button. A popup should say that you are being redirected to the main page. When you dismiss the message, you should be redirected to the greeting page. 6. You should now be able to see your report in the tab or window where you have the web app running without even needing to refresh. -- cgit v1.2.3