File tree Expand file tree Collapse file tree 7 files changed +64
-31
lines changed Expand file tree Collapse file tree 7 files changed +64
-31
lines changed Original file line number Diff line number Diff line change
1
+ 6.17.1
Original file line number Diff line number Diff line change 8
8
< link href ="https://fonts.googleapis.com/css?family=Open+Sans|Oswald " rel ="stylesheet ">
9
9
10
10
< script src ="https://addevent.com/libs/atc/1.6.1/atc.min.js "> </ script >
11
- < script src ='https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.1/tabletop.min.js '> </ script >
12
11
13
12
< title > Calendrier des événements - CYCLEPOP</ title >
14
13
</ head >
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ $widescreen: $desktop;
7
7
$fullhd : $desktop ;
8
8
9
9
// Colors
10
- $primary : #ff5252 ;
10
+ $primary : #D04143 ;
11
11
12
12
// Images placeholder dimensions
13
13
$dimensions : 16 24 32 48 64 80 96 128 ;
Original file line number Diff line number Diff line change 1
1
import Evnt from './Evnt'
2
2
import Ride from './Ride'
3
3
class DataStore {
4
- constructor ( tabletop ) {
5
- this . tabletop = tabletop
4
+ constructor ( backend ) {
5
+ this . backend = backend
6
6
}
7
7
8
- initialize ( ) {
9
- this . _buildEvents ( )
10
- this . _buildRides ( )
8
+ async initialize ( ) {
9
+ await this . _buildEvents ( )
10
+ await this . _buildRides ( )
11
11
this . _buildDependencies ( )
12
12
}
13
13
@@ -23,18 +23,14 @@ class DataStore {
23
23
return this . rides . find ( ev => ev . slug === slug )
24
24
}
25
25
26
- _buildEvents ( ) {
27
- this . events = this . tabletop
28
- . sheets ( 'calendrier' )
29
- . all ( )
30
- . map ( attrs => new Evnt ( { attrs : attrs } ) )
26
+ async _buildEvents ( ) {
27
+ const eventsData = await this . backend . dataFor ( { sheet : 'calendrier' } )
28
+ this . events = eventsData . map ( attrs => new Evnt ( { attrs : attrs } ) )
31
29
}
32
30
33
- _buildRides ( ) {
34
- this . rides = this . tabletop
35
- . sheets ( 'sorties' )
36
- . all ( )
37
- . map ( attrs => new Ride ( { attrs : attrs } ) )
31
+ async _buildRides ( ) {
32
+ const ridesData = await this . backend . dataFor ( { sheet : 'sorties' } )
33
+ this . rides = ridesData . map ( attrs => new Ride ( { attrs : attrs } ) )
38
34
}
39
35
40
36
_buildDependencies ( ) {
Original file line number Diff line number Diff line change 1
1
import DataStore from './DataStore'
2
+ import GoogleSheetsBackend from './GoogleSheetsBackend'
2
3
3
4
class DataStoreProxy {
4
5
static cachedDataStore = undefined
@@ -8,25 +9,18 @@ class DataStoreProxy {
8
9
if ( DataStoreProxy . cachedDataStore ) {
9
10
resolve ( DataStoreProxy . cachedDataStore )
10
11
} else {
11
- this . _fetchSpreadsheet ( ( data , tabletop ) => {
12
- const dataStore = new DataStore ( tabletop )
13
- dataStore . initialize ( )
12
+ const backend = new GoogleSheetsBackend ( {
13
+ spreadsheetId : window . CONFIG . spreadsheetId ,
14
+ apiKey : window . CONFIG . apiKey
15
+ } )
16
+ const dataStore = new DataStore ( backend )
17
+ dataStore . initialize ( ) . then ( ( ) => {
14
18
DataStoreProxy . cachedDataStore = dataStore
15
19
resolve ( dataStore )
16
20
} )
17
21
}
18
22
} )
19
23
}
20
-
21
- static _fetchSpreadsheet ( callback ) {
22
- console . log ( 'Fetching JSON from Google Spreadsheet...' )
23
- window . Tabletop . init ( {
24
- key : window . CONFIG . spreadsheetUrl ,
25
- callback : callback ,
26
- simpleSheet : false ,
27
- parseNumbers : true
28
- } )
29
- }
30
24
}
31
25
32
26
export default DataStoreProxy
Original file line number Diff line number Diff line change
1
+ class GoogleSheetsBackend {
2
+ constructor ( opts ) {
3
+ this . spreadsheetId = opts . spreadsheetId
4
+ this . apiKey = opts . apiKey
5
+ }
6
+
7
+ dataFor ( opts ) {
8
+ return new Promise ( ( resolve ) => {
9
+ this . _fetchJsonSheetData ( opts [ 'sheet' ] ) . then ( data => {
10
+ resolve ( this . _dataToObjects ( data ) )
11
+ } )
12
+ } )
13
+ }
14
+
15
+ _fetchJsonSheetData ( sheet ) {
16
+ return new Promise ( ( resolve ) => {
17
+ const url = `https://sheets.googleapis.com/v4/spreadsheets/${ this . spreadsheetId } /values/${ sheet } ?key=${ this . apiKey } `
18
+ console . debug ( `Fetching ${ sheet } spreadsheet...` )
19
+ fetch ( url ) . then ( response => {
20
+ response . json ( ) . then ( data => {
21
+ resolve ( data . values )
22
+ } )
23
+ } )
24
+ } )
25
+ }
26
+
27
+ _dataToObjects ( data ) {
28
+ let objects = [ ]
29
+ const headers = data . shift ( )
30
+ data . forEach ( line => {
31
+ let obj = { }
32
+ headers . forEach ( ( key , index ) => {
33
+ const value = line [ index ]
34
+ obj [ key ] = value || ''
35
+ } )
36
+ objects . push ( obj )
37
+ } )
38
+ return objects
39
+ }
40
+ }
41
+
42
+ export default GoogleSheetsBackend
Original file line number Diff line number Diff line change @@ -9,7 +9,8 @@ require('@/assets/scss/main.scss')
9
9
moment . locale ( 'fr-ca' )
10
10
11
11
window . CONFIG = {
12
- spreadsheetUrl : 'https://docs.google.com/spreadsheets/d/1_zXpbThqwS0xxYcF8NouVxW3UVMA55KlVttf9rvsDZ0/' ,
12
+ spreadsheetId : '1_zXpbThqwS0xxYcF8NouVxW3UVMA55KlVttf9rvsDZ0' ,
13
+ apiKey : 'AIzaSyBKlqE-VpGkZsAQLvNVutvOwt4QHLdb6Hw' ,
13
14
rideWithGpsUrl : `https://ridewithgps.com/routes/[routeId].json?apikey=338acd0e&version=2` ,
14
15
eventTypes : {
15
16
'sortie-locale' : {
You can’t perform that action at this time.
0 commit comments