src/hg/js/hui.js 1.32
1.32 2009/09/08 21:11:48 tdreszer
Cleaned up more non-jquery syntax and made multi-selects work with subtrack cfg updating
Index: src/hg/js/hui.js
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/hui.js,v
retrieving revision 1.31
retrieving revision 1.32
diff -b -B -U 4 -r1.31 -r1.32
--- src/hg/js/hui.js 5 Sep 2009 01:20:14 -0000 1.31
+++ src/hg/js/hui.js 8 Sep 2009 21:11:48 -0000 1.32
@@ -244,34 +244,48 @@
function compositeCfgUpdateSubtrackCfgs(inp)
{
// Updates all subtrack configuration values when the composite cfg is changed
- var suffix = inp.name.substring(inp.name.indexOf("."));
+ var suffix = inp.name.substring(inp.name.indexOf(".")); // Includes '.'
//if(suffix.length==0)
// suffix = inp.name.substring(inp.name.indexOf("_"));
if(suffix.length==0) {
- //alert("Unable to parse '"+inp.name+"'");
+ alert("Unable to parse '"+inp.name+"'");
return true;
}
- var list = $("input[name$='"+suffix+"']");
+ var list = $("input[name$='"+suffix+"']").not("[name='"+inp.name+"']"); // Exclude self from list
if($(list).length>0)
$(list).val(inp.value);
else {
- list = $("select[name$='"+suffix+"']");
- if($(list).length>0)
+ list = $("select[name$='"+suffix+"']").not("[name='"+inp.name+"']"); // Exclude self from list
+ if($(list).length>0) {
+ if(inp.multiple != true)
$(list).attr('selectedIndex',inp.selectedIndex);
+ else {
+ $(list).each(function() { // for all dependent (subtrack) multi-selects
+ sel = this;
+ $(this).children('option').each(function() { // for all options of dependent mult-selects
+ $(this).attr('selected',$(inp).children('option:eq('+this.index+')').attr('selected')); // set selected state to independent (parent) selected state
+ });
+ $(this).attr('size',$(inp).attr('size'));
+ });
+ }
+ } else {
+ alert("Unsupported type of multi-level cfg setting type='"+inp.type+"'");
+ return false;
+ }
}
return true;
}
function compositeCfgRegisterOnchangeAction(prefix)
{
// After composite level cfg settings written to HTML it is necessary to go back and
// make sure that each time they change, any matching subtrack level cfg setting are changed.
- var list = $("input[name^='"+prefix+"']").not("[name$='.vis']");
+ var list = $("input[name^='"+prefix+".']").not("[name$='.vis']");
$(list).change(function(){compositeCfgUpdateSubtrackCfgs(this);});
- var list = $("select[name^='"+prefix+"']").not("[name$='.vis']");
+ var list = $("select[name^='"+prefix+".']").not("[name$='.vis']");
$(list).change(function(){compositeCfgUpdateSubtrackCfgs(this);});
}
@@ -830,15 +844,15 @@
}
function multiSelectBlur(obj)
{
- if(obj.value == undefined || obj.value == "") {
- obj.value = "All";
- obj.selectedIndex = 0;
+ if($(obj).val() == undefined || $(obj).val() == "") {
+ $(obj).val("All");
+ $(obj).attr('selectedIndex',0);
}
//if(obj.value == "All") // Close if selected index is 1
- if(obj.selectedIndex == 0) // Close if selected index is 1
- obj.size=1;
+ if($(obj).attr('selectedIndex') == 0) // Close if selected index is 1
+ $(obj).attr('size',1);
/*else if($.browser.msie == false && $(obj).children('option[selected]').length==1) {
var ix;
for(ix=0;ix<obj.options.length;ix++) {
if(obj.options[ix].value == obj.value) {
@@ -853,12 +867,12 @@
}
function multiSelectClick(obj,sizeWhenOpen)
{
- if(obj.size == 1)
- obj.size=sizeWhenOpen;
- else if(obj.selectedIndex == 0)
- obj.size=1;
+ if($(obj).attr('size') == 1)
+ $(obj).attr('size',sizeWhenOpen);
+ else if($(obj).attr('selectedIndex') == 0)
+ $(obj).attr('size',1);
}
// The following js depends upon the jQuery library
$(document).ready(function()