aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/DataVizBox/components/Histogram.tsx
diff options
context:
space:
mode:
authorsrichman333 <sarah_n_richman@brown.edu>2023-07-18 13:22:04 -0400
committersrichman333 <sarah_n_richman@brown.edu>2023-07-18 13:22:04 -0400
commit51718316b592e86c0009b7a27e1e32ba74d2488b (patch)
treea7a839ffa3d62827b84505a1b0ac40be4b79302f /src/client/views/nodes/DataVizBox/components/Histogram.tsx
parent65ab8c985a86f18ebb51a269f20d7865dcfc6589 (diff)
click to select for pie charts + some histograms
Diffstat (limited to 'src/client/views/nodes/DataVizBox/components/Histogram.tsx')
-rw-r--r--src/client/views/nodes/DataVizBox/components/Histogram.tsx39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/client/views/nodes/DataVizBox/components/Histogram.tsx b/src/client/views/nodes/DataVizBox/components/Histogram.tsx
index 34fc9ce82..b8be9bd13 100644
--- a/src/client/views/nodes/DataVizBox/components/Histogram.tsx
+++ b/src/client/views/nodes/DataVizBox/components/Histogram.tsx
@@ -38,7 +38,7 @@ export class Histogram extends React.Component<HistogramProps> {
private _histogramRef: React.RefObject<HTMLDivElement> = React.createRef();
private _histogramSvg: d3.Selection<SVGGElement, unknown, null, undefined> | undefined;
private numericalData: boolean = false;
- @observable _currSelected: SelectedDataPoint | undefined = undefined;
+ @observable _currSelected: any | undefined = undefined;
// TODO: nda - some sort of mapping that keeps track of the annotated points so we can easily remove when annotations list updates
@computed get _histogramData() {
@@ -329,14 +329,33 @@ export class Histogram extends React.Component<HistogramProps> {
const onPointClick = action((e: any) => {
var pointerX = d3.pointer(e)[0];
+ var index = -1;
+ var sameAsCurrent: boolean;
const selected = svg.selectAll('.histogram-bar').filter((d: any) => {
- if ((d.x0*eachRectWidth ) <= pointerX && pointerX <= (d.x1*eachRectWidth )){
- console.log(d)
+ index++;
+ var left = this.numericalData? d.x0-1: d.x0;
+ var right = (this.numericalData && d.x0!=d.x1)? d.x1-1: d.x1;
+ if ((left*eachRectWidth ) <= pointerX && pointerX <= (right*eachRectWidth )){
+ // var showSelected = !this.numericalData? dataSet[index] : this.props.pairs[index];
+ var showSelected = dataSet[index]
+ showSelected['frequency'] = d.length;
+ console.log('showSelected', showSelected)
+ console.log('current', this._currSelected)
+ sameAsCurrent = this._currSelected?
+ (showSelected[Object.keys(showSelected)[0]]==this._currSelected![Object.keys(showSelected)[0]]
+ && showSelected[Object.keys(showSelected)[1]]==this._currSelected![Object.keys(showSelected)[1]])
+ : false;
+ this._currSelected = sameAsCurrent? undefined: showSelected;
return true
}
return false;
});
- selected.attr('class')=='histogram-bar hover'? selected.attr('class', 'histogram-bar'): selected.attr('class', 'histogram-bar hover')
+ // selected.attr('class')=='histogram-bar hover'? selected.attr('class', 'histogram-bar'): selected.attr('class', 'histogram-bar hover')
+ const elements = document.querySelectorAll('.histogram-bar');
+ for (let i = 0; i < elements.length; i++) {
+ elements[i].classList.remove('hover');
+ }
+ if (!sameAsCurrent!) selected.attr('class', 'histogram-bar hover');
});
svg.on('click', onPointClick);
@@ -367,10 +386,20 @@ export class Histogram extends React.Component<HistogramProps> {
render() {
+ var selected: string;
+ if (this._currSelected){
+ selected = '{ ';
+ Object.keys(this._currSelected).map(key => {
+ key!=''? selected += key + ': ' + this._currSelected[key] + ', ': '';
+ })
+ selected = selected.substring(0, selected.length-2);
+ selected += ' }';
+ }
+ else selected = 'none';
return (
this.props.axes.length >= 1 && (this.incomingSelected? this.incomingSelected.length>0 : true) ? (
<div ref={this._histogramRef} className="chart-container">
- <span> {`Selected: ${Object.keys(this._histogramData[0])[0]}`}</span>
+ <span className={'selected-data'}> {`Selected: ${selected}`}</span>
</div>
) : <span className="chart-container"> {'first use table view to select a column to graph'}</span>
);