From b5cc9ad225de3fbfb8bcdf76805e7e6f3b3def5c Mon Sep 17 00:00:00 2001 From: texodus Date: Mon, 28 May 2018 22:37:43 -0400 Subject: [PATCH] Fixed scatter bug --- .../package.json | 2 +- .../src/js/draw.js | 28 ++++++++----------- .../src/js/series.js | 4 ++- .../src/js/hypergrid.js | 3 +- packages/perspective-viewer/src/js/view.js | 27 ++++++++++++------ 5 files changed, 35 insertions(+), 29 deletions(-) diff --git a/packages/perspective-viewer-highcharts/package.json b/packages/perspective-viewer-highcharts/package.json index 59a4c8021c..20fdd03eed 100644 --- a/packages/perspective-viewer-highcharts/package.json +++ b/packages/perspective-viewer-highcharts/package.json @@ -38,7 +38,7 @@ "babel-runtime": "^6.26.0", "chroma-js": "^1.3.4", "gradient-parser": "0.1.5", - "highcharts": "6.0.7", + "highcharts": "6.1.0", "highcharts-grouped-categories": "1.1.2", "highcharts-more": "^0.1.2" }, diff --git a/packages/perspective-viewer-highcharts/src/js/draw.js b/packages/perspective-viewer-highcharts/src/js/draw.js index 7f6cb743fd..9e79d69987 100644 --- a/packages/perspective-viewer-highcharts/src/js/draw.js +++ b/packages/perspective-viewer-highcharts/src/js/draw.js @@ -17,10 +17,11 @@ import {color_axis} from "./color_axis.js"; import {make_tree_data, make_y_data, make_xy_data, make_xyz_data} from "./series.js"; import {set_boost, set_axis, set_category_axis, default_config} from "./config.js"; -export const draw = (mode) => async function(el, view, hidden, task) { +export const draw = (mode) => async function(el, view, task) { const row_pivots = this._view_columns('#row_pivots perspective-row:not(.off)'); const col_pivots = this._view_columns('#column_pivots perspective-row:not(.off)'); const aggregates = this._get_view_aggregates(); + const hidden = this._get_view_hidden(aggregates); const [js, schema, tschema] = await Promise.all([view.to_json(), view.schema(), this._table.schema()]); @@ -42,7 +43,11 @@ export const draw = (mode) => async function(el, view, hidden, task) { xaxis_name = aggregates.length > 0 ? aggregates[0].column : undefined, xaxis_type = schema[xaxis_name], yaxis_name = aggregates.length > 1 ? aggregates[1].column : undefined, - yaxis_type = schema[yaxis_name]; + yaxis_type = schema[yaxis_name], + xtree_name = row_pivots.length > 0 ? row_pivots[row_pivots.length - 1] : undefined, + xtree_type = tschema[xaxis_name], + ytree_name = col_pivots.length > 1 ? col_pivots[col_pivots.length - 1] : undefined, + ytree_type = tschema[yaxis_name]; if (mode === 'scatter') { let [series, top, colorRange] = make_xy_data(js, row_pivots, col_pivots, hidden); @@ -73,13 +78,8 @@ export const draw = (mode) => async function(el, view, hidden, task) { color_axis.call(this, config, colorRange) set_boost(config); - xaxis_name = row_pivots.length > 0 ? row_pivots[row_pivots.length - 1] : undefined; - xaxis_type = tschema[xaxis_name]; - yaxis_name = col_pivots.length > 1 ? col_pivots[col_pivots.length - 1] : undefined; - yaxis_type = tschema[yaxis_name]; - - set_category_axis(config, 'xAxis', xaxis_type, top); - set_category_axis(config, 'yAxis', yaxis_type, ytop); + set_category_axis(config, 'xAxis', xtree_type, top); + set_category_axis(config, 'yAxis', ytree_type, ytop); Object.assign(config, { series: [{ @@ -115,17 +115,11 @@ export const draw = (mode) => async function(el, view, hidden, task) { } else { let [series, top, colorRange] = make_y_data(js, row_pivots, hidden); config.series = series; - const colors = series.length <= 10 ? COLORS_10 : COLORS_20; - - xaxis_name = row_pivots.length > 0 ? row_pivots[row_pivots.length - 1] : undefined; - xaxis_type = tschema[xaxis_name]; - yaxis_name = col_pivots.length > 1 ? col_pivots[col_pivots.length - 1] : undefined; - yaxis_type = tschema[yaxis_name]; - set_category_axis(config, 'xAxis', xaxis_type, top); + config.colors = series.length <= 10 ? COLORS_10 : COLORS_20; + set_category_axis(config, 'xAxis', xtree_type, top); config.legend.enabled = col_pivots.length > 0 || series.length > 1; config.legend.floating = series.length <= 20; Object.assign(config, { - colors: colors, yAxis: { startOnTick: false, endOnTick: false, diff --git a/packages/perspective-viewer-highcharts/src/js/series.js b/packages/perspective-viewer-highcharts/src/js/series.js index c7efd54ab8..17bcf67917 100644 --- a/packages/perspective-viewer-highcharts/src/js/series.js +++ b/packages/perspective-viewer-highcharts/src/js/series.js @@ -12,6 +12,8 @@ * Y */ +import {COLORS_10, COLORS_20} from "./externals.js"; + function row_to_series(series, sname, gname) { let s; for (var sidx = 0; sidx < series.length; sidx++) { @@ -25,7 +27,7 @@ function row_to_series(series, sname, gname) { s = { name: sname, connectNulls: true, - data: [], + data: [] }; if (gname) { s.stack = gname; diff --git a/packages/perspective-viewer-hypergrid/src/js/hypergrid.js b/packages/perspective-viewer-hypergrid/src/js/hypergrid.js index 7d1ab13f1d..32aa7907b6 100644 --- a/packages/perspective-viewer-hypergrid/src/js/hypergrid.js +++ b/packages/perspective-viewer-hypergrid/src/js/hypergrid.js @@ -739,7 +739,8 @@ const LAZY_THRESHOLD = 10000; const PRIVATE = Symbol("Hypergrid private"); -async function grid(div, view, hidden, task) { +async function grid(div, view, task) { + let hidden = this._get_view_hidden(); this[PRIVATE] = this[PRIVATE] || {}; diff --git a/packages/perspective-viewer/src/js/view.js b/packages/perspective-viewer/src/js/view.js index 0b31b4bc92..a9ec5840ec 100644 --- a/packages/perspective-viewer/src/js/view.js +++ b/packages/perspective-viewer/src/js/view.js @@ -531,14 +531,11 @@ function update() { let filters = this._get_view_filters(); let aggregates = this._get_view_aggregates(); if (aggregates.length === 0) return; - let hidden = []; let sort = this._get_view_sorts("#sort perspective-row"); - for (let s of sort) { - if (aggregates.map(agg => agg.column).indexOf(s[0]) === -1) { - let all = this._get_view_aggregates('#inactive_columns perspective-row'); - aggregates.push(all.reduce((obj, y) => y.column === s[0] ? y : obj)); - hidden.push(s[0]); - } + let hidden = this._get_view_hidden(aggregates, sort); + for (let s of hidden) { + let all = this._get_view_aggregates('#inactive_columns perspective-row'); + aggregates.push(all.reduce((obj, y) => y.column === s ? y : obj)); } if (this._view) { @@ -564,7 +561,7 @@ function update() { this._task.cancel(); } const task = this._task = new CancelTask(); - this._plugin.create.call(this, this._datavis, this._view, hidden, task).then(() => { + this._plugin.create.call(this, this._datavis, this._view, task).then(() => { timer(); task.cancel(); }).catch(err => { @@ -583,7 +580,7 @@ function update() { this._render_count--; }); - this._plugin.create.call(this, this._datavis, this._view, hidden, task).catch(err => { + this._plugin.create.call(this, this._datavis, this._view, task).catch(err => { console.warn(err); }).finally(() => { if (!this.hasAttribute('render_time')) { @@ -673,6 +670,18 @@ function update() { return this._view_columns('#sort perspective-row', false, false, true); } + _get_view_hidden(aggregates, sort) { + aggregates = aggregates || this._get_view_aggregates(); + let hidden = []; + sort = sort || this._get_view_sorts("#sort perspective-row"); + for (let s of sort) { + if (aggregates.map(agg => agg.column).indexOf(s[0]) === -1) { + hidden.push(s[0]); + } + } + return hidden; + } + _view_columns(selector, types, filters, sort) { selector = selector || '#active_columns perspective-row'; let selection = this.querySelectorAll(selector);