Skip to content

Commit

Permalink
Merge pull request #1422 from alliance-genome/release/v0.29.0
Browse files Browse the repository at this point in the history
Release/v0.29.0 
As sprint review Jan 31st 2024
  • Loading branch information
adamgibs authored Feb 5, 2024
2 parents f3e3dff + 4a3abaf commit bb49e9a
Show file tree
Hide file tree
Showing 117 changed files with 2,111 additions and 502 deletions.
19 changes: 19 additions & 0 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

https://agr-jira.atlassian.net/wiki/spaces/ATEAM/overview

## v0.29.0
* New features
* Allele detail page: Visually emphasize field names/sections and visually demphasize 'Add' buttons (SCRUM-3343)
* Report Failed Loads table in Data Loads page UI (SCRUM-3440)
* Notify developers via Slack of failed curation system loads (SCRUM-3470)
* Provide "Saving in progress" indicator and inactivate interaction with page on allele detail pages (SCRUM-3536)
* Move "Add" buttons in Allele detail page to right of field names (in-line)(SCRUM-3551)
* Reduce empty space in disease annotations table to create a more compact representation (SCRUM-3564)
* Enable downloading of all exception messages for a given data load (SCRUM-2639)

* Fixes and maintenance
* Upgrade python version used in agr_db_backups (SCRUM-3094)
* FB constructs failing to load (SCRUM-3613)
* Fix failing Construct Association loads (SCRUM-3620)
* SGD Allele load failing with uninterpretable exception messages (SCRUM-3630)
* Attempting to display FB constructs with secondary IDs in Constructs table (on alpha) throws error (SCRUM-3631)
* RGD Allele load entries failing incorrectly (SCRUM-3633)
* Create Json View to Limit data from Disease Annotations (SCRUM-3588)

## v0.28.0-rc2
* Updates quarkus to version 3
* Fixes and maintenance
Expand Down
9 changes: 8 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-vertx</artifactId>
</dependency>

<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-elasticsearch-rest-high-level-client</artifactId>
Expand Down Expand Up @@ -365,6 +365,13 @@
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>

<dependency>
<groupId>com.slack.api</groupId>
<artifactId>slack-api-client</artifactId>
<version>1.36.1</version>
</dependency>

</dependencies>

<build>
Expand Down
6 changes: 6 additions & 0 deletions src/main/cliapp/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/main/cliapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"axios": "^0.19.0",
"chart.js": "3.3.2",
"classnames": "^2.2.6",
"file-saver": "^2.0.5",
"http-proxy-middleware": "^2.0.1",
"immer": "^9.0.15",
"jose": "^4.10.0",
Expand Down
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Actions/DeletionAction.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Button } from "primereact/button";

