src/hg/js/hui.js 1.20
1.20 2009/02/26 03:56:15 tdreszer
Fixed some less efficient jQuery calls.
Index: src/hg/js/hui.js
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/hui.js,v
retrieving revision 1.19
retrieving revision 1.20
diff -b -B -U 4 -r1.19 -r1.20
--- src/hg/js/hui.js 9 Feb 2009 19:46:15 -0000 1.19
+++ src/hg/js/hui.js 26 Feb 2009 03:56:15 -0000 1.20
@@ -7,8 +7,17 @@
//var viewDDtoMatCB = true; //true;
//var matCBwithViewDD = true;
//var subCBtoMatCB = true;
//var matCBtoSubCB = true; // Always
+//var now = new Date();
+//var start = now.getTime();
+//$(window).load(function () {
+// if(start != null) {
+// now = new Date();
+// alert("Loading took "+(now.getTime() - start)+" msecs.");
+// }
+//});
+
// The 'mat*' functions are especially designed to support subtrack configuration by 2D matrix of controls
function matSelectViewForSubTracks(obj,view)
@@ -18,9 +27,9 @@
if( obj.selectedIndex == 0) { // hide
if(viewDDtoSubCBhide) {
matSetSubtrackCheckBoxes(false,view);
//if(viewDDtoMatCB)
- // $(":checkbox").filter(".matrixCB").filter(":checked").each( function (i) { matChkBoxNormalize(this); } );
+ // $("input.matrixCB").filter(":checked").each( function (i) { matChkBoxNormalize(this); } );
}
matEnableSubtrackCheckBoxes(false,view);
} else {
// Make main display dropdown show full if currently hide
@@ -39,15 +48,15 @@
displayDD[0].selectedIndex = maxVis;
}
// if matrix used then: essentially reclick all 'checked' matrix checkboxes
if(viewDDtoSubCB) {
- var CBs = $(":checkbox").filter(".matrixCB").filter(":checked");
+ var CBs = $("input.matrixCB").filter(":checked");
if(CBs.length > 0) {
var classSets = new Array();
CBs.each( function (i) { classSets.push( $(this).attr("class") ); } );
if(classSets.length > 0) {
// Now it would be good to create a list of all subtrack CBs that match view,unchecked, and a class set (pair or triplet!)
- CBs = $(":checkbox").filter(".subtrackCB").filter("."+view).not(":checked");
+ CBs = $("input.subtrackCB").filter("."+view).not(":checked");
if(CBs.length > 0) {
while(classSets.length > 0) {
var OneOrMoreClasses = classSets.pop();
var JustTheseCBs = CBs;
@@ -67,9 +76,9 @@
matSetSubtrackCheckBoxes(true,view);
}
//if(viewDDtoMatCB)
// matChkBoxesNormalized();
- // //$(":checkbox").filter(".matrixCB").not(":checked").each( function (i) { matChkBoxNormalize(this); } );
+ // //$("input.matrixCB").not(":checked").each( function (i) { matChkBoxNormalize(this); } );
matEnableSubtrackCheckBoxes(true,view);
}
}
@@ -77,21 +86,21 @@
{
// Set all Matrix checkboxes to state. If additional arguments are passed in, the list of CBs will be narrowed by the classes
var CBs;
if(state)
- CBs = $(":checkbox").filter(".matrixCB").not(":checked");
+ CBs = $("input.matrixCB").not(":checked");
else
- CBs = $(":checkbox").filter(".matrixCB").filter(":checked");
+ CBs = $("input.matrixCB").filter(":checked");
for(var vIx=1;vIx<arguments.length;vIx++) {
CBs = CBs.filter("."+arguments[vIx]); // Successively limit list by additional classes.
}
CBs.each( function (i) { this.checked = state;} )
//CBs.each( function (i) { if(this.checked != state) this.click();} )
if(state)
- CBs = $(":checkbox").filter(".subtrackCB").not(":checked");
+ CBs = $("input.subtrackCB").not(":checked");
else
- CBs = $(":checkbox").filter(".subtrackCB").filter(":checked");
+ CBs = $("input.subtrackCB").filter(":checked");
for(var vIx=1;vIx<arguments.length;vIx++) {
CBs = CBs.filter("."+arguments[vIx]); // Successively limit list by additional classes.
}
//if(matCBwithViewDD) {
@@ -109,9 +118,9 @@
function matSetSubtrackCheckBoxes(state)
{
// Set all subtrack checkboxes to state. If additional arguments are passed in, the list of CBs will be narrowed by the classes
- var CBs = $(":checkbox").filter(".subtrackCB");
+ var CBs = $("input.subtrackCB");
for(var vIx=1;vIx<arguments.length;vIx++) {
CBs = CBs.filter("."+arguments[vIx]); // Successively limit list by additional classes.
}
//if(matCBwithViewDD) {
@@ -129,9 +138,9 @@
function matEnableSubtrackCheckBoxes(state)
{
// Enables/Disables subtracks checkboxes. If additional arguments are passed in, the list of CBs will be narrowed by the classes
- var CBs = $(":checkbox").filter(".subtrackCB");
+ var CBs = $("input.subtrackCB");
for(var vIx=1;vIx<arguments.length;vIx++) {
CBs = CBs.filter("."+arguments[vIx]); // Successively limit list by additional classes.
}
//if(matCBwithViewDD) {
@@ -615,27 +624,31 @@
function matChkBoxNormalize(matCb)
{
var classes = $( matCb ).attr("class").split(" ");
- var CBs = $(":checkbox").filter(".subtrackCB");
+ var CBs = $("input.subtrackCB");
+ if(CBs.length > 0) {
while(classes.length > 0) {
var thisClass = classes.pop();
if(thisClass != "matrixCB")
CBs = CBs.filter("."+thisClass); // Filter subtrack CBs with only matrixCB's classes (Must redefine CBs each time)
}
+ }
+ if(CBs.length > 0) {
var CBsChecked = CBs.filter(":checked");
if(CBsChecked.length == CBs.length)
matCb.checked=true;
else if(CBsChecked.length == 0)
matCb.checked=false;
+ }
}
// Obsolete because viewDDtoMatCB=false and subCBtoMatCB=false
//function matChkBoxNormalizeMatching(subCb)
//{
//// check/unchecks a matrix checkbox based upon subtrack checkboxes
//// the matrix cb is the one that matches the subtrack cb provided
// var classes = $( subCb ).attr("class").split(" ");
-// var CBs = $(":checkbox").filter(".matrixCB");
+// var CBs = $("input.matrixCB");
// for (var ix=1;ix<classes.length - 1;ix++) {// 1st one should be "subtrackCB"; one should be view
// if(ix < 3)
// CBs = CBs.filter("."+classes[ix]); // If there is a non-view 3rd class then it is the Z dimension
// }
@@ -643,9 +656,9 @@
// for (var ix=0;ix<CBs.length;ix++) {
// matChkBoxNormalize(CBs[ix]);
// }
// if(classes.length > 4) { // Must have a Z dimension
-// CBs = $(":checkbox").filter(".matrixCB").filter("."+classes[3]);
+// CBs = $("input.matrixCB").filter("."+classes[3]);
// // There should be only one!
// for (var ix=0;ix<CBs.length;ix++) {
// matChkBoxNormalize(CBs[ix]);
// }
@@ -654,18 +667,14 @@
function matChkBoxesNormalized()
{
// check/unchecks matrix checkboxes based upon subtrack checkboxes
- $(":checkbox").filter(".matrixCB").each( function (i) { matChkBoxNormalize(this); } );
+ $("input.matrixCB").each( function (i) { matChkBoxNormalize(this); } );
- var views = getViewsSelected("_dd_",false); // get views (strings) that are off
- for(var vIx=0;vIx<views.length;vIx++) {
- matEnableSubtrackCheckBoxes(false,views[vIx]);
- }
- //views = getViewsSelected("_dd_",true); // get views (strings) that are on
- //for(var vIx=0;vIx<views.length;vIx++) {
- // matEnableSubtrackCheckBoxes(true,views[vIx]);
- //}
+ // For each viewDD not selected, disable associated subtracks
+ $('select.viewDd').not('[@selectedIndex]').each( function (i) {
+ var viewClass = this.name.substring(this.name.lastIndexOf("_") + 1);
+ matEnableSubtrackCheckBoxes(false,viewClass); } );
}
function showOrHideSelectedSubtracks(inp)
{
@@ -673,18 +682,17 @@
var showHide;
if(arguments.length > 0)
showHide=inp;
else {
- var onlySelected = inputArrayThatMatches("radio","name","displaySubtracks","");
+ var onlySelected = $("input[name='displaySubtracks']");
if(onlySelected.length > 0)
showHide = onlySelected[0].checked;
else
return;
}
showSubTrackCheckBoxes(showHide);
- var list = document.getElementsByTagName('table');
+ var list = $("table.tableSortable")
for(var ix=0;ix<list.length;ix++) {
- if(list[ix].id.lastIndexOf(".sortable") == list[ix].id.length - 9) {
var columns = new sortColumnsGetFromTable(list[ix]);
var tbody = list[ix].getElementsByTagName('tbody');
if(columns.tags.length>1) {
if(columns.tags.length==2)
@@ -694,9 +702,8 @@
else
trAlternateColors(tbody[0],columns.cellIxs[0],columns.cellIxs[1],columns.cellIxs[2]);
}
}
- }
}
///// Following functions called on page load
function matInitializeMatrix()