8e8d987337d6079c06b6890731449edacfb85a35 kate Thu Nov 3 10:18:20 2011 -0700 Fix some problems with IE due to more stringent (?) JS interpreter: 1. Comma after final property in object 2. Static method invocation diff --git src/hg/js/encodeProject.js src/hg/js/encodeProject.js index d03a9e0..dc0b030 100644 --- src/hg/js/encodeProject.js +++ src/hg/js/encodeProject.js @@ -29,30 +29,45 @@ } return 0; } return { setup: function (settings) { // Change defaults if (settings.server) { server = settings.server; } if (settings.assembly) { assembly = settings.assembly; } }, + cmpNoCase: function (a, b) { + // Helper function for case-insensitive sort - belongs in + // more generic lib + var A, B; + A = a.toUpperCase(); + B = b.toUpperCase(); + if (A < B) { + return -1; + } + if (A > B) { + return 1; + } + return 0; + }, + addSearchPanel: function (divId) { // Create panel of radio buttons for user to select search type // Add to passed in HTML div ID; e.g. #searchTypePanel return $(divId).append('<span id="searchPanelTitle"><strong>Search for:</strong></span><input type="radio" name="searchType" id="searchTracks" value="tracks" checked="checked">Tracks<input type="radio" name="searchType" id="searchFiles" value="files">Files'); }, getSearchUrl: function (assembly, vars) { // Return URL for search of type requested in search panel var prog, cartVar, url; if ($('input:radio[name=searchType]:checked').val() === "tracks") { prog = 'hgTracks'; cartVar = 'hgt_tSearch'; } else { prog = "hgFileSearch"; @@ -94,62 +109,62 @@ }); $.each(dataGroupHash, function (key, item) { if (key === "Other") { otherGroup = item; } else { dataGroups.push(item); } }); dataGroups.sort(cmpCV); dataGroups.push(otherGroup); $.each(dataGroups, function (i, group) { if (!dataGroups[i]) { // for some reason there's __ element here (not my property) return true; } - dataGroups[i].dataTypes.sort(this.cmpNoCase); + dataGroups[i].dataTypes.sort(encodeProject.cmpNoCase); }); return dataGroups; }, getCellTiers: function (cellTypes) { // Return sorted array of cellTier objects each having a .term, // with tier number, .celltypes, // and an array of cell types, alphasorted var cellTiers = [], tier; $.each(cellTypes, function (i, cellType) { tier = cellType.tier; // ignore untiered cell types (all human should have a tier) if (!tier) { return true; } if (!cellTiers[tier]) { cellTiers[tier] = { term: tier, cellTypes: [] }; } cellTiers[tier].cellTypes.push(cellType.term); }); cellTiers.sort(cmpCV); $.each(cellTiers, function (i, tier) { if (!cellTiers[i]) { // for some reason there's __ element here (not my property) return true; } - cellTiers[i].cellTypes.sort(this.cmpNoCase); + cellTiers[i].cellTypes.sort(encodeProject.cmpNoCase); }); return cellTiers; }, isHistone: function (target) { // Helper function, returns true if antibody target histone modification if (target === undefined) { return false; } return target.match(/^H[234]/); }, antibodyFromExp: function (experiment) { // Get antibody from expVars field of experiment var match = experiment.expVars.match(/antibody=(\S+)/); @@ -165,78 +180,63 @@ } }, getAntibodyGroups: function (antibodies) { // Return sorted array of antibodyGroup objects each having a .label // with group name (Histone Modification or Transcription Factor), // and an array of antibody targets, alphasorted var antibodyGroups = [], antibodyGroupHash = {}, group, target; $.each(antibodies, function (i, antibody) { group = encodeProject.isHistone(antibody.target) ? "Histone Modification" : "Transcription Factor"; if (!antibodyGroupHash[group]) { antibodyGroupHash[group] = { label: group, - targets: [], + targets: [] }; } antibodyGroupHash[group].targets.push(antibody.target); }); $.each(antibodyGroupHash, function (key, item) { antibodyGroups.push(item); }); antibodyGroups.sort(cmpCV); $.each(antibodyGroups, function (i, group) { if (!antibodyGroups[i]) { // for some reason there's __ element here (not my property) return true; } - antibodyGroups[i].targets.sort(this.cmpNoCase); + antibodyGroups[i].targets.sort(encodeProject.cmpNoCase); }); return antibodyGroups; }, getExpIdHash: function (expIds) { // Return hash of experiment ID's var expIdHash = {}; $.each(expIds, function (i, expId) { expIdHash[expId.expId] = true; }); return expIdHash; }, // UNTESTED expIdFromAccession: function(accession) { return accession.slice(accessionPrefix.length); }, - cmpNoCase: function (a, b) { - // Helper function for case-insensitive sort - belongs in - // more generic lib - var A, B; - A = a.toUpperCase(); - B = b.toUpperCase(); - if (A < B) { - return -1; - } - if (A > B) { - return 1; - } - return 0; - }, - serverRequests: { // Requests for data from server API experiment: "cmd=encodeExperiments", expId: "cmd=encodeExpId", dataType: "cmd=cv&type=dataType", cellType: "cmd=cv&type=cellType", antibody: "cmd=cv&type=antibody" }, loadAllFromServer: function (requests, handler) { // Execute requests to server via ajax var serverData = [], count = requests.length; $.each(requests, function (i, request) {