diff --git a/eu_basynthec/source/html/browser/basynthec-style.css b/eu_basynthec/source/html/browser/basynthec-style.css index 6a717890a195fed79b6d50937424b78c8d5248aa..c2a29de976b4ff2cb2a70e1102fda87a2015d7dc 100644 --- a/eu_basynthec/source/html/browser/basynthec-style.css +++ b/eu_basynthec/source/html/browser/basynthec-style.css @@ -16,7 +16,6 @@ h3 { font: 12px; } .strains td { font-family: "Verdana", sans-serif; font-size: 12px; - width: 10%; padding: 6px; } diff --git a/eu_basynthec/source/html/browser/openbis-browser.html b/eu_basynthec/source/html/browser/openbis-browser.html index 2918ce1457ae67cb95df13935b59d07147f8642f..8bf8c110745a8129cf3398b8e179ca48dbe2b80b 100644 --- a/eu_basynthec/source/html/browser/openbis-browser.html +++ b/eu_basynthec/source/html/browser/openbis-browser.html @@ -28,12 +28,12 @@ var dataSetsByStrain = { }; var STRAIN_GROUP_PREFIXES = [ "JJS-DIN", "JJS-MGP" ]; // The names to show the user for the strain groups -var STRAIN_GROUP_PREFIXES_DISPLAY_NAME = {"JJS-DIN" : "JJS-Din", "JJS-MGP" : "JJS-MGP" }; +var STRAIN_GROUP_PREFIXES_DISPLAY_NAME = {"JJS-DIN" : "JJS-DIn", "JJS-MGP" : "JJS-MGP" }; // groups of strains to be displayed var strainGroups = []; -var IGNORED_DATASET_TYPES = [ "EXCEL_ORIGINAL", "UNKNOWN" ]; +var IGNORED_DATASET_TYPES = [ "EXCEL_ORIGINAL", "TSV_EXPORT", "UNKNOWN" ]; //The inspected strains var inspected = []; @@ -67,21 +67,18 @@ function showDataSets(bisDataSets) // group dataSets dataSetsByStrain = basynthec.dataSetList.reduce( - function(result, dataSet) { - - var uniqueStrains = uniqueElements(basynthec.getStrains(dataSet).sort()); - - uniqueStrains.forEach(function(strain) { - if (result[strain]) { - result[strain].push(dataSet); - } else { - result[strain] = [dataSet]; - } - }); - return result - }, {}); - - + function(result, dataSet) { + var uniqueStrains = uniqueElements(basynthec.getStrains(dataSet).sort()); + + uniqueStrains.forEach(function(strain) { + if (result[strain]) { + result[strain].push(dataSet); + } else { + result[strain] = [dataSet]; + } + }); + return result; + }, {}); refreshStrainTables(); } @@ -120,7 +117,7 @@ function refreshStrainTables() { strainGroups = createStrainGroups(strains); createVis(); - updateDiagram(1000); + updateDiagram(1000); } @@ -154,7 +151,13 @@ function updateDiagram(duration) .append("h2") .text(function(d) { return d.groupName }) .append("table") - .selectAll("tr").data(function(d) { var lineSize = (d.groupName.indexOf("Other") == 0) ? 3 : 10; return d.strains.reduce(groupBy(lineSize), []) }) + .selectAll("tr").data(function(d) { + // Group the different sets of strains differently + if (d.groupName.indexOf("Other") == 0) return d.strains.reduce(groupBy(3), []); + if (d.groupName.indexOf("JJS-MGP") == 0) return d.strains.reduce(groupBy(10), []); + + // Group the JJS-DIn strains by runs + return d.strains.reduce(groupByRuns(10), []) }) .enter() .append("tr") .selectAll("td").data(function(d) { return d }) @@ -413,6 +416,44 @@ function groupBy(numElts) return groupBy; } +/** + * Check if the current elt number = last elt number + 1 + */ +function isRun(lastElt, currentElt) { + var lastNumber = Number(lastElt.label); + var currentNumber = Number(currentElt.label); + // Assume that non numeric values are runs + if (lastNumber == NaN || currentNumber == NaN) return true; + + return currentNumber == (lastNumber + 1); +} + +function groupByRuns(maxNumEltsPerGroup) +{ + var lastSeen = ""; + var groupBy = function(groups, elt) { + // Initialize the groups + if (groups.length < 1) { groups.push([elt]); return groups; } + + // Check if we should append to the last group or create a new one + var lastGrp = groups[groups.length - 1]; + var createNewGroup = false; + if (lastGrp.length >= maxNumEltsPerGroup) { + // We've reached the size limit of the group + createNewGroup = true; + } else { + // See if this is a run, if not create a new group + createNewGroup = !isRun(lastGrp[lastGrp.length - 1], elt); + } + + (createNewGroup) ? groups.push([elt]) : lastGrp.push(elt); + + return groups; + } + return groupBy; +} + + $(document).ready(function() { $("#main").hide()