-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcbsa_chapters.rb
76 lines (64 loc) · 1.65 KB
/
cbsa_chapters.rb
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
require "pry"
require "sinatra"
require "sinatra/content_for"
require "tilt/erubis"
require_relative "sequel_persistence"
configure do
set :erb, escape_html: true
set :port, 8080
end
configure(:development) do
enable :sessions
require "sinatra/reloader"
also_reload "sequel_persistence.rb"
end
before do
@storage = SequelPersistence.new(logger)
session[:pop_range] ||= "all"
session[:data_type] ||= "density"
end
get "/" do
redirect "/density"
end
get "/density" do
@population_data = @storage.density_all
erb :density, layout: :layout
end
def get_page(pop_data, data_type)
@population_data = pop_data
case data_type
when "age"
erb :age, layout: :layout
when "pop_change"
erb :pop_change, layout: :layout
when "race"
erb :race, layout: :layout
else "density"
erb :density, layout: :layout
end
end
post "/pop_range" do
new_pop_range = params[:pop_range]
data_type = session[:data_type]
session[:pop_range] = new_pop_range
pop_data = @storage.get_population_data([new_pop_range, data_type])
get_page(pop_data, data_type)
end
post "/data_type" do
new_data_type = params[:data_type]
pop_range = session[:pop_range]
session[:data_type] = new_data_type
pop_data = @storage.get_population_data([pop_range, new_data_type])
get_page(pop_data, new_data_type)
end
get "/current_query" do
pop_range = session[:pop_range] || 'all'
data_type = session[:data_type] || 'density'
pop_data = @storage.get_population_data([pop_range, data_type])
get_page(pop_data, data_type)
end
get "/city_data/:city_name" do
@city_data = @storage.city_data(params[:city_name])
@some_var = []
erb :city_data, layout: :layout
end