grnsight 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.travis.yml +1 -1
- package/package.json +5 -5
- package/server/app.js +4 -2
- package/server/controllers/database-controller.js +9 -8
- package/server/controllers/exporters/xlsx.js +27 -9
- package/test/export-tests.js +2 -2
- package/test/test.js +3 -1
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx +0 -0
- package/web-client/app.js +1 -1
- package/web-client/controllers/main.js +1 -1
- package/web-client/public/js/constants.js +4 -1
- package/web-client/public/js/update-app.js +8 -11
- package/web-client/public/js/upload.js +337 -11
- package/web-client/views/{graph.jade → graph.pug} +0 -0
- package/web-client/views/{info.jade → info.pug} +1 -5
- package/web-client/views/{upload.jade → upload.pug} +47 -4
- package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-development-plan.md +0 -71
- package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-requirements-specification.md +0 -71
- package/documents/SDF/CMSI_402/spring_2014/use-case-diagram-spring-2014.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Final_Presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Presentation_Final_Poster.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal-presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-development-plan.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-requirements-specification.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Design Review Presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/0402report.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/0409report.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/402-gantt.png +0 -0
- package/documents/SDF/CMSI_402/spring_2018/402SRS_GRNSightFeedback01.txt +0 -28
- package/documents/SDF/CMSI_402/spring_2018/402_SPD.md +0 -223
- package/documents/SDF/CMSI_402/spring_2018/ChoeShinCMSI402_Final.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/ProjectProposal.md +0 -22
- package/documents/SDF/CMSI_402/spring_2018/SoftwareRequirementsSpecification.md +0 -88
- package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI 402_HW1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI402_HW2.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/402hw2.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - 402Hw1.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - hw3.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport4 +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Expression Database Schema.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/ExpressionDbLayoutImage.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/ExpressionDbLayoutImageSmall.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Filler_Patterson_CMSI402_Poster.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/GRNsight Final Presentation.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Project Proposal Doc.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Project Proposal Presentation.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan/GANTT Chart.xlsx +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan/Software Development Plan.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan (Updated)/GANTT Chart (Updated).xlsx +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan (Updated)/Software Development Plan (Updated).pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Requirements Specification (Updated).pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Requirements Specification.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 GANTT Chart - Sheet1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 GRNsight SDP.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 SRS.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/FINAL GRNSIGHT PRESENTATION.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/GRNsight Presentation.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/Project Proposal 402.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SDP Updated/402 GANTT Chart UPDATED - Sheet1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SDP Updated/402 GRNsight SDP UPDATED.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SRS Update/402 SRS Final.pdf +0 -0
- package/documents/abstracts/Anguiano_Varshneya_Undergraduate-Research-Symposium_2017_abstract.pdf +0 -0
- package/documents/abstracts/Dahlquist_Dionisio_et-al_BOSC_2020_abstract.pdf +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/ACM-Reference-Format.bst +0 -3478
- package/documents/abstracts/SIGGRAPH 2017 Abstract/Figure1_zoom100.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.cls +0 -2352
- package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.ins +0 -29
- package/documents/abstracts/SIGGRAPH 2017 Abstract/always-weights.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/auto.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkA.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB-normalized.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/never-weights.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot.jpg +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot3x2.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/withweights3x2.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/screenshot-auto.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.bib +0 -85
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.pdf +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.tex +0 -235
- package/documents/abstracts/SWE Collegiate Competition 2017.md +0 -9
- package/documents/abstracts/Samdarshi_GRNsight_SoCalSysBio_Abstract_2019.docx +0 -0
- package/documents/abstracts/Varshneya_Samdarshi_Southern-California-Systems-Biology_2017_abstract.docx +0 -0
- package/documents/abstracts/~$mdarshi_SoCalSysBio_Abstract_2019.docx +0 -0
- package/documents/developer_documents/State Diagram.graphml +0 -3525
- package/documents/developer_documents/graphml/State Diagram.graphml +0 -3115
- package/documents/developer_documents/older_versions/GRNsight State Diagram old.png +0 -0
- package/documents/developer_documents/older_versions/GRNsight State Diagram.png +0 -0
- package/documents/developer_documents/testing_script_generator/GRNsightTestingDocument.md +0 -1016
- package/documents/developer_documents/testing_script_generator/edgeFeatures.json +0 -178
- package/documents/developer_documents/testing_script_generator/fileFeatures.json +0 -100
- package/documents/developer_documents/testing_script_generator/layoutFeatures.json +0 -166
- package/documents/developer_documents/testing_script_generator/nodeFeatures.json +0 -195
- package/documents/developer_documents/testing_script_generator/speciesFeatures.json +0 -30
- package/documents/developer_documents/testing_script_generator/testing-script-generator.js +0 -172
- package/documents/developer_documents/testing_script_generator/viewFeatures.json +0 -82
- package/documents/developer_documents/testing_script_generator/viewportFeatures.json +0 -50
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_conference-presentations_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_references.rtf +0 -264
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_text-only.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/21-genes_31-edges_Schade-data_for-screenshots.xlsx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145_900pix-wide.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145_900pix-wide.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5A.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5B.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5C.eps +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5D.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5E.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5F.eps +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5_compiled.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure1_zoom145_900pix-wide.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure2_zoom145_900pix-wide.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure3_GRNsight-Architecture.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure4_GRNsight-Screenshot.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure5_compiled.pdf +12 -5383
- package/documents/manuscripts/peerj-computerscience-2016/peerj-reviewing-10823-v0.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_conference-presentations_2016_revised.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter-and-response_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_references_revised.rtf +0 -385
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised_marked.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure3_GRNsight-Architecture.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot-auto.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/peerj-reviewing-10823-v1.pdf +0 -0
- package/documents/posters/Anguiano_CMSI402_2017.pptx +0 -0
- package/documents/posters/Anguiano_Varshneya_LMU-Symposium_2015.pptx +0 -0
- package/documents/posters/Anguiano_Varshneya_SCCUR_2014.pptx +0 -0
- package/documents/posters/Choe_Shin_CMSI402_2018.pptx +0 -0
- package/documents/posters/Dahlquist-et-al_BOSC_ISMB_2016_poster.pptx +0 -0
- package/documents/posters/Filler_Patterson_CMSI402_Poster.pptx +0 -0
- package/documents/posters/Igbinedion_Green_Mersaghian_LMU_SYMPOSIUM_2021.pptx +0 -0
- package/documents/posters/Lopez_Filler_LMU_Symposium_2019.pdf +0 -0
- package/documents/posters/Lopez_Filler_LMU_Symposium_2019.pptx +0 -0
- package/documents/posters/Samdarshi-et-al_LMU-Symposium_2017.pptx +0 -0
- package/documents/posters/Samdarshi-et-al_LMU-Symposium_2018.pptx +0 -0
- package/documents/posters/Samdarshi-et-al_SoCalSysBio_2019.pptx +0 -0
- package/documents/posters/Shin-et-al_SCCUR_2017.pptx +0 -0
- package/documents/posters/Southwick_CMSI402_2014.pptx +0 -0
- package/documents/posters/Varshneya_Samdarshi_LMU-Symposium_2016.pptx +0 -0
- package/documents/posters/Varshneya_Samdarshi_SoCalSysBio_2017.pptx +0 -0
- package/documents/presentations/Anguiano_402_Final_Presentation.pptx +0 -0
- package/documents/presentations/Choe_SWERapidFire2017_final.pptx +0 -0
- package/documents/presentations/Dahlquist_BCC2020_20200720_talk.pptx +0 -0
- package/documents/presentations/Dahlquist_BOSC_20160709.pptx +0 -0
- package/documents/presentations/Dahlquist_ExperimentalBiology_20160404_talk.pptx +0 -0
- package/documents/presentations/Dahlquist_GRNsight_BCC2020_20200720_lightning-talk_video.mp4 +0 -0
- package/documents/presentations/Dahlquist_SoCalSysBio_20150131_talk.pptx +0 -0
- package/documents/presentations/Filler_Patterson_CMSI402_Presentation_20200501.pdf +0 -0
- package/documents/presentations/Filler_Patterson_LMU-Symposium_20200418_talk.pdf +0 -0
- package/documents/presentations/Samdarshi_LMU-Symposium_20190323_talk.pdf +0 -0
- package/documents/presentations/Samdarshi_LMU-Symposium_20190323_talk.pptx +0 -0
- package/documents/presentations/Southwick_Anguiano_LMU-Symposium_20140329_talk.pptx +0 -0
- package/documents/presentations/Southwick_CMSI402_Presentation_20140508_talk.pptx +0 -0
- package/documents/presentations/Varshneya_Anguiano_LMU-Symposium_201703_talk.pptx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_2019_Final.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_Mihir_2019_AnnotatedBibliography.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_Mihir_2019_Outline.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/~$mdarshi_2019_Draft.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/~$mdarshi_2019_Final_Paper_Draft.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201701-AnnotatedBibliography.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201702-Introduction.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201702-Outline.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201703-Discussion.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201703-MMResults.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201704-Draft-1.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201704-Final.docx +0 -0
- package/onlysidebar.html +0 -8
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
// But placed here for now so that the true MVC cycle of grnState, updateApp, and the
|
|
3
3
|
// controller code installed by setupHandlers can access them.
|
|
4
4
|
|
|
5
|
+
/* eslint-disable max-len */
|
|
6
|
+
import { grnState } from "./grnstate";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
buildURL,
|
|
10
|
+
responseData,
|
|
11
|
+
stopLoadingIcon
|
|
12
|
+
} from "./update-app";
|
|
13
|
+
|
|
5
14
|
export const uploadState = {
|
|
6
15
|
currentWorkbook: null,
|
|
7
16
|
};
|
|
@@ -56,7 +65,6 @@ export const upload = function () {
|
|
|
56
65
|
if (currentExtension && currentExtension.length) {
|
|
57
66
|
filename = filename.substr(0, filename.length - currentExtension[0].length);
|
|
58
67
|
}
|
|
59
|
-
|
|
60
68
|
if (suffix) {
|
|
61
69
|
filename = filename + "_" + suffix;
|
|
62
70
|
}
|
|
@@ -64,9 +72,39 @@ export const upload = function () {
|
|
|
64
72
|
return filename + "." + extension;
|
|
65
73
|
};
|
|
66
74
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
const handleExportExcelButtonExport = (route, extension, sheetType, source) => {
|
|
76
|
+
grnState.workbook.exportNetworkType = sheetType;
|
|
77
|
+
const expressionSheets = $("input[name=expressionSheets]:checked");
|
|
78
|
+
var chosenSheets = [];
|
|
79
|
+
for (const [key, value] of Object.entries(expressionSheets)) {
|
|
80
|
+
if (!isNaN(parseInt(key, 10))) {
|
|
81
|
+
if (value.value === "select all") {
|
|
82
|
+
const allExpressionSheets = $("input[name=expressionSheets]");
|
|
83
|
+
chosenSheets = [];
|
|
84
|
+
for (const [k, v] of Object.entries(allExpressionSheets)) {
|
|
85
|
+
if (!isNaN(parseInt(k, 10))) {
|
|
86
|
+
if (v.value !== "select all") {
|
|
87
|
+
chosenSheets.push(v.value);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
} else {
|
|
93
|
+
chosenSheets.push(value.value);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const exportSheets = {};
|
|
98
|
+
|
|
99
|
+
if (source === "userInput" && grnState.workbook.expression) {
|
|
100
|
+
// source is from user speadsheet
|
|
101
|
+
// parse through grnState expression sheets and collect the sheets to be exported
|
|
102
|
+
for (let sheet of chosenSheets) {
|
|
103
|
+
if (grnState.workbook.expression[sheet]) {
|
|
104
|
+
exportSheets[sheet] = grnState.workbook.expression[sheet];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
grnState.workbook.exportExpression = exportSheets;
|
|
70
108
|
if (!$(this).parent().hasClass("disabled")) {
|
|
71
109
|
var workbookToExport = flattenWorkbook(uploadState.currentWorkbook, sheetType);
|
|
72
110
|
var workbookFilename = filenameWithExtension(sheetType !== uploadState.currentWorkbook.sheetType ?
|
|
@@ -89,15 +127,303 @@ export const upload = function () {
|
|
|
89
127
|
exportForm.submit();
|
|
90
128
|
exportForm.remove();
|
|
91
129
|
}
|
|
130
|
+
$("#exportExcelModal").modal("hide");
|
|
131
|
+
} else {
|
|
132
|
+
// source is from database so lets query her up
|
|
133
|
+
for (let sheet of chosenSheets) {
|
|
134
|
+
let queryURL = buildURL({ dataset: sheet });
|
|
135
|
+
responseData("", queryURL).then(function (response) {
|
|
136
|
+
exportSheets[sheet] = response;
|
|
137
|
+
if (exportSheets[sheet]) {
|
|
138
|
+
stopLoadingIcon();
|
|
139
|
+
if (Object.keys(exportSheets).length === chosenSheets.length) {
|
|
140
|
+
// we have all of the sheets so lets initilize the export process
|
|
141
|
+
const finalExportSheets = {};
|
|
142
|
+
Object.keys(exportSheets).forEach((sheet) => {
|
|
143
|
+
// make sure that the sheets we queried are populated with the correct data
|
|
144
|
+
if (exportSheets[sheet].data && exportSheets[sheet].timePoints) {
|
|
145
|
+
// if the resulting query contains both the timePoint data and
|
|
146
|
+
// the gene data then export it. If not don't :)
|
|
147
|
+
finalExportSheets[sheet] = exportSheets[sheet];
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
grnState.workbook.exportExpression = finalExportSheets;
|
|
151
|
+
if (!$(this).parent().hasClass("disabled")) {
|
|
152
|
+
var workbookToExport = flattenWorkbook(uploadState.currentWorkbook, sheetType);
|
|
153
|
+
var workbookFilename = filenameWithExtension(sheetType !== uploadState.currentWorkbook.sheetType ?
|
|
154
|
+
sheetType : "", extension);
|
|
155
|
+
workbookToExport.filename = workbookFilename;
|
|
156
|
+
var exportForm = $("<form></form>").attr({
|
|
157
|
+
method: "POST",
|
|
158
|
+
action: $("#service-root").val() + "/" + route
|
|
159
|
+
}).append($("<input></input>").attr({
|
|
160
|
+
type: "hidden",
|
|
161
|
+
name: "filename",
|
|
162
|
+
value: workbookFilename
|
|
163
|
+
})).append($("<input></input>").attr({
|
|
164
|
+
type: "hidden",
|
|
165
|
+
name: "workbook",
|
|
166
|
+
value: JSON.stringify(workbookToExport)
|
|
167
|
+
}));
|
|
168
|
+
$("body").append(exportForm);
|
|
169
|
+
exportForm.submit();
|
|
170
|
+
exportForm.remove();
|
|
171
|
+
}
|
|
172
|
+
$("#exportExcelModal").modal("hide");
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}).catch(function (error) {
|
|
176
|
+
console.log(error.stack);
|
|
177
|
+
console.log(error.name);
|
|
178
|
+
console.log(error.message);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
var performExport = function (route, extension, sheetType, source) {
|
|
185
|
+
return function () {
|
|
186
|
+
// Deleted event parameter
|
|
187
|
+
if (route === "export-to-excel" && source) {
|
|
188
|
+
handleExportExcelButtonExport(route, extension, sheetType, source);
|
|
189
|
+
} else {
|
|
190
|
+
if (!$(this).parent().hasClass("disabled")) {
|
|
191
|
+
var workbookToExport = flattenWorkbook(uploadState.currentWorkbook, sheetType);
|
|
192
|
+
var workbookFilename = filenameWithExtension(sheetType !== uploadState.currentWorkbook.sheetType ?
|
|
193
|
+
sheetType : "", extension);
|
|
194
|
+
workbookToExport.filename = workbookFilename;
|
|
195
|
+
|
|
196
|
+
var exportForm = $("<form></form>").attr({
|
|
197
|
+
method: "POST",
|
|
198
|
+
action: $("#service-root").val() + "/" + route
|
|
199
|
+
}).append($("<input></input>").attr({
|
|
200
|
+
type: "hidden",
|
|
201
|
+
name: "filename",
|
|
202
|
+
value: workbookFilename
|
|
203
|
+
})).append($("<input></input>").attr({
|
|
204
|
+
type: "hidden",
|
|
205
|
+
name: "workbook",
|
|
206
|
+
value: JSON.stringify(workbookToExport)
|
|
207
|
+
}));
|
|
208
|
+
$("body").append(exportForm);
|
|
209
|
+
exportForm.submit();
|
|
210
|
+
exportForm.remove();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const createHTMLforForm1 = () => {
|
|
218
|
+
return `
|
|
219
|
+
<form id=\'exportExcelForm1\'>
|
|
220
|
+
<div class=\'form-group\'>
|
|
221
|
+
<p id=\'exportExcelNetwork\'></p>
|
|
222
|
+
<ul class=\'export-radio-group\' id=\'export-excel-weights-list\' style=\"list-style-type:none;\"> </ul>
|
|
223
|
+
</div>
|
|
224
|
+
<div class=\'form-group\'>
|
|
225
|
+
<p id=\'exportExcelExpressionSources\'> </p>
|
|
226
|
+
<ul class=\'export-radio-group\' id=\'export-excel-expression-source-list\' style=\"list-style-type:none;\">
|
|
227
|
+
<li>
|
|
228
|
+
<input type=\'radio\' name=\'expressionSource\' checked=\"true\" value=\"userInput\" id=\'exportExcelExpressionSource-userInputRadio\' class=\'export-radio\' />
|
|
229
|
+
<label for=\'exportExcelExpressionSource-userInputRadio\' id=\'exportExcelExpressionSource-userInput\' class=\'export-radio-label\'> </label>
|
|
230
|
+
</li>
|
|
231
|
+
<li>
|
|
232
|
+
<input type=\'radio\' name=\'expressionSource\' value=\"Dahlquist_2018\" id=\'exportExcelExpressionSource-DahlquistRadio\' class=\'export-radio\' />
|
|
233
|
+
<label for=\'exportExcelExpressionSource-DahlquistRadio\' id=\'exportExcelExpressionSource-Dahlquist\' class=\'export-radio-label\'> </label>
|
|
234
|
+
</li>
|
|
235
|
+
<li>
|
|
236
|
+
<input type=\'radio\' name=\'expressionSource\' value=\"Kitagawa_2002\" id=\'exportExcelExpressionSource-KitagawaRadio\' class=\'export-radio\' />
|
|
237
|
+
<label for=\'exportExcelExpressionSource-KitagawaRadio\' id=\'exportExcelExpressionSource-Kitagawa\' class=\'export-radio-label\'> </label>
|
|
238
|
+
</li>
|
|
239
|
+
<li>
|
|
240
|
+
<input type=\'radio\' name=\'expressionSource\' value=\"Thorsen_2007\" id=\'exportExcelExpressionSource-ThorsenRadio\' class=\'export-radio\' />
|
|
241
|
+
<label for=\'exportExcelExpressionSource-ThorsenRadio\' id=\'exportExcelExpressionSource-Thorsen\' class=\'export-radio-label\'> </label>
|
|
242
|
+
</li>
|
|
243
|
+
<li>
|
|
244
|
+
<input type=\'radio\' name=\'expressionSource\' value=\"Barreto_2012\" id=\'exportExcelExpressionSource-BarretoRadio\' class=\'export-radio\' />
|
|
245
|
+
<label for=\'exportExcelExpressionSource-BarretoRadio\' id=\'exportExcelExpressionSource-Barreto\' class=\'export-radio-label\'> </label>
|
|
246
|
+
</li>
|
|
247
|
+
</ul>
|
|
248
|
+
</div>
|
|
249
|
+
<button type=\'submit\' class=\'btn btn-default\' id=\'exportExcelContinueButton\'> Continue </button>
|
|
250
|
+
</form>
|
|
251
|
+
`;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
const createHTMLforForm2 = () => {
|
|
255
|
+
return `
|
|
256
|
+
<form id=\'exportExcelForm2\'>
|
|
257
|
+
<div class=\'form-group\'>
|
|
258
|
+
<p id=\'exportExcelExpressionSheets\'></p>
|
|
259
|
+
<ul class=\'exportExcelExpressionSheets\' id=\'export-excel-expression-sheet-list\' style=\"list-style-type:none;\"> </ul>
|
|
260
|
+
</div>
|
|
261
|
+
<input type=\'button\' class=\'btn btn-default\' id=\'exportExcelButton\' value=\'Export Workbook\' />
|
|
262
|
+
</form>
|
|
263
|
+
`;
|
|
264
|
+
};
|
|
265
|
+
const createHTMLforWeights = () => {
|
|
266
|
+
$(".export-excel-weighted-option").remove();
|
|
267
|
+
if (grnState.workbook.sheetType !== "weighted") {
|
|
268
|
+
return `
|
|
269
|
+
<li class=\'export-excel-weighted-option\'>
|
|
270
|
+
<input type=\'radio\' checked=\"true\" name=\'network-weights\' value=\"unweighted\" id=\'exportExcelUnweightedRadio\' class=\'export-radio\' />
|
|
271
|
+
<label for=\'exportExcelUnweightedRadio\' id=\'exportExcelUnweighted\' class=\'export-radio-label\' >
|
|
272
|
+
Unweighted
|
|
273
|
+
</label>
|
|
274
|
+
</li>`;
|
|
275
|
+
} else {
|
|
276
|
+
return `
|
|
277
|
+
<li class=\'export-excel-weighted-option\'>
|
|
278
|
+
<input type=\'radio\' checked=\"true\" name=\'network-weights\' value=\"weighted\" id=\'exportExcelWeightedRadio\' class=\'export-radio\' />
|
|
279
|
+
<label for=\'exportExcelWeightedRadio\' id=\'exportExcelWeighted\' class=\'export-radio-label\' >
|
|
280
|
+
Weighted
|
|
281
|
+
</label>
|
|
282
|
+
</li>
|
|
283
|
+
<li class=\'export-excel-weighted-option\'>
|
|
284
|
+
<input type=\'radio\' name=\'network-weights\' value=\"unweighted\" id=\'exportExcelUnweightedRadio\' class=\'export-radio\' />
|
|
285
|
+
<label for=\'exportExcelUnweightedRadio\' id=\'exportExcelUnweighted\' class=\'export-radio-label\' >
|
|
286
|
+
Unweighted
|
|
287
|
+
</label>
|
|
288
|
+
</li>
|
|
289
|
+
`;
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
const createHTMLforExpressionSheets = (source) => {
|
|
294
|
+
$(".export-excel-expression-sheet-option").remove();
|
|
295
|
+
// check if user updated data is selected
|
|
296
|
+
let result = `
|
|
297
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
298
|
+
<input type=\'checkbox\' name=\'expressionSheets\' checked=\"true\" value=\"select all\" id=\'exportExcelExpression-All\' class=\'export-checkbox\' />
|
|
299
|
+
<label for=\'exportExcelExpression-All\' id=\'exportExcelExpression-All-label\' class=\'export-checkbox-label\' >
|
|
300
|
+
All Expression Sheets
|
|
301
|
+
</label>
|
|
302
|
+
</li>
|
|
303
|
+
`;
|
|
304
|
+
if (source === "userInput") {
|
|
305
|
+
for (let expression in grnState.workbook.expression) {
|
|
306
|
+
result = result + `
|
|
307
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
308
|
+
<input type=\'checkbox\' name=\'expressionSheets\' checked=\"true\" value=\"${expression}\" id=\'exportExcelExpression-${expression}\' class=\'export-checkbox\' />
|
|
309
|
+
<label for=\'exportExcelExpression-${expression}\' id=\'exportExcelExpression-${expression}-label\' class=\'export-checkbox-label\' >
|
|
310
|
+
${expression}
|
|
311
|
+
</label>
|
|
312
|
+
</li>
|
|
313
|
+
`;
|
|
314
|
+
}
|
|
315
|
+
} else if (source === "Dahlquist_2018") {
|
|
316
|
+
// if the source is from a database
|
|
317
|
+
result = result + `
|
|
318
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
319
|
+
<input type=\'checkbox\' name=\'expressionSheets\' checked=\"true\" value=\"Dahlquist_2018_dcin5\" id=\'exportExcelExpression-Dahlquist_2018_dcin5\' class=\'export-checkbox\' />
|
|
320
|
+
<label for=\'exportExcelExpression-Dahlquist_2018_dcin5\' id=\'exportExcelExpression-Dahlquist_2018_dcin5-label\' class=\'export-checkbox-label\' >
|
|
321
|
+
Dahlquist_2018_dcin5
|
|
322
|
+
</label>
|
|
323
|
+
</li>
|
|
324
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
325
|
+
<input type=\'checkbox\' checked=\"true\" name=\'expressionSheets\' value=\"Dahlquist_2018_dgln3\" id=\'exportExcelExpression-Dahlquist_2018_dgln3\' class=\'export-checkbox\' />
|
|
326
|
+
<label for=\'exportExcelExpression-Dahlquist_2018_dgln3\' id=\'exportExcelExpression-Dahlquist_2018_dgln3-label\' class=\'export-checkbox-label\' >
|
|
327
|
+
Dahlquist_2018_dgln3
|
|
328
|
+
</label>
|
|
329
|
+
</li>
|
|
330
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
331
|
+
<input type=\'checkbox\' checked=\"true\" name=\'expressionSheets\' value=\"Dahlquist_2018_dhap4\" id=\'exportExcelExpression-Dahlquist_2018_dhap4\' class=\'export-checkbox\' />
|
|
332
|
+
<label for=\'exportExcelExpression-Dahlquist_2018_dhap4\' id=\'exportExcelExpression-Dahlquist_2018_dhap4-label\' class=\'export-checkbox-label\' >
|
|
333
|
+
Dahlquist_2018_dhap4
|
|
334
|
+
</label>
|
|
335
|
+
</li>
|
|
336
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
337
|
+
<input type=\'checkbox\' checked=\"true\" name=\'expressionSheets\' value=\"Dahlquist_2018_dzap1\" id=\'exportExcelExpression-Dahlquist_2018_dzap1\' class=\'export-checkbox\' />
|
|
338
|
+
<label for=\'exportExcelExpression-Dahlquist_2018_dzap1\' id=\'exportExcelExpression-Dahlquist_2018_dzap1-label\' class=\'export-checkbox-label\' >
|
|
339
|
+
Dahlquist_2018_dzap1
|
|
340
|
+
</label>
|
|
341
|
+
</li>
|
|
342
|
+
<div class=\'expression-db-loader\'></div>
|
|
343
|
+
<div class=\'expression-db-loader-text\'>Expression Database is Loading</div>
|
|
344
|
+
`;
|
|
345
|
+
} else if (source === "Kitagawa_2002") {
|
|
346
|
+
// if the source is from a database
|
|
347
|
+
result = result + `
|
|
348
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
349
|
+
<input type=\'checkbox\' checked=\"true\" name=\'expressionSheets\' value=\"Kitagawa_2002_wt\" id=\'exportExcelExpression-Kitagawa_2002_wt\' class=\'export-checkbox\' />
|
|
350
|
+
<label for=\'exportExcelExpression-Kitagawa_2002_wt\' id=\'exportExcelExpression-Kitagawa_2002_wt-label\' class=\'export-checkbox-label\' >
|
|
351
|
+
Kitagawa_2002_wt
|
|
352
|
+
</label>
|
|
353
|
+
</li>
|
|
354
|
+
<div class=\'expression-db-loader\'></div>
|
|
355
|
+
<div class=\'expression-db-loader-text\'>Expression Database is Loading</div>
|
|
356
|
+
`;
|
|
357
|
+
} else if (source === "Thorsen_2007") {
|
|
358
|
+
// if the source is from a database
|
|
359
|
+
result = result + `
|
|
360
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
361
|
+
<input type=\'checkbox\' checked=\"true\" name=\'expressionSheets\' value=\"Thorsen_2007_wt\" id=\'exportExcelExpression-Thorsen_2007_wt\' class=\'export-checkbox\' />
|
|
362
|
+
<label for=\'exportExcelExpression-Thorsen_2007_wt\' id=\'exportExcelExpression-Thorsen_2007_wt-label\' class=\'export-checkbox-label\' >
|
|
363
|
+
Thorsen_2007_wt
|
|
364
|
+
</label>
|
|
365
|
+
</li>
|
|
366
|
+
<div class=\'expression-db-loader\'></div>
|
|
367
|
+
<div class=\'expression-db-loader-text\'>Expression Database is Loading</div>
|
|
368
|
+
`;
|
|
369
|
+
} else if (source === "Barreto_2012") {
|
|
370
|
+
// if the source is from a database
|
|
371
|
+
result = result + `
|
|
372
|
+
<li class=\'export-excel-expression-sheet-option\'>
|
|
373
|
+
<input type=\'checkbox\' checked=\"true\" name=\'expressionSheets\' value=\"Barreto_2012_wt\" id=\'exportExcelExpression-Barreto_2012_wt\' class=\'export-checkbox\' />
|
|
374
|
+
<label for=\'exportExcelExpression-Barreto_2012_wt\' id=\'exportExcelExpression-Barreto_2012_wt-label\' class=\'export-checkbox-label\' >
|
|
375
|
+
Barreto_2012_wt
|
|
376
|
+
</label>
|
|
377
|
+
</li>
|
|
378
|
+
<div class=\'expression-db-loader\'></div>
|
|
379
|
+
<div class=\'expression-db-loader-text\'>Expression Database is Loading</div>
|
|
380
|
+
`;
|
|
381
|
+
}
|
|
382
|
+
return result;
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
const handleExportExcelButtonContinue = () => {
|
|
386
|
+
const weight = $("input[name=network-weights]:checked")[0].value;
|
|
387
|
+
const source = $("input[name=expressionSource]:checked")[0].value;
|
|
388
|
+
$("#exportExcelForm1").remove();
|
|
389
|
+
// $("#exportExcelForm1")[0].style = "display:none;";
|
|
390
|
+
$("#exportExcelQuestions-containter").append(createHTMLforForm2);
|
|
391
|
+
$("#exportExcelExpressionSheets").html("Select Expression Sheets:");
|
|
392
|
+
$("#export-excel-expression-sheet-list").append(createHTMLforExpressionSheets(source));
|
|
393
|
+
$("#exportExcelButton").on("click", performExport("export-to-excel", "xlsx", weight, source));
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
var displayExportExcelModal = function () {
|
|
397
|
+
$("#exportExcelForm2").remove();
|
|
398
|
+
$("#exportExcelQuestions-containter").append(createHTMLforForm1);
|
|
399
|
+
$("#exportExcelNetwork").html("Select the workbooks export type:");
|
|
400
|
+
$("#export-excel-weights-list").append(createHTMLforWeights());
|
|
401
|
+
|
|
402
|
+
$("#exportExcelExpressionSources").html("Select the Expression Data Source:");
|
|
403
|
+
$("#exportExcelExpressionSource-userInput").html(grnState.name);
|
|
404
|
+
$("#exportExcelExpressionSource-Dahlquist").html("Dahlquist_2018");
|
|
405
|
+
$("#exportExcelExpressionSource-Kitagawa").html("Kitagawa_2002");
|
|
406
|
+
$("#exportExcelExpressionSource-Thorsen").html("Thorsen_2007");
|
|
407
|
+
$("#exportExcelExpressionSource-Barreto").html("Barreto_2012");
|
|
408
|
+
$("#exportExcelContinueButton").on("click", () => handleExportExcelButtonContinue());
|
|
409
|
+
$("#exportExcelModal").modal("show");
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
var performExcelExport = function () {
|
|
413
|
+
return function () {
|
|
414
|
+
if (!$(this).parent().hasClass("disabled")) {
|
|
415
|
+
displayExportExcelModal();
|
|
416
|
+
}
|
|
92
417
|
};
|
|
93
418
|
};
|
|
94
419
|
|
|
95
|
-
$("#exportAsExcelWkbk").click(performExport("export-to-excel", "xlsx", "unweighted"));
|
|
96
|
-
$("#exportAsUnweightedSif").click
|
|
97
|
-
$("#exportAsWeightedSif").click
|
|
98
|
-
$("#exportAsUnweightedGraphMl").click
|
|
99
|
-
$("#exportAsWeightedGraphMl").click
|
|
100
|
-
$("#exportAsUnweightedExcel").click
|
|
101
|
-
$("#exportAsWeightedExcel").click
|
|
420
|
+
// $("#exportAsExcelWkbk").click(performExport("export-to-excel", "xlsx", "unweighted"));
|
|
421
|
+
$("#exportAsUnweightedSif").on("click", performExport("export-to-sif", "sif", "unweighted"));
|
|
422
|
+
$("#exportAsWeightedSif").on("click", performExport("export-to-sif", "sif", "weighted"));
|
|
423
|
+
$("#exportAsUnweightedGraphMl").on("click", performExport("export-to-graphml", "graphml", "unweighted"));
|
|
424
|
+
$("#exportAsWeightedGraphMl").on("click", performExport("export-to-graphml", "graphml", "weighted"));
|
|
425
|
+
// $("#exportAsUnweightedExcel").on("click", performExport("export-to-excel", "xlsx", "unweighted"));
|
|
426
|
+
// $("#exportAsWeightedExcel").on("click", performExport("export-to-excel", "xlsx", "weighted"));
|
|
427
|
+
$("#exportAsExcel").on("click", performExcelExport());
|
|
102
428
|
|
|
103
429
|
};
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ html
|
|
|
4
4
|
link(rel='stylesheet', href='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css', integrity='sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M', crossorigin='anonymous')
|
|
5
5
|
link(rel='stylesheet', href='gene/info.css')
|
|
6
6
|
body
|
|
7
|
-
input#service-root(type='hidden', value
|
|
7
|
+
input#service-root(type='hidden', value=`${serviceRoot}`)
|
|
8
8
|
// The following code is for the error modal
|
|
9
9
|
#errorModal.modal.fade(tab-index='-1', role='dialog', aria-labelledby='mySmallModalLabel', aria-hidden='true')
|
|
10
10
|
.modal-dialog
|
|
@@ -20,10 +20,6 @@ html
|
|
|
20
20
|
.modal-footer
|
|
21
21
|
input.btn.btn-default(type='button', data-dismiss='modal', value='Close')
|
|
22
22
|
// End error modal
|
|
23
|
-
#header
|
|
24
|
-
iframe#iframeHeader(src='https://dondi.github.io/GRNsight/onlyheader.html', scrolling='no')
|
|
25
|
-
#navBar
|
|
26
|
-
iframe#iframeMenu(src='https://dondi.github.io/GRNsight/onlysidebar.html', scrolling='no')
|
|
27
23
|
#mainContent
|
|
28
24
|
#pageContent
|
|
29
25
|
#pageHead.row
|
|
@@ -36,7 +36,7 @@ html
|
|
|
36
36
|
| Open File
|
|
37
37
|
i (.xlsx, .sif, .graphml)
|
|
38
38
|
input(type='file' name='upload' id='upload' accept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, .sif, .graphml')
|
|
39
|
-
input(type='hidden' id='service-root' value
|
|
39
|
+
input(type='hidden' id='service-root' value=`${serviceRoot}`)
|
|
40
40
|
li(class='startDisabled disabled')
|
|
41
41
|
a(href='#' id='reload')
|
|
42
42
|
span(class='glyphicon glyphicon-repeat')
|
|
@@ -62,10 +62,12 @@ html
|
|
|
62
62
|
li(class='startDisabled disabled weighted export')
|
|
63
63
|
a(href='#' id='exportAsWeightedGraphMl') To Weighted GraphML
|
|
64
64
|
li(class='divider')
|
|
65
|
-
li(class='startDisabled disabled unweighted export')
|
|
65
|
+
//- li(class='startDisabled disabled unweighted export')
|
|
66
66
|
a(href='#' id='exportAsUnweightedExcel') To Unweighted Excel
|
|
67
|
-
li(class='startDisabled disabled weighted export')
|
|
68
|
-
|
|
67
|
+
//- li(class='startDisabled disabled weighted export')
|
|
68
|
+
//- a(href='#' id='exportAsWeightedExcel') To Weighted Excel
|
|
69
|
+
li(class='startDisabled disabled export')
|
|
70
|
+
a(href='#' id='exportAsExcel') To Excel
|
|
69
71
|
|
|
70
72
|
li(class='dropdown-submenu')
|
|
71
73
|
a(href='#')
|
|
@@ -509,6 +511,47 @@ html
|
|
|
509
511
|
div(class='modal-footer')
|
|
510
512
|
input(type='button' class='btn btn-default' data-dismiss='modal' value='Close')
|
|
511
513
|
//- input(type='button' id='launchFileOpen' class='btn btn-primary' data-dismiss='modal' value='Select New File' onclick="$('#upload').click()")
|
|
514
|
+
div(id='exportExcelModal' class='modal fade' tab-index='-1' role='dialog' aria-labelledby='mySmallModalLabel' aria-hidden='true')
|
|
515
|
+
div(class='modal-dialog')
|
|
516
|
+
div(class='modal-content')
|
|
517
|
+
div(class='modal-header')
|
|
518
|
+
button(type='button' class='close' data-dismiss='modal' aria-label='Close')
|
|
519
|
+
span(aria-hidden='true') ×
|
|
520
|
+
h4(class='modal-title') Export to Excel
|
|
521
|
+
div(class='modal-body')
|
|
522
|
+
div(id='exportExcelQuestions-containter')
|
|
523
|
+
//- form(id='exportExcelForm1')
|
|
524
|
+
//- div(class='form-group')
|
|
525
|
+
//- p(id='exportExcelNetwork')
|
|
526
|
+
//- ul(class='export-radio-group' id='export-excel-weights-list' style="list-style-type:none;")
|
|
527
|
+
//- div(class='form-group')
|
|
528
|
+
//- p(id='exportExcelExpressionSources')
|
|
529
|
+
//- ul(class='export-radio-group' id='export-excel-expression-source-list' style="list-style-type:none;")
|
|
530
|
+
//- li
|
|
531
|
+
//- input(type='radio' name='expressionSource' checked="true" value="userInput" id='exportExcelExpressionSource-userInputRadio' class='export-radio')
|
|
532
|
+
//- label(for='exportExcelExpressionSource-userInputCheckbox' id='exportExcelExpressionSource-userInput' class='export-radio-label')
|
|
533
|
+
//- li
|
|
534
|
+
//- input(type='radio' name='expressionSource' value="Dahlquist_2018" id='exportExcelExpressionSource-DahlquistRadio' class='export-radio')
|
|
535
|
+
//- label(for='exportExcelExpressionSource-DahlquistCheckbox' id='exportExcelExpressionSource-Dahlquist' class='export-radio-label')
|
|
536
|
+
//- li
|
|
537
|
+
//- input(type='radio' name='expressionSource' value="Kitagawa_2002" id='exportExcelExpressionSource-KitagawaRadio' class='export-radio')
|
|
538
|
+
//- label(for='exportExcelExpressionSource-KitagawaCheckbox' id='exportExcelExpressionSource-Kitagawa' class='export-radio-label')
|
|
539
|
+
//- li
|
|
540
|
+
//- input(type='radio' name='expressionSource' value="Thorsen_2007" id='exportExcelExpressionSource-ThorsenRadio' class='export-radio')
|
|
541
|
+
//- label(for='exportExcelExpressionSource-ThorsenCheckbox' id='exportExcelExpressionSource-Thorsen' class='export-radio-label')
|
|
542
|
+
//- li
|
|
543
|
+
//- input(type='radio' name='expressionSource' value="Barreto_2012" id='exportExcelExpressionSource-BarretoRadio' class='export-radio')
|
|
544
|
+
//- label(for='exportExcelExpressionSource-BarretoCheckbox' id='exportExcelExpressionSource-Barreto' class='export-radio-label')
|
|
545
|
+
//- button(type='submit' class='btn btn-default' id='exportExcelContinueButton') Continue
|
|
546
|
+
//- form(id='exportExcelForm2')
|
|
547
|
+
//- div(class='form-group')
|
|
548
|
+
//- p(id='exportExcelExpressionSheets')
|
|
549
|
+
//- ul(class='exportExcelExpressionSheets' id='export-excel-expression-sheet-list' style="list-style-type:none;")
|
|
550
|
+
//- //- input(type='checkbox' value='expression_sheet_name_expressionSuffix')
|
|
551
|
+
//- button(type='submit' class='btn btn-default' id='exportExcelButton') Export Workbook
|
|
552
|
+
div(class='modal-footer')
|
|
553
|
+
input(type='button' class='btn btn-default' data-dismiss='modal' value='Close')
|
|
554
|
+
//- input(type='button' id='launchFileOpen' class='btn btn-primary' data-dismiss='modal' value='Select New File' onclick="$('#upload').click()")
|
|
512
555
|
|
|
513
556
|
div(id='warningsModalSpecies' class='modal fade' tab-index='-1' role='dialog' aria-labelledby='mySmallModalLabel' aria-hidden='true')
|
|
514
557
|
div(class='modal-dialog')
|
package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-development-plan.md
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
## 2.0 Software Development Plan
|
|
2
|
-
|
|
3
|
-
## Table of Contents
|
|
4
|
-
2.1 Introduction
|
|
5
|
-
|
|
6
|
-
2.1.1 Project Deliverables
|
|
7
|
-
|
|
8
|
-
2.2 Project Resources
|
|
9
|
-
|
|
10
|
-
2.2.1 Hardware Resources
|
|
11
|
-
|
|
12
|
-
2.2.2 Software Resources
|
|
13
|
-
|
|
14
|
-
2.3 Project Organization
|
|
15
|
-
|
|
16
|
-
2.4 Schedule
|
|
17
|
-
|
|
18
|
-
2.4.1 Gantt Chart
|
|
19
|
-
|
|
20
|
-
## 2.1 Introduction
|
|
21
|
-
This Software Development Plan provides the details of the planned development for the GRNsight application developed as an LMU Senior Project.This application provides a web service which will allow users to generate visualizations of gene regulatory networks derived from uploaded spreadsheets.This application will serve as an update of sorts to the XMLPipeDB program used by the LMU Biological Databases classes in addition to providing an accessible and dynamic visualization tool to general users. In addition to the time spent researching and coding, the development process will include meetings with both the Senior Project class and the professors that requested the application. Additionally, the application will be presented at both the 2014 LMU Undergraduate Research Symposium and during the final presentations for the Senior Project Laboratory.
|
|
22
|
-
|
|
23
|
-
Major Milestones include:
|
|
24
|
-
* 2014-01-21 Project Proposal Due
|
|
25
|
-
* 2014-02-11 Requirements Due
|
|
26
|
-
* 2014-03-11 Software Development Plan Due
|
|
27
|
-
* 2014-03-29 Undergraduate Research Symposium
|
|
28
|
-
* 2014-04-15 Final Software Design Description Due
|
|
29
|
-
* 2014-05-06 Final Presentations and Demonstrations
|
|
30
|
-
|
|
31
|
-
### 2.1.1 Project Deliverables
|
|
32
|
-
* **Project Proposal**: A general overview of the project goals and justifications. Delivered as an oral presentation and a written summary on 2014-01-21.
|
|
33
|
-
* **Requirements Document**: A detailed description of the functionality required by the application. Separated into three sections: the Web Client Requirements, the Server Requirements, and the Visualizer Requirements. Uploaded to the project GitHub wiki on 2014-02-11.
|
|
34
|
-
* **Software Development Plan**: This document, detailing the planned development for the project. Includes descriptions of the project organization and scheduling. Uploaded to the project GitHub wiki on 2014-03-11.
|
|
35
|
-
* **Final Software Development Plan**: An updated version of the original Software Development Plan revised to reflect the actual development progress of the project. Will be uploaded to the project GitHub page on 2014-04-15
|
|
36
|
-
* **Final Presentation**: An oral presentation and demonstration of the finished product. Will contain a Q&A section at the end. Will be delivered the week of 2014-05-06.
|
|
37
|
-
|
|
38
|
-
## 2.2 Project Resources
|
|
39
|
-
This section will detail the various elements used to aid in the completion of the project.
|
|
40
|
-
|
|
41
|
-
### 2.2.1 Hardware Resources
|
|
42
|
-
* A computer for development
|
|
43
|
-
* A server to host the application
|
|
44
|
-
* A network connection to access the application's website
|
|
45
|
-
* A projector for the presentation
|
|
46
|
-
|
|
47
|
-
### 2.2.2 Software Resources
|
|
48
|
-
* A code editor such as Text Wrangler
|
|
49
|
-
* A web browser such as Chrome
|
|
50
|
-
* D3 for the graph creation
|
|
51
|
-
* Node.js for the server framework
|
|
52
|
-
* Express to handle HTTP requests
|
|
53
|
-
* Node-XLSX to parse spreadsheets
|
|
54
|
-
* Cors to handle cross-origin requests
|
|
55
|
-
* Multiparty to handle file uploads
|
|
56
|
-
* Mocha and Supertest for testing
|
|
57
|
-
* Jade to write the web pages
|
|
58
|
-
* Stylus to style the web pages
|
|
59
|
-
* Git for version controll
|
|
60
|
-
* GitHub to host the code repository
|
|
61
|
-
|
|
62
|
-
## 2.3 Project Organization
|
|
63
|
-
This project is divided into three major subsections: a server, a web client, and a visualizer. Early work will focus almost exclusively on the server and the web client. Work on the server and web client will be relatively concurrent as the functionality of both are fairly intertwined.
|
|
64
|
-
|
|
65
|
-
Once the server and web client are developed, work will shift to the file upload system and then finally to the visualizer and the web pages that will host it. The refinement of the visualization will compose the bulk of the remaining development time, with some time devoted to designing and styling the web pages.
|
|
66
|
-
|
|
67
|
-
## 2.4 Schedule
|
|
68
|
-
This section provides schedule information for the GRNsight project
|
|
69
|
-
|
|
70
|
-
### 2.4.1 Gantt Chart
|
|
71
|
-

|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
### 1.0 Requirements
|
|
2
|
-
|
|
3
|
-
The system allows users to upload an Excel spreadsheet containing gene regulatory information generated by the GRNmap program, which is offered as a download by the web client. The system then parses this spreadsheet and uses the relevant data to create a visual representation of the numerical network data in the form of a user-modifiable directed graph.
|
|
4
|
-
|
|
5
|
-
### 1.1 Server Subsystem
|
|
6
|
-
1.1.1. The server subsystem shall receive xlsx files from the web client.
|
|
7
|
-
1.1.2. The server subsystem shall parse the xlsx file into a JSON object.
|
|
8
|
-
1.1.3. The server subsystem shall validate the JSON object.
|
|
9
|
-
1.1.4. The server subsystem shall send an error to the web client when validation fails.
|
|
10
|
-
1.1.5. The server subsystem shall POST the JSON object to the web client when validation succeeds.
|
|
11
|
-
The server subsystem should receive JSON objects from the web client.
|
|
12
|
-
The server subsystem should convert the JSON object into an xslx document.
|
|
13
|
-
The server subsystem should POST the xlsx document to the web client.
|
|
14
|
-
The server subsystem will use Nodejs as a server platform.
|
|
15
|
-
|
|
16
|
-
### 1.2 Web Client Subsystem
|
|
17
|
-
1.2.1. The web client subsystem shall consist of three web pages
|
|
18
|
-
The web client will use Bootstrap.
|
|
19
|
-
1.2.2. The first page shall be an instructional page
|
|
20
|
-
1.2.2.1. The page shall display instructions for uploading spreadsheets
|
|
21
|
-
1.2.2.2. The page shall display instructions regarding GRNmap
|
|
22
|
-
1.2.2.2.1. The page shall display instructions regarding how to download GRNmap
|
|
23
|
-
1.2.2.2.2. The page shall display instructions for running GRNmap
|
|
24
|
-
1.2.2.3. The page shall display instructions for modifying a generated graph
|
|
25
|
-
1.2.3. The second page shall be the upload page
|
|
26
|
-
1.2.3.1. The upload page shall accept an xlsx file.
|
|
27
|
-
1.2.3.1.1. The upload page shall allow the user to browse for a file.
|
|
28
|
-
1.2.3.4. The upload page shall pass the input file to the server.
|
|
29
|
-
1.2.4. The Third page shall be the visualization as specified in Section 1.3 "Visualizer Subsystem".
|
|
30
|
-
1.2.4.1. The visualization page shall GET the parsed file from the server.
|
|
31
|
-
1.2.4.2. The visualization page shall run the visualizer on the parsed data.
|
|
32
|
-
1.2.4.3. The visualization page shall display the visualization.
|
|
33
|
-
The visualization page should allow users to manipulate the visualization.
|
|
34
|
-
The visualization page should allow users to click and drag nodes.
|
|
35
|
-
The visualization page should allow users to double click to create new nodes.
|
|
36
|
-
The visualization page should allow users to double click and drag between nodes to create
|
|
37
|
-
new edges.
|
|
38
|
-
The visualization page should allow users to click the endpoints of an edge to drag that
|
|
39
|
-
endpoint to another node.
|
|
40
|
-
The visualization page should allow users to click on an edge once to select it.
|
|
41
|
-
The visualization page should allow users to press the '+' key to increase the magnitude of
|
|
42
|
-
a selected edge.
|
|
43
|
-
The visualization page should allow users to press the '-' key to decrease the magnitude of
|
|
44
|
-
a selected edge.
|
|
45
|
-
The visualization page should allow users to press the 'r' key to reverse the direction of
|
|
46
|
-
a selected edge.
|
|
47
|
-
The visualization page should allow users to press the 'SHIFT' key to toggle the selected
|
|
48
|
-
edge between 'expression' and 'regulation.'
|
|
49
|
-
The visualization page should allow users to submit the changes.
|
|
50
|
-
The visualization page should convert the changed graph into a JSON object.
|
|
51
|
-
The visualization page should POST the JSON to the server.
|
|
52
|
-
The visualization page should GET an xlsx document from the server.
|
|
53
|
-
The visualization page should prompt user to download the xlsx document.
|
|
54
|
-
|
|
55
|
-
### 1.3 Visualizer Subsystem
|
|
56
|
-
1.3.1. The visualizer subsystem shall run on the web client application.
|
|
57
|
-
1.3.2. The visualizer subsystem shall create a force-directed graph.
|
|
58
|
-
1.3.2.1. The visualizer subsystem shall read data from a JSON object provided by the web client.
|
|
59
|
-
1.3.2.2. The visualizer subsystem shall create nodes to represent genes.
|
|
60
|
-
The visualizer subsystem will use D3.
|
|
61
|
-
1.3.2.2.1. The visualizer subsystem shall label each node with the gene's scientific name.
|
|
62
|
-
1.3.2.3. The visualizer subsystem shall create lines between nodes to represent a gene regulating another gene.
|
|
63
|
-
1.3.2.4. The visualizer subsystem shall color the lines to represent positive and negative influence.
|
|
64
|
-
1.3.2.4.1. Red lines shall signify a negative influence.
|
|
65
|
-
1.3.2.4.2. Blue lines shall signify a positive influence.
|
|
66
|
-
1.3.2.5. The visualizer subsystem shall use line thickness to denote magnitude of influence.
|
|
67
|
-
1.3.2.5.1. Greater thickness shall denote stronger influence.
|
|
68
|
-
1.3.2.5.2. Lesser thickness shall denote weaker influence.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal.docx
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|