From ca5eb6057768682cadd07135983db513c4e79b62 Mon Sep 17 00:00:00 2001 From: Brent Lightsey Date: Wed, 15 Mar 2017 05:31:42 -0500 Subject: [PATCH 1/6] Creating a per citizen view of spending. Related to Issue #41. Adding thumbnail image and updating contributors page. --- _src/_data.json | 4 + _src/_who-we-are.jade | 2 + _src/budget-per-capita.jade | 13 ++ _src/budget-visuals.jade | 3 + _src/css/_okc-per-capita.scss | 64 +++++++++ _src/css/main.scss | 4 +- _src/data/population.json | 18 +++ _src/images/budget-per-capita-thumb.png | Bin 0 -> 95268 bytes _src/js/okc-per-capita.js | 167 ++++++++++++++++++++++++ 9 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 _src/budget-per-capita.jade create mode 100644 _src/css/_okc-per-capita.scss create mode 100644 _src/data/population.json create mode 100644 _src/images/budget-per-capita-thumb.png create mode 100644 _src/js/okc-per-capita.js diff --git a/_src/_data.json b/_src/_data.json index f09cb460..a8ee5e94 100644 --- a/_src/_data.json +++ b/_src/_data.json @@ -42,5 +42,9 @@ "budget-radar": { "title": "Budget Radar | Open Budget: OKC", "slug": "budget-radar" + }, + "budget-per-capita": { + "title": "OKC 2017 FY Budget Per Citizen | Open Budget: OKC", + "slug": "budget-per-capita" } } diff --git a/_src/_who-we-are.jade b/_src/_who-we-are.jade index 03b8ed45..ac635d2b 100644 --- a/_src/_who-we-are.jade +++ b/_src/_who-we-are.jade @@ -27,3 +27,5 @@ div li Alex Ayon (#[a(href='https://github.com/alex-code4okc') github]) li James England (#[a(href='https://twitter.com/JEinOKC') twitter]/#[a(href='https://github.com/JEinOKC') github]) li Daniel Ashcraft (#[a(href='https://github.com/dashcraft') github]) + li Brent Lightsey (#[a(href='https://github.com/brentlightsey') github]) + diff --git a/_src/budget-per-capita.jade b/_src/budget-per-capita.jade new file mode 100644 index 00000000..e31d8044 --- /dev/null +++ b/_src/budget-per-capita.jade @@ -0,0 +1,13 @@ +.container + h1 2017 FY OKC Budget Per Citizen + #list-container + // divs to be added here + +// style elements +link(href='https://fonts.googleapis.com/css?family=Lato', rel='stylesheet') +script(src='https://code.jquery.com/jquery-3.1.1.min.js', integrity='sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=', crossorigin='anonymous') +script(src='http://benalman.com/code/projects/jquery-throttle-debounce/jquery.ba-throttle-debounce.js', type='application/javascript') +script(src='/js/okc-per-capita.js', type='application/javascript') +//if IE + script(src='http://html5shiv.googlecode.com/svn/trunk/html5.js') + diff --git a/_src/budget-visuals.jade b/_src/budget-visuals.jade index cba8becb..bcf99804 100644 --- a/_src/budget-visuals.jade +++ b/_src/budget-visuals.jade @@ -26,3 +26,6 @@ h3 FY2016 Budget Overview img.img-responsive(src="/images/fy2016-tree-thumb.png") .col-md-4 + a(href="/budget-per-capita.html") + h3 FY2017 Budget Per Citizen + img.img-responsive(src="/images/budget-per-capita-thumb.png") diff --git a/_src/css/_okc-per-capita.scss b/_src/css/_okc-per-capita.scss new file mode 100644 index 00000000..81e5837f --- /dev/null +++ b/_src/css/_okc-per-capita.scss @@ -0,0 +1,64 @@ +//colors +$color_alto_approx: #ddd; +$color_smalt_blue_approx: #5c828a; +$color_mountain_mist_approx: #999; +$color_pink_swan_approx: #bbb; + +//fonts +$font_0: Lato; +$font_1: sans-serif; + +body { + font-family: $font_0, $font_1; +} +div { + display: block; +} +p { + margin: 0 0 1em 0; + &.o-l1 { + text-transform: uppercase; + font-size: 12px; + color: $color_smalt_blue_approx; + margin-bottom: 0; + font-weight: 700; + } + &.o-l2 { + font-size: 22px; + margin-bottom: 3px; + text-transform: capitalize; + } + &.o-total { + font-size: 18px; + margin-bottom: 0; + color: $color_mountain_mist_approx; + } +} +.o-row { + display: block; + span { + display: inline-block; + } + .o-measure { + width: 70%; + text-align: right; + margin-bottom: 10px; + font-weight: 300; + position: relative; + } + .o-detail { + width: 28%; + margin-left: 1%; + } +} +.o-value { + border-bottom: 1px solid $color_alto_approx; +} +.o-cash { + color: $color_pink_swan_approx; + font-size: 50%; + vertical-align: top; + top: 0.4em; + position: relative; + margin-right: 2px; +} diff --git a/_src/css/main.scss b/_src/css/main.scss index edf2188b..1d2f3682 100644 --- a/_src/css/main.scss +++ b/_src/css/main.scss @@ -9,6 +9,8 @@ @import "treemap"; // D3 Treemap @import "flow"; // D3 Sankey diagram @import "okc-budget-tree"; +@import "okc-per-capita"; + html { height: 100%; overflow-y: scroll; @@ -102,7 +104,7 @@ footer { .row.visualizations { h3 { text-align: center; - } + } img { height: 214px; margin: 0 auto 15px; diff --git a/_src/data/population.json b/_src/data/population.json new file mode 100644 index 00000000..0b2e64c5 --- /dev/null +++ b/_src/data/population.json @@ -0,0 +1,18 @@ +[ + { + "year": 2015, + "city-population": "631346", + "metro-population": "1358452" + }, + { + "year": 2016, + "city-population": "631346", + "metro-population": "1358452" + }, + { + "year": 2017, + "city-population": "631346", + "metro-population": "1358452" + } + +] diff --git a/_src/images/budget-per-capita-thumb.png b/_src/images/budget-per-capita-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..469754770e59a05eb5808dab6a919689251e32ee GIT binary patch literal 95268 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"); + rowDiv.className = "o-row"; + rowDiv.id = element.L2; + + spanMeasure = $(""); + spanMeasure.append("$" + element.program_per_capita + ""); + + spanDetail = $(""); + spanDetail.append("

" + element.agency + "

"); + spanDetail.append("

" + element.program + "

"); + spanDetail.append("

Total: $" + element.program_total + "

"); + + rowDiv.append(spanMeasure); + rowDiv.append(spanDetail); + rootElement.append(rowDiv); + }); + + return rootElement; +} + +// Resize the list based on window size +function resizeList() { + rootElement = getRootElement(); + elementsToResize = getResizeElements(rootElement); + + var maxWidth = 1800; + var defaultScaler = 22.5; //scaler - multiplication factor for fonts + var minScaler = 4.2; + + + var newWidth = Math.min($(window).width(), maxWidth); // sets max for width calc + var scaler = Math.max(defaultScaler * newWidth / maxWidth, minScaler); // min scale + + elementsToResize.each(function(k,v) { + var valSpan = $(v).children('.o-value')[0]; + var value = $(valSpan).text(); + var fontSize = getFontSize(value, scaler); + $(v).css('font-size', fontSize + 'px'); + }); + +} + +function getFontSize(val, scaler) { + var minSize = 18; // minimum font size + var pc = String(val); + var str = pc.replace(',', ''); // "100.01" + var val = Number(str); // 100.01 + var roundNum = Math.round(val); + var periodCount = (str.match(/\./g) || []).length; + var numeralCount = (str.match(/[0-9]/g) || []).length; + var nonNumerals = Math.floor((String(roundNum).length-1) / 3) + periodCount; // count of periods and commas + + var size = Math.sqrt((val) / (.7*( (.56 * numeralCount) + (.27*nonNumerals) ))); // font size function + var fontSize = scaler * size; + + return Math.max(fontSize, minSize); + +} + +// helpers +function output(message) { + alert(message); +} +// run on load +$(function () { + // find root element + // TODO: make root element dynamic + readData(processData); + // resize fonts when window resizes + $(window).resize($.debounce(250, resizeList)); +}); From 3168cc514b5b64b2724bb56b1761c26c61f6b698 Mon Sep 17 00:00:00 2001 From: Brent Lightsey Date: Fri, 17 Mar 2017 05:13:01 -0500 Subject: [PATCH 2/6] Wrapping okc-per-capita.js in a jquery start function to repair CI build tests. --- _src/js/okc-per-capita.js | 304 +++++++++++++++++++------------------- 1 file changed, 153 insertions(+), 151 deletions(-) diff --git a/_src/js/okc-per-capita.js b/_src/js/okc-per-capita.js index c67fc518..082c3fe9 100644 --- a/_src/js/okc-per-capita.js +++ b/_src/js/okc-per-capita.js @@ -3,165 +3,167 @@ showing all of the measures sized proportinally to each other based on their value compared to the grand total. This ensures that the largest spending item will have the largest font. */ -function getRootElement() { - return $("#list-container"); -} - -function getResizeElements(rootElement) { - return rootElement.find(".o-measure"); -} - -function readData(callback) { - $.when($.getJSON("./data/fy2017/c4okc_fy2017.json"), - $.getJSON("./data/population.json")) - .done(function(budgetData, populationData) { - callback(budgetData[0], populationData[0]); - }) - .fail(function (jqxhr, textStatus, error) { - output("Had a problem getting the data: " + error); - }); -} - -// master function to begin after data retrieval -function processData(budgetData, populationData) { - var aggregated = aggregateData(budgetData); - var perCapita = calculatePerCapita(aggregated, populationData); - var sorted = sortData(perCapita); - var rootElement = getRootElement(); - rootElement = renderList(rootElement, sorted); - resizeList(); -} - -// Create a new list that reduces the data into totals based on given keys -function aggregateData(data){ - aggregated = data.reduce(function(acc,val){ - var key = val.agency+"-"+val.program; - // break here, what's happening? - if (!acc.hasOwnProperty(key)){ - acc[key] = - { - "agency": val.agency, - "program": val.program, - "program_total": 0 - }; - } - acc[key]["program_total"] += Number(val.value); - return acc; - }, {}); - // convert single object to array - aggArray = []; - for(var key in aggregated) { - aggArray.push(aggregated[key]); - } +;/* global $ */ +(function($){ + function getRootElement() { + return $("#list-container"); + } + + function getResizeElements(rootElement) { + return rootElement.find(".o-measure"); + } - return aggArray; + function readData(callback) { + $.when($.getJSON("./data/fy2017/c4okc_fy2017.json"), + $.getJSON("./data/population.json")) + .done(function(budgetData, populationData) { + callback(budgetData[0], populationData[0]); + }) + .fail(function (jqxhr, textStatus, error) { + output("Had a problem getting the data: " + error); + }); } -// Calculates the per capita value of each program total -function calculatePerCapita(budgetData, populationData) { - // expects aggregated budget data with "program_total" attribute - // find the metro population, assume 2017 - var metroPopObject = $.grep(populationData, function(e){return e.year == 2017}); - var metroPop = Number(metroPopObject[0]["metro-population"]); - - var perCapitaData = budgetData.map(function (e) { - var programTotal = Number(e["program_total"]); - var programPerCapita = programTotal / metroPop; - - return { - "agency": e["agency"], - "program": e["program"], - "program_total": e["program_total"].toLocaleString(), - "program_per_capita": programPerCapita.toLocaleString(undefined, - { maximumFractionDigits: 2, minimumFractionDigits: 2}) - }; - }); - - return perCapitaData; -} - -// assumes the data is already structured with L1, L2 & measure -function sortData(data) { - var sortedData = data.sort(function(a, b) { - // sort only by program total - return b.program_per_capita - a.program_per_capita; // descending order - }); - - return sortedData; -} - -//Render the elements in the data as a series of divs with the 'o-row' class applied -function renderList(rootElement, data) { - data.forEach(function (element) { - rowDiv = $("
"); - rowDiv.className = "o-row"; - rowDiv.id = element.L2; - - spanMeasure = $(""); - spanMeasure.append("$" + element.program_per_capita + ""); - - spanDetail = $(""); - spanDetail.append("

" + element.agency + "

"); - spanDetail.append("

" + element.program + "

"); - spanDetail.append("

Total: $" + element.program_total + "

"); - - rowDiv.append(spanMeasure); - rowDiv.append(spanDetail); - rootElement.append(rowDiv); + // master function to begin after data retrieval + function processData(budgetData, populationData) { + var aggregated = aggregateData(budgetData); + var perCapita = calculatePerCapita(aggregated, populationData); + var sorted = sortData(perCapita); + var rootElement = getRootElement(); + rootElement = renderList(rootElement, sorted); + resizeList(); + } + + // Create a new list that reduces the data into totals based on given keys + function aggregateData(data){ + aggregated = data.reduce(function(acc,val){ + var key = val.agency+"-"+val.program; + // break here, what's happening? + if (!acc.hasOwnProperty(key)){ + acc[key] = + { + "agency": val.agency, + "program": val.program, + "program_total": 0 + }; + } + acc[key]["program_total"] += Number(val.value); + return acc; + }, {}); + // convert single object to array + aggArray = []; + for(var key in aggregated) { + aggArray.push(aggregated[key]); + } + + return aggArray; + } + + // Calculates the per capita value of each program total + function calculatePerCapita(budgetData, populationData) { + // expects aggregated budget data with "program_total" attribute + // find the metro population, assume 2017 + var metroPopObject = $.grep(populationData, function(e){return e.year == 2017}); + var metroPop = Number(metroPopObject[0]["metro-population"]); + + var perCapitaData = budgetData.map(function (e) { + var programTotal = Number(e["program_total"]); + var programPerCapita = programTotal / metroPop; + + return { + "agency": e["agency"], + "program": e["program"], + "program_total": e["program_total"].toLocaleString(), + "program_per_capita": programPerCapita.toLocaleString(undefined, + { maximumFractionDigits: 2, minimumFractionDigits: 2}) + }; }); - return rootElement; -} + return perCapitaData; + } + + // assumes the data is already structured with L1, L2 & measure + function sortData(data) { + var sortedData = data.sort(function(a, b) { + // sort only by program total + return b.program_per_capita - a.program_per_capita; // descending order + }); -// Resize the list based on window size -function resizeList() { - rootElement = getRootElement(); - elementsToResize = getResizeElements(rootElement); + return sortedData; + } - var maxWidth = 1800; - var defaultScaler = 22.5; //scaler - multiplication factor for fonts - var minScaler = 4.2; + //Render the elements in the data as a series of divs with the 'o-row' class applied + function renderList(rootElement, data) { + data.forEach(function (element) { + rowDiv = $("
"); + rowDiv.className = "o-row"; + rowDiv.id = element.L2; + spanMeasure = $(""); + spanMeasure.append("$" + element.program_per_capita + ""); - var newWidth = Math.min($(window).width(), maxWidth); // sets max for width calc - var scaler = Math.max(defaultScaler * newWidth / maxWidth, minScaler); // min scale + spanDetail = $(""); + spanDetail.append("

