-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSPEC.txt
More file actions
117 lines (84 loc) · 5.19 KB
/
SPEC.txt
File metadata and controls
117 lines (84 loc) · 5.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
* A SPA for finding wedding venues in the Lake District
There are 164 licensed wedding venues in the lake district. This single page app
will help the user to choose a venue.
User wants to add/remove items from map - businesses, pubs, restraunts. User
wants to see venues, view details about venue, add to shortlist User wants to
view shortlist, remove unwanted venues from shortlist, display on map. User
wants to filter map view - only show places with so many stars etc.
Three views: Search Bar, List view, Map view. Venues will be displayed on a map
of the lake district, loaded from a static JSON source. An option to display
other businesses, restraunts, other hotels, shops, wedding things like
haridressers. The user will be able to search for a venue. When highlighted a
venue will offer more information: Name, address, phone number, distance from
train station The user will be able to *star* venues, adding them to a
favourites list. The user will be able to calculate the quickest route to see
all venes starred. Yelp will be intergrated to allow reviews of things and to
show services such as hairdressers, florists.
* Custom Map Style - Should show the elevation especially - Custom Map Markers -
Wedding themed?
* Tech - Use github, not include node files, hosted version on github with good
readme and how to run - Not Inlcude Keys? - Webpack - Typescript - Small
focussed Commits - PouchDB? - Knockout.js
Should be responsive
** Filter Locations Includes a text input field or dropdown menu that filters
the map markers and list items to locations matching the text input or
selection. Filter function runs error-free.
** List View A list-view of location names is provided which displays all
locations by default, and displays the filtered subset of locations when a
filter is applied. Clicking a location on the list displays unique information
about the location, and animates its associated map marker (e.g. bouncing, color
change.) List functionality is responsive and runs error free.
** Map and Markers Map displays all location markers by default, and displays
the filtered subset of location markers when a filter is applied. Clicking a
marker displays unique information about a location in either an infoWindow or
DOM element. Markers should animate when clicked (e.g. bouncing, color change.)
Any additional custom functionality provided in the app functions error-free.
** Knockout
Code is properly separated based upon Knockout best practices (follow an MVVM
pattern, avoid updating the DOM manually with jQuery or JS, use observables
rather than forcing refreshes manually, etc). Knockout should not be used to
handle the Google Map API.
There are at least 5 locations in the model. These may be hard-coded or
retrieved from a data API.
** Asynchronous API Requests
Application utilizes the Google Maps API and at least one non-Google third-party
API. Refer to this documentation
All data requests are retrieved in an asynchronous manner.
** Error Handling
Data requests that fail are handled gracefully using common fallback techniques
(i.e. AJAX error or fail methods). 'Gracefully' means the user isn’t left
wondering why a component isn’t working. If an API doesn’t load there should be
some visible indication on the page (an alert box is ok) that it didn’t load.
Note: You do not need to handle cases where the user goes offline.
** Additional Location Data
Functionality providing additional data about a location is provided and sourced
from a 3rd party API. Information can be provided either in the marker’s
infoWindow, or in an HTML element in the DOM (a sidebar, the list view, etc.)
Provide attribution for the source of additional data. For example, if using
Foursquare, indicate somewhere in your UI and in your README that you are using
Foursquare data.
Error Free javascript Application runs without errors.
** Usability
Functionality is presented in a usable and responsive manner.
** README
A README file is included detailing all steps required to successfully run the
application.
** Comments
Comments are present and effectively explain longer code procedures.
** Code Quality
Code is formatted with consistent, logical, and easy-to-read formatting as
described in the Udacity JavaScript Style Guide.
If build tools (such as Gulp or Grunt) are used, both source and production code
are submitted in the same repository in separate directories. These directories
are usually named src and dist respectively.
** Extensions Add unique functionality beyond the minimum requirements (i.e. the
ability to “favorite” a location, etc.). Incorporate a build process allowing
for production quality, minified code, to be delivered to the client. Data
persists when the app is closed and reopened, either through localStorage or an
external database (e.g. Firebase). Include additional third-party data sources
beyond the minimum required. Style different markers in different (and
functionally-useful) ways, depending on the data set. Implement additional
optimizations that improve the performance and user experience of the filter
functionality (keyboard shortcuts, autocomplete functionality, filtering of
multiple fields, etc). Integrate all application components into a cohesive and
enjoyable user experience.