From 15307ce9e33ce49b990b2643ed508ec5ddcf1e9b Mon Sep 17 00:00:00 2001 From: Spencer Childress Date: Sun, 22 Aug 2021 14:49:25 -0400 Subject: [PATCH 1/2] fix #331 --- build/webcodebook.js | 13 +++++++++++-- package-lock.json | 23 ++++++++++++++--------- src/charts/createHistogramBoxPlot.js | 3 ++- src/charts/histogramBoxPlot/onInit.js | 4 +++- src/codebook/data/makeSummary.js | 3 +++ test-page/default/index.html | 1 - test-page/default/index.js | 6 +----- 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/build/webcodebook.js b/build/webcodebook.js index 61a1354..d60749a 100644 --- a/build/webcodebook.js +++ b/build/webcodebook.js @@ -2324,6 +2324,8 @@ } function onInit$2() { + var _this = this; + var context = this; var config = this.initialSettings; var measure = config.measure; @@ -2352,7 +2354,10 @@ if (!this.group) { this.initialSettings.unfilteredData = this.raw_data; this.raw_data = this.initialSettings.unfilteredData.filter(function(d) { - return !isNaN(+d[measure]) && !/^\s*$/.test(d[measure]); + return ( + _this.config.codebookConfig.missingValues.indexOf(d[measure]) === + -1 && !/^\s*$/.test(d[measure]) + ); }); } @@ -2485,7 +2490,8 @@ margin: this_.margin, nBins: d.bins, chartType: d.chartType, - commonScale: d.commonScale == undefined ? true : d.commonScale + commonScale: d.commonScale == undefined ? true : d.commonScale, + codebookConfig: d.codebookConfig }; var chartData = []; @@ -4232,6 +4238,9 @@ else g.statistics = summarize.continuous(g.values, sub); }); } + + // Give charts access to codebook object. + varObj.codebookConfig = config; return varObj; }); diff --git a/package-lock.json b/package-lock.json index c993182..b55c1b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", + "optional": true, "requires": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -1138,6 +1139,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "optional": true, "requires": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -1457,7 +1459,8 @@ "exit-on-epipe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "optional": true }, "expand-brackets": { "version": "0.1.5", @@ -1690,9 +1693,9 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-tags": { @@ -2316,9 +2319,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-type": { @@ -2591,7 +2594,8 @@ "printj": { "version": "1.1.2", "resolved": "http://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "optional": true }, "private": { "version": "0.1.8", @@ -3569,7 +3573,8 @@ "voc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/voc/-/voc-1.1.0.tgz", - "integrity": "sha512-fthgd8OJLqq8vPcLjElTk6Rcl2e3v5ekcXauImaqEnQqd5yUWKg1+ZOBgS2KTWuVKcuvZMQq4TDptiT1uYddUA==" + "integrity": "sha512-fthgd8OJLqq8vPcLjElTk6Rcl2e3v5ekcXauImaqEnQqd5yUWKg1+ZOBgS2KTWuVKcuvZMQq4TDptiT1uYddUA==", + "optional": true }, "webcharts": { "version": "1.11.1", diff --git a/src/charts/createHistogramBoxPlot.js b/src/charts/createHistogramBoxPlot.js index 3f514cc..dc4d7cc 100644 --- a/src/charts/createHistogramBoxPlot.js +++ b/src/charts/createHistogramBoxPlot.js @@ -10,7 +10,8 @@ export function createHistogramBoxPlot(this_, d) { margin: this_.margin, nBins: d.bins, chartType: d.chartType, - commonScale: d.commonScale == undefined ? true : d.commonScale + commonScale: d.commonScale == undefined ? true : d.commonScale, + codebookConfig: d.codebookConfig }; let chartData = []; diff --git a/src/charts/histogramBoxPlot/onInit.js b/src/charts/histogramBoxPlot/onInit.js index 6e34d79..92239c7 100644 --- a/src/charts/histogramBoxPlot/onInit.js +++ b/src/charts/histogramBoxPlot/onInit.js @@ -34,7 +34,9 @@ export default function onInit() { if (!this.group) { this.initialSettings.unfilteredData = this.raw_data; this.raw_data = this.initialSettings.unfilteredData.filter( - d => !isNaN(+d[measure]) && !/^\s*$/.test(d[measure]) + d => + this.config.codebookConfig.missingValues.indexOf(d[measure]) === -1 && + !/^\s*$/.test(d[measure]) ); } diff --git a/src/codebook/data/makeSummary.js b/src/codebook/data/makeSummary.js index ec151b1..128a7b8 100644 --- a/src/codebook/data/makeSummary.js +++ b/src/codebook/data/makeSummary.js @@ -159,6 +159,9 @@ export function makeSummary(codebook) { else g.statistics = summarize.continuous(g.values, sub); }); } + + // Give charts access to codebook object. + varObj.codebookConfig = config; return varObj; }); diff --git a/test-page/default/index.html b/test-page/default/index.html index cc83aff..22a4724 100644 --- a/test-page/default/index.html +++ b/test-page/default/index.html @@ -15,7 +15,6 @@
Web Codebook
-
Test Page
diff --git a/test-page/default/index.js b/test-page/default/index.js index b727008..689a67a 100644 --- a/test-page/default/index.js +++ b/test-page/default/index.js @@ -21,15 +21,11 @@ fetch( .join(' ') ).replace(/\.csv/i, ''); }); - console.log('Data file metadata:'); - console.log(json); //const fileObj = json[Math.floor(Math.random() * json.length)]; const fileObj = json[8]; - console.log('Select data file metadata:'); - console.log(fileObj); d3.csv( fileObj.github_url, - function(d) { + function(d, i) { return d; }, function(error, data) { From 6e027a601678677b6e54fdf7d1ead6469f5dde59 Mon Sep 17 00:00:00 2001 From: Spencer Childress Date: Sun, 22 Aug 2021 14:59:16 -0400 Subject: [PATCH 2/2] treat NaN differently than null and undefined --- build/webcodebook.js | 6 ++++-- src/charts/histogramBoxPlot/onInit.js | 1 + src/codebook/defaultSettings.js | 2 +- test-page/default/index.html | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/build/webcodebook.js b/build/webcodebook.js index d60749a..1707721 100644 --- a/build/webcodebook.js +++ b/build/webcodebook.js @@ -2356,7 +2356,9 @@ this.raw_data = this.initialSettings.unfilteredData.filter(function(d) { return ( _this.config.codebookConfig.missingValues.indexOf(d[measure]) === - -1 && !/^\s*$/.test(d[measure]) + -1 && + !isNaN(d[measure]) && // [NaN].indexOf(NaN) always returns -1 + !/^\s*$/.test(d[measure]) ); }); } @@ -3492,7 +3494,7 @@ tabs: ['codebook', 'listing', 'chartMaker', 'settings'], dataName: '', whiteSpaceAsMissing: true, - missingValues: [null, NaN, undefined] + missingValues: [null, undefined] }; function setDefaults(codebook) { diff --git a/src/charts/histogramBoxPlot/onInit.js b/src/charts/histogramBoxPlot/onInit.js index 92239c7..70501ac 100644 --- a/src/charts/histogramBoxPlot/onInit.js +++ b/src/charts/histogramBoxPlot/onInit.js @@ -36,6 +36,7 @@ export default function onInit() { this.raw_data = this.initialSettings.unfilteredData.filter( d => this.config.codebookConfig.missingValues.indexOf(d[measure]) === -1 && + !isNaN(d[measure]) && // [NaN].indexOf(NaN) always returns -1 !/^\s*$/.test(d[measure]) ); } diff --git a/src/codebook/defaultSettings.js b/src/codebook/defaultSettings.js index a2f43e4..60c843f 100644 --- a/src/codebook/defaultSettings.js +++ b/src/codebook/defaultSettings.js @@ -16,7 +16,7 @@ const defaultSettings = { tabs: ['codebook', 'listing', 'chartMaker', 'settings'], dataName: '', whiteSpaceAsMissing: true, - missingValues: [null, NaN, undefined] + missingValues: [null, undefined] }; export default defaultSettings; diff --git a/test-page/default/index.html b/test-page/default/index.html index 22a4724..cc83aff 100644 --- a/test-page/default/index.html +++ b/test-page/default/index.html @@ -15,6 +15,7 @@
Web Codebook
+
Test Page