Last active
December 18, 2015 13:29
-
-
Save rashidkpc/5790148 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"title": "American Gun Deaths since Newtown, CT", | |
"rows": [ | |
{ | |
"title": "Options", | |
"height": "50px", | |
"editable": true, | |
"collapse": false, | |
"collapsable": true, | |
"panels": [ | |
{ | |
"loading": false, | |
"error": false, | |
"span": 4, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "text", | |
"mode": "markdown", | |
"content": "This dashboard is updated daily from data provided by [slate.com](http://www.slate.com/articles/news_and_politics/crime/2012/12/gun_death_tally_every_american_gun_death_since_newtown_sandy_hook_shooting.html). Every data point is a single human life taken by a gun in the United States since December 13th, 2012. If this data upsets you: [do something about it](http://www.house.gov/representatives/find/)", | |
"style": {} | |
}, | |
{ | |
"loading": false, | |
"error": "", | |
"span": 5, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "timepicker", | |
"mode": "since", | |
"time_options": [ | |
"5m", | |
"15m", | |
"1h", | |
"6h", | |
"12h", | |
"24h", | |
"2d", | |
"5d" | |
], | |
"timespan": "5d", | |
"timefield": "date", | |
"index": "newtown", | |
"defaultindex": "NOINDEX", | |
"index_interval": "none", | |
"refresh": { | |
"enable": false, | |
"interval": 30, | |
"min": 3 | |
}, | |
"timeformat": "", | |
"time": { | |
"from": "12/13/2012 00:00:00", | |
"to": "06/15/2013 17:09:20", | |
"index": [ | |
"newtown" | |
] | |
} | |
}, | |
{ | |
"loading": false, | |
"error": false, | |
"span": 3, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "dashcontrol", | |
"save": { | |
"gist": false, | |
"elasticsearch": true, | |
"local": true, | |
"default": true | |
}, | |
"load": { | |
"gist": true, | |
"elasticsearch": true, | |
"local": true | |
}, | |
"hide_control": false, | |
"elasticsearch_size": 20, | |
"elasticsearch_saveto": "kibana-int", | |
"temp": true, | |
"temp_ttl": "30d" | |
} | |
] | |
}, | |
{ | |
"title": "Query", | |
"height": "50px", | |
"editable": true, | |
"collapse": false, | |
"collapsable": true, | |
"panels": [ | |
{ | |
"loading": false, | |
"error": false, | |
"span": 12, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "stringquery", | |
"label": "Search", | |
"query": "", | |
"size": 100, | |
"sort": [ | |
"_score", | |
"desc" | |
], | |
"multi": false, | |
"multi_arrange": "horizontal" | |
} | |
] | |
}, | |
{ | |
"title": "Graph", | |
"height": "300px", | |
"editable": true, | |
"collapse": false, | |
"collapsable": true, | |
"panels": [ | |
{ | |
"loading": false, | |
"span": 8, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "histogram", | |
"query": [ | |
{ | |
"query": "", | |
"label": "" | |
} | |
], | |
"interval": "1d", | |
"show": [ | |
"points", | |
"lines", | |
"legend", | |
"x-axis", | |
"y-axis" | |
], | |
"timezone": "browser", | |
"spyable": true, | |
"zoomlinks": true, | |
"fill": 3, | |
"linewidth": 2, | |
"bars": false, | |
"stack": true, | |
"points": false, | |
"lines": true, | |
"legend": true, | |
"x-axis": true, | |
"y-axis": true, | |
"mode": "count", | |
"value_field": null, | |
"auto_int": true, | |
"resolution": 100, | |
"percentage": false, | |
"interactive": true | |
}, | |
{ | |
"loading": false, | |
"error": false, | |
"span": 4, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "map", | |
"query": "", | |
"map": "usa", | |
"colors": [ | |
"#A0E2E2", | |
"#265656" | |
], | |
"size": 100, | |
"exclude": [], | |
"spyable": true, | |
"index_limit": 0, | |
"field": "state", | |
"title": "US Gun Deaths by State" | |
} | |
] | |
}, | |
{ | |
"title": "Events", | |
"height": "350px", | |
"editable": true, | |
"collapse": false, | |
"collapsable": true, | |
"panels": [ | |
{ | |
"loading": false, | |
"error": false, | |
"span": 1, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "fields", | |
"style": {}, | |
"arrange": "vertical", | |
"micropanel_position": "right", | |
"sort": [ | |
"date", | |
"asc" | |
], | |
"query": "" | |
}, | |
{ | |
"loading": false, | |
"error": false, | |
"span": 7, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "table", | |
"query": "", | |
"interval": "1y", | |
"show": [ | |
"bars", | |
"y-axis", | |
"x-axis", | |
"legend" | |
], | |
"fill": 3, | |
"overflow": "min-height", | |
"timezone": "browser", | |
"spyable": true, | |
"zoomlinks": true, | |
"size": 50, | |
"pages": 10, | |
"offset": 0, | |
"sort": [ | |
"date", | |
"asc" | |
], | |
"style": { | |
"font-size": "9pt" | |
}, | |
"fields": [ | |
"date", | |
"id", | |
"name", | |
"gender", | |
"city", | |
"state", | |
"source" | |
], | |
"sortable": true, | |
"highlight": [], | |
"header": true, | |
"paging": true | |
}, | |
{ | |
"loading": false, | |
"error": false, | |
"span": 4, | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "column", | |
"panels": [ | |
{ | |
"loading": false, | |
"sizeable": false, | |
"span": 12, | |
"height": "150px", | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "hits", | |
"chart": "total", | |
"query": [ | |
{ | |
"query": "", | |
"label": "" | |
} | |
], | |
"style": { | |
"font-size": "72pt" | |
}, | |
"arrangement": "vertical", | |
"counter_pos": "above", | |
"donut": false, | |
"tilt": false, | |
"labels": true, | |
"title": "Total Gun Deaths since Newtown, CT" | |
}, | |
{ | |
"loading": false, | |
"sizeable": false, | |
"span": 12, | |
"height": "350px", | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "hits", | |
"query": [ | |
{ | |
"query": "unknown", | |
"label": "unknown" | |
}, | |
{ | |
"query": "female", | |
"label": "female" | |
}, | |
{ | |
"query": "male", | |
"label": "male" | |
} | |
], | |
"style": { | |
"font-size": "10pt" | |
}, | |
"arrangement": "horizontal", | |
"chart": "bar", | |
"counter_pos": "above", | |
"donut": false, | |
"tilt": false, | |
"labels": true, | |
"title": "Deaths by Gender" | |
}, | |
{ | |
"loading": false, | |
"error": false, | |
"sizeable": false, | |
"span": 12, | |
"height": "350px", | |
"editable": true, | |
"group": [ | |
"default" | |
], | |
"type": "pie", | |
"mode": "terms", | |
"query": { | |
"field": "state", | |
"query": "" | |
}, | |
"size": 50, | |
"exclude": [], | |
"donut": false, | |
"tilt": false, | |
"legend": "below", | |
"labels": true, | |
"default_field": "DEFAULT", | |
"spyable": true, | |
"title": "Deaths by State" | |
} | |
] | |
} | |
] | |
} | |
], | |
"editable": true, | |
"last": null | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rubygems' | |
require 'json' | |
require 'net/http' | |
require 'pp' | |
require 'date' | |
require 'tire' | |
Tire.index 'newtown' do | |
create :mappings => { | |
:gun_death => { | |
:properties => { | |
:date => { :type => 'date', :index => 'not_analyzed' }, | |
:id => { :type => 'integer', :index => 'not_analyzed', :include_in_all => false }, | |
:state => { :type => 'string', :index => 'not_analyzed' }, | |
} | |
} | |
} | |
end | |
deaths = Net::HTTP.get(URI.parse('http://slate-interactives-prod.elasticbeanstalk.com/gun-deaths/getCSV.php')).split(/\r?\n/) | |
# fields from header | |
keys = deaths.shift.split(",") | |
values = [] | |
result = [] | |
# parse values | |
deaths.each do | line | | |
# Make sure line has all fields | |
if line.count(',') < 10 | |
next | |
end | |
iter = 0 | |
assoc = {} | |
line.split("\",\"").each do |v| | |
assoc[keys[iter]] = v.to_s.encode('UTF-8', {:invalid => :replace, :undef => :replace, :replace => '?'}).gsub(/"/,'') | |
iter += 1 | |
end | |
if assoc['gender'] == 'M' | |
gender = 'male' | |
elsif assoc['gender'] == 'F' | |
gender = 'female' | |
else | |
gender = 'unknown' | |
end | |
event = { | |
:id => assoc['victimID'], | |
:date => Date.iso8601(assoc['date']), | |
:name => assoc['name'], | |
:gender => gender, | |
:age => assoc['age'].to_i, | |
:city => assoc['city'], | |
:state => assoc['state'], | |
:lonlat => [assoc['lng'],assoc['lat']], | |
:source => assoc['url'], | |
:type => "gun_death" | |
} | |
result.push(event) | |
end | |
Tire.index 'newtown' do | |
import result | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment