From e1ba2ec82f14ef971212f0b20f85f8ad4cdd547a Mon Sep 17 00:00:00 2001 From: Lum Date: Thu, 5 Dec 2024 16:25:10 -0800 Subject: [PATCH 1/5] Add display order to publication documents, update details view of publication data Drop unneeded import_publicationDocuments table --- resources/etls/LoadApplication.xml | 4 ---- resources/queries/cds/learn_publicationdata.sql | 1 + resources/schemas/cds.xml | 8 +------- .../dbscripts/postgresql/cds-24.002-24.003.sql | 4 ++++ src/org/labkey/cds/CDSManager.java | 1 - src/org/labkey/cds/data/steps/CDSImportTask.java | 2 +- .../dataspace/cdsimport/PublicationDocument.txt | 8 ++++---- webapp/Connector/cube.js | 2 +- webapp/Connector/src/app/store/Publication.js | 8 ++++++++ .../view/module/NonIntegratedDataAvailability.js | 15 +++++++++------ 10 files changed, 29 insertions(+), 24 deletions(-) create mode 100644 resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql diff --git a/resources/etls/LoadApplication.xml b/resources/etls/LoadApplication.xml index 9892921e9..4ebafad7a 100644 --- a/resources/etls/LoadApplication.xml +++ b/resources/etls/LoadApplication.xml @@ -209,10 +209,6 @@ - - - - diff --git a/resources/queries/cds/learn_publicationdata.sql b/resources/queries/cds/learn_publicationdata.sql index 53d61bc2d..f3cb72e0f 100644 --- a/resources/queries/cds/learn_publicationdata.sql +++ b/resources/queries/cds/learn_publicationdata.sql @@ -15,6 +15,7 @@ */ SELECT pd.publication_id, + pd.display_order, doc.* FROM cds.publicationDocument pd LEFT JOIN document doc ON pd.document_id = doc.document_id diff --git a/resources/schemas/cds.xml b/resources/schemas/cds.xml index a2567f58a..a8dbdae04 100644 --- a/resources/schemas/cds.xml +++ b/resources/schemas/cds.xml @@ -724,13 +724,6 @@ - - - - - - -
@@ -1423,6 +1416,7 @@ +
diff --git a/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql b/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql new file mode 100644 index 000000000..9665bbb65 --- /dev/null +++ b/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql @@ -0,0 +1,4 @@ +-- Don't need the import_publicationDocument table since no transform occurs between the import and final tables +DROP TABLE IF EXISTS cds.import_PublicationDocument; + +ALTER TABLE cds.PublicationDocument ADD COLUMN display_order INT; diff --git a/src/org/labkey/cds/CDSManager.java b/src/org/labkey/cds/CDSManager.java index 98799b81a..d6148b96f 100644 --- a/src/org/labkey/cds/CDSManager.java +++ b/src/org/labkey/cds/CDSManager.java @@ -200,7 +200,6 @@ public void cleanContainer(Container c) "import_assay", "import_studyrelationshiporder", "import_site", - "import_publicationDocument", "import_publication", "import_personnel", "import_document", diff --git a/src/org/labkey/cds/data/steps/CDSImportTask.java b/src/org/labkey/cds/data/steps/CDSImportTask.java index a02aa04f0..b63fac71d 100644 --- a/src/org/labkey/cds/data/steps/CDSImportTask.java +++ b/src/org/labkey/cds/data/steps/CDSImportTask.java @@ -69,7 +69,7 @@ public class CDSImportTask extends ImportTask new CDSImportCopyConfig("import_StudyDocument", "StudyDocument"), new CDSImportCopyConfig("import_AssayDocument", "AssayDocument"), new CDSImportCopyConfig("import_StudyPublication", "StudyPublication"), - new CDSImportCopyConfig("import_PublicationDocument", "PublicationDocument"), + new CDSImportCopyConfig("PublicationDocument", "PublicationDocument"), new CDSImportCopyConfig("import_StudyReport", "StudyReport"), new CDSImportCopyConfig("import_StudyCuratedGroup", "StudyCuratedGroup"), new CDSImportCopyConfig("import_PublicationReport", "PublicationReport"), diff --git a/test/sampledata/dataspace/cdsimport/PublicationDocument.txt b/test/sampledata/dataspace/cdsimport/PublicationDocument.txt index 59aded90d..80493df65 100644 --- a/test/sampledata/dataspace/cdsimport/PublicationDocument.txt +++ b/test/sampledata/dataspace/cdsimport/PublicationDocument.txt @@ -1,4 +1,4 @@ -publication_id document_id -80 301 -136 300 -80 302 \ No newline at end of file +publication_id document_id display_order +80 301 2 +136 300 +80 302 1 \ No newline at end of file diff --git a/webapp/Connector/cube.js b/webapp/Connector/cube.js index 1a230dc91..a68ce6d09 100644 --- a/webapp/Connector/cube.js +++ b/webapp/Connector/cube.js @@ -815,7 +815,7 @@ Ext4.define('Connector.cube.Configuration', { type: 'publicationnonintegrateddata', staticData: { title: 'Publication data', - instructions: 'Download files' + instructions: 'Download individual files' } },{ type: 'interactivereports', diff --git a/webapp/Connector/src/app/store/Publication.js b/webapp/Connector/src/app/store/Publication.js index 9628ec356..0712edf16 100644 --- a/webapp/Connector/src/app/store/Publication.js +++ b/webapp/Connector/src/app/store/Publication.js @@ -170,6 +170,7 @@ Ext.define('Connector.app.store.Publication', { }, this).map(function(doc) { return { publication_id: doc.publication_id, + display_order : doc.display_order || 0, document_id: doc.document_id, label: doc.label, fileName: doc.filename, @@ -191,6 +192,13 @@ Ext.define('Connector.app.store.Publication', { publicationMap[doc.publication_id].push(doc); }, this); + // sort the publication docs according to display order (ascending) + Ext.Object.each(publicationMap, function(key, publications){ + publications.sort(function(a, b){ + return a.display_order - b.display_order; + }); + }); + var savedReports = []; for (var i=0; i < this.publicationReportsData.length; i++) { var id = this.publicationReportsData[i].cds_report_id.toString(); diff --git a/webapp/Connector/src/app/view/module/NonIntegratedDataAvailability.js b/webapp/Connector/src/app/view/module/NonIntegratedDataAvailability.js index 71abd1e17..faafd828e 100644 --- a/webapp/Connector/src/app/view/module/NonIntegratedDataAvailability.js +++ b/webapp/Connector/src/app/view/module/NonIntegratedDataAvailability.js @@ -303,15 +303,18 @@ Ext.define('Connector.view.module.PublicationNonIntegratedData', { return new Ext4.XTemplate( '', '
', - '', - '', + '', + '', - '', + '', + '', + '', '
', - '', + '', + '
', + '', + '', '{label:htmlEncode}', ' {suffix} ', '{label}', - '', - '
', ''); } From fbeb54df65b296e5b191cfdc26485bebefe06061 Mon Sep 17 00:00:00 2001 From: Lum Date: Mon, 9 Dec 2024 15:54:37 -0800 Subject: [PATCH 2/5] external repository support for studies and publications --- resources/etls/LoadApplication.xml | 5 ++- .../cds/learn_publicationExternalLinks.sql | 6 ++++ .../queries/cds/learn_studyExternalLinks.sql | 6 ++++ resources/schemas/cds.xml | 28 ++++++++++++++++- .../postgresql/cds-24.002-24.003.sql | 31 +++++++++++++++++-- src/org/labkey/cds/CDSManager.java | 6 +++- src/org/labkey/cds/CDSModule.java | 2 +- .../labkey/cds/data/steps/CDSImportTask.java | 6 +++- .../cds/view/template/ConnectorTemplate.jsp | 1 + .../dataspace/cdsimport/external_link.txt | 4 +++ .../dataspace/cdsimport/external_link_map.txt | 7 +++++ webapp/Connector/cube.js | 5 +++ webapp/Connector/extapp.lib.xml | 1 + webapp/Connector/src/app/model/Publication.js | 3 +- .../Connector/src/app/model/StudyOverview.js | 3 +- webapp/Connector/src/app/store/Publication.js | 24 ++++++++++++++ .../Connector/src/app/store/StudyOverview.js | 26 +++++++++++++--- .../app/view/module/PublicationResources.js | 29 +++++++++++++++++ .../src/app/view/module/StudyResources.js | 7 ++++- .../src/constant/ModuleViewsLookup.js | 1 + 20 files changed, 186 insertions(+), 15 deletions(-) create mode 100644 resources/queries/cds/learn_publicationExternalLinks.sql create mode 100644 resources/queries/cds/learn_studyExternalLinks.sql create mode 100644 test/sampledata/dataspace/cdsimport/external_link.txt create mode 100644 test/sampledata/dataspace/cdsimport/external_link_map.txt create mode 100644 webapp/Connector/src/app/view/module/PublicationResources.js diff --git a/resources/etls/LoadApplication.xml b/resources/etls/LoadApplication.xml index 4ebafad7a..bf58fbf16 100644 --- a/resources/etls/LoadApplication.xml +++ b/resources/etls/LoadApplication.xml @@ -209,7 +209,10 @@
- + + + + diff --git a/resources/queries/cds/learn_publicationExternalLinks.sql b/resources/queries/cds/learn_publicationExternalLinks.sql new file mode 100644 index 000000000..8ea469501 --- /dev/null +++ b/resources/queries/cds/learn_publicationExternalLinks.sql @@ -0,0 +1,6 @@ +SELECT + elm.protocol_id, + el.* +FROM cds.external_link el + LEFT JOIN cds.external_link_map elm ON el.cds_link_id = elm.cds_link_id +WHERE elm.type = 'publication' diff --git a/resources/queries/cds/learn_studyExternalLinks.sql b/resources/queries/cds/learn_studyExternalLinks.sql new file mode 100644 index 000000000..c5a685e8c --- /dev/null +++ b/resources/queries/cds/learn_studyExternalLinks.sql @@ -0,0 +1,6 @@ +SELECT + elm.protocol_id, + el.* +FROM cds.external_link el + LEFT JOIN cds.external_link_map elm ON el.cds_link_id = elm.cds_link_id + WHERE elm.type = 'study' diff --git a/resources/schemas/cds.xml b/resources/schemas/cds.xml index a8dbdae04..7e4411762 100644 --- a/resources/schemas/cds.xml +++ b/resources/schemas/cds.xml @@ -724,7 +724,14 @@ - +
+ + + + + + +
@@ -2261,4 +2268,23 @@
+ + + + + + + + + +
+ + + + + + + + +
\ No newline at end of file diff --git a/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql b/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql index 9665bbb65..62dcc79b0 100644 --- a/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql +++ b/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql @@ -1,4 +1,29 @@ --- Don't need the import_publicationDocument table since no transform occurs between the import and final tables -DROP TABLE IF EXISTS cds.import_PublicationDocument; - +ALTER TABLE cds.import_PublicationDocument ADD COLUMN display_order INT; ALTER TABLE cds.PublicationDocument ADD COLUMN display_order INT; + +CREATE TABLE cds.external_link +( + cds_link_id VARCHAR(250) NOT NULL, + link_label VARCHAR(250) NOT NULL, + link_url VARCHAR(250) NOT NULL, + link_type VARCHAR(100), + link_description VARCHAR(250), + container ENTITYID NOT NULL, + + CONSTRAINT PK_external_links PRIMARY KEY (cds_link_id, container) +); + +CREATE TABLE cds.external_link_map +( + row_id SERIAL, + cds_link_id VARCHAR(250) NOT NULL, + protocol_id VARCHAR(250) NOT NULL, + type VARCHAR(100) NOT NULL, + container ENTITYID NOT NULL, + + CONSTRAINT PK_external_link_map PRIMARY KEY (row_id), + CONSTRAINT UQ_external_link_map UNIQUE (cds_link_id, protocol_id, type, container), + CONSTRAINT FK_external_link_map_cds_link_id FOREIGN KEY (cds_link_id, container) REFERENCES cds.external_link (cds_link_id, container) +); +CREATE INDEX IX_external_link_map_cds_link_id ON cds.external_link_map(cds_link_id); + diff --git a/src/org/labkey/cds/CDSManager.java b/src/org/labkey/cds/CDSManager.java index d6148b96f..90b5e549b 100644 --- a/src/org/labkey/cds/CDSManager.java +++ b/src/org/labkey/cds/CDSManager.java @@ -200,6 +200,7 @@ public void cleanContainer(Container c) "import_assay", "import_studyrelationshiporder", "import_site", + "import_publicationDocument", "import_publication", "import_personnel", "import_document", @@ -233,7 +234,10 @@ public void cleanContainer(Container c) "alignment_run", "allele_sequence", "antibody_class", - "header_source" + "header_source", + + "external_link_map", + "external_link" }) { TableInfo t = dbSchema.getTable(s); diff --git a/src/org/labkey/cds/CDSModule.java b/src/org/labkey/cds/CDSModule.java index 0408272ed..159737c87 100644 --- a/src/org/labkey/cds/CDSModule.java +++ b/src/org/labkey/cds/CDSModule.java @@ -106,7 +106,7 @@ public String getName() @Override public @Nullable Double getSchemaVersion() { - return 24.002; + return 24.003; } @Override diff --git a/src/org/labkey/cds/data/steps/CDSImportTask.java b/src/org/labkey/cds/data/steps/CDSImportTask.java index b63fac71d..434e0a39a 100644 --- a/src/org/labkey/cds/data/steps/CDSImportTask.java +++ b/src/org/labkey/cds/data/steps/CDSImportTask.java @@ -69,7 +69,7 @@ public class CDSImportTask extends ImportTask new CDSImportCopyConfig("import_StudyDocument", "StudyDocument"), new CDSImportCopyConfig("import_AssayDocument", "AssayDocument"), new CDSImportCopyConfig("import_StudyPublication", "StudyPublication"), - new CDSImportCopyConfig("PublicationDocument", "PublicationDocument"), + new CDSImportCopyConfig("import_PublicationDocument", "PublicationDocument"), new CDSImportCopyConfig("import_StudyReport", "StudyReport"), new CDSImportCopyConfig("import_StudyCuratedGroup", "StudyCuratedGroup"), new CDSImportCopyConfig("import_PublicationReport", "PublicationReport"), @@ -98,6 +98,10 @@ public class CDSImportTask extends ImportTask new CDSImportCopyConfig("import_Virus_Metadata_All", "Virus_Metadata_All"), new CDSImportCopyConfig("import_Virus_Lab_Id", "Virus_Lab_Id"), new CDSImportCopyConfig("import_Virus_Synonym", "Virus_Synonym"), + + // External repository links + new CDSImportCopyConfig("external_link"), + new CDSImportCopyConfig("external_link_map") }; @Override diff --git a/src/org/labkey/cds/view/template/ConnectorTemplate.jsp b/src/org/labkey/cds/view/template/ConnectorTemplate.jsp index 898b2d46b..d37be19ca 100644 --- a/src/org/labkey/cds/view/template/ConnectorTemplate.jsp +++ b/src/org/labkey/cds/view/template/ConnectorTemplate.jsp @@ -356,6 +356,7 @@ srcPath + "/app/view/module/StudyResources.js", srcPath + "/app/view/module/MabDetails.js", srcPath + "/app/view/module/PublicationDetails.js", + srcPath + "/app/view/module/PublicationResources.js", srcPath + "/app/view/module/ProductHeader.js", srcPath + "/app/view/module/ProductOtherProducts.js", srcPath + "/app/view/module/StudyHeader.js", diff --git a/test/sampledata/dataspace/cdsimport/external_link.txt b/test/sampledata/dataspace/cdsimport/external_link.txt new file mode 100644 index 000000000..f979a015a --- /dev/null +++ b/test/sampledata/dataspace/cdsimport/external_link.txt @@ -0,0 +1,4 @@ +cds_link_id link_label link_url link_type link_description +cds_link_001 Vivli Data Repository http://vivli.com/data/CAVD725 +cds_link_002 Test Data Repository http://vivli.com/data/TEST test link not a real URL +cds_link_003 GitHub https://github.com/labkey \ No newline at end of file diff --git a/test/sampledata/dataspace/cdsimport/external_link_map.txt b/test/sampledata/dataspace/cdsimport/external_link_map.txt new file mode 100644 index 000000000..3e7e4153c --- /dev/null +++ b/test/sampledata/dataspace/cdsimport/external_link_map.txt @@ -0,0 +1,7 @@ +cds_link_id protocol_id type +cds_link_001 q2 study +cds_link_002 q2 study +cds_link_003 z117 study +cds_link_001 136 publication +cds_link_002 136 publication +cds_link_003 80 publication \ No newline at end of file diff --git a/webapp/Connector/cube.js b/webapp/Connector/cube.js index a68ce6d09..e9cc2e097 100644 --- a/webapp/Connector/cube.js +++ b/webapp/Connector/cube.js @@ -817,6 +817,11 @@ Ext4.define('Connector.cube.Configuration', { title: 'Publication data', instructions: 'Download individual files' } + },{ + type: 'publicationresources', + staticData: { + title: 'Other publication resources' + } },{ type: 'interactivereports', staticData: { diff --git a/webapp/Connector/extapp.lib.xml b/webapp/Connector/extapp.lib.xml index 4f4e37b45..4e4e6e22f 100644 --- a/webapp/Connector/extapp.lib.xml +++ b/webapp/Connector/extapp.lib.xml @@ -211,6 +211,7 @@