View README.md

Stateful Checkboxes

This quick little hack creates a global function named checkboxes() that uses [localStorage] to remember the state of checkboxes on the host page. Usage:

var boxes = checkboxes({
    // the checkbox selector (always prefixed with 'input[type=checkbox]')
    selector:   '.stateful',
    // the storage engine (only 'localStorage' is supported here)
    storage:    'localStorage',
    // the prefix for all storage keys
View charts.html
1 2 3 4 5 6 7 8 9 10
{% macro series(bars, value_key, tooltip=None) %}
<div class="chart-series chart-series--vertical">
{% for bar in bars %}
<div class="chart-series__bar" data-value="{{ bar[value_key] }}">
{% if tooltip %}
<div class="chart-series__bar__tooltip">
<div class="chart-series__bar__tooltip__content">
{{ tooltip(bar) }}
</div>
</div>
View async.js
1 2 3 4 5 6 7 8 9 10
function noreallygimmeasyncdammit(sync) {
return function() {
var args = [].slice.call(arguments),
next = args.pop();
try {
var value = sync.apply(this, args);
} catch (err) {
return next(err);
}
next(null, value);
View swagger-static.md

swagger-static

This document is largely superceded by the swagger-static repo, where I'm now planning a project. GitHub won't notify me of comments here, so if you want to get in touch please comment on or file an issue. Thanks!

Background

At 18F we're implementing [Swagger]-compliant APIs to make them more accessible and facilitate simpler documentation. Unfortunately, the only generally accepted way of exposing human-readable Swagger API documentation is [SwaggerUI], a client-side JavaScript library with some serious issues:

  1. Because all SwaggerUI-based documentation is rendered at runtime, search engines are [theoretically] unable to crawl their contents.
  2. Tight coupling with jQuery and a [long list of dependencies](https://github.com/swagger-api/swagger-ui/blob/master/dist/index.html#L10-L2
View README.md
View index.html
1 2 3 4 5 6 7 8 9 10
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Responsive SVG elements</title>
<script src="http://d3js.org/d3.v3.min.js"></script>
<style>
html {
font-family: "Helvetica Neue", Helvetica, arial, sans-serif;
View casualties.tsv
1 2 3 4 5 6 7 8 9 10
First name Second name Third name Fourth name Fifth name Tribe Consolidated tribe Gender Age Death location Death date Ground offensive?
Naji Jamal al-Fajm al-Fajm al-Fajm M 26 Han Younis 7/22/2014 1
Ebtehal Ibrahim ar-Remahi ar-Remahi ar-Remahi F - Deir al-Balah 7/22/2014 1
Yousef Ibrahim ar-Remahi ar-Remahi ar-Remahi M - Deir al-Balah 7/22/2014 1
Eman Ibrahim ar-Remahi ar-Remahi ar-Remahi F - Deir al-Balah 7/22/2014 1
Salwa abu-Mneifi abu-Mneifi abu-Mneifi F - Han Younis 7/22/2014 1
Salwa abu-Mneifi abu-Mneifi abu-Mneifi F - Han Younis 7/22/2014 1
Abdullah Ismael al-Baheessy al-Baheessy al-Baheessy M 26 Deir al-Balah 7/22/2014 1
Mos’ab Saleh Salama Salama Salama M 18 Han Younis 7/22/2014 1
Ibrahim Nasr Haroun Haroun Haroun M 37 Nusseirat 7/22/2014 1
View README.md

This tweak to my original example uses a Mercator projection rather than Albers USA, which straightens out many of the state borders and puts Alaska and Hawaii in their right places.

Good call, Jeremy Stucki!

View README.md

This example shows how to use d3 to create uniformly scaled geographic feature thumbnails. There are two interesting features of SVG at play here:

  1. The viewBox attribute is used to "zoom in" to the individual states.
  2. The use element is used to redraw a common background states path into each thumbnail, reducing DOM overhead.

The other nice thing here is that we didn't have to define the SVG elements'

Something went wrong with that request. Please try again.