diff --git a/client/src/components/graph/graph.js b/client/src/components/graph/graph.js index b5959a28..09cadd13 100644 --- a/client/src/components/graph/graph.js +++ b/client/src/components/graph/graph.js @@ -52,16 +52,27 @@ class Graph extends React.Component { return colors; }); + computePointSizesFromCrossfilter = memoize((len, crossfilter) => { + const sizes = new Float32Array(len); + crossfilter.fillByIsSelected(sizes, 4, 0.2); + + return sizes; + }); + computePointSizes = memoize( (len, crossfilter, metadataField, categoryField) => { /* compute webgl dot size for each point */ - const sizes = new Float32Array(len); - crossfilter.fillByIsSelected(sizes, 4, 0.2); + const selectionSizes = this.computePointSizesFromCrossfilter( + len, + crossfilter + ); + let sizes; if (metadataField && categoryField) { + sizes = selectionSizes.slice(); const valuesArr = crossfilter.data.col(metadataField).asArray(); for (let i = 0; i < len; i += 1) { @@ -69,6 +80,8 @@ class Graph extends React.Component { sizes[i] = 10; } } + } else { + sizes = selectionSizes; } return sizes; } diff --git a/client/src/reducers/centroidLabel.js b/client/src/reducers/centroidLabel.js index 5582e5cc..c1060fb6 100644 --- a/client/src/reducers/centroidLabel.js +++ b/client/src/reducers/centroidLabel.js @@ -19,12 +19,12 @@ const CentroidLabel = (state = initialState, action, sharedNextState) => { metadataField, categoryIndex, categoryField, - centroidXY: calcCentroid( + centroidXY: null /* calcCentroid( This function call is computationally heavy and also leading to large GC. Before reimplementation, look into optimization and memoization world, metadataField, categoryField, layoutChoice.currentDimNames - ) + ) */ }; case "category value mouse hover end":