Skip to content

Commit 515ae83

Browse files
committed
Async-load google jsapi and handle its nonexistence
Some users block google for analytics apis and such, so we need to handle whenever the lib isn't available by just not drawing charts. Closes #34
1 parent 49f0397 commit 515ae83

File tree

6 files changed

+33
-16
lines changed

6 files changed

+33
-16
lines changed

app/controllers/crate/index.js

+14-6
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,20 @@ export default Ember.ObjectController.extend({
131131
}
132132
data.push(row);
133133
}
134-
data = google.visualization.arrayToDataTable(data);
135-
136-
var fmt = new google.visualization.DateFormat({
137-
pattern: 'LLL d, yyyy',
138-
});
139-
fmt.format(data, 0);
140134

141135
var drawChart = function() {
136+
if (!window.google || !window.googleChartsLoaded) {
137+
Ember.$('.graph').hide();
138+
return;
139+
} else {
140+
Ember.$('.graph').show();
141+
}
142+
data = google.visualization.arrayToDataTable(data);
143+
144+
var fmt = new google.visualization.DateFormat({
145+
pattern: 'LLL d, yyyy',
146+
});
147+
fmt.format(data, 0);
142148
var el = document.getElementById('graph-data');
143149
if (!el) {
144150
return;
@@ -159,6 +165,8 @@ export default Ember.ObjectController.extend({
159165
Ember.run.scheduleOnce('afterRender', this, drawChart);
160166
Ember.$(window).off('resize.chart');
161167
Ember.$(window).on('resize.chart', drawChart);
168+
Ember.$(document).off('googleChartsLoaded');
169+
Ember.$(document).on('googleChartsLoaded', drawChart);
162170
},
163171
},
164172
});

app/index.html

-2
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@
1919
window.EmberENV = {{EMBER_ENV}};
2020
</script>
2121
<script src="assets/vendor.js"></script>
22-
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
2322
<script src="assets/cargo.js"></script>
2423
<script>
25-
google.load('visualization', '1.0', {'packages':['corechart']});
2624
window.Cargo = require('cargo/app')['default'].create({{APP_CONFIG}});
2725
</script>
2826
</body>

app/initializers/google.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import Ember from 'ember';
2+
3+
export var initialize = function() {
4+
Ember.$.getScript('https://www.google.com/jsapi', function() {
5+
google.load('visualization', '1.0', {
6+
'packages': ['corechart'],
7+
'callback': function() {
8+
window.googleChartsLoaded = true;
9+
Ember.$(document).trigger('googleChartsLoaded');
10+
}
11+
});
12+
});
13+
};
14+
15+
export default {
16+
name: 'google',
17+
18+
initialize: initialize
19+
};

app/routes/application.js

-4
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,14 @@ import ajax from 'ic-ajax';
44
export default Ember.Route.extend({
55
beforeModel: function() {
66
var self = this;
7-
console.log('index route', this.session.get('isLoggedIn'),
8-
this.session.get('currentUser'));
97
if (this.session.get('isLoggedIn') &&
108
this.session.get('currentUser') === null)
119
{
1210
return ajax('/me').then(function(response) {
13-
console.log('good', response);
1411
var user = self.store.push('user', response.user);
1512
user.set('api_token', response.api_token);
1613
self.session.set('currentUser', user);
1714
}).catch(function() {
18-
console.log('bad');
1915
self.session.logoutUser();
2016
});
2117
}

app/routes/login.js

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export default Ember.Route.extend({
1515
if (!win.closed) { return; }
1616
window.clearInterval(oauthInterval);
1717
var response = JSON.parse(localStorage.github_response);
18-
console.log('loging response', response);
1918

2019
if (!response.ok) {
2120
self.controllerFor('application').set('flashError',

app/services/session.js

-3
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,18 @@ export default Ember.Object.extend({
88
init: function() {
99
this.set('isLoggedIn', localStorage.getItem('isLoggedIn') === '1');
1010
this.set('currentUser', null);
11-
console.log('session-init', this.get('isLoggedIn'));
1211
},
1312

1413
loginUser: function(user) {
1514
this.set('isLoggedIn', true);
1615
this.set('currentUser', user);
1716
localStorage.setItem('isLoggedIn', '1');
18-
console.log('session-login', this.get('isLoggedIn'));
1917
},
2018

2119
logoutUser: function() {
2220
this.set('savedTransition', null);
2321
this.set('isLoggedIn', null);
2422
this.set('currentUser', null);
2523
localStorage.removeItem('isLoggedIn');
26-
console.log('session-logout', this.get('isLoggedIn'));
2724
},
2825
});

0 commit comments

Comments
 (0)