Skip to content

Commit c082e11

Browse files
committed
Add notes and sample code for 2015-03-12 session
1 parent 1567269 commit c082e11

File tree

8 files changed

+204
-0
lines changed

8 files changed

+204
-0
lines changed

session-notes/2015-03-12/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Fundamentals of Web Development
2+
3+
**March 12, 2015**
4+
5+
Questions:
6+
7+
- Mark: objects not saving properly (using DataMapper)
8+
- Sagar: trouble using flash error messages
9+
- Theodore: updating an element on a page without a refresh
10+
- Guillermo: simple input form has type datetime local
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
source 'https://rubygems.org'
2+
3+
gem 'sinatra'
4+
gem 'datamapper'
5+
gem 'dm-sqlite-adapter'
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
addressable (2.3.7)
5+
bcrypt (3.1.10)
6+
bcrypt-ruby (3.1.5)
7+
bcrypt (>= 3.1.3)
8+
data_objects (0.10.15)
9+
addressable (~> 2.1)
10+
datamapper (1.2.0)
11+
dm-aggregates (~> 1.2.0)
12+
dm-constraints (~> 1.2.0)
13+
dm-core (~> 1.2.0)
14+
dm-migrations (~> 1.2.0)
15+
dm-serializer (~> 1.2.0)
16+
dm-timestamps (~> 1.2.0)
17+
dm-transactions (~> 1.2.0)
18+
dm-types (~> 1.2.0)
19+
dm-validations (~> 1.2.0)
20+
dm-aggregates (1.2.0)
21+
dm-core (~> 1.2.0)
22+
dm-constraints (1.2.0)
23+
dm-core (~> 1.2.0)
24+
dm-core (1.2.1)
25+
addressable (~> 2.3)
26+
dm-do-adapter (1.2.0)
27+
data_objects (~> 0.10.6)
28+
dm-core (~> 1.2.0)
29+
dm-migrations (1.2.0)
30+
dm-core (~> 1.2.0)
31+
dm-serializer (1.2.2)
32+
dm-core (~> 1.2.0)
33+
fastercsv (~> 1.5)
34+
json (~> 1.6)
35+
json_pure (~> 1.6)
36+
multi_json (~> 1.0)
37+
dm-sqlite-adapter (1.2.0)
38+
dm-do-adapter (~> 1.2.0)
39+
do_sqlite3 (~> 0.10.6)
40+
dm-timestamps (1.2.0)
41+
dm-core (~> 1.2.0)
42+
dm-transactions (1.2.0)
43+
dm-core (~> 1.2.0)
44+
dm-types (1.2.2)
45+
bcrypt-ruby (~> 3.0)
46+
dm-core (~> 1.2.0)
47+
fastercsv (~> 1.5)
48+
json (~> 1.6)
49+
multi_json (~> 1.0)
50+
stringex (~> 1.4)
51+
uuidtools (~> 2.1)
52+
dm-validations (1.2.0)
53+
dm-core (~> 1.2.0)
54+
do_sqlite3 (0.10.15)
55+
data_objects (= 0.10.15)
56+
fastercsv (1.5.5)
57+
json (1.8.2)
58+
json_pure (1.8.2)
59+
multi_json (1.11.0)
60+
rack (1.6.0)
61+
rack-protection (1.5.3)
62+
rack
63+
sinatra (1.4.5)
64+
rack (~> 1.4)
65+
rack-protection (~> 1.4)
66+
tilt (~> 1.3, >= 1.3.4)
67+
stringex (1.5.1)
68+
tilt (1.4.1)
69+
uuidtools (2.1.5)
70+
71+
PLATFORMS
72+
ruby
73+
74+
DEPENDENCIES
75+
datamapper
76+
dm-sqlite-adapter
77+
sinatra
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
require 'data_mapper'
2+
3+
DataMapper.setup(:default, 'sqlite:alarmist.db')
4+
5+
class Alarm
6+
include DataMapper::Resource
7+
8+
property :id, Serial
9+
property :area, String, required: true
10+
property :engaged, Boolean, required: true, default: false
11+
end
12+
13+
DataMapper.finalize
14+
DataMapper.auto_upgrade!
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
$(document).ready(function() {
2+
var createAlarmElement = function(alarm) {
3+
var area = alarm.area;
4+
var engaged = alarm.engaged;
5+
6+
html = '<h5>' + area;
7+
8+
if (engaged === true) {
9+
html += ' ALERT!'
10+
}
11+
12+
html += '</h5>'
13+
14+
return html
15+
}
16+
17+
var updateAlarmList = function(alarms) {
18+
alarms.forEach(function(alarm, index) {
19+
var alarmSelector = '#' + alarm.id
20+
var content = createAlarmElement(alarm)
21+
22+
$(alarmSelector).html(content)
23+
});
24+
}
25+
26+
var queryAlarms = function() {
27+
console.log("Requesting '/alarms'...")
28+
$.getJSON('/alarms', updateAlarmList)
29+
};
30+
31+
setInterval(queryAlarms, 5000);
32+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'sinatra'
2+
3+
require_relative './models.rb'
4+
5+
get '/' do
6+
@alarms = Alarm.all
7+
8+
erb :index
9+
end
10+
11+
get '/alarms' do
12+
@alarms = Alarm.all
13+
14+
@alarms.to_json
15+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<html>
2+
<head>
3+
<title>Alarmist</title>
4+
5+
<script src="https://code.jquery.com/jquery-2.1.3.js"></script>
6+
<script src="poll.js"></script>
7+
</head>
8+
<body>
9+
<% @alarms.each do |alarm| %>
10+
<div id="<%= alarm.id %>" class="alarm">
11+
<h5><%= alarm.area %>
12+
<% if alarm.engaged %>
13+
ALERT!
14+
<% end %>
15+
</h5>
16+
</div>
17+
<% end %>
18+
</body>
19+
</html>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'sinatra'
2+
3+
enable :sessions
4+
5+
helpers do
6+
def flash_get(key)
7+
value = session[key]
8+
session.delete(key)
9+
value
10+
end
11+
12+
def flash_save(key, value)
13+
session[key] = value
14+
end
15+
end
16+
17+
get '/' do
18+
message = flash_get(:message)
19+
20+
if message
21+
"your message is #{message}"
22+
else
23+
"no message"
24+
end
25+
end
26+
27+
get '/write' do
28+
message = params[:message]
29+
flash_save(:message, [1, 2, 3, message])
30+
31+
redirect '/'
32+
end

0 commit comments

Comments
 (0)