auto switch spatial off

This commit is contained in:
Colin Megill
2021-12-07 16:32:55 -08:00
parent caa1526eb6
commit b411fca5a3
3 changed files with 43 additions and 25 deletions

View File

@@ -16,10 +16,11 @@ import actions from "../../actions";
import { getDiscreteCellEmbeddingRowIndex } from "../../util/stateManager/viewStackHelpers";
@connect((state) => ({
layoutChoice: state.layoutChoice, // TODO: really should clean up naming, s/layout/embedding/g
schema: state.annoMatrix?.schema,
crossfilter: state.obsCrossfilter,
}))
imageUnderlay: state.imageUnderlay,
layoutChoice: state.layoutChoice, // TODO: really should clean up naming, s/layout/embedding/g
schema: state.annoMatrix?.schema,
crossfilter: state.obsCrossfilter,
}))
class Embedding extends React.PureComponent {
constructor(props) {
super(props);
@@ -27,8 +28,18 @@ class Embedding extends React.PureComponent {
}
handleLayoutChoiceChange = (e) => {
const { dispatch } = this.props;
const { dispatch, imageUnderlay } = this.props;
dispatch(actions.layoutChoiceAction(e.currentTarget.value));
// if we just switched off spatial, if the image is on, turn it off
if (
imageUnderlay.isActive &&
e.target.value !== globals.spatialEmbeddingKeyword
) {
dispatch({
type: "toggle image underlay",
});
}
};
render() {

View File

@@ -29,6 +29,7 @@ import { getEmbSubsetView } from "../../util/stateManager/viewStackHelpers";
subsetResetPossible,
graphInteractionMode: state.controls.graphInteractionMode,
imageUnderlay: state.imageUnderlay,
layoutChoice: state.layoutChoice, // TODO: really should clean up naming, s/layout/embedding/g
clipPercentileMin: Math.round(100 * (annoMatrix?.clipRange?.[0] ?? 0)),
clipPercentileMax: Math.round(100 * (annoMatrix?.clipRange?.[1] ?? 1)),
userDefinedGenes: state.controls.userDefinedGenes,
@@ -208,6 +209,7 @@ class MenuBar extends React.PureComponent {
subsetPossible,
subsetResetPossible,
imageUnderlay,
layoutChoice,
} = this.props;
const { pendingClipPercentiles } = this.state;
@@ -270,26 +272,28 @@ class MenuBar extends React.PureComponent {
disabled={!isColoredByCategorical}
/>
</Tooltip>
<ButtonGroup className={styles.menubarButton}>
<Tooltip
content={"Toggle image"}
position="bottom"
hoverOpenDelay={globals.tooltipHoverOpenDelay}
>
<AnchorButton
type="button"
data-testid="toggle-image-underlay"
icon={"media"}
intent={imageUnderlay.isActive ? "primary" : "none"}
active={imageUnderlay.isActive}
onClick={() => {
dispatch({
type: "toggle image underlay",
});
}}
/>
</Tooltip>
</ButtonGroup>
{layoutChoice?.available?.includes(globals.spatialEmbeddingKeyword) && (
<ButtonGroup className={styles.menubarButton}>
<Tooltip
content={"Toggle image"}
position="bottom"
hoverOpenDelay={globals.tooltipHoverOpenDelay}
>
<AnchorButton
type="button"
data-testid="toggle-image-underlay"
icon={"media"}
intent={imageUnderlay.isActive ? "primary" : "none"}
active={imageUnderlay.isActive}
onClick={() => {
dispatch({
type: "toggle image underlay",
});
}}
/>
</Tooltip>
</ButtonGroup>
)}
<ButtonGroup className={styles.menubarButton}>
<Tooltip

View File

@@ -2,6 +2,9 @@ import { Colors } from "@blueprintjs/core";
import { dispatchNetworkErrorMessageToUser } from "./util/actionHelpers";
import ENV_DEFAULT from "../../environment.default.json";
// visium embedding word, spatial image underlay
export const spatialEmbeddingKeyword = "spatial";
/* overflow category values are created using this string */
export const overflowCategoryLabel = ": all other labels";