mirror of
https://github.com/apache/superset.git
synced 2026-04-12 04:37:49 +00:00
* Simplifying the viz interface (#2005) * Working on dashes * Making this a collaborative branch * Fixing some bugs * Fixing bugs * More improvements * Add datasource back in bootstrap data * Decent state * Linting * Moving forward * Some more linting * Fix the timer * Triggering events through state * Lingint * Put filters in an array instead of flt strings (#2090) * Put filters in an array instead of flt strings * Remove query_filter(), put opChoices into Filter * Update version_info.json * Fix migrations * More renderTrigger=true * Fixing bugs * Working on standalone * getting standalone to work * Fixed forcedHeight for standalone =view * Linting * Get save slice working in v2 (#2106) * Filter bugfix * Fixing empty series limit bug * Fixed dashboard view * Fixing short urls * Only allow owners to overwrite slice (#2142) * Raise exception when date range is wrong * Only allow owner to overwrite a slice * Fix tests for deprecate v1 (#2140) * Fixed tests for control panels container and filters * Fixed python tests for explorev2 * Fix linting errors * Add in stop button during slice querying/rendering (#2121) * Add in stop button during slice querying/rendering * Abort ajax request on stop * Adding missing legacy module * Removing select2.sortable.js because of license * Allow query to display while slice is loading (#2100) * Allow query to display while slice is loading * Put latestQueryFormData in store * Reorganized query function, got rid of tu[le return values * Merging migrations * Wrapping up shortner migration * Fixing tests * Add folder creation to syncBackend * Fixing edit URL in explore view * Fix look of Stop button * Adding syntax highlighting to query modal * Fix cast_form_data and flase checkbox on dash * Bugfix * Going deeper * Fix filtering * Deleing invalid filters when changing datasource * Minor adjustments * Fixing calendar heatmap examples * Moving edit datasource button to header's right side * Fixing mapbox example * Show stack trace when clicking alert * Adding npm sync-backend command to build instruction * Bumping up JS dependencies * rm dep on select2 * Fix py3 urlparse * rm superset-select2.js * Improving migration scripts * Bugfixes on staging * Fixing Markup viz
93 lines
2.4 KiB
JavaScript
93 lines
2.4 KiB
JavaScript
const $ = require('jquery');
|
|
import d3 from 'd3';
|
|
d3.parcoords = require('../vendor/parallel_coordinates/d3.parcoords.js');
|
|
d3.divgrid = require('../vendor/parallel_coordinates/divgrid.js');
|
|
|
|
require('../vendor/parallel_coordinates/d3.parcoords.css');
|
|
require('./parallel_coordinates.css');
|
|
|
|
function parallelCoordVis(slice, payload) {
|
|
$('#code').attr('rows', '15');
|
|
const fd = slice.formData;
|
|
const data = payload.data;
|
|
|
|
let cols = fd.metrics;
|
|
if (fd.include_series) {
|
|
cols = [fd.series].concat(fd.metrics);
|
|
}
|
|
|
|
const ttypes = {};
|
|
ttypes[fd.series] = 'string';
|
|
fd.metrics.forEach(function (v) {
|
|
ttypes[v] = 'number';
|
|
});
|
|
|
|
let ext = d3.extent(data, function (d) {
|
|
return d[fd.secondary_metric];
|
|
});
|
|
ext = [ext[0], (ext[1] - ext[0]) / 2, ext[1]];
|
|
const cScale = d3.scale.linear()
|
|
.domain(ext)
|
|
.range(['red', 'grey', 'blue'])
|
|
.interpolate(d3.interpolateLab);
|
|
|
|
const color = function (d) {
|
|
return cScale(d[fd.secondary_metric]);
|
|
};
|
|
const container = d3.select(slice.selector);
|
|
container.selectAll('*').remove();
|
|
const effHeight = fd.show_datatable ? (slice.height() / 2) : slice.height();
|
|
|
|
container.append('div')
|
|
.attr('id', 'parcoords_' + slice.container_id)
|
|
.style('height', effHeight + 'px')
|
|
.classed('parcoords', true);
|
|
|
|
const parcoords = d3.parcoords()('#parcoords_' + slice.container_id)
|
|
.width(slice.width())
|
|
.color(color)
|
|
.alpha(0.5)
|
|
.composite('darken')
|
|
.height(effHeight)
|
|
.data(data)
|
|
.dimensions(cols)
|
|
.types(ttypes)
|
|
.render()
|
|
.createAxes()
|
|
.shadows()
|
|
.reorderable()
|
|
.brushMode('1D-axes');
|
|
|
|
if (fd.show_datatable) {
|
|
// create data table, row hover highlighting
|
|
const grid = d3.divgrid();
|
|
container.append('div')
|
|
.style('height', effHeight + 'px')
|
|
.datum(data)
|
|
.call(grid)
|
|
.classed('parcoords grid', true)
|
|
.selectAll('.row')
|
|
.on({
|
|
mouseover(d) {
|
|
parcoords.highlight([d]);
|
|
},
|
|
mouseout: parcoords.unhighlight,
|
|
});
|
|
// update data table on brush event
|
|
parcoords.on('brush', function (d) {
|
|
d3.select('.grid')
|
|
.datum(d)
|
|
.call(grid)
|
|
.selectAll('.row')
|
|
.on({
|
|
mouseover(dd) {
|
|
parcoords.highlight([dd]);
|
|
},
|
|
mouseout: parcoords.unhighlight,
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = parallelCoordVis;
|