sidebar defaults follow params; fix state saving

This commit is contained in:
Oliver Gorwits
2014-10-25 21:20:28 +01:00
parent bd3bcb36f8
commit 2e29f0b11d
3 changed files with 30 additions and 27 deletions

View File

@@ -16,6 +16,10 @@
}); });
}, },
"stateSaveParams": function (settings, data) { "stateSaveParams": function (settings, data) {
var pgtitle = update_page_title('[% tabname %]');
update_browser_history('[% tabname %]', pgtitle, '');
// TODO: would be nice to update CSV link too
var datatable = $('#[% tabname %]_pane').find('table').first().DataTable(); var datatable = $('#[% tabname %]_pane').find('table').first().DataTable();
// if no existing state, all columns default to visible. // if no existing state, all columns default to visible.
// on table load, state is saved... we can find out whether there was // on table load, state is saved... we can find out whether there was
@@ -23,9 +27,11 @@
// visibility. // visibility.
if (datatable.state.loaded() === null) { if (datatable.state.loaded() === null) {
$('#[% tabname %]_form').find('input[type="checkbox"]').each( function() { $('#[% tabname %]_form').find('input[type="checkbox"]').each( function() {
var id = $(this).attr('id'); var id = $(this).attr('id');
if (datatable.column( id + ':name' ).length === 1) { var col = datatable.column( id + ':name' );
datatable.column( id + ':name' ).visible( $(this).prop('checked') ); if (col.length === 1) {
col.visible( $(this).prop('checked') );
data.columns[col.index()].visible = $(this).prop('checked');
} }
}); });
} }

View File

@@ -148,16 +148,6 @@
update_csv_download_link('device', '[% tab.tag %]', '[% tab.provides_csv %]'); update_csv_download_link('device', '[% tab.tag %]', '[% tab.provides_csv %]');
[% IF tab.tag == 'ports' %] [% IF tab.tag == 'ports' %]
// to be fair I can't remember why we do this in JS and not from the app
// perhaps because selecting form fields to go in the cookie is easier?
var cookie = $('#ports_form').find('input,select')
.not('#nd_port-query,input[name="q"],input[name="tab"]')
.serializeArray();
$('#ports_form').find('input[type="checkbox"]').map(function() {
cookie.push({'name': 'columns', 'value': $(this).attr('name')});
});
$.cookie('nd_ports-form', $.param(cookie) ,{ expires: 365 });
// form reset icon on ports tab // form reset icon on ports tab
$('#nd_sidebar-reset-link').attr('href', uri_base + '/device/[% tab.tag %]?reset=on&' + $('#nd_sidebar-reset-link').attr('href', uri_base + '/device/[% tab.tag %]?reset=on&' +
$('#ports_form') $('#ports_form')

View File

@@ -58,17 +58,17 @@
<div id="nd_columns" class="collapse in"> <div id="nd_columns" class="collapse in">
<ul id="nd_column-controls" class="nd_inputs-list unstyled"> <ul id="nd_column-controls" class="nd_inputs-list unstyled">
[% FOREACH entry IN settings.table_display.$section.${tab.tag}.columns %] [% FOREACH entry IN settings.table_display.$section.${tab.tag}.columns %]
[% NEXT IF entry.keys.first == 'c_admin' AND NOT user_has_role('port_control') %] [% SET keyname = entry.keys.first %]
[% NEXT IF keyname == 'c_admin' AND NOT user_has_role('port_control') %]
<li> <li>
<label class="checkbox"> <label class="checkbox">
<!-- FIXME look at param not default -->
<input type="checkbox" class="nd_dynamic-dp" <input type="checkbox" class="nd_dynamic-dp"
[% ' checked="checked"' IF entry.item(entry.keys.first).default %] [% ' checked="checked"' IF (params.$keyname || entry.item(keyname).default) %]
id="[% entry.keys.first | html_entity %]" name="[% entry.keys.first | html_entity %]" /> id="[% keyname | html_entity %]" name="[% keyname | html_entity %]" />
[% IF entry.item(entry.keys.first).highlight %] [% IF entry.item(keyname).highlight %]
<span class="label label-info">[% entry.item(entry.keys.first).label | html_entity %]</span> <span class="label label-info">[% entry.item(keyname).label | html_entity %]</span>
[% ELSE %] [% ELSE %]
[% entry.item(entry.keys.first).label | html_entity %] [% entry.item(keyname).label | html_entity %]
[% END %] [% END %]
</label> </label>
</li> </li>
@@ -110,7 +110,8 @@
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="neigh_id" <input type="checkbox" class="nd_dynamic-dp" id="neigh_id"
name="neigh_id"[% ' checked="checked"' IF params.neigh_id %] /> name="neigh_id"[% ' checked="checked"' IF
(params.neigh_id || settings.table_display.$section.${tab.tag}.content.neigh_id) %] />
Connected Device ID Connected Device ID
</label> </label>
</li> </li>
@@ -135,42 +136,48 @@
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_age" <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 %] /> name="n_age"[% ' checked="checked"' IF
(params.n_age || settings.table_display.$section.${tab.tag}.content.n_age) %] />
Age Stamp Age Stamp
</label> </label>
</li> </li>
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_ip" <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 %] /> name="n_ip"[% ' checked="checked"' IF
(params.n_ip || settings.table_display.$section.${tab.tag}.content.n_ip) %] />
IP Address IP Address
</label> </label>
</li> </li>
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_netbios" <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 %] /> name="n_netbios"[% ' checked="checked"' IF
(params.n_netbios || settings.table_display.$section.${tab.tag}.content.n_netbios) %] />
NetBIOS NetBIOS
</label> </label>
</li> </li>
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_ssid" <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 %] /> name="n_ssid"[% ' checked="checked"' IF
(params.n_ssid || settings.table_display.$section.${tab.tag}.content.n_ssid) %] />
SSID SSID
</label> </label>
</li> </li>
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_vendor" <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 %] /> name="n_vendor"[% ' checked="checked"' IF
(params.n_vendor || settings.table_display.$section.${tab.tag}.content.n_vendor) %] />
Vendor Vendor
</label> </label>
</li> </li>
<li> <li>
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="nd_dynamic-dp" id="n_archived" <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 %] /> name="n_archived"[% ' checked="checked"' IF
(params.n_archived || settings.table_display.$section.${tab.tag}.content.n_archived) %] />
Archived Data Archived Data
</label> </label>
</li> </li>