├── src
├── assets
│ └── .placeholder
├── data
│ ├── .placeholder
│ └── graphic.csv
├── js
│ ├── config.js
│ ├── detectFeatures.js
│ ├── utils.js
│ ├── share.js
│ ├── fm.js
│ ├── geomath.js
│ ├── libs
│ │ └── frameMessager.min.js
│ └── thing.js
├── fonts
│ ├── qz-icons.eot
│ ├── qz-icons.ttf
│ ├── qz-icons.woff
│ ├── Calibre-Medium.otf
│ ├── PTSerif
│ │ ├── PTF55F.ttf
│ │ ├── PTF56F.ttf
│ │ ├── PTF55F-webfont.eot
│ │ ├── PTF55F-webfont.ttf
│ │ ├── PTF55F-webfont.woff
│ │ ├── Paratype PT Sans Free Font License.txt
│ │ └── PTF55F-webfont.svg
│ ├── PT_Serif-Web-Bold.ttf
│ ├── AdelleSansWeb
│ │ ├── AdelleSans_Light.otf
│ │ ├── AdelleSansBasic_Bold.eot
│ │ ├── AdelleSansBasic_Bold.ttf
│ │ ├── AdelleSansBasic_Bold.woff
│ │ ├── AdelleSansBasic_Light.eot
│ │ ├── AdelleSansBasic_Light.ttf
│ │ ├── AdelleSansBasic_Light.woff
│ │ ├── AdelleSansBasic_Regular.eot
│ │ ├── AdelleSansBasic_Regular.ttf
│ │ └── AdelleSansBasic_Regular.woff
│ ├── qz-icons.svg
│ └── qz-icons.json
├── jade
│ ├── thing.jade
│ ├── includes
│ │ └── share.jade
│ └── index.jade
├── styl
│ ├── qz
│ │ ├── buttons.styl
│ │ ├── share.styl
│ │ ├── colors.styl
│ │ ├── dropdowns.styl
│ │ ├── icons.styl
│ │ ├── chart-elements.styl
│ │ └── type.styl
│ ├── main.styl
│ ├── layout.styl
│ ├── thing.styl
│ ├── responsive.styl
│ └── normalize.styl
└── style
├── README.md
├── requirements.txt
├── .gitignore
├── data
└── al142016_best_track
│ ├── simplified.dbf
│ ├── simplified.shp
│ ├── simplified.shx
│ ├── al142016_lin.dbf
│ ├── al142016_lin.shp
│ ├── al142016_lin.shx
│ ├── al142016_pts.dbf
│ ├── al142016_pts.shp
│ ├── al142016_pts.shx
│ ├── al142016_radii.dbf
│ ├── al142016_radii.shp
│ ├── al142016_radii.shx
│ ├── al142016_radii.shp.xml
│ ├── al142016_windswath.dbf
│ ├── al142016_windswath.shp
│ ├── al142016_windswath.shx
│ ├── al142016_lin.prj
│ ├── al142016_pts.prj
│ ├── al142016_radii.prj
│ ├── simplified.prj
│ ├── simplified.qpj
│ ├── al142016_windswath.prj
│ ├── al142016_lin.shp.xml
│ ├── al142016_windswath.shp.xml
│ └── al142016_pts.shp.xml
├── gulp
├── cli.js
├── utils.js
└── config.js
├── content.json
├── __build.sh
├── package.json
├── geodata.yml
├── prove.py
├── gulpfile.js
└── tracks.csv
/src/assets/.placeholder:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/data/.placeholder:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # hurricane-matthew
2 |
--------------------------------------------------------------------------------
/src/js/config.js:
--------------------------------------------------------------------------------
1 | var ENV = '/* @echo ENV */';
2 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | agate>=1.4.0
2 | proof>=0.3.0
3 | mapturner>=0.1.4
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/*
2 | build
3 | !node_modules/stylus-normalize
4 | .DS_Store
5 | .tmp
6 | .proof
7 |
--------------------------------------------------------------------------------
/src/fonts/qz-icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/qz-icons.eot
--------------------------------------------------------------------------------
/src/fonts/qz-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/qz-icons.ttf
--------------------------------------------------------------------------------
/src/fonts/qz-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/qz-icons.woff
--------------------------------------------------------------------------------
/src/fonts/Calibre-Medium.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/Calibre-Medium.otf
--------------------------------------------------------------------------------
/src/fonts/PTSerif/PTF55F.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/PTSerif/PTF55F.ttf
--------------------------------------------------------------------------------
/src/fonts/PTSerif/PTF56F.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/PTSerif/PTF56F.ttf
--------------------------------------------------------------------------------
/src/fonts/PT_Serif-Web-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/PT_Serif-Web-Bold.ttf
--------------------------------------------------------------------------------
/src/fonts/PTSerif/PTF55F-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/PTSerif/PTF55F-webfont.eot
--------------------------------------------------------------------------------
/src/fonts/PTSerif/PTF55F-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/PTSerif/PTF55F-webfont.ttf
--------------------------------------------------------------------------------
/src/fonts/PTSerif/PTF55F-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/PTSerif/PTF55F-webfont.woff
--------------------------------------------------------------------------------
/data/al142016_best_track/simplified.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/simplified.dbf
--------------------------------------------------------------------------------
/data/al142016_best_track/simplified.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/simplified.shp
--------------------------------------------------------------------------------
/data/al142016_best_track/simplified.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/simplified.shx
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_lin.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_lin.dbf
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_lin.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_lin.shp
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_lin.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_lin.shx
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_pts.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_pts.dbf
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_pts.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_pts.shp
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_pts.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_pts.shx
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_radii.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_radii.dbf
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_radii.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_radii.shp
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_radii.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_radii.shx
--------------------------------------------------------------------------------
/src/jade/thing.jade:
--------------------------------------------------------------------------------
1 | h2#title
2 |
3 | div#graphic
4 |
5 | div.footer.left Quartz | qz.com
6 | div.footer.right Data: NOAA IBTrACS (Friday AM)
7 |
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSans_Light.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSans_Light.otf
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_radii.shp.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_radii.shp.xml
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_windswath.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_windswath.dbf
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_windswath.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_windswath.shp
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_windswath.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/data/al142016_best_track/al142016_windswath.shx
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Bold.eot
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Bold.ttf
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Bold.woff
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Light.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Light.eot
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Light.ttf
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Light.woff
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Regular.eot
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Regular.ttf
--------------------------------------------------------------------------------
/src/fonts/AdelleSansWeb/AdelleSansBasic_Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/quartz/hurricane-matthew/master/src/fonts/AdelleSansWeb/AdelleSansBasic_Regular.woff
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_lin.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371200.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_pts.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371200.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_radii.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371200.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/data/al142016_best_track/simplified.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["unnamed ellipse",DATUM["D_unknown",SPHEROID["Unknown",6371200,0]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
--------------------------------------------------------------------------------
/data/al142016_best_track/simplified.qpj:
--------------------------------------------------------------------------------
1 | GEOGCS["unnamed ellipse",DATUM["unknown",SPHEROID["unnamed",6371200,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]
2 |
--------------------------------------------------------------------------------
/src/data/graphic.csv:
--------------------------------------------------------------------------------
1 | year,value
2 | 2005,1
3 | 2006,3
4 | 2007,5
5 | 2008,6
6 | 2009,4
7 | 2010,5
8 | 2011,6
9 | 2012,7
10 | 2013,8
11 | 2014,6
12 | 2015,3
13 |
--------------------------------------------------------------------------------
/data/al142016_best_track/al142016_windswath.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371200.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/gulp/cli.js:
--------------------------------------------------------------------------------
1 | var opts = require('nomnom')
2 | .option('build', {
3 | abbr: 'b',
4 | help: 'Build project. [local | move | commit | push]',
5 | choices: ['local', 'move', 'commit', 'push']
6 | })
7 | .option('dont-minify', {
8 | abbr: 'd',
9 | flag: true,
10 | help: 'Prevent build from minifying your js'
11 | });
12 |
13 | module.exports = opts;
14 |
--------------------------------------------------------------------------------
/src/jade/includes/share.jade:
--------------------------------------------------------------------------------
1 | ul.share-buttons
2 | li.share-icon.twitter
3 | a(title='Tweet' class='share-action icon icon-twitter' target='_blank')
4 | li.share-icon.facebook
5 | a(title='Share on Facebook' class='share-action icon icon-facebook' target='_blank')
6 | li.share-icon.linkedin
7 | a(title='Share on LinkedIn' class='share-action icon icon-linkedin' target='_blank')
8 | li.share-icon.email
9 | a(title='Email' class='share-action icon icon-email' target='_blank')
10 |
--------------------------------------------------------------------------------
/src/styl/qz/buttons.styl:
--------------------------------------------------------------------------------
1 | qz-button-group()
2 | text-align center
3 | button
4 | color white
5 | border none
6 | background-color $qz-gray-1
7 | font-family $qz-sans
8 | border-radius 3px
9 | margin 2px 4px 2px 0
10 | vertical-align middle
11 | padding 0px 8px
12 | line-height 2em
13 | display inline-block
14 | &.active
15 | //font-family $qz-sans-bold
16 | background-color $qz-purp-2
17 | transition background-color 0.2s linear
18 | &:focus
19 | outline 0
20 |
--------------------------------------------------------------------------------
/gulp/utils.js:
--------------------------------------------------------------------------------
1 | function generateShellCmd (buildArg, qzdataPath, thingName) {
2 | var baseCmd = "./__build.sh " + qzdataPath + " " + thingName + " "; // then commit? push?
3 |
4 | switch (buildArg) {
5 | case "move":
6 | return baseCmd + "false false";
7 | case "commit":
8 | return baseCmd + "true false";
9 | case "push":
10 | return baseCmd + "true true";
11 | default:
12 | return 'echo ""';
13 | }
14 | }
15 |
16 | module.exports = {
17 | generateShellCmd: generateShellCmd
18 | };
19 |
--------------------------------------------------------------------------------
/src/js/detectFeatures.js:
--------------------------------------------------------------------------------
1 | module.exports = function () {
2 | var features = {};
3 |
4 | features.hasDeviceMotion = 'ondevicemotion' in window;
5 | features.isAndroid = (/android/gi).test(navigator.appVersion);
6 | features.isIDevice = (/iphone|ipad/gi).test(navigator.appVersion);
7 | features.isTouchPad = (/hp-tablet/gi).test(navigator.appVersion);
8 | features.isKindle = (/silk/gi).test(navigator.appVersion);
9 | features.hasTouchEvents = (
10 | features.isAndroid ||
11 | features.isIDevice ||
12 | features.isTouchPad ||
13 | features.isKindle
14 | );
15 |
16 | return features;
17 | };
18 |
--------------------------------------------------------------------------------
/src/styl/main.styl:
--------------------------------------------------------------------------------
1 | // Normalize -- https://github.com/bymathias/normalize.styl
2 | @import 'normalize'
3 |
4 | // nib -- http://visionmedia.github.io/nib/
5 | @import 'nib'
6 |
7 | // Qz modules. Comment out the things you don't need.
8 | @import 'qz/type'
9 | @import 'qz/colors'
10 |
11 | // Optional components. Uncomment if you need them. See wiki for usage info
12 | // note: `share` depends on `icons`
13 | //@import 'qz/icons'
14 | //@import 'qz/share'
15 | //@import 'qz/dropdowns'
16 | //@import 'qz/buttons'
17 | //@import 'qz/chart-elements'
18 |
19 | // Thing-specific css
20 | @import 'responsive'
21 | @import 'layout'
22 | @import 'thing'
23 |
--------------------------------------------------------------------------------
/content.json:
--------------------------------------------------------------------------------
1 | {
2 | "hed": "This Quartz Thing has not connected to a Google Doc",
3 | "dek": "Perhaps you forgot to start the server? Make viewable to anyone with the link?",
4 | "items": [{
5 | "copy": "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
6 | }, {
7 | "copy": "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
8 | }, {
9 | "copy": "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
10 | }]
11 | }
12 |
--------------------------------------------------------------------------------
/src/jade/index.jade:
--------------------------------------------------------------------------------
1 | doctype html
2 | html
3 | head
4 | meta(charset='utf-8')
5 | meta(http-equiv='X-UA-Compatible', content='IE=edge')
6 | title hurricane-matthew
7 | meta(name='description', content='A map of hurricane tracks since 1950.')
8 | meta(name='viewport', content='width=device-width, initial-scale=1')
9 | link(rel='stylesheet', href='css/main.css')
10 | script(src='js/libs/frameMessager.min.js')
11 |
12 | body
13 | div.item-body
14 | div#interactive-content
15 | include thing.jade
16 | script(src='//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js')
17 | script window.jQuery || document.write('