sidebar built from config, colvis defaults from sidebar

This commit is contained in:
Oliver Gorwits
2014-10-25 19:19:56 +01:00
parent ca6a08ef46
commit bd3bcb36f8
7 changed files with 168 additions and 92 deletions

View File

@@ -11,23 +11,22 @@
},
"rowCallback": function (row, data) {
// update in-cell content based on current sidebar settings
[% FOREACH key IN settings.table_display.device.ports.keys %]
if ($('#dp-data-table').DataTable().column('[% key %]:name').length === 0) {
$(row).find('span.[% key %]').toggle( $("input[id='[% key %]']").prop('checked') );
}
[% END %]
$('.nd_dynamic-dp').each( function() {
$(row).find('span.' + $(this).attr('id')).toggle( $(this).prop('checked') );
});
},
"stateLoadParams": function (settings, data) {
// enforce config defaults for columns
// TODO: allow state loading
[% FOREACH key IN settings.table_display.device.ports.keys %]
if (data.columns[$('#dp-data-table').DataTable().column('[% key %]:name').index()]) {
data.columns[$('#dp-data-table').DataTable().column('[% key %]:name').index()].visible
= [% (settings.table_display.device.ports.$key == 'on') ? 'true' : 'false' %];
"stateSaveParams": function (settings, data) {
var datatable = $('#[% tabname %]_pane').find('table').first().DataTable();
// if no existing state, all columns default to visible.
// on table load, state is saved... we can find out whether there was
// loaded state, and if not, use this hook to set initial column
// visibility.
if (datatable.state.loaded() === null) {
$('#[% tabname %]_form').find('input[type="checkbox"]').each( function() {
var id = $(this).attr('id');
if (datatable.column( id + ':name' ).length === 1) {
datatable.column( id + ':name' ).visible( $(this).prop('checked') );
}
});
}
else {
$("input[id='[% key %]']").prop('checked',
[% (settings.table_display.device.ports.$key == 'on') ? 'true' : 'false' %]);
}
[% END %]
}

View File

@@ -30,7 +30,7 @@
$(document).ready(function() {
var freeDate = moment().subtract( [% params.age_num %], '[% params.age_unit %]' );
var table = $('#dp-data-table').dataTable({
$('#dp-data-table').dataTable({
"deferRender": true,
"order": [[ 1, "asc" ]],
"colVis": {
@@ -569,40 +569,6 @@ $(document).ready(function() {
[% INCLUDE 'ajax/datatabledefaults.tt' -%]
});
// display the column show/hide buttons in the sidebar
var colvis = new $.fn.dataTable.ColVis( table );
var columns = colvis.s.dt.aoColumns;
// first remove existing controls, in case indexes have changed
$('#nd_column-controls').find('.nd_colvis-checkbox').remove();
if ( $.inArray( 'all', colvis.s.exclude ) === -1 ) {
for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) {
if ( $.inArray( i, colvis.s.exclude ) === -1 ) {
var button = colvis.dom.buttons.shift();
if (columns[i]["name"] == "icon") {
continue;
}
$(button).addClass('nd_colvis-checkbox');
$(button).find('label').addClass('checkbox');
$(button).find('input').attr('id', columns[i]["name"]);
$(button).find('input').attr('name', columns[i]["name"]);
if (columns[i]["name"] == "c_neighbors") {
$(button).find('span').text('Connected Devices');
}
// need to re-activate tooltips on new content
$(button).click(function() {
$("[rel=tooltip]").tooltip({live: true});
});
$('#nd_column-controls').append( button );
}
}
}
});
//]]>
</script>

View File

@@ -18,7 +18,7 @@
method="get" action="[% uri_for("/device/${tab.tag}") %]">
[% TRY %]
<script type="text/javascript">has_sidebar["[% tab.tag %]"] = 1;</script>
[% INCLUDE "sidebar/device/${tab.tag}.tt" %]
[% PROCESS "sidebar/device/${tab.tag}.tt" %]
[% CATCH %]
<!-- no "[% tab.tag %]" search options -->
<input name="q" value="[% params.q | html_entity %]" type="hidden"/>

View File

@@ -57,22 +57,22 @@
</label></span>
<div id="nd_columns" class="collapse in">
<ul id="nd_column-controls" class="nd_inputs-list unstyled">
[% FOREACH item IN vars.port_columns %]
[% NEXT IF item.name == 'c_admin' AND NOT user_has_role('port_control') %]
[% IF item.name == 'c_admin' OR item.name == 'c_nodes' %]
[% FOREACH entry IN settings.table_display.$section.${tab.tag}.columns %]
[% NEXT IF entry.keys.first == 'c_admin' AND NOT user_has_role('port_control') %]
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="[% item.name | html_entity %]"
name="[% item.name | html_entity %]"[% ' checked="checked"' IF params.${item.name} %] />
[% IF item.name == 'c_admin' %]
<span class="label label-info">[% item.label | html_entity %]</span>
<!-- FIXME look at param not default -->
<input type="checkbox" class="nd_dynamic-dp"
[% ' checked="checked"' IF entry.item(entry.keys.first).default %]
id="[% entry.keys.first | html_entity %]" name="[% entry.keys.first | html_entity %]" />
[% IF entry.item(entry.keys.first).highlight %]
<span class="label label-info">[% entry.item(entry.keys.first).label | html_entity %]</span>
[% ELSE %]
[% item.label | html_entity %]
[% entry.item(entry.keys.first).label | html_entity %]
[% END %]
</label>
</li>
[% END %]
[% END %]
</ul>
</div>
</div>
@@ -132,15 +132,48 @@
[% END %]
</select>
</li>
[% FOREACH item IN vars.connected_properties %]
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="[% item.name | html_entity %]"
name="[% item.name | html_entity %]"[% ' checked="checked"' IF params.${item.name} %] />
[% item.label | html_entity %]
<input type="checkbox" class="nd_dynamic-dp" id="n_age"
name="n_age"[% ' checked="checked"' IF settings.table_display.$section.${tab.tag}.content.n_age %] />
Age Stamp
</label>
</li>
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_ip"
name="n_ip"[% ' checked="checked"' IF settings.table_display.$section.${tab.tag}.content.n_ip %] />
IP Address
</label>
</li>
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_netbios"
name="n_netbios"[% ' checked="checked"' IF settings.table_display.$section.${tab.tag}.content.n_netbios %] />
NetBIOS
</label>
</li>
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_ssid"
name="n_ssid"[% ' checked="checked"' IF settings.table_display.$section.${tab.tag}.content.n_ssid %] />
SSID
</label>
</li>
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_vendor"
name="n_vendor"[% ' checked="checked"' IF settings.table_display.$section.${tab.tag}.content.n_vendor %] />
Vendor
</label>
</li>
<li>
<label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_archived"
name="n_archived"[% ' checked="checked"' IF settings.table_display.$section.${tab.tag}.content.n_archived %] />
Archived Data
</label>
</li>
[% END %]
</ul>
</div>
</div>