mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-25 19:28:12 +08:00
edit geneset
This commit is contained in:
@@ -6,6 +6,7 @@ import { Button } from "@blueprintjs/core";
|
||||
import GeneSet from "./geneSet";
|
||||
|
||||
import CreateGenesetDialogue from "./menus/createGenesetDialogue";
|
||||
import EditGenesetNameDialogue from "./menus/editGenesetNameDialogue";
|
||||
|
||||
@connect((state) => {
|
||||
return {
|
||||
@@ -67,6 +68,7 @@ class GeneExpression extends React.Component {
|
||||
</div>
|
||||
) : null}
|
||||
<CreateGenesetDialogue />
|
||||
<EditGenesetNameDialogue />
|
||||
</div>
|
||||
<div>{this.renderDiffexpGeneSets()}</div>
|
||||
<div>{this.renderGeneSets()}</div>
|
||||
|
||||
@@ -77,15 +77,16 @@ class CreateGenesetDialogue extends React.PureComponent {
|
||||
<>
|
||||
<AnnoDialog
|
||||
isActive={genesetsUI.createGenesetModeActive}
|
||||
inputProps={{ "data-testid": `${metadataField}:create-label-dialog` }}
|
||||
primaryButtonProps={{
|
||||
"data-testid": `${metadataField}:submit-label`,
|
||||
inputProps={{
|
||||
"data-testid": `${metadataField}:create-geneset-dialog`,
|
||||
}}
|
||||
title="Create new gene set"
|
||||
instruction="Give your gene set a name" /* todo genesets this.instruction(genesetName) */
|
||||
cancelTooltipContent="Close this dialog without creating a gene set."
|
||||
primaryButtonText="Create gene set"
|
||||
handleSecondaryButtonSubmit={this.addLabelAndAssignCells}
|
||||
primaryButtonProps={{
|
||||
"data-testid": `${metadataField}:submit-geneset`,
|
||||
}}
|
||||
title="Edit gene set name"
|
||||
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}
|
||||
validationError={false}
|
||||
annoInput={
|
||||
@@ -97,7 +98,7 @@ class CreateGenesetDialogue extends React.PureComponent {
|
||||
intent: "none",
|
||||
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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
dispatch({
|
||||
type: "geneset: activate geneset edit mode",
|
||||
type: "geneset: activate rename geneset mode",
|
||||
data: geneset,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -28,6 +28,19 @@ const GeneSetsUI = (
|
||||
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": {
|
||||
return {
|
||||
...state,
|
||||
|
||||
Reference in New Issue
Block a user