mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-28 01:38:11 +08:00
* Connect mouse over events to reducer actions * Change Styling on hover * Rename reducer actions to be more descriptive * Reorder reducer in cascade * Create centroid calculation util * Whitespace * Typo fix, use correct action * Create centroid calc util * Create centroid svg setup * Refactor existing svg layer to toolSVG * Change calcCentroid signature and centroidXY to match mapPointToScreen * Add id and styling * Run prettier * Set z-index to 999 * Draw the label * Introduce the centroid SVG, refactor code to allow both SVG layers * Add text label and compute radius based on population * Implement optional chaining * Update font family * Optimize calcMeanCentroid() * Create and utilize calcMedianCentroid() * Remove mass circle from label * Remove styling change on hover * Remove reducer action logs * Prettier * Swap out binds for arrow functions * Style text * switch from selectAll() to select() * Reflect centroid container's purpose in id * Remove mass from the output * Swap to obj * Add finite check * Don't draw centroid if no finite values * Fix finite check * Remove log * Toggle label coloring based on colorBy state * Pass cursor events through centroid svg
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import calcCentroid from "../util/centroid";
|
|
|
|
const initialState = {
|
|
metadataField: "",
|
|
categoryIndex: -1,
|
|
categoryField: "",
|
|
centroidXY: [-1, -1]
|
|
};
|
|
|
|
const CentroidLabel = (state = initialState, action, sharedNextState) => {
|
|
const { categoricalSelection, world, layoutChoice } = sharedNextState;
|
|
const { metadataField, categoryIndex } = action;
|
|
const categoryField =
|
|
categoricalSelection?.[metadataField]?.categoryValues[categoryIndex];
|
|
switch (action.type) {
|
|
case "category value mouse hover start":
|
|
return {
|
|
...state,
|
|
metadataField,
|
|
categoryIndex,
|
|
categoryField,
|
|
centroidXY: calcCentroid(
|
|
world,
|
|
metadataField,
|
|
categoryField,
|
|
layoutChoice.currentDimNames
|
|
)
|
|
};
|
|
|
|
case "category value mouse hover end":
|
|
if (
|
|
metadataField === state.metadataField &&
|
|
categoryIndex === state.categoryIndex
|
|
) {
|
|
return initialState;
|
|
}
|
|
return state;
|
|
|
|
default:
|
|
return state;
|
|
}
|
|
};
|
|
|
|
export default CentroidLabel;
|