diff --git a/.github/workflows/alpha-build-and-deploy.yml b/.github/workflows/alpha-build-and-deploy.yml index c8a1b9a01..2fb63afc2 100644 --- a/.github/workflows/alpha-build-and-deploy.yml +++ b/.github/workflows/alpha-build-and-deploy.yml @@ -39,6 +39,32 @@ jobs: docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_REF#refs/heads/} docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG docker push $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_REF#refs/heads/} + build-deploy-maven-central-package: + runs-on: ubuntu-20.04 + steps: + - name: Check out repository code + uses: actions/checkout@v2 + - name: Set up Maven Central Repository + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'adopt' + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + - run: cp src/main/resources/application.properties.defaults src/main/resources/application.properties + - name: Set Proper version + run: mvn versions:set -ntp -DnewVersion=0.0.0-SNAPSHOT + - id: install-secret-key + name: Install gpg secret key + run: | + cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import + gpg --list-secret-keys --keyid-format LONG + - name: Publish package + run: mvn --batch-mode deploy + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} deploy-to-alpha: if: github.event.pull_request.merged == true && !contains(github.event.pull_request.labels.*.name, 'no-deploy') needs: [build-and-push-docker-image] diff --git a/README.md b/README.md index 8c46376c0..df0fbbd4c 100644 --- a/README.md +++ b/README.md @@ -585,6 +585,16 @@ This is a grouping mechanism to group files together | WB | Worm Base | | ZFIN | Zebrafish Information Network | +### Including corresponding LinkML version in the JSON file submission header + +The LinkML version for which the file is being submitted now needs to be added to the JSON file header, for example: + +```json +{ + "linkml_version" : "v1.3.2", + "disease_agm_ingest_set" : [ { +``` + ## EB Deployment (beta) This section is WIP. diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 0ec9a78fb..cde9cb7d6 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,29 +1,60 @@ # AGR curation release notes -## v0.9.0 +https://agr-jira.atlassian.net/wiki/spaces/ATEAM/overview + +## v0.11.0 + + * New Features + * Enable creation of disease annotation; 1st & 2nd iteration pop-up (SCRUM-1709, SCRUM-1903) + * Enabled simple deletion of disease annotations (SCRUM-1890) + * Condition Summaries & Unique IDs for Experimental Conditions (plan to retire Condition Statements) + * Generate consistent condition_summary entries for experimental conditions (SCRUM-2036) + * Generate consistent unique_id values for experimental conditions (SCRUM-2037) + * Clean up experimental conditions (redundant entries + usage of condition_summary in place of condition_statement) (SCRUM-2038) + * Add tooltip to condition autosuggest options to display unique_id values for each experimental condition displayed (SCRUM-2040) + * Replace experimental condition autosuggest display with condition_summary instead of condition_statement (SCRUM-2039) + * Add display of compatible LinkML schema versions (SCRUM-2091) + * Fixes + * Fix broken autocomplete for experimental conditions (SCRUM-2089) + * Fix sort order of data loads by reverse chronological order (SCRUM-2010) + * Fix missing ontologies from dashboard (SCRUM-2076) + * Fix blank screen bug in Data Loads widget (SCRUM-2042) + * Clean up and address stale file loads in Data Loads widget (SCRUM-2004) + +## v0.10.0 * New features + * Enabled disease annotation deletion (through UI) (SCRUM-1890) + * Enabled disease annotation creation (through UI) (SCRUM-1709) + * Data and schema changes + * Synchronised curation application data model with LinkML schema v1.2.4 (SCRUM-1926) + * Bugfixes, minor enhancements & maintenance + * Enabled preventing disease-annotation save without reference/subject/object (SCRUM-1916) + * Added additional integration tests for required fields (SCRUM-1939) + * Minor indexing improvements (for the index everything endpoint) + * Minor deployment notification fixes + * Updated data validation to treat empty strings as empty values (SCRUM-1942) + * Updated bulk load to correctly new null values on update (SCRUM-1975) + * Fixed bulk load last loaded date (SCRUM-2000) + * Cleanup of inconsistent records in DB (SCRUM-2005) + * Fixed experimentalConditions UI filter (SCRUM-2003) + * Fixed file sorting in data loads widget (SCRUM-2010) + * Added additional note reference validation (SCRUM-2028) - * Enabled deletion of relations in Condition Relation table (SCRUM-1605) +## v0.9.0 + * New features + * Enabled deletion of relations in Condition Relation table (SCRUM-1605) * Enabled creation of Experimental Conditions (SCRUM-1848, SCRUM-1849, SCRUM-1850) - * Added ATP ontology (SCRUM-1840) - * Automatic population of createdBy field when creating new entries (SCRUM-1868) - * Repurposed Condition Relation Handles table for all Condition Relations, with or without handle (SCRUM-1867) - * Enabled deletion of controlled vocabulary terms (SCRUM-1889) - * Added parents, ancestors, and closure to ontologies - * Enabled per-class reporting of LinkML schema version compatibility * Bugfixes, minor enhancements & maintenance - * API updates to enable deletion of disease annotations (SCRUM-1711) - * Improved filter functionality for Experiments and Experimental Conditions columns in Disease Annotation table (SCRUM-1816) ## v0.8.0 @@ -48,7 +79,7 @@ * SCRUM-1765 Bring functionality of editing of 'related notes' in Disease Annotation table in line with that of 'condition relations' by @markquintontulloch in #559 * Maintenance * SCRUM-1712 Synchronisation of References with Literature System by @markquintontulloch in #552, #557, #561, #564 - # SCRUM-1732 Fixed validation of references in conditionRelations #560 + * SCRUM-1732 Fixed validation of references in conditionRelations #560 * SCRUM-1710 Fixed multiple tooltips bug by @markquintontulloch in #565 * SCRUM-1722 Fixed multi-line cell warnings bug by @adamgibs in #562 * Added indexing params to reindexing endpoints by @mluypaert in #555 diff --git a/pom.xml b/pom.xml index 78debe341..16f5899d4 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 3.0.1 2.0.0 0.5.1 - 2.10.0.Final + 2.13.3.Final 3.0.0-M5 @@ -217,7 +217,6 @@ io.rest-assured rest-assured - test @@ -353,9 +352,7 @@ reflections 0.10.2 - - - + ${project.artifactId} diff --git a/src/main/cliapp/src/components/Autocomplete/AutocompleteRowEditor.js b/src/main/cliapp/src/components/Autocomplete/AutocompleteRowEditor.js index b3c2df6df..848441891 100644 --- a/src/main/cliapp/src/components/Autocomplete/AutocompleteRowEditor.js +++ b/src/main/cliapp/src/components/Autocomplete/AutocompleteRowEditor.js @@ -29,7 +29,7 @@ export const AutocompleteRowEditor = ( const [query, setQuery] = useState(); const [fieldValue, setFieldValue] = useState(() => { if(!rowProps) return ""; - if (isReference) + if (isReference && !isMultiple) return getRefString(rowProps.rowData[fieldName]); return isMultiple ? rowProps.rowData[fieldName] : diff --git a/src/main/cliapp/src/components/ConditionRelationHandleFormSelector.js b/src/main/cliapp/src/components/ConditionRelationHandleFormSelector.js new file mode 100644 index 000000000..9ba0a876f --- /dev/null +++ b/src/main/cliapp/src/components/ConditionRelationHandleFormSelector.js @@ -0,0 +1,48 @@ +import React, { useState } from 'react'; +import { Dropdown } from "primereact/dropdown" +import { SearchService } from '../service/SearchService'; + +export function ConditionRelationHandleFormDropdown({ editorChange, referenceCurie, value, name, showClear, placeholderText, isEnabled, customRef }) { + const [selectedValue, setSelectedValue] = useState(value); + const searchService = new SearchService(); + const [handles, setHandles] = useState(null); + + const onShow = () => { + searchService.find( + "condition-relation", + 15, + 0, + {"singleReference.curie": referenceCurie} + ).then((data) => { + if (data.results?.length > 0) { + setHandles(data.results); + } else { + setHandles(null); + } + }) + } + + const onChange = (e) => { + setSelectedValue(e.value); + editorChange(e); + } + + return ( + <> + onChange(e)} + optionLabel="handle" + showClear={showClear} + placeholder={placeholderText} + style={{ width: '100%' }} + /> + + ) +} + diff --git a/src/main/cliapp/src/components/ConditionRelationHandleSelector.js b/src/main/cliapp/src/components/ConditionRelationHandleSelector.js index 33711ccc3..72c5256ac 100644 --- a/src/main/cliapp/src/components/ConditionRelationHandleSelector.js +++ b/src/main/cliapp/src/components/ConditionRelationHandleSelector.js @@ -7,8 +7,8 @@ export function ConditionRelationHandleDropdown({ field, options, editorChange, const [selectedValue, setSelectedValue] = useState(props.rowData[field]); const searchService = new SearchService(); const [handles, setHandles] = useState(null); - - + + const onShow = () => { setSelectedValue(props.rowData[field]) if (props.props.value[props.rowIndex]?.singleReference?.curie) { diff --git a/src/main/cliapp/src/components/GenericDataTable/GenericDataTable.js b/src/main/cliapp/src/components/GenericDataTable/GenericDataTable.js index f4e0dbcd5..416321e6e 100644 --- a/src/main/cliapp/src/components/GenericDataTable/GenericDataTable.js +++ b/src/main/cliapp/src/components/GenericDataTable/GenericDataTable.js @@ -16,7 +16,7 @@ import { useGenericDataTable } from "./useGenericDataTable"; export const GenericDataTable = (props) => { - const { tableName, isEnabled, aggregationFields, endpoint, columns, headerButtons, deletionEnabled } = props; + const { tableName, isEnabled, aggregationFields, endpoint, columns, headerButtons, deletionEnabled, dataKey = 'id' } = props; const { setSelectedColumnNames, @@ -126,7 +126,7 @@ export const GenericDataTable = (props) => { } const showDeleteDialog = (props) => { - let _idToDelete = props.rowData ? props.rowData.id : props.id; + let _idToDelete = props.rowData ? props.rowData[dataKey] : props[dataKey]; setIdToDelete(_idToDelete); setEntityToDelete(props); setDeleteDialog(true); @@ -158,24 +158,24 @@ export const GenericDataTable = (props) => { const deleteDialogFooter = () => { return ( - -