diff --git a/client/src/components/categorical/category/index.js b/client/src/components/categorical/category/index.js index d8366104..af8daba0 100644 --- a/client/src/components/categorical/category/index.js +++ b/client/src/components/categorical/category/index.js @@ -44,6 +44,8 @@ const LABEL_WIDTH_ANNO = LABEL_WIDTH - ANNO_BUTTON_WIDTH; schema, crossfilter: state.obsCrossfilter, isUserAnno, + genesets: state.genesets.genesets, + differential: state.differential, }; }) class Category extends React.PureComponent { @@ -142,9 +144,16 @@ class Category extends React.PureComponent { */ const { schema } = annoMatrix; const { colorAccessor, colorMode } = colors; + const { genesets, differential } = this.props; let colorDataPromise = Promise.resolve(null); if (colorAccessor) { - const query = createColorQuery(colorMode, colorAccessor, schema); + const query = createColorQuery( + colorMode, + colorAccessor, + schema, + genesets, + differential.diffExp + ); if (query) colorDataPromise = annoMatrix.fetch(...query); } const [categoryData, colorData] = await Promise.all([ diff --git a/client/src/components/continuousLegend/index.js b/client/src/components/continuousLegend/index.js index 5087ab59..da2746f2 100644 --- a/client/src/components/continuousLegend/index.js +++ b/client/src/components/continuousLegend/index.js @@ -106,16 +106,26 @@ const continuous = (selectorId, colorScale, colorAccessor) => { @connect((state) => ({ annoMatrix: state.annoMatrix, colors: state.colors, + genesets: state.genesets.genesets, + differential: state.differential, })) class ContinuousLegend extends React.Component { async componentDidUpdate(prevProps) { - const { annoMatrix, colors } = this.props; + const { annoMatrix, colors, genesets, differential } = this.props; if (!colors || !annoMatrix) return; if (colors !== prevProps?.colors || annoMatrix !== prevProps?.annoMatrix) { const { schema } = annoMatrix; const { colorMode, colorAccessor, userColors } = colors; - const colorQuery = createColorQuery(colorMode, colorAccessor, schema); + + const colorQuery = createColorQuery( + colorMode, + colorAccessor, + schema, + genesets, + differential.diffExp + ); + const colorDf = colorQuery ? await annoMatrix.fetch(...colorQuery) : null; const colorTable = createColorTable( colorMode, diff --git a/client/src/components/geneExpression/geneSet.js b/client/src/components/geneExpression/geneSet.js index 39ab5ef8..23614a87 100644 --- a/client/src/components/geneExpression/geneSet.js +++ b/client/src/components/geneExpression/geneSet.js @@ -184,7 +184,12 @@ class GeneSet extends React.Component { )}
- +
diff --git a/client/src/components/geneExpression/menus/genesetMenus.js b/client/src/components/geneExpression/menus/genesetMenus.js index 129098d6..9082ed68 100644 --- a/client/src/components/geneExpression/menus/genesetMenus.js +++ b/client/src/components/geneExpression/menus/genesetMenus.js @@ -1,12 +1,14 @@ import React from "react"; import { connect } from "react-redux"; +import { Tooltip2 } from "@blueprintjs/popover2"; + import { Button, + AnchorButton, Menu, MenuItem, Popover, Position, - Tooltip, Icon, PopoverInteractionKind, } from "@blueprintjs/core"; @@ -18,6 +20,7 @@ import AddGeneToGenesetDialogue from "./addGeneToGenesetDialogue"; @connect((state) => { return { genesetsUI: state.genesetsUI, + colorAccessor: state.colors.colorAccessor, }; }) class GenesetMenus extends React.PureComponent { @@ -43,19 +46,41 @@ class GenesetMenus extends React.PureComponent { }); }; + handleColorByEntireGeneset = () => { + const { dispatch, geneset } = this.props; + + dispatch({ + type: "color by geneset mean expression", + geneset, + }); + }; + handleDeleteCategory = () => { const { dispatch, geneset } = this.props; dispatch(actions.genesetDelete(geneset)); }; render() { - const { geneset, genesetsEditable, createText } = this.props; + const { + geneset, + genesetsEditable, + createText, + colorAccessor, + isOpen, + toggleSummaryHisto, + } = this.props; + + const isColorBy = geneset === colorAccessor; + const genesetClosed = !isOpen; + const showingAllGenes = !toggleSummaryHisto; + + const notShowingSummary = genesetClosed || showingAllGenes; return ( <> - {genesetsEditable ? ( + {genesetsEditable && ( <> - - + -