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_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/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 a2567f58a..d0fd8d99d 100644 --- a/resources/schemas/cds.xml +++ b/resources/schemas/cds.xml @@ -729,6 +729,7 @@ + @@ -1423,6 +1424,7 @@ +
@@ -2267,4 +2269,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 new file mode 100644 index 000000000..62dcc79b0 --- /dev/null +++ b/resources/schemas/dbscripts/postgresql/cds-24.002-24.003.sql @@ -0,0 +1,29 @@ +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 98799b81a..90b5e549b 100644 --- a/src/org/labkey/cds/CDSManager.java +++ b/src/org/labkey/cds/CDSManager.java @@ -234,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 a02aa04f0..434e0a39a 100644 --- a/src/org/labkey/cds/data/steps/CDSImportTask.java +++ b/src/org/labkey/cds/data/steps/CDSImportTask.java @@ -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/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/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 1a230dc91..e9cc2e097 100644 --- a/webapp/Connector/cube.js +++ b/webapp/Connector/cube.js @@ -815,7 +815,12 @@ Ext4.define('Connector.cube.Configuration', { type: 'publicationnonintegrateddata', staticData: { title: 'Publication data', - instructions: 'Download files' + instructions: 'Download individual files' + } + },{ + type: 'publicationresources', + staticData: { + title: 'Other publication resources' } },{ type: 'interactivereports', 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 @@