Added map to member profile page

This commit is contained in:
Skud
2014-10-19 13:50:43 +01:00
parent 82a61387a3
commit 41566d39f3
7 changed files with 72 additions and 14 deletions

View File

@@ -0,0 +1,30 @@
if (document.getElementById("membermap") !== null) {
mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>";
mapbox_base_url = "https://c.tiles.mapbox.com/v3/" + mapbox_map_id + "/{z}/{x}/{y}.png";
L.Icon.Default.imagePath = '/assets'
$.getJSON(location.pathname + '.json', function(member) {
console.log(JSON.stringify(member.latitude));
if (member.latitude && member.longitude) {
membermap = L.map('membermap').setView([member.latitude, member.longitude], 4);
L.tileLayer(mapbox_base_url, {
attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors under <a href="http://www.openstreetmap.org/copyright">ODbL</a> | Map imagery &copy; <a href="http://mapbox.com">Mapbox</a>',
maxZoom: 18
}).addTo(membermap);
console.log("found lat and long")
marker = new L.Marker(new L.LatLng(member.latitude, member.longitude));
member_url = "/members/" + member.slug;
member_link = "<a href='" + member_url + "'>" + member.login_name + "</a>";
where = "<p><i>" + member.location + "</i></p>";
marker.bindPopup(member_link + where).openPopup();
marker.addTo(membermap);
}
});
}

View File

@@ -113,6 +113,10 @@ p.stats {
height: 500px;
}
#membermap {
height: 250px;
}
.member-location {
font-size: small;
font-style: italic;

View File

@@ -10,6 +10,7 @@ class MembersController < ApplicationController
respond_to do |format|
format.html # index.html.haml
format.json { render :json => @members.to_json(:only => [:id, :login_name, :slug, :bio, :created_at, :location, :latitude, :longitude]) }
end
end
@@ -25,6 +26,7 @@ class MembersController < ApplicationController
respond_to do |format|
format.html # show.html.haml
format.json { render :json => @member.to_json(:only => [:id, :login_name, :bio, :created_at, :slug, :location, :latitude, :longitude]) }
format.rss { render(
:layout => false,
:locals => { :member => @member }

View File

@@ -0,0 +1,12 @@
%h3 Account details
%p
%strong Member since:
= member.created_at.to_s(:date)
%p
%strong Account type:
= member.account_type
account

View File

@@ -0,0 +1,5 @@
- if member.latitude and member.longitude
%div#membermap
%p
See other members near
= link_to member.location, place_path(member.location)

View File

@@ -15,24 +15,12 @@
.col-md-9
= render :partial => "map", :locals => { :member => @member }
= render :partial => "bio", :locals => { :member => @member }
= render :partial => "gardens", :locals => { :member => @member }
.col-md-3
= render :partial => "avatar", :locals => { :member => @member }
%h3 Account details
%p
%strong Member since:
= @member.created_at.to_s(:date)
%p
%strong Account type:
= @member.account_type
account
= render :partial => "account", :locals => { :member => @member }
= render :partial => "contact", :locals => { :member => @member, :twitter_auth => @twitter_auth, :flickr_auth => @flickr_auth }
= render :partial => "stats", :locals => { :member => @member }

View File

@@ -32,11 +32,28 @@ feature "member profile" do
london_member = FactoryGirl.create(:london_member)
visit member_path(london_member)
expect(page).to have_css("h1>small", :text => london_member.location)
expect(page).to have_css("#membermap")
expect(page).to have_content "See other members near #{london_member.location}"
end
scenario "member has not set location" do
visit member_path(member)
expect(page).not_to have_css("h1>small")
expect(page).not_to have_css("#membermap")
expect(page).not_to have_content "See other members near"
end
end
context "email privacy" do
scenario "public email address" do
public_member = FactoryGirl.create(:public_member)
visit member_path(public_member)
expect(page).to have_content public_member.email
end
scenario "private email address" do
visit member_path(member)
expect(page).not_to have_content member.email
end
end