Add 'Show All' / 'Hide All' toggle

This adds a global control that does show / hide of all collapseable
sections. Which is extremely useful in seeing the entire API at once.

Part of bp:api-ref-in-rst

Change-Id: I814e6b2c20c25bf3d4cb4e722bc8157ca0aa1b89
This commit is contained in:
Sean Dague 2016-04-14 07:34:15 -04:00
parent 19712dccce
commit e51b8f43e1
3 changed files with 49 additions and 1 deletions

View File

@ -65,6 +65,17 @@ class rest_method(nodes.Part, nodes.Element):
pass pass
class rest_expand_all(nodes.Part, nodes.Element):
pass
class RestExpandAllDirective(Directive):
has_content = True
def run(self):
return [rest_expand_all()]
class RestMethodDirective(Directive): class RestMethodDirective(Directive):
# this enables content in the directive # this enables content in the directive
@ -295,6 +306,22 @@ def rest_method_html(self, node):
raise nodes.SkipNode raise nodes.SkipNode
def rest_expand_all_html(self, node):
tmpl = """
<div>
<div class=col-md-11></div>
<div class=col-md-1>
<button id="expand-all"
data-toggle="collapse"
class="btn btn-info btn-sm btn-expand-all"
>Show All</button>
</div>
</div>"""
self.body.append(tmpl % node)
raise nodes.SkipNode
def resolve_rest_references(app, doctree): def resolve_rest_references(app, doctree):
for node in doctree.traverse(): for node in doctree.traverse():
if isinstance(node, rest_method): if isinstance(node, rest_method):
@ -330,8 +357,11 @@ def resolve_rest_references(app, doctree):
def setup(app): def setup(app):
app.add_node(rest_method, app.add_node(rest_method,
html=(rest_method_html, None)) html=(rest_method_html, None))
app.add_node(rest_expand_all,
html=(rest_expand_all_html, None))
app.add_directive('rest_parameters', RestParametersDirective) app.add_directive('rest_parameters', RestParametersDirective)
app.add_directive('rest_method', RestMethodDirective) app.add_directive('rest_method', RestMethodDirective)
app.add_directive('rest_expand_all', RestExpandAllDirective)
app.add_stylesheet('bootstrap.min.css') app.add_stylesheet('bootstrap.min.css')
app.add_stylesheet('api-site.css') app.add_stylesheet('api-site.css')
app.add_javascript('bootstrap.min.js') app.add_javascript('bootstrap.min.js')

View File

@ -19,6 +19,21 @@
processButton(this, 'close'); processButton(this, 'close');
}); });
var expandAllActive = true;
// Expand the world
$('#expand-all').click(function () {
if (expandAllActive) {
expandAllActive = false;
$('.api-detail').collapse('show');
$('#expand-all').attr('data-toggle', '');
$(this).text('Hide All');
} else {
expandAllActive = true;
$('.api-detail').collapse('hide');
$('#expand-all').attr('data-toggle', 'collapse');
$(this).text('Show All');
}});
// Wire up the search button // Wire up the search button
$('#search-btn').on('click', function(e) { $('#search-btn').on('click', function(e) {
searchPage(); searchPage();

View File

@ -3,6 +3,9 @@
============= =============
Compute API Compute API
============= =============
.. rest_expand_all::
.. include:: versions.inc .. include:: versions.inc
.. include:: servers.inc .. include:: servers.inc
.. include:: servers-multiple-create.inc .. include:: servers-multiple-create.inc