diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 673f39311..aa699123a 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -2,6 +2,41 @@ https://agr-jira.atlassian.net/wiki/spaces/ATEAM/overview +## v0.35.0 +* New features + * Load FBcv into the persistent store (SCRUM-2190) + * Implement Gene Type field/column for Genes data table (SCRUM-3983) + * Turn off auxiliary clean up for associated entities (e.g. clean up of disease annotations based on a gene load) - public site Indexer work (SCRUM-4150) + * SQTR Gene Associations import into Persistent store (SCRUM-4185, SCRUM-4187, SCRUM-4188) + * HTPdataset loaded into persistent store (SCRUM-4192,SCRUM-4303, SCRUM-4341) + * Make obsolete disease annotations hidden by default for all MOD default settings (SCRUM-4277) + * HTPdataset ZFIN Fms files having wrong naming of property (SCRUM-4328) + * Clean up erroneous DOTerms (SCRUM-4337) + * Importing expression annotations into the persistent store - Load ExpressionPattern, TemporalContext, and AnatomicalSite (SCRUM-3952) + * Implement programmatic, regular purging of exception message history for all exceptions older than 2 weeks (SCRUM-4377) + * HTPdatasetSample import P1 - Creating entities and migration file (SCRUM-4426) + * Reenable downloading of all exception messages for a given data load (SCRUM-4452) + * P1: Expression Atlas Import: Load accession data files from Ensembl, etc... (SCRUM-4118) + * GFF Loading (Load assembly, transcripts, exons, and CDSs without positional information; Load positional information for Transcripts, Exons, and CDSs; Load associations between Genes, Transcripts, Exons, and CDSs) (SCRUM-4174, SCRUM-4175, SCRUM-4176) + * Associate Expression Annotations with Go Slim Terms (SCRUM-4300) + * Implement caching of references for DQM loads (SCRUM-4336) + * Accommodate BIOGRID-ORCS loader data type: to establish 3rd part link out to BIOGRID from gene page phenotypes section P1 - create DTO, load via migration, and loading infrastructure (SCRUM-4440) + * Investigate: Accommodate BIOGRID-ORCS loader data type: to establish 3rd part link out to BIOGRID from gene page phenotypes section (SCRUM-4471) + * Load VariantGenomicLocationAssociation from FMS submissions and generate HGVSg identifiers (SCRUM-4499) + * Test effect of removing AuditedObject fields on disease annotation indexing speed (SCRUM-4520) + * Java model changes for disease genetic modifier changes to split based on modifier type (SCRUM-4523) + * Curation UI changes to Disease Annotations table to split out Genetic Modifiers into 3 separate fields for each of Gene, Allele and AGM modifier types (SCRUM-4524) +* Fixes and maintenance + * Edit cancelation button getting squeezed out of frame on alpha data tables (SCRUM-4236) + * Constructs data table on alpha-curation throwing 500 error and not loading (SCRUM-4259) + * Fix SQTR Gene Association Integration Tests (SCRUM-4299) + * Curl timing out when uploading to persistent store (SCRUM-3683) + * Annotations and interactions not indexed on alpha-curation (despite attempts to reindex) (SCRUM-4254) + * Loads not showing in the Data Loads page "Data Processing Info Table" widget (SCRUM-4428) + * New "Running Time" showing negative time counting down (SCRUM-4429) + * Molecule table columns expand automatically when sorting (SCRUM-4531) + + ## v0.34.0 * New features * Paralogy annotations loaded into persistent store (SCRUM-4086, SCRUM-4088, SCRUM-4089, SCRUM-4090) diff --git a/src/main/cliapp/src/components/EntityCountsComponent.js b/src/main/cliapp/src/components/EntityCountsComponent.js index 7cd9ad915..857410235 100644 --- a/src/main/cliapp/src/components/EntityCountsComponent.js +++ b/src/main/cliapp/src/components/EntityCountsComponent.js @@ -28,6 +28,8 @@ export const EntityCountsComponent = () => { _tableData[type].push({ name: CLASSES[key].name, link: CLASSES[key].link, + type: CLASSES[key].type, + isIndexed: CLASSES[key].isIndexed, dbCount: res.entity[key]['dbCount'], esCount: res.entity[key]['esCount'], }); @@ -42,13 +44,15 @@ export const EntityCountsComponent = () => { }, []); const nameHyperlinkTemplate = (rowData) => { + if (!rowData.link) { + return rowData.name; + } return {rowData.name}; }; - const ROW_HIGHLIGHT_IGNORE = ['Disease Annotations', 'Literature References', 'Bulk Loads / Failed Loads']; - const getRowClass = (rowData) => { - if (ROW_HIGHLIGHT_IGNORE.includes(rowData.name)) return; + console.log(rowData); + if (!rowData.isIndexed) return; if (rowData?.dbCount !== rowData.esCount) { return 'bg-gray-500 text-white'; @@ -58,7 +62,7 @@ export const EntityCountsComponent = () => { return ( <>
-
+
{ />
-
+
{ />
-
+
+ getRowClass(rowData)} + > + + } + /> + +
+
(
); diff --git a/src/main/cliapp/src/constants/Classes.js b/src/main/cliapp/src/constants/Classes.js index 278e71e7e..0ec2de27d 100644 --- a/src/main/cliapp/src/constants/Classes.js +++ b/src/main/cliapp/src/constants/Classes.js @@ -1,73 +1,278 @@ export const CLASSES = Object.freeze({ - Gene: { name: 'Genes', link: '/#/genes', type: 'entity' }, - Allele: { name: 'Alleles', link: '/#/alleles', type: 'entity' }, - AffectedGenomicModel: { name: 'Affected Genomic Models', link: '/#/agms', type: 'entity' }, - Variant: { name: 'Variants', link: '/#/variants', type: 'entity' }, - DiseaseAnnotation: { name: 'Disease Annotations', link: '/#/diseaseAnnotations', type: 'entity' }, - AGMDiseaseAnnotation: { name: 'AGM Disease Annotations', link: '/#/diseaseAnnotations', type: 'entity' }, - AlleleDiseaseAnnotation: { name: 'Allele Disease Annotations', link: '/#/diseaseAnnotations', type: 'entity' }, - GeneDiseaseAnnotation: { name: 'Gene Disease Annotations', link: '/#/diseaseAnnotations', type: 'entity' }, - PhenotypeAnnotation: { name: 'Phenotype Annotations', link: '/#/phenotypeAnnotations', type: 'entity' }, - AGMPhenotypeAnnotation: { name: 'AGM Phenotype Annotations', link: '/#/phenotypeAnnotations', type: 'entity' }, - AllelePhenotypeAnnotation: { name: 'Allele Phenotype Annotations', link: '/#/phenotypeAnnotations', type: 'entity' }, - GeneGeneticInteraction: { name: 'Gene Genetic Interactions', link: '/#/geneGeneticInteractions', type: 'entity' }, + Gene: { name: 'Genes', link: '/#/genes', type: 'entity', hasTable: true, isIndexed: true }, + Allele: { name: 'Alleles', link: '/#/alleles', type: 'entity', hasTable: true, isIndexed: true }, + AffectedGenomicModel: { + name: 'Affected Genomic Models', + link: '/#/agms', + type: 'entity', + hasTable: true, + isIndexed: true, + }, + Variant: { name: 'Variants', link: '/#/variants', type: 'entity', hasTable: true, isIndexed: true }, + DiseaseAnnotation: { + name: 'Disease Annotations', + link: '/#/diseaseAnnotations', + type: 'entity', + hasTable: true, + isIndexed: false, + }, + AGMDiseaseAnnotation: { + name: 'AGM Disease Annotations', + link: '/#/diseaseAnnotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + AlleleDiseaseAnnotation: { + name: 'Allele Disease Annotations', + link: '/#/diseaseAnnotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + GeneDiseaseAnnotation: { + name: 'Gene Disease Annotations', + link: '/#/diseaseAnnotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + PhenotypeAnnotation: { + name: 'Phenotype Annotations', + link: '/#/phenotypeAnnotations', + type: 'entity', + hasTable: true, + isIndexed: false, + }, + AGMPhenotypeAnnotation: { + name: 'AGM Phenotype Annotations', + link: '/#/phenotypeAnnotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + AllelePhenotypeAnnotation: { + name: 'Allele Phenotype Annotations', + link: '/#/phenotypeAnnotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + GenePhenotypeAnnotation: { + name: 'Gene Phenotype Annotations', + link: '/#/phenotypeAnnotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + GeneGeneticInteraction: { + name: 'Gene Genetic Interactions', + link: '/#/geneGeneticInteractions', + type: 'entity', + hasTable: true, + isIndexed: true, + }, GeneMolecularInteraction: { name: 'Gene Molecular Interactions', link: '/#/geneMolecularInteractions', type: 'entity', + hasTable: true, + isIndexed: true, + }, + ExperimentalCondition: { + name: 'Experimental Conditions', + link: '/#/experimentalConditions', + type: 'entity', + hasTable: true, + isIndexed: true, }, - GenePhenotypeAnnotation: { name: 'Gene Phenotype Annotations', link: '/#/phenotypeAnnotations', type: 'entity' }, - ExperimentalCondition: { name: 'Experimental Conditions', link: '/#/experimentalConditions', type: 'entity' }, - ConditionRelation: { name: 'Condition Relations', link: '/#/conditionRelations', type: 'entity' }, - Construct: { name: 'Constructs', link: '/#/constructs', type: 'entity' }, - Molecule: { name: 'Molecules', link: '/#/molecules', type: 'entity' }, - Reference: { name: 'Literature References', link: '/#/references', type: 'entity' }, - Specie: { name: 'Species', link: '/#/species', type: 'entity' }, + ConditionRelation: { + name: 'Condition Relations', + link: '/#/conditionRelations', + type: 'entity', + hasTable: true, + isIndexed: true, + }, + Construct: { name: 'Constructs', link: '/#/constructs', type: 'entity', hasTable: true, isIndexed: true }, + Molecule: { name: 'Molecules', link: '/#/molecules', type: 'entity', hasTable: true, isIndexed: true }, + Reference: { name: 'Literature References', link: '/#/references', type: 'entity', hasTable: true, isIndexed: false }, + SequenceTargetingReagent: { + name: 'Sequence Targeting Reagents', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + Species: { name: 'Species', link: '/#/species', type: 'entity', hasTable: true, isIndexed: true }, + Transcript: { name: 'Transcripts', type: 'entity', hasTable: false, isIndexed: false }, + Exon: { name: 'Exons', type: 'entity', hasTable: false, isIndexed: false }, + CodingSequence: { + name: 'Coding Sequences', + type: 'entity', + hasTable: false, + isIndexed: false, + }, + AssemblyComponent: { + name: 'Assembly Components', + type: 'entity', + hasTable: false, + isIndexed: false, + }, + GenomeAssembly: { + name: 'Genome Assemblies', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + GeneExpressionAnnotation: { + name: 'Gene Expression Annotations', + type: 'entity', + hasTable: false, + isIndexed: true, + }, + PredictedVariantConsequence: { + name: 'Predicted Variant Consequences', + type: 'entity', + hasTable: false, + isIndexed: false, + }, + HTPExpressionDatasetAnnotation: { + name: 'HTP Expression Dataset Annotations', + type: 'entity', + hasTable: false, + isIndexed: false, + }, + HTPExpressionDatasetSampleAnnotation: { + name: 'HTP Expression Dataset Sample Annotations', + type: 'entity', + hasTable: false, + isIndexed: false, + }, + GeneOntologyAnnotation: { + name: 'Gene Ontology Annotations', + type: 'entity', + hasTable: false, + isIndexed: false, + }, + GeneToGeneParalogy: { name: 'Paralogy', type: 'entity', hasTable: false, isIndexed: false }, + GeneToGeneOrthology: { name: 'Orthology', type: 'entity', hasTable: false, isIndexed: false }, + + DOTerm: { name: 'DO', link: '/#/ontology/do', type: 'ontology', hasTable: true, isIndexed: true }, + CHEBITerm: { name: 'CHEBI', link: '/#/ontology/chebi', type: 'ontology', hasTable: true, isIndexed: true }, + XSMOTerm: { name: 'XSMO', link: '/#/ontology/xsmo', type: 'ontology', hasTable: true, isIndexed: true }, + ECOTerm: { name: 'ECO', link: '/#/ontology/eco', type: 'ontology', hasTable: true, isIndexed: true }, + SOTerm: { name: 'SO', link: '/#/ontology/so', type: 'ontology', hasTable: true, isIndexed: true }, + GOTerm: { name: 'GO', link: '/#/ontology/go', type: 'ontology', hasTable: true, isIndexed: true }, + MATerm: { name: 'MA', link: '/#/ontology/ma', type: 'ontology', hasTable: true, isIndexed: true }, + ZFATerm: { name: 'ZFA', link: '/#/ontology/zfa', type: 'ontology', hasTable: true, isIndexed: true }, + MPTerm: { name: 'MP', link: '/#/ontology/mp', type: 'ontology', hasTable: true, isIndexed: true }, + DAOTerm: { name: 'DAO', link: '/#/ontology/dao', type: 'ontology', hasTable: true, isIndexed: true }, + EMAPATerm: { name: 'EMAPA', link: '/#/ontology/emapa', type: 'ontology', hasTable: true, isIndexed: true }, + WBBTTerm: { name: 'WBBT', link: '/#/ontology/wbbt', type: 'ontology', hasTable: true, isIndexed: true }, + XBATerm: { name: 'XBA', link: '/#/ontology/xba', type: 'ontology', hasTable: true, isIndexed: true }, + XBSTerm: { name: 'XBS', link: '/#/ontology/xbs', type: 'ontology', hasTable: true, isIndexed: true }, + XCOTerm: { name: 'XCO', link: '/#/ontology/xco', type: 'ontology', hasTable: true, isIndexed: true }, + ROTerm: { name: 'RO', link: '/#/ontology/ro', type: 'ontology', hasTable: true, isIndexed: true }, + ZECOTerm: { name: 'ZECO', link: '/#/ontology/zeco', type: 'ontology', hasTable: true, isIndexed: true }, + NCBITaxonTerm: { + name: 'NCBITaxon', + link: '/#/ontology/ncbitaxon', + type: 'ontology', + hasTable: true, + isIndexed: true, + }, + WBLSTerm: { name: 'WBLS', link: '/#/ontology/wbls', type: 'ontology', hasTable: true, isIndexed: true }, + FBDVTerm: { name: 'FBDV', link: '/#/ontology/fbdv', type: 'ontology', hasTable: true, isIndexed: true }, + MMUSDVTerm: { name: 'MMUSDV', link: '/#/ontology/mmusdv', type: 'ontology', hasTable: true, isIndexed: true }, + ZFSTerm: { name: 'ZFS', link: '/#/ontology/zfs', type: 'ontology', hasTable: true, isIndexed: true }, + XPOTerm: { name: 'XPO', link: '/#/ontology/xpo', type: 'ontology', hasTable: true, isIndexed: true }, + ATPTerm: { name: 'ATP', link: '/#/ontology/atp', type: 'ontology', hasTable: true, isIndexed: true }, + VTTerm: { name: 'VT', link: '/#/ontology/vt', type: 'ontology', hasTable: true, isIndexed: true }, + XBEDTerm: { name: 'XBED', link: '/#/ontology/xbed', type: 'ontology', hasTable: true, isIndexed: true }, + OBITerm: { name: 'OBI', link: '/#/ontology/obi', type: 'ontology', hasTable: true, isIndexed: true }, + WBPhenotypeTerm: { name: 'WBPheno', link: '/#/ontology/wbpheno', type: 'ontology', hasTable: true, isIndexed: true }, + PATOTerm: { name: 'PATO', link: '/#/ontology/pato', type: 'ontology', hasTable: true, isIndexed: true }, + HPTerm: { name: 'HP', link: '/#/ontology/hp', type: 'ontology', hasTable: true, isIndexed: true }, + FBCVTerm: { name: 'FBCV', link: '/#/ontology/fbcv', type: 'ontology', hasTable: true, isIndexed: true }, + MMOTerm: { name: 'MMO', link: '/#/ontology/mmo', type: 'ontology', hasTable: true, isIndexed: true }, + APOTerm: { name: 'APO', link: '/#/ontology/apo', type: 'ontology', hasTable: true, isIndexed: true }, + MITerm: { name: 'MI', link: '/#/ontology/mi', type: 'ontology', hasTable: true, isIndexed: true }, + MPATHTerm: { name: 'MPATH', link: '/#/ontology/mpath', type: 'ontology', hasTable: true, isIndexed: true }, + MODTerm: { name: 'MOD', link: '/#/ontology/mod', type: 'ontology', hasTable: true, isIndexed: true }, + UBERONTerm: { name: 'UBERON', link: '/#/ontology/uberon', type: 'ontology', hasTable: true, isIndexed: true }, + RSTerm: { name: 'RS', link: '/#/ontology/rs', type: 'ontology', hasTable: true, isIndexed: true }, + PWTerm: { name: 'PW', link: '/#/ontology/pw', type: 'ontology', hasTable: true, isIndexed: true }, + CLTerm: { name: 'CL', link: '/#/ontology/cl', type: 'ontology', hasTable: true, isIndexed: true }, + CMOTerm: { name: 'CMO', link: '/#/ontology/cmo', type: 'ontology', hasTable: true, isIndexed: true }, + BSPOTerm: { name: 'BSPO', link: '/#/ontology/bspo', type: 'ontology', hasTable: true, isIndexed: true }, + GENOTerm: { name: 'GENO', link: '/#/ontology/geno', type: 'ontology', hasTable: true, isIndexed: true }, - DOTerm: { name: 'DO', link: '/#/ontology/do', type: 'ontology' }, - CHEBITerm: { name: 'CHEBI', link: '/#/ontology/chebi', type: 'ontology' }, - XSMOTerm: { name: 'XSMO', link: '/#/ontology/xsmo', type: 'ontology' }, - ECOTerm: { name: 'ECO', link: '/#/ontology/eco', type: 'ontology' }, - SOTerm: { name: 'SO', link: '/#/ontology/so', type: 'ontology' }, - GOTerm: { name: 'GO', link: '/#/ontology/go', type: 'ontology' }, - MATerm: { name: 'MA', link: '/#/ontology/ma', type: 'ontology' }, - ZFATerm: { name: 'ZFA', link: '/#/ontology/zfa', type: 'ontology' }, - MPTerm: { name: 'MP', link: '/#/ontology/mp', type: 'ontology' }, - DAOTerm: { name: 'DAO', link: '/#/ontology/dao', type: 'ontology' }, - EMAPATerm: { name: 'EMAPA', link: '/#/ontology/emapa', type: 'ontology' }, - WBBTTerm: { name: 'WBBT', link: '/#/ontology/wbbt', type: 'ontology' }, - XBATerm: { name: 'XBA', link: '/#/ontology/xba', type: 'ontology' }, - XBSTerm: { name: 'XBS', link: '/#/ontology/xbs', type: 'ontology' }, - XCOTerm: { name: 'XCO', link: '/#/ontology/xco', type: 'ontology' }, - ROTerm: { name: 'RO', link: '/#/ontology/ro', type: 'ontology' }, - ZECOTerm: { name: 'ZECO', link: '/#/ontology/zeco', type: 'ontology' }, - NCBITaxonTerm: { name: 'NCBITaxon', link: '/#/ontology/ncbitaxon', type: 'ontology' }, - WBLSTerm: { name: 'WBLS', link: '/#/ontology/wbls', type: 'ontology' }, - FBDVTerm: { name: 'FBDV', link: '/#/ontology/fbdv', type: 'ontology' }, - MMUSDVTerm: { name: 'MMUSDV', link: '/#/ontology/mmusdv', type: 'ontology' }, - ZFSTerm: { name: 'ZFS', link: '/#/ontology/zfs', type: 'ontology' }, - XPOTerm: { name: 'XPO', link: '/#/ontology/xpo', type: 'ontology' }, - ATPTerm: { name: 'ATP', link: '/#/ontology/atp', type: 'ontology' }, - VTTerm: { name: 'VT', link: '/#/ontology/vt', type: 'ontology' }, - XBEDTerm: { name: 'XBED', link: '/#/ontology/xbed', type: 'ontology' }, - OBITerm: { name: 'OBI', link: '/#/ontology/obi', type: 'ontology' }, - WBPhenotypeTerm: { name: 'WBPheno', link: '/#/ontology/wbpheno', type: 'ontology' }, - PATOTerm: { name: 'PATO', link: '/#/ontology/pato', type: 'ontology' }, - HPTerm: { name: 'HP', link: '/#/ontology/hp', type: 'ontology' }, - FBCVTerm: { name: 'FBCV', link: '/#/ontology/fbcv', type: 'ontology' }, - MMOTerm: { name: 'MMO', link: '/#/ontology/mmo', type: 'ontology' }, - APOTerm: { name: 'APO', link: '/#/ontology/apo', type: 'ontology' }, - MITerm: { name: 'MI', link: '/#/ontology/mi', type: 'ontology' }, - MPATHTerm: { name: 'MPATH', link: '/#/ontology/mpath', type: 'ontology' }, - MODTerm: { name: 'MOD', link: '/#/ontology/mod', type: 'ontology' }, - UBERONTerm: { name: 'UBERON', link: '/#/ontology/uberon', type: 'ontology' }, - RSTerm: { name: 'RS', link: '/#/ontology/rs', type: 'ontology' }, - PWTerm: { name: 'PW', link: '/#/ontology/pw', type: 'ontology' }, - CLTerm: { name: 'CL', link: '/#/ontology/cl', type: 'ontology' }, - CMOTerm: { name: 'CMO', link: '/#/ontology/cmo', type: 'ontology' }, - BSPOTerm: { name: 'BSPO', link: '/#/ontology/bspo', type: 'ontology' }, - GENOTerm: { name: 'GENO', link: '/#/ontology/geno', type: 'ontology' }, + CurationReport: { name: 'Curation Reports', link: '/#/reports', type: 'system', hasTable: true, isIndexed: false }, + BulkLoad: { + name: 'Bulk Loads / Failed Loads', + link: '/#/dataloads', + type: 'system', + hasTable: true, + isIndexed: false, + }, - CurationReport: { name: 'Curation Reports', link: '/#/reports', type: 'system' }, - BulkLoad: { name: 'Bulk Loads / Failed Loads', link: '/#/dataloads', type: 'system' }, + AlleleGeneAssociation: { + name: 'Allele Gene Associations', + type: 'association', + hasTable: false, + }, + AlleleVariantAssociation: { + name: 'Allele Variant Associations', + type: 'association', + hasTable: false, + }, + CodingSequenceGenomicLocationAssociation: { + name: 'CDS Genomic Locations', + type: 'association', + hasTable: false, + }, + ExonGenomicLocationAssociation: { + name: 'Exon Genomic Locations', + type: 'association', + hasTable: false, + }, + GeneGenomicLocationAssociation: { + name: 'Gene Genomic Locations', + type: 'association', + hasTable: false, + }, + TranscriptGenomicLocationAssociation: { + name: 'Transcript Genomic Locations', + type: 'association', + hasTable: false, + }, + VariantGenomicLocationAssociation: { + name: 'Variant Genomic Locations', + type: 'association', + hasTable: false, + }, + ConstructGenomicEntityAssociation: { + name: 'Construct Genomic Entity Associations', + type: 'association', + hasTable: false, + }, + SequenceTargetingReagentGeneAssociation: { + name: 'SQTR Gene Associations', + type: 'association', + hasTable: false, + }, + TranscriptCodingSequenceAssociation: { + name: 'Transcript CDS Associations', + type: 'association', + hasTable: false, + }, + TranscriptExonAssociation: { + name: 'Transcript Exon Associations', + type: 'association', + hasTable: false, + }, + TranscriptGeneAssociation: { + name: 'Transcript Gene Associations', + type: 'association', + hasTable: false, + }, }); diff --git a/src/main/cliapp/src/containers/controlledVocabularyPage/ControlledVocabularyTable.js b/src/main/cliapp/src/containers/controlledVocabularyPage/ControlledVocabularyTable.js index 383b1177b..6cba730c7 100644 --- a/src/main/cliapp/src/containers/controlledVocabularyPage/ControlledVocabularyTable.js +++ b/src/main/cliapp/src/containers/controlledVocabularyPage/ControlledVocabularyTable.js @@ -233,6 +233,37 @@ export const ControlledVocabularyTable = () => { editor: (props) => definitionEditorTemplate(props), body: (rowData) => , }, + { + field: 'updatedBy.uniqueId', + header: 'Updated By', + sortable: true, + body: (rowData) => , + filterConfig: FILTER_CONFIGS.updatedByFilterConfig, + }, + { + field: 'dateUpdated', + header: 'Date Updated', + sortable: true, + filter: true, + body: (rowData) => , + filterConfig: FILTER_CONFIGS.dateUpdatedFilterConfig, + }, + { + field: 'createdBy.uniqueId', + header: 'Created By', + sortable: true, + filter: true, + body: (rowData) => , + filterConfig: FILTER_CONFIGS.createdByFilterConfig, + }, + { + field: 'dateCreated', + header: 'Date Created', + sortable: true, + filter: true, + body: (rowData) => , + filterConfig: FILTER_CONFIGS.dataCreatedFilterConfig, + }, { field: 'obsolete', header: 'Obsolete', diff --git a/src/main/cliapp/src/containers/dashboardPage/Dashboard.js b/src/main/cliapp/src/containers/dashboardPage/Dashboard.js index 873d75db9..856dda775 100644 --- a/src/main/cliapp/src/containers/dashboardPage/Dashboard.js +++ b/src/main/cliapp/src/containers/dashboardPage/Dashboard.js @@ -9,22 +9,13 @@ export const Dashboard = () => { useEffect(() => { let _tableData = {}; - const excludedEntities = [ - 'AGMDiseaseAnnotation', - 'AlleleDiseaseAnnotation', - 'GeneDiseaseAnnotation', - 'AGMPhenotypeAnnotation', - 'AllelePhenotypeAnnotation', - 'GenePhenotypeAnnotation', - ]; - for (const key in CLASSES) { const { type } = CLASSES[key]; if (!_tableData[type]) { _tableData[type] = []; } - if (!excludedEntities.includes(key)) { + if (CLASSES[key].hasTable) { _tableData[type].push({ name: CLASSES[key].name, link: CLASSES[key].link, @@ -35,6 +26,9 @@ export const Dashboard = () => { }, []); const nameHyperlinkTemplate = (rowData) => { + if (!rowData.link) { + return rowData.name; + } return {rowData.name}; }; diff --git a/src/main/cliapp/src/containers/dataLoadsPage/DataLoadsComponent.js b/src/main/cliapp/src/containers/dataLoadsPage/DataLoadsComponent.js index 936baa078..9095911eb 100644 --- a/src/main/cliapp/src/containers/dataLoadsPage/DataLoadsComponent.js +++ b/src/main/cliapp/src/containers/dataLoadsPage/DataLoadsComponent.js @@ -22,6 +22,8 @@ import { SiteContext } from '../layout/SiteContext'; import { LoadingOverlay } from '../../components/LoadingOverlay'; import moment from 'moment-timezone'; import { NumberTemplate } from '../../components/Templates/NumberTemplate'; +import { StickyHeader } from '../../components/StickyHeader'; +import { Splitter, SplitterPanel } from 'primereact/splitter'; export const DataLoadsComponent = () => { const { authState } = useOktaAuth(); @@ -599,8 +601,8 @@ export const DataLoadsComponent = () => { let filesWithoutDates = []; files.forEach((file) => { if (file.bulkloadStatus === 'FINISHED' || file.bulkloadStatus === 'STOPPED' || file.bulkloadStatus === 'FAILED') { - if (file.dateLastLoaded) { - lastLoadedDates.set(file.dateLastLoaded, file); + if (file.loadStarted) { + lastLoadedDates.set(file.loadStarted, file); } else { filesWithoutDates.push(file); } @@ -708,7 +710,9 @@ export const DataLoadsComponent = () => { }; const exemptTypes = (loadType) => { - return loadType === 'GFF_EXON' || loadType === 'GFF_TRANSCRIPT' || loadType === 'GFF_CDS'; + return ( + loadType === 'GFF_EXON' || loadType === 'GFF_TRANSCRIPT' || loadType === 'GFF_CDS' || loadType === 'GFF_GENE' + ); }; const fileWithinSchemaRange = (fileVersion, loadType) => { @@ -850,20 +854,26 @@ export const DataLoadsComponent = () => { <> + + + +