mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-09 02:38:11 +08:00
edit geneset
This commit is contained in:
@@ -6,6 +6,7 @@ import { Button } from "@blueprintjs/core";
|
|||||||
import GeneSet from "./geneSet";
|
import GeneSet from "./geneSet";
|
||||||
|
|
||||||
import CreateGenesetDialogue from "./menus/createGenesetDialogue";
|
import CreateGenesetDialogue from "./menus/createGenesetDialogue";
|
||||||
|
import EditGenesetNameDialogue from "./menus/editGenesetNameDialogue";
|
||||||
|
|
||||||
@connect((state) => {
|
@connect((state) => {
|
||||||
return {
|
return {
|
||||||
@@ -67,6 +68,7 @@ class GeneExpression extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
<CreateGenesetDialogue />
|
<CreateGenesetDialogue />
|
||||||
|
<EditGenesetNameDialogue />
|
||||||
</div>
|
</div>
|
||||||
<div>{this.renderDiffexpGeneSets()}</div>
|
<div>{this.renderDiffexpGeneSets()}</div>
|
||||||
<div>{this.renderGeneSets()}</div>
|
<div>{this.renderGeneSets()}</div>
|
||||||
|
|||||||
@@ -77,15 +77,16 @@ class CreateGenesetDialogue extends React.PureComponent {
|
|||||||
<>
|
<>
|
||||||
<AnnoDialog
|
<AnnoDialog
|
||||||
isActive={genesetsUI.createGenesetModeActive}
|
isActive={genesetsUI.createGenesetModeActive}
|
||||||
inputProps={{ "data-testid": `${metadataField}:create-label-dialog` }}
|
inputProps={{
|
||||||
primaryButtonProps={{
|
"data-testid": `${metadataField}:create-geneset-dialog`,
|
||||||
"data-testid": `${metadataField}:submit-label`,
|
|
||||||
}}
|
}}
|
||||||
title="Create new gene set"
|
primaryButtonProps={{
|
||||||
instruction="Give your gene set a name" /* todo genesets this.instruction(genesetName) */
|
"data-testid": `${metadataField}:submit-geneset`,
|
||||||
cancelTooltipContent="Close this dialog without creating a gene set."
|
}}
|
||||||
primaryButtonText="Create gene set"
|
title="Edit gene set name"
|
||||||
handleSecondaryButtonSubmit={this.addLabelAndAssignCells}
|
instruction="Type a new name for your gene set" /* todo genesets this.instruction(genesetName) */
|
||||||
|
cancelTooltipContent="Close this dialog without editing the gene set."
|
||||||
|
primaryButtonText="Edit gene set same"
|
||||||
text={genesetName}
|
text={genesetName}
|
||||||
validationError={false}
|
validationError={false}
|
||||||
annoInput={
|
annoInput={
|
||||||
@@ -97,7 +98,7 @@ class CreateGenesetDialogue extends React.PureComponent {
|
|||||||
intent: "none",
|
intent: "none",
|
||||||
autoFocus: true,
|
autoFocus: true,
|
||||||
}}
|
}}
|
||||||
newLabelMessage="New gene set"
|
newLabelMessage="Edit gene set name"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
secondaryInstructions="Optionally add a list of comma separated genes to populate the gene set"
|
secondaryInstructions="Optionally add a list of comma separated genes to populate the gene set"
|
||||||
|
|||||||
@@ -0,0 +1,104 @@
|
|||||||
|
import React from "react";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import AnnoDialog from "../../categorical/annoDialog";
|
||||||
|
import LabelInput from "../../categorical/labelInput";
|
||||||
|
// import LabelInput from "../labelInput";
|
||||||
|
// import { genesetPrompt, isGenesetErroneous } from "../genesetUtil";
|
||||||
|
|
||||||
|
@connect((state) => ({
|
||||||
|
annotations: state.annotations,
|
||||||
|
schema: state.annoMatrix?.schema,
|
||||||
|
ontology: state.ontology,
|
||||||
|
obsCrossfilter: state.obsCrossfilter,
|
||||||
|
genesetsUI: state.genesetsUI,
|
||||||
|
}))
|
||||||
|
class RenameGeneset extends React.PureComponent {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
genesetName: "",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
disableEditGenesetNameMode = (e) => {
|
||||||
|
const { dispatch } = this.props;
|
||||||
|
this.setState({
|
||||||
|
genesetName: "",
|
||||||
|
});
|
||||||
|
dispatch({
|
||||||
|
type: "geneset: disable rename geneset mode",
|
||||||
|
});
|
||||||
|
if (e) e.preventDefault();
|
||||||
|
};
|
||||||
|
|
||||||
|
renameGeneset = (e) => {
|
||||||
|
const { dispatch, genesetsUI } = this.props;
|
||||||
|
const { genesetName } = this.state;
|
||||||
|
|
||||||
|
dispatch({
|
||||||
|
type: "geneset: rename",
|
||||||
|
name: genesetsUI.isEditingGenesetName,
|
||||||
|
newName: genesetName,
|
||||||
|
});
|
||||||
|
dispatch({
|
||||||
|
type: "geneset: disable rename geneset mode",
|
||||||
|
});
|
||||||
|
e.preventDefault();
|
||||||
|
};
|
||||||
|
|
||||||
|
genesetNameError = () => {
|
||||||
|
/* todo genesets validation */
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
handleChange = (e) => {
|
||||||
|
this.setState({ genesetName: e });
|
||||||
|
};
|
||||||
|
|
||||||
|
instruction = () => {
|
||||||
|
return "New, unique geneset name";
|
||||||
|
/* todo genesets */
|
||||||
|
// return genesetPrompt(this.genesetNameError(geneset), "New, unique geneset", ":");
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { genesetName } = this.state;
|
||||||
|
const { genesetsUI } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<AnnoDialog
|
||||||
|
isActive={genesetsUI.isEditingGenesetName}
|
||||||
|
inputProps={{
|
||||||
|
"data-testid": `${genesetsUI.isEditingGenesetName}:rename-geneset-dialog`,
|
||||||
|
}}
|
||||||
|
primaryButtonProps={{
|
||||||
|
"data-testid": `${genesetsUI.isEditingGenesetName}:submit-geneset`,
|
||||||
|
}}
|
||||||
|
title="Rename gene set"
|
||||||
|
instruction={`Rename ${genesetsUI.isEditingGenesetName}`} /* todo genesets this.instruction(genesetName) */
|
||||||
|
cancelTooltipContent="Close this dialog without renaming the gene set."
|
||||||
|
primaryButtonText="Rename gene set"
|
||||||
|
text={genesetName}
|
||||||
|
validationError={false}
|
||||||
|
annoInput={
|
||||||
|
<LabelInput
|
||||||
|
onChange={this.handleChange}
|
||||||
|
inputProps={{
|
||||||
|
"data-testid": "rename-geneset-modal",
|
||||||
|
leftIcon: "manually-entered-data",
|
||||||
|
intent: "none",
|
||||||
|
autoFocus: true,
|
||||||
|
}}
|
||||||
|
newLabelMessage="Rename gene set"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
handleSubmit={this.renameGeneset}
|
||||||
|
handleCancel={this.disableEditGenesetNameMode}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RenameGeneset;
|
||||||
@@ -37,7 +37,7 @@ class GenesetMenus extends React.PureComponent {
|
|||||||
const { dispatch, geneset } = this.props;
|
const { dispatch, geneset } = this.props;
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: "geneset: activate geneset edit mode",
|
type: "geneset: activate rename geneset mode",
|
||||||
data: geneset,
|
data: geneset,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -28,6 +28,19 @@ const GeneSetsUI = (
|
|||||||
isAddingGenesToGeneset: action.geneset,
|
isAddingGenesToGeneset: action.geneset,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
case "geneset: activate rename geneset mode": {
|
||||||
|
console.log("reducer", action);
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
isEditingGenesetName: action.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case "geneset: disable rename geneset mode": {
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
isEditingGenesetName: null,
|
||||||
|
};
|
||||||
|
}
|
||||||
case "geneset: disable add new genes mode": {
|
case "geneset: disable add new genes mode": {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
|
|||||||
Reference in New Issue
Block a user