373fab2020528e4b488dffce555dc7cba02cc5a3 kate Sat Oct 29 20:38:01 2011 -0700 1. Add panel of radiobuttons to select track or file search 2. Extensive cleanup diff --git src/hg/js/encodeDataSummary.js src/hg/js/encodeDataSummary.js index bb18ecd..16fd828 100644 --- src/hg/js/encodeDataSummary.js +++ src/hg/js/encodeDataSummary.js @@ -7,111 +7,95 @@ /*global $, encodeProject */ $(function () { var selectedDataType = null, dataTypeLabelHash = {}, server, requests = [ // Requests to server API encodeProject.serverRequests.experiment, encodeProject.serverRequests.dataType, encodeProject.serverRequests.antibody]; function tableOut(table, types, exps, selectableData) { // Helper function to output tables to document var total = 0, row = 0, - assembly = encodeDataSummary_assembly + assembly = encodeDataSummary_assembly; - // lay out table $.each(exps, function (key, value) { types.push(key); total += parseInt(value, 10); }); types.sort(); + + // lay out table $.each(types, function (i, value) { if (dataTypeLabelHash[value]) { description = dataTypeLabelHash[value].description; } else { description = ''; } // quote the end tags so HTML validator doesn't whine $(table).append("<tr class='" + (row % 2 === 0 ? "even" : "odd") + "'><td title='" + description + "'>" + value + "<\/td><td id='" + value + "' class='dataItem' title='Click to search for " + value + " data'>" + exps[value] + "<\/td><\/tr>"); row++; }); - if (selectableData) { - // TODO: suppress 'Click' title for non-selectables - //if (!selectableData) { - //$(".dataItem").removeAttr("title"); - //} else { - // set up search buttons, initially disabled (must select data to enable) - $(".searchButton").attr("disabled", "true"); - $("#buttonTrackSearch").click(function () { - // TODO: base on preview - window.location = "/cgi-bin/hgTracks?db=" + assembly + "&tsCurTab=advancedTab&hgt_tsPage=&hgt_tSearch=search&hgt_mdbVar1=dataType&hgt_mdbVal1=" + selectedDataType; - }); - $("#buttonFileSearch").click(function () { - // TODO: base on preview - window.location = "/cgi-bin/hgFileSearch?db=" + assembly + "&tsCurTab=advancedTab&hgt_tsPage=&hgt_tSearch=search&hgt_mdbVar1=dataType&hgt_mdbVal1=" + selectedDataType; - }); - // set up selectability on data types + if (selectableData) { $(".dataItem").addClass("selectable"); $(".dataItem").click(function () { - if (selectedDataType === null) { - $(this).addClass("selected"); - selectedDataType = $(this).attr("id"); - $(".searchButton").removeAttr("disabled"); - } else { - if ($(this).hasClass("selected")) { - selectedDataType = null; - $(this).removeClass("selected"); - $(".searchButton").attr("disabled", "true"); - } else { - $(".selected").removeClass("selected"); - $(this).addClass("selected"); - } - } + // TODO: base on preview ? + var term = dataTypeLabelHash[$(this).attr("id")].term; + var url = encodeProject.getSearchUrl(assembly); + url += + ('&hgt_mdbVar1=dataType&hgt_mdbVal1=' + term + + '&hgt_mdbVar2=view&hgt_mdbVal2=Any'); + // TODO: open search window + //window.open(url, "searchWindow"); + window.location = url; + // TODO: if antibody table, add mdbVar2 and mdbVal2 + // TODO: same for histones }); } + $(table).append("<tr><td class='totals'>Total: " + types.length + "<\/td><td class='totals'>" + total + "<\/td><\/tr>"); if (total === 0) { $(table).remove(); } } function handleServerData(responses) { // Main actions, called when loading data from server is complete var experiments = responses[0], dataTypes = responses[1], antibodies = responses[2], antibodyHash = {}, dataTypeHash = {}, refGenomeExps = {}, cellAssayExps = {}, tfbsExps = {}, antibody, target, dataType, total, refGenomeTypes = [], elementTypes = [], tfbsTypes = [], organism, assembly, header; // variables passed in hidden fields organism = encodeDataSummary_organism; assembly = encodeDataSummary_assembly; header = encodeDataSummary_pageHeader; $("#pageHeader").text(header); - $("title").text('ENCODE ' + header); + document.title = 'ENCODE ' + header; $.each(antibodies, function (i, item) { antibodyHash[item.term] = item; }); $.each(dataTypes, function (i, item) { dataTypeHash[item.term] = item; dataTypeLabelHash[item.label] = item; }); $.each(experiments, function (i, exp) { // todo: filter out with arg to hgApi if (exp.organism !== organism) { return true; } antibody = encodeProject.antibodyFromExp(exp); @@ -141,37 +125,43 @@ tfbsExps[target] = 0; } tfbsExps[target]++; } } else { dataType = dataTypeHash[exp.dataType].label; if (!cellAssayExps[dataType]) { cellAssayExps[dataType] = 0; } cellAssayExps[dataType]++; } }); // fill in tables and activate buttons tableOut("#refGenomeTable", refGenomeTypes, refGenomeExps, true); - tableOut("#elementTable", elementTypes, cellAssayExps, false); + tableOut("#elementTable", elementTypes, cellAssayExps, true); $("#buttonDataMatrix").click(function () { window.location = "encodeDataMatrixHuman.html"; }); + // TODO: enable selectable items in antibody table tableOut("#tfbsTable", tfbsTypes, tfbsExps, false); $("#buttonChipMatrix").click(function () { window.location = "encodeChipMatrixHuman.html"; }); } // get server from calling web page (intended for genome-preview) if ('encodeDataMatrix_server' in window) { server = encodeDataMatrix_server; } else { server = document.location.hostname; // or document.domain ? } // initialize encodeProject.setup({ server: server }); + + // add radio buttons for search type to specified div on page + encodeProject.addSearchPanel('#searchTypePanel'); + + // load data from server encodeProject.loadAllFromServer(requests, handleServerData); });