Skip to content

Instantly share code, notes, and snippets.

@timwis
timwis / README.md
Last active December 29, 2016 12:33
Indent multi-line string

Indent multi-line string

`
<div>
  ${indent(JSON.stringify(data, null, 2), 2)}
</div>
`
@timwis
timwis / list.py
Created December 28, 2016 21:51
Get a list of OpenDataPhilly datasets that have resources hosted on Socrata
import csv
import sys
import requests
odp_packages_url = 'https://opendataphilly.org/api/3/action/package_search?rows=10000'
odp_dataset_prefix = 'https://opendataphilly.org/package/'
socrata_keyword = '//data.phila.gov'
response = requests.get(odp_packages_url)
@timwis
timwis / parking-violations.v2.json
Last active December 27, 2016 20:58
Parking Violations VizWit configuration
{
"version":"2",
"header":{
"title":"Parking Violations",
"description":"This data set reflects parking violations reported by authorized agencies in Philadelphia. The data represented below is a sample of parking violations occurring between 2012-2015 with license plate numbers anonymized for privacy.",
"navigation":[
{
"label":"Download",
"url":"https://data.phila.gov/api/views/3bxz-a5sb/rows.csv?accessType=DOWNLOAD&bom=true"
}
@timwis
timwis / crime-incidents.json
Last active December 27, 2016 19:59
VizWit - Carto - Philadelphia Crime Incidents
{
"version": "2",
"header": {
"title": "Crime Incidents 2015 - October 2016",
"description": "Philadelphia Police Department crime incidents from calendar year 2006 to present, including Part I and Part II crimes. UCR codes are generalized and incident locations are rounded to the hundred block. These counts may not coincide exactly with data that is submitted to the Uniformed Crime Reporting (UCR) system.",
"navigation": [
{
"label": "Download",
"url": ""
}
const choo = require('choo')
const html = require('choo/html')
const widget = require('cache-element/widget')
const app = choo()
app.model({
state: {
rows: [ {a: 'a'}, {b: 'b'} ]
},
@timwis
timwis / reorder.js
Last active December 25, 2016 18:58
function reorder (state, data) {
const { from, to } = data
const rowsCopy = state.rows.slice()
const fromRowCopy = rowsCopy[from.row].slice()
const item = fromRowCopy[from.index]
fromRowCopy.splice(from.index, 1) // remove from row
rowsCopy[from.row] = fromRowCopy // replace 'from' row
@timwis
timwis / choo-async-await.js
Created December 18, 2016 00:08
Use promises and async/await in effects in choo
app.use({
wrapEffects: (cb) => {
return async (state, data, send, done) => {
const psend = promisify(send)
try {
await cb(state, data, psend)
done()
} catch (err) {
done(err)
}
{
"version": "2",
"header": {
"title": "Crime Incidents 2015 - October 2016",
"description": "Philadelphia Police Department crime incidents from calendar year 2006 to present, including Part I and Part II crimes. UCR codes are generalized and incident locations are rounded to the hundred block. These counts may not coincide exactly with data that is submitted to the Uniformed Crime Reporting (UCR) system.",
"navigation": [
{
"label": "Download",
"url": ""
}
@timwis
timwis / ward_1_committee.csv
Created December 5, 2016 11:55
Ward 1 democratic committee persons
WARD DISTRICT NAME PARTY TYPE
01 01 LINDA SAMACICIA Democrat M
01 02 BEATRIZ P BORODIAK Democrat M
01 03 MILLICENT BADIE Democrat M
01 04 DARNELL HELEM Democrat M
01 06 KERNARD M SHEARLDS Democrat M
01 07 AIDA L RIBOT Democrat M
01 08 CECILY C KIHN Democrat M
01 10 LARNEY J REED Democrat M
01 12 SYLVIA A HARKER Democrat M
@timwis
timwis / README.md
Last active December 2, 2016 21:29
Voter turnout processing