Skip to content

Commit e8835b6

Browse files
Merge pull request #32 from hurricanemark/Phase2-BaselineToSeriousWorks
add style="overflow-x:auto; " to make forecast table responsive to resizing
2 parents d990e45 + 63bbb89 commit e8835b6

File tree

3 files changed

+120
-3
lines changed

3 files changed

+120
-3
lines changed

public/sessionCaching.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
function storageAvailable(type) {
2+
let storage;
3+
try {
4+
storage = window[type];
5+
const x = '__storage_test__';
6+
storage.setItem(x, x);
7+
storage.removeItem(x);
8+
return true;
9+
}
10+
catch (e) {
11+
return e instanceof DOMException && (
12+
// everything except Firefox
13+
e.code === 22 ||
14+
// Firefox
15+
e.code === 1014 ||
16+
// test name field too, because code might not be present
17+
// everything except Firefox
18+
e.name === 'QuotaExceededError' ||
19+
// Firefox
20+
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
21+
// acknowledge QuotaExceededError only if there's something already stored
22+
(storage && storage.length !== 0);
23+
}
24+
}
25+
26+
function testStorage(methodString) {
27+
let result = document.getElementById("test-caching");
28+
if (storageAvailable(methodString)) {
29+
30+
// Yippee! We can use localStorage awesomeness
31+
// Save data to sessionStorage
32+
sessionStorage.setItem("lw_name", "marcus");
33+
34+
// Get saved data from sessionStorage
35+
let data = sessionStorage.getItem("lw_name");
36+
37+
// alert(methodString +' says my name is ' + data);
38+
// Remove saved data from sessionStorage
39+
sessionStorage.removeItem("lw_name");
40+
result.innerHTML = "Test: " + methodString + " is enabled."
41+
}
42+
else {
43+
// Too bad, no localStorage for us
44+
// alert(methodString + ' says Web Storage API is disabled.');
45+
result.innerHTML = "Test: " + methodString + ' says Web Storage API is disabled.';
46+
}
47+
}
48+
49+
50+
51+
testStorage('sessionStorage');
52+
testStorage('localStorage');

views/pages/utils.ejs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<%
2+
const MOON = '🌙';
3+
const SUN = '☀️';
24
5+
// convert unix_timestamp to local datetime
36
unixTsToLocalTime = (unix_ts) => {
47
// Create a new JavaScript Date object based on the timestamp
58
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
@@ -32,4 +35,65 @@ trendingTemperature = (dataArr) => {
3235
else { return "Considerable warming trend ahead."; }
3336
}
3437
}
38+
39+
// check if client allows saving session data
40+
storageAvailable = (type) => {
41+
let storage;
42+
try {
43+
storage = window[type];
44+
const x = '__storage_test__';
45+
storage.setItem(x, x);
46+
storage.removeItem(x);
47+
return true;
48+
}
49+
catch (e) {
50+
return e instanceof DOMException && (
51+
// everything except Firefox
52+
e.code === 22 ||
53+
// Firefox
54+
e.code === 1014 ||
55+
// test name field too, because code might not be present
56+
// everything except Firefox
57+
e.name === 'QuotaExceededError' ||
58+
// Firefox
59+
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
60+
// acknowledge QuotaExceededError only if there's something already stored
61+
(storage && storage.length !== 0);
62+
}
63+
}
64+
65+
// save data to session memory client-side
66+
saveClientData = (key, value) => {
67+
if (storageAvailable(String)) {
68+
// Yippee! We can use localStorage awesomeness
69+
// Save data to sessionStorage
70+
sessionStorage.setItem(key, value);
71+
72+
// Get saved data from sessionStorage
73+
let data = sessionStorage.getItem(key);
74+
75+
alert(methodString +' says my data is ' + data);
76+
77+
}
78+
else {
79+
// Too bad, no localStorage for us
80+
alert(methodString + ' says Web Storage API is disabled.')
81+
}
82+
}
83+
84+
// retrieve saved session data
85+
getClientData = (key) => {
86+
if (storageAvailable(String)) {
87+
return sessionStorage.getItem(key);
88+
} else {
89+
return null;
90+
}
91+
}
92+
93+
// delete session data
94+
deleteClientData = (key) => {
95+
// Remove saved data from sessionStorage
96+
sessionStorage.removeItem(key);
97+
}
98+
3599
%>

views/pages/weatherbit.ejs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<% if( typeof(error)==="undefined" || curStatus===400 ){ %>
3333
<p style="color:gray"> Waiting for data.</p>
3434
<% } else { %>
35+
3536
<p style="color:gray"><strong>City</strong>: <%= curData.city_name %> , <%= curData.state_code %>
3637
<br />
3738
<strong>Geolocation</strong>: <%= curData.lat %>, <%= curData.lon %>
@@ -190,16 +191,16 @@
190191
</div>
191192

192193

193-
<div class="row">
194+
<div class="row" style="display:flex; flex-flow:row wrap;">
194195
<div class="col-sm-12">
195196
<h5>Extended Forecast</h5>
196197

197-
<div class="jumbotron jumbotron-fluid" style="padding:10px 5px 15px 20px;">
198+
<div class="jumbotron jumbotron-fluid" style="padding:10px 5px 15px 20px; overflow-x:auto;">
198199
<% if( typeof(error)==="undefined" || foreStatus===400 ){ %>
199200
<p style="color:gray"> Waiting for data.</p>
200201
<% } else { %>
201202
<div style="color:rgb(18, 83, 175);"><%= trendingTemperature(foreData.data) %></div>
202-
<table class="styled-table" style="overflow-x: auto;">
203+
<table class="styled-table">
203204
<thead>
204205
<tr class="w-35">
205206
<th style="color:black;"> Date</th>

0 commit comments

Comments
 (0)