From a528181a0de6866f5bbec7d8268ce826e7e63f74 Mon Sep 17 00:00:00 2001 From: palewire Date: Sun, 20 Nov 2016 11:01:37 -0800 Subject: [PATCH] City labels are in --- TODO.md | 1 - app.py | 5 --- data/iowa.cities.dbf | Bin 0 -> 60657 bytes data/iowa.cities.prj | 1 + data/iowa.cities.qpj | 1 + data/iowa.cities.shp | Bin 0 -> 492 bytes data/iowa.cities.shx | Bin 0 -> 212 bytes static/json/iowa-cities.geojson | 21 +++++++++++++ templates/index.css | 14 +++++++++ templates/index.js | 33 ++++++++++++++++++-- templates/test.html | 52 -------------------------------- 11 files changed, 68 insertions(+), 60 deletions(-) create mode 100644 data/iowa.cities.dbf create mode 100644 data/iowa.cities.prj create mode 100644 data/iowa.cities.qpj create mode 100644 data/iowa.cities.shp create mode 100644 data/iowa.cities.shx create mode 100644 static/json/iowa-cities.geojson delete mode 100644 templates/test.html diff --git a/TODO.md b/TODO.md index 21f17e1..7e45903 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,3 @@ -- [ ] City labels - [ ] Hover effects - [ ] Mini multiples for each candidate - [ ] Corum style squares diff --git a/app.py b/app.py index b5706a3..a90a795 100644 --- a/app.py +++ b/app.py @@ -8,10 +8,5 @@ def index(): return render_template('index.html') -@app.route("/test/") -def test(): - return render_template('test.html') - - if __name__ == "__main__": app.run(debug=True) diff --git a/data/iowa.cities.dbf b/data/iowa.cities.dbf new file mode 100644 index 0000000000000000000000000000000000000000..05abc5739bcdde07a99515fbd6a3287d4416ebbc GIT binary patch literal 60657 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 Bc$@$L literal 0 HcmV?d00001 diff --git a/data/iowa.cities.shx b/data/iowa.cities.shx new file mode 100644 index 0000000000000000000000000000000000000000..61f16e584a9b289f8d673f5bac5967e643e46615 GIT binary patch literal 212 zcmZQzQ0HR64zgY_GcYg$ -93.15 ? "0.4rem" : "-0.4rem"; }) + .style("text-anchor", function(d) { return d.geometry.coordinates[0] > -93.15 ? "start" : "end"; }); + +}; app.createHeadline = function (race) { var hed = race.selector.append("h3") .text(race.hed); @@ -151,6 +177,7 @@ app.createHeadline = function (race) { app.createMap = function (race) { race.svg = app.createSvg(race); app.createBubbles(race); + app.createCities(race); app.fitMaps(); }; app.createTable = function (race) { @@ -178,17 +205,19 @@ app.boot = function () { queue() .defer(d3.json, "/static/json/iowa-counties.geojson") .defer(d3.json, "/static/json/iowa-state.geojson") + .defer(d3.json, "/static/json/iowa-cities.geojson") .defer(d3.json, "/static/json/2000.json") .defer(d3.json, "/static/json/2004.json") .defer(d3.json, "/static/json/2008.json") .defer(d3.json, "/static/json/2012.json") .defer(d3.json, "/static/json/2016.json") - .await(function(error, counties, state, results2000, results2004, results2008, results2012, results2016) { + .await(function(error, counties, state, cities, results2000, results2004, results2008, results2012, results2016) { if (error) throw error; app.json = { counties: counties.features, - state: state.features[0] + state: state.features[0], + cities: cities.features }; app.radius = app.createRadius(_.flatten( diff --git a/templates/test.html b/templates/test.html deleted file mode 100644 index 7a70d15..0000000 --- a/templates/test.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - -
-
-
- - - - - - - -