mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-20 03:18:12 +08:00
performance - remove scaling from inner render loop
This commit is contained in:
@@ -78,11 +78,19 @@ export const graphXScale = scaleLinear(
|
||||
[0, 1],
|
||||
[0 + graphMargin.left, graphWidth - graphMargin.right]
|
||||
);
|
||||
graphXScale.invert = scaleLinear(
|
||||
[0 + graphMargin.left, graphWidth - graphMargin.right],
|
||||
[0, 1]
|
||||
);
|
||||
// d3.scaleLinear().domain([0,1]).range([graphHeight - graphMargin.bottom, 0 + graphMargin.top])
|
||||
export const graphYScale = scaleLinear(
|
||||
[0, 1],
|
||||
[graphHeight - graphMargin.bottom, 0 + graphMargin.top]
|
||||
);
|
||||
graphYScale.invert = scaleLinear(
|
||||
[graphHeight - graphMargin.bottom, 0 + graphMargin.top],
|
||||
[0, 1]
|
||||
);
|
||||
|
||||
export const ordinalColors = [
|
||||
"#0ac115",
|
||||
|
||||
@@ -73,18 +73,31 @@ const updateCellSelectionMiddleware = store => {
|
||||
? action.brushCoords
|
||||
: s.controls.graphBrushSelection;
|
||||
|
||||
const northwestX = globals.graphXScale.invert(
|
||||
graphBrushSelection.northwestX
|
||||
);
|
||||
const southeastX = globals.graphXScale.invert(
|
||||
graphBrushSelection.southeastX
|
||||
);
|
||||
const northwestY = globals.graphYScale.invert(
|
||||
graphBrushSelection.northwestY
|
||||
);
|
||||
const southeastY = globals.graphYScale.invert(
|
||||
graphBrushSelection.southeastY
|
||||
);
|
||||
|
||||
const graphVec = s.controls.graphVec;
|
||||
for (let i = 0; i < newSelection.length; i++) {
|
||||
const cell = newSelection[i];
|
||||
const cellId = cell.__cellIndex__;
|
||||
const x = globals.graphXScale(graphVec[2 * cellId]);
|
||||
const y = globals.graphYScale(graphVec[2 * cellId + 1]);
|
||||
const x = graphVec[2 * cellId];
|
||||
const y = graphVec[2 * cellId + 1];
|
||||
|
||||
const pointIsInsideBrushBounds =
|
||||
x >= graphBrushSelection.northwestX &&
|
||||
x <= graphBrushSelection.southeastX &&
|
||||
y >= graphBrushSelection.northwestY &&
|
||||
y <= graphBrushSelection.southeastY;
|
||||
x >= northwestX &&
|
||||
x <= southeastX &&
|
||||
y <= northwestY &&
|
||||
y >= southeastY;
|
||||
|
||||
if (!pointIsInsideBrushBounds) {
|
||||
cell.__selected__ = false;
|
||||
|
||||
Reference in New Issue
Block a user