diff --git a/client/src/components/annoDialog.js b/client/src/components/annoDialog.js
index 8064b146..a3d47f7e 100644
--- a/client/src/components/annoDialog.js
+++ b/client/src/components/annoDialog.js
@@ -42,7 +42,7 @@ class AnnoDialog extends React.PureComponent {
diff --git a/client/src/components/geneExpression/geneSet.js b/client/src/components/geneExpression/geneSet.js
index 13bc22b1..ced7cd59 100644
--- a/client/src/components/geneExpression/geneSet.js
+++ b/client/src/components/geneExpression/geneSet.js
@@ -125,8 +125,8 @@ class GeneSet extends React.Component {
)}
{isOpen && !genesetIsEmpty && this.renderGenes()}
);
diff --git a/client/src/components/geneExpression/menus/createGenesetDialogue.js b/client/src/components/geneExpression/menus/createGenesetDialogue.js
index e5363868..1c12383d 100644
--- a/client/src/components/geneExpression/menus/createGenesetDialogue.js
+++ b/client/src/components/geneExpression/menus/createGenesetDialogue.js
@@ -90,14 +90,15 @@ class CreateGenesetDialogue extends React.PureComponent {
this.setState({ genesetDescription: e });
};
- instruction = (genesetName, genesets) => genesets.has(genesetName)
+ instruction = (genesetName, genesets) =>
+ genesets.has(genesetName)
? "Gene set name must be unique."
: "New, unique gene set name";
validate = (genesetName, genesets) => {
if (genesets.has(genesetName)) {
this.setState({
- nameErrorMessage: "There is already a geneset with that name",
+ nameErrorMessage: "There is already a gene set with that name",
});
return false;
}
diff --git a/client/src/components/geneExpression/menus/editGenesetNameDialogue.js b/client/src/components/geneExpression/menus/editGenesetNameDialogue.js
index b005aa82..03967782 100644
--- a/client/src/components/geneExpression/menus/editGenesetNameDialogue.js
+++ b/client/src/components/geneExpression/menus/editGenesetNameDialogue.js
@@ -14,16 +14,18 @@ class RenameGeneset extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
- newGenesetName: props.parentGeneset,
- newGenesetDescription: props.parentGenesetDescription,
+ newGenesetName: props.originalGenesetName,
+ newGenesetDescription: props.originalGenesetDescription,
+ nameErrorMessage: "",
};
}
disableEditGenesetNameMode = (e) => {
const { dispatch } = this.props;
+ const { originalGenesetDescription, originalGenesetName } = this.props;
this.setState({
- newGenesetName: "",
- newGenesetDescription: "",
+ newGenesetName: originalGenesetName,
+ newGenesetDescription: originalGenesetDescription,
});
dispatch({
type: "geneset: disable rename geneset mode",
@@ -59,22 +61,57 @@ class RenameGeneset extends React.PureComponent {
this.setState({ newGenesetDescription: e });
};
- validate = (genesetName, genesets) => (
- !genesets.has(genesetName) &&
+ validate = (
+ originalGenesetName,
+ newGenesetName,
+ originalGenesetDescription,
+ newGenesetDescription,
+ genesets
+ ) => {
+ if (
+ originalGenesetName !== newGenesetName &&
+ genesets.has(newGenesetName)
+ ) {
+ this.setState({
+ nameErrorMessage: `There is already a gene set with that name`,
+ });
+ return true;
+ }
+ if (
// eslint-disable-next-line no-control-regex -- unicode 0-31 127-65535
- genesetName.match(/^\s|[\u0000-\u001F\u007F-\uFFFF]|[ ]{2,}|^$|\s$/g)
- ?.length
- );
+ newGenesetName.match(/^[\u0000-\u001F\u007F-\uFFFF]|[ ]{2,}/g)?.length
+ ) {
+ this.setState({
+ nameErrorMessage:
+ "Gene set names can only contain alphanumeric characters and the following special characters: ! ” # $ % ’ ( ) * + , - . / : ; < = > ? @ ] ^ _ ` | ~",
+ });
+ return true;
+ }
+ this.setState({
+ nameErrorMessage: "",
+ });
+ if (
+ originalGenesetName === newGenesetName &&
+ originalGenesetDescription === newGenesetDescription
+ )
+ return true;
+ return false;
+ };
render() {
- const { newGenesetName, newGenesetDescription } = this.state;
- const { genesetsUI, parentGeneset, parentGenesetDescription, genesets } =
- this.props;
+ const { newGenesetName, newGenesetDescription, nameErrorMessage } =
+ this.state;
+ const {
+ genesetsUI,
+ originalGenesetName,
+ originalGenesetDescription,
+ genesets,
+ } = this.props;
return (
<>
+ Rename {genesetsUI.isEditingGenesetName}
+ >
+ }
cancelTooltipContent="Close this dialog without renaming the gene set."
primaryButtonText="Edit gene set name and description"
text={newGenesetName}
secondaryText={newGenesetDescription}
- validationError={
- this.validate(newGenesetName, genesets) &&
- parentGenesetDescription === newGenesetDescription
- }
+ validationError={this.validate(
+ originalGenesetName,
+ newGenesetName,
+ originalGenesetDescription,
+ newGenesetDescription,
+ genesets
+ )}
+ errorMessage={nameErrorMessage}
annoInput={