medivo 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/medivo/map.coffee +14 -0
- data/app/assets/javascripts/medivo/models.coffee +39 -5
- data/app/assets/javascripts/medivo/show_labs.coffee +25 -3
- data/config/routes.rb +1 -1
- data/lib/medivo/version.rb +1 -1
- data/spec/dummy/app/views/labs/search.html.haml +30 -2
- data/spec/dummy/config/routes.rb +1 -1
- data/spec/dummy/log/development.log +2599 -0
- data/spec/dummy/log/test.log +303 -0
- data/spec/dummy/tmp/cache/assets/C46/F00/sprockets%2F2281d588b540056c5a7306c32a3761b9 +0 -0
- data/spec/dummy/tmp/cache/assets/CAB/970/sprockets%2F6aa4308273851c94a14158394d4dcdc4 +0 -0
- data/spec/dummy/tmp/cache/assets/CC3/EF0/sprockets%2F453b504c1f8f374578636f699eaa455d +0 -0
- data/spec/dummy/tmp/cache/assets/CE4/E70/sprockets%2F091ec16b8699113092ce35de93ca1d87 +0 -0
- data/spec/dummy/tmp/cache/assets/CEE/250/sprockets%2F96688f33f2f8aa261bf6701c1d6d7575 +0 -0
- data/spec/dummy/tmp/cache/assets/CFF/7F0/sprockets%2F4007fd53da973506c55bc273a05c5c0d +0 -0
- data/spec/dummy/tmp/cache/assets/D19/310/sprockets%2F110931639fc185699ea1aaaf87dd488b +0 -0
- data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
- data/spec/dummy/tmp/cache/assets/D62/380/sprockets%2F712d93afe40570cc939133bddca13bc7 +0 -0
- data/spec/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
- data/spec/dummy/tmp/cache/assets/D9C/F50/sprockets%2F224e78bb9e1c414a2d518a3aaffd6f77 +0 -0
- data/spec/dummy/tmp/cache/assets/D9D/4E0/sprockets%2Fe9dab92986b1516fca08474613ccadcb +0 -0
- data/spec/dummy/tmp/cache/assets/DA2/040/sprockets%2F6ab79dcced8cc9933b734e7b21c3a183 +0 -0
- data/spec/dummy/tmp/cache/assets/DD2/A50/sprockets%2Fecb5dd9066b50eb678cd8c9dbb21d229 +0 -0
- data/spec/dummy/tmp/cache/assets/DD4/2B0/sprockets%2Fef214a63f29afe7f3cbffc65af943108 +0 -0
- data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/E59/D50/sprockets%2Fbe1cc4d9b0efb617e58baa16dd1dee58 +0 -0
- data/spec/dummy/tmp/pids/server.pid +1 -1
- data/spec/requests/labs_spec.rb +7 -6
- metadata +17 -17
@@ -1,3 +1,17 @@
|
|
1
|
+
class window.LabListView
|
2
|
+
el: null
|
3
|
+
template: null
|
4
|
+
|
5
|
+
constructor: (@lab_list)->
|
6
|
+
this.el = $('ul#lab_list')
|
7
|
+
this.template = Handlebars.compile($('#lab_item_template').html())
|
8
|
+
this.render()
|
9
|
+
|
10
|
+
render: ->
|
11
|
+
view = this
|
12
|
+
view.el.empty()
|
13
|
+
$.each( @lab_list.labs, (index, lab)-> view.el.append( $(view.template(lab.data)) ) )
|
14
|
+
|
1
15
|
class window.MapView
|
2
16
|
constructor: (@collection, @center_point)->
|
3
17
|
throw "you need a collection to make a MapView" unless @collection
|
@@ -1,7 +1,35 @@
|
|
1
|
+
########## handlebars helpers ##############
|
2
|
+
String.prototype.capitalize = ->
|
3
|
+
this.charAt(0).toUpperCase() + this.substring(1).toLowerCase()
|
4
|
+
|
5
|
+
String.prototype.titleize = ->
|
6
|
+
res = []
|
7
|
+
parts = this.split(" ")
|
8
|
+
$.each(parts, (index, part)->
|
9
|
+
res.push(part.capitalize())
|
10
|
+
)
|
11
|
+
res.join(" ")
|
12
|
+
|
13
|
+
Handlebars.registerHelper("rounded", (number)->
|
14
|
+
if (number != undefined)
|
15
|
+
parseFloat(number).toFixed(2)
|
16
|
+
)
|
17
|
+
|
18
|
+
Handlebars.registerHelper("titleize", (string)->
|
19
|
+
if (string != undefined)
|
20
|
+
string.titleize()
|
21
|
+
)
|
22
|
+
|
23
|
+
Handlebars.registerHelper("address_without_comma", (lab)->
|
24
|
+
if (this.address != undefined)
|
25
|
+
this.address.replace(/(\s*,\s*$)/g, "").titleize()
|
26
|
+
)
|
27
|
+
|
28
|
+
########## Lab model ##############
|
1
29
|
class window.Lab
|
2
30
|
constructor: (@data)->
|
3
31
|
marker: null
|
4
|
-
map_tooltip_template: Handlebars.compile("{{name}}\n{{address}}\n{{city}},{{state}} ")
|
32
|
+
map_tooltip_template: Handlebars.compile("{{titleize name}}\n{{address_without_comma address}}\n{{titleize city}},{{state}} ")
|
5
33
|
|
6
34
|
clearMarker: ->
|
7
35
|
if this.marker
|
@@ -25,13 +53,19 @@ class window.Lab
|
|
25
53
|
makeIcon: ->
|
26
54
|
new google.maps.MarkerImage("/assets/medivo/lab.png")
|
27
55
|
|
28
|
-
|
56
|
+
########## LabList model ##############
|
29
57
|
class window.LabList
|
30
58
|
|
31
|
-
constructor: (
|
59
|
+
constructor: (lab_info)->
|
60
|
+
@labs = []
|
61
|
+
this.setLabs(lab_info)
|
62
|
+
|
63
|
+
setLabs: (lab_info)->
|
64
|
+
this.clearMarkers()
|
32
65
|
labs = @labs = []
|
33
|
-
$.each(
|
66
|
+
$.each( lab_info, (index, lab_data)->
|
34
67
|
labs.push(new Lab(lab_data))
|
35
68
|
)
|
36
69
|
|
37
|
-
clearMarkers: ->
|
70
|
+
clearMarkers: ->
|
71
|
+
$.each( @labs, (index, lab)-> lab.clearMarker() )
|
@@ -1,10 +1,32 @@
|
|
1
1
|
$(document).ready ->
|
2
|
+
|
3
|
+
map_view = null
|
4
|
+
lab_list = null
|
2
5
|
data = $('#lab_list_container').data('labs')
|
3
6
|
if data
|
4
7
|
lab_list = new window.LabList( data.labs )
|
5
8
|
map_view = new window.MapView( lab_list, data.zip_location )
|
9
|
+
lab_list_view = new window.LabListView( lab_list )
|
6
10
|
map_view.render()
|
7
11
|
else
|
8
|
-
|
9
|
-
|
10
|
-
|
12
|
+
console.log('no data')
|
13
|
+
|
14
|
+
###### handle ajax lab data search ########
|
15
|
+
$("form#lab_data_search")
|
16
|
+
.bind('ajax:beforeSend', (event, data)->
|
17
|
+
zip_code = $(this).find('#zip_code').val()
|
18
|
+
if (!zip_code.match(/\d{5}/))
|
19
|
+
span = $('<span>Zip code should be 5 digits</span>')
|
20
|
+
$('form#lab_data_search .error_message').append(span)
|
21
|
+
span.fadeOut(4000)
|
22
|
+
false
|
23
|
+
)
|
24
|
+
.bind('ajax:success', (event, data)->
|
25
|
+
lab_list.setLabs(data.labs)
|
26
|
+
map_view.center_point = data.zip_location
|
27
|
+
map_view.render()
|
28
|
+
$('form#lab_data_search input[type=submit]').prop("disabled", false)
|
29
|
+
)
|
30
|
+
.bind('ajax:complete', (event, data)->
|
31
|
+
)
|
32
|
+
|
data/config/routes.rb
CHANGED
data/lib/medivo/version.rb
CHANGED
@@ -1,11 +1,39 @@
|
|
1
|
+
// sample template for rendering lab info
|
2
|
+
%script{:id=>"lab_item_template", :type=>"text/x-handlebars-template"}
|
3
|
+
%li.lab_info
|
4
|
+
.lab_image
|
5
|
+
%img{:src=>"{{image}}", :width=>'12px'}
|
6
|
+
%div
|
7
|
+
.lab_name
|
8
|
+
{{lab_name}}
|
9
|
+
.address
|
10
|
+
{{address_without_comma}}, {{titleize city}}, {{state}}
|
11
|
+
.phone
|
12
|
+
Tel: {{telephone}}
|
13
|
+
.link
|
14
|
+
= form_for :lab, :url=>'/select', :method=>'post' do |f|
|
15
|
+
%input{ :type=>:hidden, :name => 'id', :value=>"{{id}}" }
|
16
|
+
%input{ :type=>:hidden, :name => 'lab_id', :value=>"{{lab_id}}" }
|
17
|
+
%input{ :type=>:hidden, :name => 'lab_info[name]', :value=>"{{lab_name}}" }
|
18
|
+
%input{ :type=>:hidden, :name => 'lab_info[address]', :value=>"{{address_without_comma}}" }
|
19
|
+
%input{ :type=>:hidden, :name => 'lab_info[city]', :value=>"{{titleize city}}" }
|
20
|
+
%input{ :type=>:hidden, :name => 'lab_info[state]', :value=>"{{state}}" }
|
21
|
+
%input{ :type=>:hidden, :name => 'lab_info[zip]', :value=>"{{zip}}" }
|
22
|
+
%input{ :type=>:hidden, :name => 'lab_info[telephone]', :value=>"{{telephone}}" }
|
23
|
+
= f.submit 'Select location', :class=>'select_location button'
|
24
|
+
|
25
|
+
// map display
|
1
26
|
#map_canvas_container
|
2
27
|
#map_canvas{:style => "width:500px; height:350px"}
|
3
28
|
|
29
|
+
// lab list display
|
4
30
|
#lab_list_container{ 'data-labs'=>@lab_data.to_json }
|
31
|
+
%ul#lab_list
|
5
32
|
|
6
|
-
|
33
|
+
// form for ajax lab searches ..the code to handle return data is in show_labs.coffee
|
34
|
+
= form_tag(medivo.data_labs_path, :method=>:get, :id=>'lab_data_search', :remote=>true) do
|
7
35
|
%div
|
8
|
-
|
36
|
+
Enter a new Zip Code
|
9
37
|
.error_message
|
10
38
|
|
11
39
|
= text_field_tag :zip_code, params[:zip_code]
|
data/spec/dummy/config/routes.rb
CHANGED