No studies match the current filter. Try showing more options.
");
- return;
- }
- designs.sort(function (a, b) {
- return a.studyDefinition.name.localeCompare(b.studyDefinition.name);
- });
- Ext.get("result").update("");
- for (var i = 0; i < designs.length; i++)
- {
- //var design = result.studyDesigns[i].studyDefinition;
- Ext.get("result").insertHtml("beforeEnd", getStudyOverview(designs[i]));
- }
- }
-
- function h(s) {
- if (null == s)
- return "";
- else
- return LABKEY.Utils.encodeHtml(s);
- }
-
- function getStudyOverview(info) {
- var design = info.studyDefinition;
- var html = "";
- html += "";
- html += "
";
- html += "";
-
- if (design.description)
- html+= h(design.description) +"
";
-
- html += "Immunogens: ";
- var immunogenNames = [];
- if (design.immunogens) {
- for (var i = 0; i < design.immunogens.length; i++)
- immunogenNames.push(immunogenSummary(design.immunogens[i]));
- }
- html += (immunogenNames.length ? immunogenNames.join(", ") : "(none)") + " ";
-
- html += "Adjuvants: ";
- var adjuvantNames = [];
- if (design.adjuvants) {
- for (var i = 0; i < design.adjuvants.length; i++)
- adjuvantNames.push(design.adjuvants[i].name);
- }
- html += (adjuvantNames.length ? h(adjuvantNames.join(", ")) : "(none)") + "
";
-
- html += graphicalVaccinationSummary(design);
- return html;
-
- }
-
-function immunogenSummary(immunogen)
-{
- var ret = "" + h(immunogen.name) + "";
- if (immunogen.type)
- ret += ", " + immunogen.type;
- if (immunogen.admin)
- ret += ", " + immunogen.admin;
-
- if (immunogen.antigens)
- {
- var a = [];
- for (var i = 0; i < immunogen.antigens.length; i++)
- if (immunogen.antigens[i])
- a.push(h(immunogen.antigens[i].name));
-
- if (a.length)
- ret += " (" + a.join(", ") + ") ";
- }
- return ret;
-}
-
-function graphicalVaccinationSummary(design)
-{
- if (null == design.immunizations || design.immunizations.length == 0)
- return "";
-
- var html = "";
- var timepoints = [];
- var timepointMap = {};
- for (var i = 0; i < design.immunizations.length; i++)
- {
- var immunization = design.immunizations[i];
- //Some "blank" immunizations have crept in.
- if (null == immunization.adjuvants && null == immunization.immunogens)
- continue;
- if (timepointMap[immunization.timepoint.days])
- continue;
- timepointMap[immunization.timepoint.days] = immunization.timepoint;
- timepoints.push(immunization.timepoint);
- }
- if (timepoints.length == 0)
- return "";
-
- timepoints.sort(function(a, b) {
- return a.days - b.days;
- });
-
- var PIXELS_PER_DAY = 8;
- var IMG_WIDTH = 16;
- var ZERO_OFFSET = 150;
- var imgSrc = LABKEY.contextPath + "/viscstudies/syringeSmall.gif";
- var left = Ext.get("result").getLeft();
- html += "Week";
- for (var tpi = 0; tpi < timepoints.length; tpi++)
- {
- var week = Math.round(timepoints[tpi].days / 7);
- var iconLeft = left + ZERO_OFFSET + (week * 7 * PIXELS_PER_DAY )- (IMG_WIDTH /2);
- html += "" + week + "";
- }
- html += " ";
-
- for (var ci = 0; ci < design.cohorts.length; ci++)
- {
- html += "" + h(design.cohorts[ci].name) + " (" + design.cohorts[ci].count + ")" + "";
- for (var tpi = 0; tpi < timepoints.length; tpi++)
- {
- var vaccination = findVaccination(design, design.cohorts[ci], timepoints[tpi]);
- if (null != vaccination)
- {
- var components = [];
- if (vaccination.immunogens)
- components = components.concat(vaccination.immunogens);
- if (vaccination.adjuvants)
- components = components.concat(vaccination.adjuvants);
- var iconLeft = left + ZERO_OFFSET + (vaccination.timepoint.days * PIXELS_PER_DAY )- (IMG_WIDTH /2);
- html += " "
- + "" + components.join(" | ") + " "
- +"";
- }
- }
- html += " ";
-
- }
-
- return html + " |
";
-
-// var html = "
| header |  |
";
-// return html;
-
-}
- function vaccinationSummary(design) {
- if (null == design.immunizations || design.immunizations.length == 0)
- return "";
-
- var html = "
| ";
- var timepoints = [];
- var timepointMap = {};
- for (var i = 0; i < design.immunizations.length; i++)
- {
- var immunization = design.immunizations[i];
- //Some "blank" immunizations have crept in.
- if (null == immunization.adjuvants && null == immunization.immunogens)
- continue;
- if (timepointMap[immunization.timepoint.days])
- continue;
- timepointMap[immunization.timepoint.days] = immunization.timepoint;
- timepoints.push(immunization.timepoint);
- }
- if (timepoints.length == 0)
- return "";
-
- timepoints.sort(function(a, b) {
- return a.days - b.days;
- });
-
- for (var tpi = 0; tpi < timepoints.length; tpi++)
- html += "" + h(timepoints[tpi].name) + " | ";
- html += "
";
-
- for (var ci = 0; ci < design.cohorts.length; ci++)
- {
- html += "| " + h(design.cohorts[ci].name) + " (" + design.cohorts[ci].count + ")" + " | ";
- for (var tpi = 0; tpi < timepoints.length; tpi++)
- {
- var vaccination = findVaccination(design, design.cohorts[ci], timepoints[tpi]);
- if (null == vaccination)
- html += " | ";
- else
- {
- var components = [];
- if (vaccination.immunogens)
- components = components.concat(vaccination.immunogens);
- if (vaccination.adjuvants)
- components = components.concat(vaccination.adjuvants);
- html += "" + components.join(" | ") + " | ";
- }
- }
- html += "
";
-
- }
-
- return html + "
";
- }
-
-function findVaccination(design, cohort, timepoint)
-{
- for (var i = 0; i < design.immunizations.length; i++)
- {
- var immunization = design.immunizations[i];
- if (immunization.groupName == cohort.name && immunization.timepoint.days == timepoint.days)
- return immunization;
- }
- return null;
-}
-
-function addIfNotPresent(array, value)
-{
- var isobj = typeof value == 'object';
- var id = isobj ? value.id : null;
-
- for (var i = 0; i < array.length; i++)
- {
- if (value == array[i] || (isobj && id == array[i].id))
- return;
- }
-
- array.push(value);
-}
-
-function Facet(id, caption, getOptionsFn) {
- this.allOptions = [];
- this.id = id;
- this.caption = caption;
- this.getOptionsForStudy = getOptionsFn;
- this.selected = {};
-}
-
-Facet.prototype = {
- allOptions:[],
-
- setSelected:function(index, selected) {
- this.selected[this.allOptions[index].name] = selected;
- },
-
- isSelected:function(index) {
- return this.selected[this.allOptions[index].name];
- },
-
- selectAll:function() {
- for (var i = 0; i < this.allOptions.length; i++)
- this.selected[this.allOptions[i].name] = true;
- },
-
- selectOnly:function(index) {
- var sel = {};
- sel[this.allOptions[index].name] = true;
- this.selected = sel;
- },
-
- init:function(infos) {
- var seen = {};
- for (var i = 0; i < infos.length; i++)
- {
- var optionsForStudy = this.getOptionsForStudy(infos[i]);
- for (var j = 0; j < optionsForStudy.length; j++)
- {
- if(!seen[optionsForStudy[j].name])
- {
- seen[optionsForStudy[j].name] = true;
- this.allOptions.push(optionsForStudy[j]);
- }
- }
- }
- this.allOptions.sort(function(a, b) { return a.name.localeCompare(b.name); });
- this.selected = seen; //All selected initially
- },
-
- getMatchingDesigns:function (infos) {
- var ret = [];
- for (var i = 0; i < infos.length; i++)
- {
- var optionsForStudy = this.getOptionsForStudy(infos[i]);
- for (var j = 0; j < optionsForStudy.length; j++)
- {
- if (this.selected[optionsForStudy[j].name])
- {
- ret.push(infos[i]);
- break;
- }
- }
- }
- return ret;
- }
-};
-
-var investigatorFacet = new Facet("investigators", "Investigators", function(info) {
- return [{name:info.studyDefinition.investigator}];
- });
-
-var speciesFacet = new Facet("species", "Species", function (info) {
- return [{name:info.studyDefinition.animalSpecies ? info.studyDefinition.animalSpecies : "(none)"}];
-});
-
-var adjuvantFacet = new Facet("adjuvants", "Adjuvants", function (info) {
- var design = info.studyDefinition;
- var options = [];
- if (design.adjuvants) {
- for (var i = 0; i < design.adjuvants.length; i++)
- options.push({name:design.adjuvants[i].name});
- }
- else
- options.push({name:"(none)"});
-
- return options;
-});
-
-var immunogenFacet = new Facet("immunogens", "Immunogens", function (info) {
- var design = info.studyDefinition;
- var options = [];
- if (design.immunogens) {
- for (var i = 0; i < design.immunogens.length; i++)
- options.push({name:design.immunogens[i].name});
- }
- else
- options.push({name:"(none)"});
-
- return options;
-});
-
-var facets = [immunogenFacet, investigatorFacet, speciesFacet, adjuvantFacet];
-function initFacets()
-{
- for (let f = 0; f < facets.length; f++)
- {
- var facet = facets[f];
- var header = "
Showing all " + h(facet.caption) + " ";
- var html = "
";
- html += "Show All
" ;
- facet.init(_allStudies);
- html += "";
- Ext.get("facets").insertHtml("beforeEnd", header);
-
- const id = facet.id;
- const facet2 = facet;
- const tip = new LABKEY.ext.CalloutTip({target:"facet_header_" + facet.id, html:html, closable:true});
- tip.on("render", function(t) {
- t.getEl().alignTo("facet_header_" + id, "tl-bl");
- });
- tip.on("afterrender", function(t) {
- // Attach event handlers after HTML is rendered
- document.getElementById('showAll_' + id)['onclick'] = function() { selectAll(id); return false;}
- for (let i = 0; i < facet2.allOptions.length; i++)
- {
- const id = facet2.id;
- const idx = i;
- document.getElementById(checkboxId(facet2, i))['onclick'] = function() { optionClicked(this, id, idx); };
- document.getElementById('selectOnly_' + i)['onclick'] = function() { selectOnly(id, i); return false; }
- }
- });
- }
-}
-
-function checkboxId(facet, index) {
- return facet.id + index + "_check";
-}
-
-function optionClicked(cb, facetId, index)
-{
- var facet = getFacet(facetId);
- facet.setSelected(index, cb.checked);
- updateSummary(facet);
- updateVisibleStudies();
-}
-
-function selectOnly(facetId, index)
-{
- var facet = getFacet(facetId);
- facet.selectOnly(index);
- updateCheckboxes(facet);
- updateSummary(facet);
- updateVisibleStudies();
-}
-
-function selectAll(facetId)
-{
- var facet = getFacet(facetId);
- facet.selectAll();
- updateCheckboxes(facet);
- updateSummary(facet);
- updateVisibleStudies();
-}
-
-function updateCheckboxes(facet) {
- for (var i = 0; i < facet.allOptions.length; i++)
- Ext.getDom(checkboxId(facet, i)).checked = facet.isSelected(i);
-}
-
-function updateVisibleStudies()
-{
- var infos = _allStudies;
- var facet = null;
- for (var i = 0; i < facets.length; i++)
- {
- facet = facets[i];
- infos = facet.getMatchingDesigns(infos);
- }
- _selectedStudies = infos;
- showStudyDesigns(_selectedStudies);
-}
-
-function generateDesignSpreadsheet() {
-
- var infos = _selectedStudies;
- var rows = [["# One row per antigen/adjuvant. A single vaccination may be described in several rows"],["Study", "Cohort", "Days", "Component", "Name", "Admin", "Dose", "Type", "Antigen Name", "Gene", "GenBank Id", "SubType", "Sequence"]];
- for (var i = 0; i < infos.length; i++)
- {
- var info = infos[i];
- var design = info.studyDefinition;
- if (!design.immunizations)
- continue;
-
- for (var vi = 0; vi < design.immunizations.length; vi++)
- {
- vaccination = design.immunizations[vi];
- if (vaccination.immunogens)
- {
- for (var immi = 0; immi < vaccination.immunogens.length; immi++)
- {
- var immunogen = findImmunogen(design, vaccination.immunogens[immi]);
- if (immunogen.antigens && immunogen.antigens.length) {
-
- for (var anti = 0; anti < immunogen.antigens.length; anti++)
- {
- var antigen = immunogen.antigens[anti];
- rows.push([info.label, vaccination.groupName, vaccination.timepoint.days, "Immunogen", immunogen.name, immunogen.admin, immunogen.dose, immunogen.type, antigen.name, antigen.gene, antigen.genBankId, antigen.subtype, antigen.sequence]);
- }
-
- }
- else
- rows.push([info.label, vaccination.groupName, vaccination.timepoint.days, "Immunogen", immunogen.name, immunogen.admin, immunogen.dose, immunogen.type]);
- }
- }
- if (vaccination.adjuvants)
- {
- for (var adji = 0; adji < vaccination.adjuvants.length; adji++)
- {
- var adjuvant = findAdjuvant(design, vaccination.adjuvants[adji]);
- rows.push([info.label, vaccination.groupName, vaccination.timepoint.days, "Adjuvant", adjuvant.name, adjuvant.admin, adjuvant.dose]);
- }
- }
- }
-
- }
-
- var workbook = {fileName:"ProtocolDescriptions", sheets:[{name:"Vaccine Summary", data:rows}]} ;
- LABKEY.Utils.convertToExcel(workbook);
-
- function findAdjuvant(design, adjuvantName)
- {
- for (var i = 0; i < design.adjuvants.length; i++)
- if (design.adjuvants[i].name == adjuvantName)
- return design.adjuvants[i];
-
- return adjuvantName + " (no description found)";
- }
-
- function findImmunogen(design, immunogenName)
- {
- for (var i = 0; i < design.immunogens.length; i++)
- if (design.immunogens[i].name == immunogenName)
- return design.immunogens[i];
-
- return immunogenName + " (no description found)";
- }
-}
-
-function updateSummary(facet)
-{
- var elem = Ext.get("facet_summary_" + facet.id);
- var selCount = 0;
- var allSelected = [];
- for (var key in facet.selected)
- {
- allSelected.push(key);
- selCount++;
- }
-
- if (selCount == facet.allOptions.length)
- {
- elem.update("Showing all " + facet.caption);
- return;
- }
-
- var extraText = "";
- allSelected.sort(function (a, b) {return a.localeCompare(b)});
- if (selCount > 3)
- {
- allSelected = allSelected.slice(0, 3);
- extraText = ", " + (selCount - allSelected.length) + " more";
- }
- elem.update("Showing " + allSelected.join(", ") + extraText);
-}
-
-function getFacet(facetId)
-{
- for (var i = 0; i < facets.length; i++)
- if (facets[i].id == facetId)
- return facets[i];
-}
\ No newline at end of file
diff --git a/viscstudies/webapp/viscstudies/syringe2.jpg b/viscstudies/webapp/viscstudies/syringe2.jpg
deleted file mode 100644
index 2ce804b5..00000000
Binary files a/viscstudies/webapp/viscstudies/syringe2.jpg and /dev/null differ
diff --git a/viscstudies/webapp/viscstudies/syringeSmall.gif b/viscstudies/webapp/viscstudies/syringeSmall.gif
deleted file mode 100644
index 59b12a16..00000000
Binary files a/viscstudies/webapp/viscstudies/syringeSmall.gif and /dev/null differ