export const DeleteAction = ({ disabled, deletionHandler, index}) => {
export const DeleteAction = ({ disabled, deletionHandler, id }) => {
return (
<Button icon="pi pi-trash" className="p-button-text" disabled={disabled}
onClick={(e) => deletionHandler(e, index)} />
onClick={(e) => deletionHandler(e, id)} />
);
};
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Actions/DuplicationAction.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Button } from "primereact/button";
export const DuplicationAction = ({ props, handleDuplication, disabled }) => {
return <Button icon="pi pi-copy" disabled={disabled} className="p-button-text" onClick={() => handleDuplication(props)}/> ;
}
return <Button icon="pi pi-copy" disabled={disabled} className="p-button-text p-0 text-base" onClick={() => handleDuplication(props)}/> ;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export const ControlledVocabularyEditor = ({
props,
onChangeHandler,
errorMessages,
rowIndex,
dataKey,
vocabType,
field,
showClear,
Expand All @@ -25,7 +25,7 @@ export const ControlledVocabularyEditor = ({
optionLabel={optionLabel}
dataKey='id'
/>
<DialogErrorMessageComponent errorMessages={errorMessages[rowIndex]} errorField={field} />
<DialogErrorMessageComponent errorMessages={errorMessages[dataKey]} errorField={field} />
</>
);
};
48 changes: 48 additions & 0 deletions src/main/cliapp/src/components/Editors/EvidenceCodeEditor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { AutocompleteEditor } from "../Autocomplete/AutocompleteEditor";
import { buildAutocompleteFilter, autocompleteSearch } from "../../utils/utils";
import { SearchService } from "../../service/SearchService";
import { EvidenceAutocompleteTemplate } from "../Autocomplete/EvidenceAutocompleteTemplate";
import { ErrorMessageComponent } from "../Error/ErrorMessageComponent";

const evidenceSearch = (event, setFiltered, setInputValue) => {
const searchService = new SearchService();
const autocompleteFields = ["curie", "name", "abbreviation"];
const endpoint = "ecoterm";
const filterName = "evidenceFilter";
const filter = buildAutocompleteFilter(event, autocompleteFields);
const otherFilters = {
obsoleteFilter: {
"obsolete": {
queryString: false
}
},
subsetFilter: {
"subsets": {
queryString: "agr_eco_terms"
}
}
};

setInputValue(event.query);
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered, otherFilters);
};

export const EvidenceCodeEditor = ({ props, errorMessages, onChangeHandler, dataKey }) => {
return (
<>
<AutocompleteEditor
search={evidenceSearch}
initialValue={props.rowData.evidenceCode}
rowProps={props}
fieldName='evidenceCode'
valueDisplay={(item, setAutocompleteHoverItem, op, query) =>
<EvidenceAutocompleteTemplate item={item} setAutocompleteHoverItem={setAutocompleteHoverItem} op={op} query={query} />}
onValueChangeHandler={onChangeHandler}
/>
<ErrorMessageComponent
errorMessages={errorMessages[dataKey]}
errorField="evidenceCode"
/>
</>
);
};
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Editors/EvidenceEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const evidenceSearch = (event, setFiltered, setInputValue) => {
setInputValue(event.query);
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered);
}
export const EvidenceEditor = ({ props, errorMessages, onChange }) => {
export const EvidenceEditor = ({ props, errorMessages, onChange, dataKey }) => {
return (
<>
<AutocompleteMultiEditor
Expand All @@ -28,7 +28,7 @@ export const EvidenceEditor = ({ props, errorMessages, onChange }) => {
onValueChangeHandler={onChange}
/>
<DialogErrorMessageComponent
errorMessages={errorMessages[props?.rowIndex]}
errorMessages={errorMessages[dataKey]}
errorField={"evidence"}
/>
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const functionalImpactSearch = (event, setFiltered, setQuery) => {
const filter = buildAutocompleteFilter(event, autocompleteFields);
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered, otherFilters);
};
export const FunctionalImpactsEditor = ({ props, errorMessages, onChange }) => {
export const FunctionalImpactsEditor = ({ props, errorMessages, onChange, dataKey }) => {
return (
<>
<AutocompleteMultiEditor
Expand All @@ -34,7 +34,7 @@ export const FunctionalImpactsEditor = ({ props, errorMessages, onChange }) => {
onValueChangeHandler={onChange}
/>
<DialogErrorMessageComponent
errorMessages={errorMessages[props?.rowIndex]}
errorMessages={errorMessages[dataKey]}
errorField={"functionalImpacts"}
/>
</>
Expand Down
40 changes: 40 additions & 0 deletions src/main/cliapp/src/components/Editors/GeneEditor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { AutocompleteEditor } from '../Autocomplete/AutocompleteEditor';
import { SearchService } from '../../service/SearchService';
import { autocompleteSearch, buildAutocompleteFilter } from '../../utils/utils';
import { SubjectAutocompleteTemplate } from '../Autocomplete/SubjectAutocompleteTemplate';
import { DialogErrorMessageComponent } from "../Error/DialogErrorMessageComponent";

const geneSearch = (event, setFiltered, setInputValue) => {
const searchService = new SearchService();
const autocompleteFields = [
"curie", "crossReferences.referencedCurie", "geneFullName.formatText", "geneFullName.displayText",
"geneSymbol.formatText", "geneSymbol.displayText", "geneSynonyms.formatText", "geneSynonyms.displayText",
"geneSystematicName.formatText", "geneSystematicName.displayText", "geneSecondaryIds.secondaryId"
];
const endpoint = "gene";
const filterName = "objectFilter";
const filter = buildAutocompleteFilter(event, autocompleteFields);

setInputValue(event.query);
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered);
};

export const GeneEditor = ({ props, errorMessages, onChange, dataKey }) => {
return (
<>
<AutocompleteEditor
search={geneSearch}
initialValue={props?.rowData?.objectGene?.curie}
rowProps={props}
fieldName='objectGene'
valueDisplay={(item, setAutocompleteHoverItem, op, query) =>
<SubjectAutocompleteTemplate item={item} setAutocompleteHoverItem={setAutocompleteHoverItem} op={op} query={query} />}
onValueChangeHandler={onChange}
/>
<DialogErrorMessageComponent
errorMessages={errorMessages[dataKey]}
errorField={"objectGene"}
/>
</>
);
};
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Editors/InternalEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { DialogErrorMessageComponent } from "../Error/DialogErrorMessageComponen
import { useControlledVocabularyService } from "../../service/useControlledVocabularyService";
import { TrueFalseDropdown } from "../TrueFalseDropDownSelector";

export const InternalEditor = ({ props, internalOnChangeHandler, errorMessages, rowIndex }) => {
export const InternalEditor = ({ props, internalOnChangeHandler, errorMessages, dataKey }) => {
const booleanTerms = useControlledVocabularyService("generic_boolean_terms");

return (
Expand All @@ -14,7 +14,7 @@ export const InternalEditor = ({ props, internalOnChangeHandler, errorMessages,
editorChange={internalOnChangeHandler}
showClear={false}
/>
<DialogErrorMessageComponent errorMessages={errorMessages[rowIndex]} errorField={"internal"} />
<DialogErrorMessageComponent errorMessages={errorMessages[dataKey]} errorField={"internal"} />
</>
);
};
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Editors/MutationTypesEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const mutationTypeSearch = (event, setFiltered, setInputValue) => {
setInputValue(event.query);
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered);
};
export const MutationTypesEditor = ({ props, errorMessages, onChange }) => {
export const MutationTypesEditor = ({ props, errorMessages, onChange, dataKey }) => {
return (
<>
<AutocompleteMultiEditor
Expand All @@ -28,7 +28,7 @@ export const MutationTypesEditor = ({ props, errorMessages, onChange }) => {
onValueChangeHandler={onChange}
/>
<DialogErrorMessageComponent
errorMessages={errorMessages[props?.rowIndex]}
errorMessages={errorMessages[dataKey]}
errorField={"mutationTypes"}
/>
</>
Expand Down
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Editors/ObsoleteEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { DialogErrorMessageComponent } from "../Error/DialogErrorMessageComponen
import { useControlledVocabularyService } from "../../service/useControlledVocabularyService";
import { TrueFalseDropdown } from "../TrueFalseDropDownSelector";

export const ObsoleteEditor = ({ props, obsoleteOnChangeHandler, errorMessages, rowIndex }) => {
export const ObsoleteEditor = ({ props, obsoleteOnChangeHandler, errorMessages, dataKey }) => {
const booleanTerms = useControlledVocabularyService("generic_boolean_terms");

return (
Expand All @@ -14,7 +14,7 @@ export const ObsoleteEditor = ({ props, obsoleteOnChangeHandler, errorMessages,
editorChange={obsoleteOnChangeHandler}
showClear={false}
/>
<DialogErrorMessageComponent errorMessages={errorMessages[rowIndex]} errorField={"obsolete"} />
<DialogErrorMessageComponent errorMessages={errorMessages[dataKey]} errorField={"obsolete"} />
</>
);
};
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Editors/PhenotypeTermEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const phenotypeTermSearch = (event, setFiltered, setInputValue) => {
setInputValue(event.query);
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered);
};
export const PhenotypeTermEditor = ({ props, errorMessages, onChange }) => {
export const PhenotypeTermEditor = ({ props, errorMessages, onChange, dataKey }) => {
return (
<>
<AutocompleteEditor
Expand All @@ -24,7 +24,7 @@ export const PhenotypeTermEditor = ({ props, errorMessages, onChange }) => {
onValueChangeHandler={onChange}
/>
<DialogErrorMessageComponent
errorMessages={errorMessages[props.rowIndex]}
errorMessages={errorMessages[dataKey]}
errorField={"phenotypeTerm"}
/>
</>
Expand Down
4 changes: 2 additions & 2 deletions src/main/cliapp/src/components/Editors/ReferencesEditor.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const referenceSearch = (event, setFiltered, setInputValue) => {
autocompleteSearch(searchService, endpoint, filterName, filter, setFiltered);
}

export const ReferencesEditor = ({ props, errorMessages, onChange }) => {
export const ReferencesEditor = ({ props, errorMessages, onChange, dataKey }) => {
return (
<>
<AutocompleteMultiEditor
Expand All @@ -29,7 +29,7 @@ export const ReferencesEditor = ({ props, errorMessages, onChange }) => {
onValueChangeHandler={onChange}
/>
<DialogErrorMessageComponent
errorMessages={errorMessages[props?.rowIndex]}
errorMessages={errorMessages[dataKey]}
errorField={"references"}
/>
</>
Expand Down
62 changes: 62 additions & 0 deletions src/main/cliapp/src/components/Editors/RelatedNoteEditor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import React from 'react';
import { ErrorMessageComponent } from '../Error/ErrorMessageComponent';
import { Button } from 'primereact/button';
import { EditMessageTooltip } from '../EditMessageTooltip';

export const RelatedNoteEditor = ({ rowProps, relatedNote, errorMessages, setRelatedNotesData, dataKey }) => {

const handleRelatedNotesOpenInEdit = (event, rows, rowIndex) => {
event.preventDefault();
let _relatedNotesData = {};
_relatedNotesData["originalRelatedNotes"] = relatedNote ? [relatedNote] : undefined;
_relatedNotesData["dialogIsVisible"] = true;
_relatedNotesData["dataKey"] = dataKey;
_relatedNotesData["errorMessages"] = errorMessages;
_relatedNotesData["rowProps"] = rowProps;
setRelatedNotesData(() => ({
..._relatedNotesData
}));
};

if (relatedNote) {
return (
<>
<div>
<Button className="p-button-text"
onClick={(event) => { handleRelatedNotesOpenInEdit(event, rowProps.props.rows, rowProps.rowIndex); }} >
<span style={{ textDecoration: 'underline' }}>
{relatedNote.freeText}
<i className="pi pi-user-edit" style={{ 'fontSize': '1em' }}></i>
</span>&nbsp;&nbsp;&nbsp;&nbsp;
<EditMessageTooltip object="allele" />
</Button>
</div>
<ErrorMessageComponent
errorMessages={errorMessages[dataKey]}
errorField={"relatedNote"}
style={{ 'fontSize': '1em' }}
/>
</>
);
} else {
return (
<>
<div>
<Button className="p-button-text"
onClick={(event) => { handleRelatedNotesOpenInEdit(event, rowProps.props.rows, rowProps.rowIndex); }} >
<span style={{ textDecoration: 'underline' }}>
Add Note
<i className="pi pi-user-edit" style={{ 'fontSize': '1em' }}></i>
</span>&nbsp;&nbsp;&nbsp;&nbsp;
<EditMessageTooltip object="allele" />
</Button>
</div>
<ErrorMessageComponent
errorMessages={errorMessages[dataKey]}
errorField={"relatedNote"}
style={{ 'fontSize': '1em' }}
/>
</>
);
}
};
Loading

0 comments on commit bb49e9a

Please sign in to comment.