Skip to content

Commit 12d7c13

Browse files
pluehnelarsxschneider
authored andcommitted
Refactor access to configuration options (#90)
This introduces two helper methods to check for configuration options and to read their values more concisely.
1 parent 731cc16 commit 12d7c13

File tree

1 file changed

+36
-26
lines changed

1 file changed

+36
-26
lines changed

docs/assets/js/charts.js

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,26 @@ const stackedBarChartDefaults =
113113
maintainAspectRatio: false
114114
};
115115

116+
function hasConfig(element, key)
117+
{
118+
return element.data('config') && (key in element.data('config'));
119+
}
120+
121+
function readConfig(element, key)
122+
{
123+
if (!hasConfig(element, key))
124+
return undefined;
125+
126+
return element.data('config')[key];
127+
}
128+
116129
function createSpinner(canvas)
117130
{
118131
let parent = $('<div style="position:absolute;height:100%;width:100%;" class="spinner-container"></div>');
119132
parent.insertBefore($(canvas));
133+
120134
let spinner = new Spinner().spin(parent[0]);
135+
121136
return {
122137
stop: function()
123138
{
@@ -132,6 +147,7 @@ function createHistoryChart(canvas)
132147
const url = $(canvas).data('url');
133148

134149
let spinner = createSpinner(canvas);
150+
135151
d3.tsv(url,
136152
function(row)
137153
{
@@ -153,8 +169,7 @@ function createHistoryChart(canvas)
153169

154170
const context = canvas.getContext('2d');
155171

156-
if ($(canvas).data('config') && 'aggregate' in $(canvas).data('config') &&
157-
$(canvas).data('config').aggregate == 'weekly')
172+
if (readConfig($(canvas), 'aggregate') == 'weekly')
158173
{
159174
let aggregatedData = Array();
160175
data.sort(
@@ -192,21 +207,18 @@ function createHistoryChart(canvas)
192207
data = aggregatedData;
193208
}
194209

195-
if ($(canvas).data('config') && 'sliceData' in $(canvas).data('config'))
196-
data = data.slice($(canvas).data('config').sliceData[0], $(canvas).data('config').sliceData[1]);
210+
if (hasConfig($(canvas), 'sliceData'))
211+
data = data.slice(readConfig($(canvas), 'sliceData')[0], readConfig($(canvas), 'sliceData')[1]);
197212

198213
const originalDataSeries = Object.keys(data[0]).slice(1);
199214

200-
let dataSeries, visibleDataSeries;
201-
if ($(canvas).data('config') && 'series' in $(canvas).data('config'))
202-
dataSeries = $(canvas).data('config').series;
203-
else
204-
dataSeries = originalDataSeries;
215+
const dataSeries = hasConfig($(canvas), 'series')
216+
? readConfig($(canvas), 'series')
217+
: originalDataSeries;
205218

206-
if ($(canvas).data('config') && 'visibleSeries' in $(canvas).data('config'))
207-
visibleDataSeries = $(canvas).data('config').visibleSeries;
208-
else
209-
visibleDataSeries = originalDataSeries;
219+
const visibleDataSeries = hasConfig($(canvas), 'visibleSeries')
220+
? readConfig($(canvas), 'visibleSeries')
221+
: originalDataSeries;
210222

211223
let chartData = Array();
212224

@@ -259,6 +271,7 @@ function createList(canvas)
259271
const url = $(canvas).data('url');
260272

261273
let spinner = createSpinner(canvas);
274+
262275
d3.tsv(url,
263276
function(row)
264277
{
@@ -280,19 +293,16 @@ function createList(canvas)
280293

281294
const context = canvas.getContext('2d');
282295

283-
if ($(canvas).data('config') && 'sliceData' in $(canvas).data('config'))
284-
data = data.slice($(canvas).data('config').sliceData[0], $(canvas).data('config').sliceData[1]);
296+
if (hasConfig($(canvas), 'sliceData'))
297+
data = data.slice(readConfig($(canvas), 'sliceData')[0], readConfig($(canvas), 'sliceData')[1]);
285298

286-
let types, visibleTypes;
287-
if ($(canvas).data('config') && 'series' in $(canvas).data('config'))
288-
types = $(canvas).data('config').series;
289-
else
290-
types = Object.keys(data[0]).slice(1);
299+
const types = hasConfig($(canvas), 'series')
300+
? readConfig($(canvas), 'series')
301+
: Object.keys(data[0]).slice(1);
291302

292-
if ($(canvas).data('config') && 'visibleSeries' in $(canvas).data('config'))
293-
visibleTypes = $(canvas).data('config').visibleSeries;
294-
else
295-
visibleTypes = types;
303+
const visibleTypes = hasConfig($(canvas), 'visibleSeries')
304+
? readConfig($(canvas), 'visibleSeries')
305+
: types;
296306

297307
let chartData = Array();
298308

@@ -329,8 +339,7 @@ function createList(canvas)
329339

330340
$(canvas).attr('height', data.length * barWidth);
331341

332-
const isStacked = $(canvas).data('config') && 'stacked' in $(canvas).data('config') &&
333-
$(canvas).data('config').stacked;
342+
const isStacked = (readConfig($(canvas), 'stacked') == true);
334343
let options = isStacked ? stackedBarChartDefaults : barChartDefaults;
335344
options['legend']['display'] = (types.length > 1);
336345

@@ -366,6 +375,7 @@ function createTable(table)
366375
const url = $(table).data('url');
367376

368377
let spinner = createSpinner(table);
378+
369379
d3.tsv(url,
370380
function(error, data)
371381
{

0 commit comments

Comments
 (0)