Between page reloads, Drill Down parameter type will now keep parent nodes expanded when a descendant is selected.

This commit is contained in:
Daniel Blankenberg
2008-08-27 16:36:41 -04:00
parent d294f00821
commit 2d65cd378b
3 changed files with 30 additions and 16 deletions
+4 -4
View File
@@ -729,13 +729,13 @@ class DrillDownSelectToolParameter( ToolParameter ):
>>> print p.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="some_name" value="option1"">Option 1
</li>
<li><input type="checkbox" name="some_name" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="some_name" value="option3"">Option 3
</li>
<li><input type="checkbox" name="some_name" value="option4"">Option 4
@@ -766,13 +766,13 @@ class DrillDownSelectToolParameter( ToolParameter ):
>>> print p.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="some_name" value="option1"">Option 1
</li>
<li><input type="radio" name="some_name" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="some_name" value="option3"">Option 3
</li>
<li><input type="radio" name="some_name" value="option4"">Option 4
+23 -9
View File
@@ -203,13 +203,13 @@ class DrillDownField( BaseField ):
>>> print t.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="foo" value="option1"">Option 1
</li>
<li><input type="checkbox" name="foo" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="foo" value="option3"">Option 3
</li>
<li><input type="checkbox" name="foo" value="option4"">Option 4
@@ -225,13 +225,13 @@ class DrillDownField( BaseField ):
>>> print t.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="foo" value="option1"">Option 1
</li>
<li><input type="radio" name="foo" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable">
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="foo" value="option3"">Option 3
</li>
<li><input type="radio" name="foo" value="option4"">Option 4
@@ -266,22 +266,36 @@ class DrillDownField( BaseField ):
else:
self.refresh_on_change_text = ''
def get_html( self, prefix="" ):
def recurse_options( html, options ):
def find_expanded_options( expanded_options, options, parent_options = [] ):
for option in options:
if option['value'] in self.value:
expanded_options.extend( parent_options )
if option['options']:
new_parents = list( parent_options ) + [ option['value'] ]
find_expanded_options( expanded_options, option['options'], new_parents )
def recurse_options( html, options, expanded_options = [] ):
for option in options:
selected = ( option['value'] in self.value )
if selected: selected = ' checked'
else: selected = ''
if option['options']:
html.append( '<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="%s" name="%s%s" value="%s"%s">%s' % ( self.display, prefix, self.name, option['value'], selected, option['name']) )
html.append( '<ul class="toolParameterExpandableCollapsable">')
recurse_options( html, option['options'] )
default_state = 'collapsed'
default_icon = '[+]'
if option['value'] in expanded_options:
default_state = 'expanded'
default_icon = '[-]'
html.append( '<li><span class="toolParameterExpandableCollapsable">%s</span><input type="%s" name="%s%s" value="%s"%s">%s' % ( default_icon, self.display, prefix, self.name, option['value'], selected, option['name']) )
html.append( '<ul class="toolParameterExpandableCollapsable" default_state="%s">' % default_state )
recurse_options( html, option['options'], expanded_options )
html.append( '</ul>')
else:
html.append( '<li><input type="%s" name="%s%s" value="%s"%s">%s' % ( self.display, prefix, self.name, option['value'], selected, option['name']) )
html.append( '</li>' )
rval = []
rval.append( '<div><ul class="toolParameterExpandableCollapsable">' )
recurse_options( rval, self.options )
expanded_options = []
find_expanded_options( expanded_options, self.options )
recurse_options( rval, self.options, expanded_options )
rval.append( '</ul></div>' )
return '\n'.join( rval )
+3 -3
View File
@@ -126,7 +126,7 @@ jQuery( function() {
<input type="submit" class="primary-button" name="runtool_btn" value="Execute">
#else
<div style="display: none;">
#if $tool_state.page == $tool.last_page
<input type="submit" class="primary-button" name="runtool_btn" value="Execute">
@@ -142,7 +142,7 @@ jQuery( function() {
<input type="submit" class="primary-button" name="runtool_btn" value="Next step">
#end if
</div>
#end if
</form>
@@ -178,7 +178,7 @@ jQuery( function() {
}
});
\$( 'ul ul' ).each( function(i) {
if ( \$( this )[0].className == 'toolParameterExpandableCollapsable' )
if ( \$( this )[0].className == 'toolParameterExpandableCollapsable' && this.attributes.getNamedItem( 'default_state' ).value == 'collapsed' )
{
\$( this ).hide();
}