Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 934bf49

Browse files
committed
select defaults for axes only where present selection is not valid #33
(c) Copyright IBM Corp. 2016
1 parent 9d4f2a3 commit 934bf49

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

urth-viz-explorer.html

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@
233233
* @private
234234
*/
235235
options: {
236-
type: Array
236+
type: Array,
237+
value: function() { return []; }
237238
},
238239

239240
/**
@@ -394,39 +395,50 @@
394395
var dataframe = event.target,
395396
types = dataframe.value.columnTypes.map(function(datatype) { return this._columnType(datatype); }, this);
396397

397-
var independentIndex, dependentIndex;
398+
// in case value-changed hasn't fired yet, this.df will be needed by observers
399+
this.df = dataframe.value;
398400

399-
// regenerate both dropdown label based on latest listbox items
401+
// regenerate both dropdown label based on latest listbox items where current selection is no longer valid
400402

401-
this.options && this.options.some(function(option, i) {
403+
var independentOption, dependentOption;
404+
405+
this.options.some(function(option, i) {
402406
if (option.prop === 'x') {
403-
independentIndex = 'options.' + i + '.index';
407+
independentOption = i;
404408
return true;
405409
}
406-
}) && this.set(independentIndex, null);
410+
});
407411

408-
this.options && this.options.some(function(option, i) {
412+
this.options.some(function(option, i) {
409413
if (option.prop === 'y') {
410-
dependentIndex = 'options.' + i + '.index';
414+
dependentOption = i;
411415
return true;
412416
}
413-
}) && this.set(dependentIndex, null);
417+
});
414418

415-
this.async(function() {
419+
if (independentOption !== undefined
420+
&& dataframe.value.columns.indexOf(this.get('options.' + independentOption + '.column')) == -1) {
416421
var independent = types.indexOf('temporal');
417422
if (independent == -1) independent = types.indexOf('quantitative');
418423
if (independent == -1) independent = 0;
419424
types[independent] = null;
420-
this.set('xOption.index', independent);
421-
if (independentIndex !== undefined) this.set(independentIndex, independent);
425+
this.set('options.' + independentOption + '.index', null);
426+
this.async(function() {
427+
this.set('options.' + independentOption + '.index', independent);
428+
});
429+
}
422430

431+
if (dependentOption !== undefined
432+
&& dataframe.value.columns.indexOf(this.get('options.' + dependentOption + '.column')) == -1) {
423433
var dependent = types.indexOf('quantitative');
424434
if (dependent == -1) dependent = 0;
425435
if (dependent == independent) dependent++;
426436
types[dependent] = null;
427-
this.set('yOption.index', dependent);
428-
if (dependentIndex !== undefined) this.set(dependentIndex, dependent);
429-
});
437+
this.set('options.' + dependentOption + '.index', null);
438+
this.async(function() {
439+
this.set('options.' + dependentOption + '.index', dependent);
440+
});
441+
}
430442
},
431443

432444
_rowsChanged: function(event) {

0 commit comments

Comments
 (0)