" + element.agency + "

"); + spanDetail.append("

" + element.program + "

"); + spanDetail.append("

Total: $" + element.program_total + "

"); - elementsToResize.each(function(k,v) { - var valSpan = $(v).children('.o-value')[0]; - var value = $(valSpan).text(); - var fontSize = getFontSize(value, scaler); - $(v).css('font-size', fontSize + 'px'); - }); + rowDiv.append(spanMeasure); + rowDiv.append(spanDetail); + rootElement.append(rowDiv); + }); + + return rootElement; + } + + // Resize the list based on window size + function resizeList() { + rootElement = getRootElement(); + elementsToResize = getResizeElements(rootElement); + + var maxWidth = 1800; + var defaultScaler = 22.5; //scaler - multiplication factor for fonts + var minScaler = 4.2; + + + var newWidth = Math.min($(window).width(), maxWidth); // sets max for width calc + var scaler = Math.max(defaultScaler * newWidth / maxWidth, minScaler); // min scale + + elementsToResize.each(function(k,v) { + var valSpan = $(v).children('.o-value')[0]; + var value = $(valSpan).text(); + var fontSize = getFontSize(value, scaler); + $(v).css('font-size', fontSize + 'px'); + }); + + } + + function getFontSize(val, scaler) { + var minSize = 18; // minimum font size + var pc = String(val); + var str = pc.replace(',', ''); // "100.01" + var val = Number(str); // 100.01 + var roundNum = Math.round(val); + var periodCount = (str.match(/\./g) || []).length; + var numeralCount = (str.match(/[0-9]/g) || []).length; + var nonNumerals = Math.floor((String(roundNum).length-1) / 3) + periodCount; // count of periods and commas + + var size = Math.sqrt((val) / (.7*( (.56 * numeralCount) + (.27*nonNumerals) ))); // font size function + var fontSize = scaler * size; + + return Math.max(fontSize, minSize); + + } + + // helpers + function output(message) { + alert(message); + } + + // resize fonts when window resizes + $(window).resize($.debounce(250, resizeList)); -} - -function getFontSize(val, scaler) { - var minSize = 18; // minimum font size - var pc = String(val); - var str = pc.replace(',', ''); // "100.01" - var val = Number(str); // 100.01 - var roundNum = Math.round(val); - var periodCount = (str.match(/\./g) || []).length; - var numeralCount = (str.match(/[0-9]/g) || []).length; - var nonNumerals = Math.floor((String(roundNum).length-1) / 3) + periodCount; // count of periods and commas - - var size = Math.sqrt((val) / (.7*( (.56 * numeralCount) + (.27*nonNumerals) ))); // font size function - var fontSize = scaler * size; - - return Math.max(fontSize, minSize); - -} - -// helpers -function output(message) { - alert(message); -} -// run on load -$(function () { - // find root element - // TODO: make root element dynamic - readData(processData); - // resize fonts when window resizes - $(window).resize($.debounce(250, resizeList)); -}); + // find root element + // TODO: make root element dynamic + readData(processData); +})($); From 403705ef75b47a31ee30f504d656366130a7f3fa Mon Sep 17 00:00:00 2001 From: Brent Lightsey Date: Fri, 17 Mar 2017 05:21:30 -0500 Subject: [PATCH 3/6] Adding check for existence of function to fix CI break. --- _src/js/okc-per-capita.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/_src/js/okc-per-capita.js b/_src/js/okc-per-capita.js index 082c3fe9..7c19a1c7 100644 --- a/_src/js/okc-per-capita.js +++ b/_src/js/okc-per-capita.js @@ -161,7 +161,11 @@ will have the largest font. } // resize fonts when window resizes - $(window).resize($.debounce(250, resizeList)); + $(window).resize( + if ($.debounce != undefined) { // check for headless state + $.debounce(250, resizeList) + } + ); // find root element // TODO: make root element dynamic From 376739a52b85b888877aa3ee42e1654ff035c5f0 Mon Sep 17 00:00:00 2001 From: Brent Lightsey Date: Fri, 17 Mar 2017 05:21:30 -0500 Subject: [PATCH 4/6] Adding check for existence of function to fix CI break. Fixing okc-per-capita.js third try. --- _src/js/okc-per-capita.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/_src/js/okc-per-capita.js b/_src/js/okc-per-capita.js index 082c3fe9..a31fea30 100644 --- a/_src/js/okc-per-capita.js +++ b/_src/js/okc-per-capita.js @@ -161,7 +161,12 @@ will have the largest font. } // resize fonts when window resizes - $(window).resize($.debounce(250, resizeList)); + $(window).resize(function() { + if ($.debounce != undefined) { // check for headless state + $.debounce(250, resizeList) + } + } + ); // find root element // TODO: make root element dynamic From 159d4d712c2693ddf5235e753effde2f5bf9d8f7 Mon Sep 17 00:00:00 2001 From: Brent Lightsey Date: Fri, 17 Mar 2017 05:39:01 -0500 Subject: [PATCH 5/6] Getting rid of HEAD<<<< text added by git rebase. --- _src/js/okc-per-capita.js | 1 - 1 file changed, 1 deletion(-) diff --git a/_src/js/okc-per-capita.js b/_src/js/okc-per-capita.js index 2d65efd2..fbcdcd5d 100644 --- a/_src/js/okc-per-capita.js +++ b/_src/js/okc-per-capita.js @@ -161,7 +161,6 @@ will have the largest font. } // resize fonts when window resizes -<<<<<<< HEAD $(window).resize(function() { if ($.debounce != undefined) { // check for headless state $.debounce(250, resizeList) From d080a7c1755cdfe01da8fc9e831bd5c36cac3cfc Mon Sep 17 00:00:00 2001 From: Brent Lightsey Date: Fri, 31 Mar 2017 06:32:16 -0500 Subject: [PATCH 6/6] Removing dependency on benalman.com, implementing debounce function locally. --- _src/budget-per-capita.jade | 3 +-- _src/js/okc-per-capita.js | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/_src/budget-per-capita.jade b/_src/budget-per-capita.jade index e31d8044..199f5843 100644 --- a/_src/budget-per-capita.jade +++ b/_src/budget-per-capita.jade @@ -6,8 +6,7 @@ // style elements link(href='https://fonts.googleapis.com/css?family=Lato', rel='stylesheet') script(src='https://code.jquery.com/jquery-3.1.1.min.js', integrity='sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=', crossorigin='anonymous') -script(src='http://benalman.com/code/projects/jquery-throttle-debounce/jquery.ba-throttle-debounce.js', type='application/javascript') -script(src='/js/okc-per-capita.js', type='application/javascript') +script(src='/js/okc-per-capita.js', type='application/javascript', charset='utf-8') //if IE script(src='http://html5shiv.googlecode.com/svn/trunk/html5.js') diff --git a/_src/js/okc-per-capita.js b/_src/js/okc-per-capita.js index fbcdcd5d..0c1c55b2 100644 --- a/_src/js/okc-per-capita.js +++ b/_src/js/okc-per-capita.js @@ -5,6 +5,18 @@ will have the largest font. */ ;/* global $ */ (function($){ + // Credit: https://remysharp.com/2010/07/21/throttling-function-calls +function debounce(fn, delay) { + var timer = null; + return function () { + var context = this, args = arguments; + clearTimeout(timer); + timer = setTimeout(function () { + fn.apply(context, args); + }, delay); + }; +} + function getRootElement() { return $("#list-container"); } @@ -161,13 +173,7 @@ will have the largest font. } // resize fonts when window resizes - $(window).resize(function() { - if ($.debounce != undefined) { // check for headless state - $.debounce(250, resizeList) - } - } - - ); + $(window).resize(debounce(resizeList, 250)); // find root element // TODO: make root element dynamic