f0958c22f5dca692bce772179ab48fe8a8744049 kate Tue Apr 17 22:14:47 2012 -0700 Search needs to clear first three fields in Advanced Tab. Taking this opportunity to generalize generation of search url and move to encodeMatrix lib diff --git src/hg/js/encodeMatrix.js src/hg/js/encodeMatrix.js index b168f7a..522aacc 100644 --- src/hg/js/encodeMatrix.js +++ src/hg/js/encodeMatrix.js @@ -26,50 +26,67 @@ return { // UI panel for search: select tracks or files setFileSearch: function (isFile) { // Set search type cookie to retain user choice document.cookie = "encodeMatrix.search=" + (isFile ? "file" : "track"); }, isFileSearch: function () { // Check search type cookie to retain user choice // Defaults to track search if no cookie set return document.cookie.match(/encodeMatrix.search=file/); }, - getSearchUrl: function (assembly) { - // Return URL for search of type requested in search panel + getSearchUrl: function () { + // Format a URL for search of type requested in search panel + // Args are objects having mdbVar/mdbVal properties + // Set each arg mdbValN to mdbVarN, empty out remaining vals to a total of 6 + // (cheaper than querying for actual number) + + var prog, cartVar, url, i, j; + var argsLen = arguments.length; + var mdbVals = []; - var prog, cartVar, url; if ($('input:radio[name=searchType]:checked').val() === "tracks") { prog = 'hgTracks'; cartVar = 'hgt_tSearch'; } else { prog = "hgFileSearch"; cartVar = "fsFileType=Any&hgfs_Search"; } - url = '/cgi-bin/' + prog + '?db=' + assembly + '&' + cartVar + '=search' + - '&tsCurTab=advancedTab&hgt_tsPage='; + url = '/cgi-bin/' + prog + '?db=' + encodeProject.getAssembly() + + '&' + cartVar + '=search' + '&tsCurTab=advancedTab&hgt_tsPage=' + + '&tsName=&tsDescr=&tsGroup=Any'; + for (i = 0; i < argsLen; i += 1) { + url += '&hgt_mdbVar' + (i + 1) + '=' + arguments[i].mdbVar; + // can pass an array or a single string -- so force to array for uniform handling + // Search sees multiple mdbValN= variables for the same mdbVarN as a list of vals + mdbVals = [].concat(arguments[i].mdbVal); + for (j = 0; j < mdbVals.length; j++) { + url += '&hgt_mdbVal' + (i + 1) + '=' + mdbVals[j]; + } + } + url += '&hgt_mdbVar' + (argsLen + 1) + '=view' + + '&hgt_mdbVal' + (argsLen + 1) + '=Any'; + for (i = argsLen + 1; i < 6; i += 1) { + url += '&hgt_mdbVar' + (i + 1) + '=[]'; + } return (url); }, - getSearchType: function () { - return $('input:radio[name=searchType]:checked').val(); - }, - // General purpose functions start: function ($el) { // Initialize application. Caller passes in jQuery selector object to hide/show // get server from calling web page (e.g. can sub in genome-preview) if ('encodeMatrix_server' in window) { server = encodeMatrix_server; } else { server = document.location.hostname; // or document.domain ? } // variables from calling page organism = encodeMatrix_organism; assembly = encodeMatrix_assembly;