diff --git a/Netdisco/share/public/javascripts/netdisco.js b/Netdisco/share/public/javascripts/netdisco.js
index b55f0dd0..5f6eb821 100644
--- a/Netdisco/share/public/javascripts/netdisco.js
+++ b/Netdisco/share/public/javascripts/netdisco.js
@@ -1,30 +1,13 @@
// parameterised for the active tab - submits search form and injects
// HTML response into the tab pane, or an error/empty-results message
function do_search (event, tab) {
- var form = '#' + tab + '_form';
+ var form = '#' + tab + '_form';
var target = '#' + tab + '_pane';
+ var query = $(form).serialize();
// stop form from submitting normally
event.preventDefault();
- // page title
- var pgtitle = 'Netdisco';
- if ($('#nd_device-name').text().length) {
- var pgtitle = $('#nd_device-name').text() +' - '+ $('#'+ tab + '_link').text();
- }
-
- // each sidebar search form has a hidden copy of the main navbar search
- // query. when the tab query takes place, copy the navbar locally, then
- // replicate to all other tabs.
- if (path != 'report' && path != 'admin') {
- if ($('#nq').val()) {
- $(form).find("input[name=q]").val( $('#nq').val() );
- }
- $('form').find("input[name=q]").each( function() {
- $(this).val( $(form).find("input[name=q]").val() );
- });
- }
-
// hide or show sidebars depending on previous state,
// and whether the sidebar contains any content (detected by TT)
if (has_sidebar[tab] == 0) {
@@ -41,21 +24,6 @@ function do_search (event, tab) {
}
}
- // get the form params
- var query = $(form).serialize();
-
- // update browser search history with the new query.
- // however if it's the same tab, this is a *replace* of the query url.
- // and just skip this bit if it's the report or admin display.
- if (path != 'report' && path != 'admin' && window.History && window.History.enabled) {
- is_from_history_plugin = 1;
- window.History.replaceState(
- {name: tab, fields: $(form).serializeArray()},
- pgtitle, uri_base + '/' + path + '?' + query
- );
- is_from_history_plugin = 0;
- }
-
// in case of slow data load, let the user know
$(target).html(
'
Waiting for results...
'
diff --git a/Netdisco/share/views/js/common.js b/Netdisco/share/views/js/common.js
index 548520a4..48b10561 100644
--- a/Netdisco/share/views/js/common.js
+++ b/Netdisco/share/views/js/common.js
@@ -1,22 +1,77 @@
+ function update_page_title (tab) {
+ var pgtitle = 'Netdisco';
+ if ($('#nd_device-name').text().length) {
+ var pgtitle = $('#nd_device-name').text() +' - '+ $('#'+ tab + '_link').text();
+ }
+ return pgtitle;
+ }
+
+ // update browser search history with the new query.
+ // however if it's the same tab, this is a *replace* of the query url.
+ // and just skip this bit if it's the report or admin display.
+ function update_browser_history (tab, pgtitle) {
+ var form = '#' + tab + '_form';
+ var query = $(form).serialize();
+
+ if (window.History && window.History.enabled) {
+ is_from_history_plugin = 1;
+ window.History.replaceState(
+ {name: tab, fields: $(form).serializeArray()},
+ pgtitle, uri_base + '/' + path + '?' + query
+ );
+ is_from_history_plugin = 0;
+ }
+ }
+
+ // each sidebar search form has a hidden copy of the main navbar search
+ // query. when the tab query takes place, copy the navbar locally, then
+ // replicate to all other tabs.
+ function copy_navbar_to_sidebar (tab) {
+ var form = '#' + tab + '_form';
+
+ if ($('#nq').val()) {
+ $(form).find("input[name=q]").val( $('#nq').val() );
+ }
+ $('form').find("input[name=q]").each( function() {
+ $(this).val( $(form).find("input[name=q]").val() );
+ });
+ }
+
$(document).ready(function() {
// search tabs
[% FOREACH tab IN settings._search_tabs %]
- $('[% "#${tab.tag}_form" %]').submit(function(event){ do_search(event, '[% tab.tag %]'); });
+ $('[% "#${tab.tag}_form" %]').submit(function (event) {
+ var pgtitle = update_page_title('[% tab.tag %]');
+ update_browser_history('[% tab.tag %]', pgtitle);
+ copy_navbar_to_sidebar('[% tab.tag %]');
+ do_search(event, '[% tab.tag %]');
+ });
[% END %]
// device tabs
[% FOREACH tab IN settings._device_tabs %]
- $('[% "#${tab.tag}_form" %]').submit(function(event){ do_search(event, '[% tab.tag %]'); });
+ $('[% "#${tab.tag}_form" %]').submit(function (event) {
+ var pgtitle = update_page_title('[% tab.tag %]');
+ update_browser_history('[% tab.tag %]', pgtitle);
+ copy_navbar_to_sidebar('[% tab.tag %]');
+ do_search(event, '[% tab.tag %]');
+ });
[% END %]
[% IF report %]
// for the report pages
- $('[% "#${report.tag}_form" %]').submit(function(event){ do_search(event, '[% report.tag %]'); });
+ $('[% "#${report.tag}_form" %]').submit(function (event) {
+ update_page_title('[% tab.tag %]');
+ do_search(event, '[% report.tag %]');
+ });
[% END -%]
[% IF task %]
// for the admin pages
- $('[% "#${task.tag}_form" %]').submit(function(event){ do_search(event, '[% task.tag %]'); });
+ $('[% "#${task.tag}_form" %]').submit(function (event) {
+ update_page_title('[% tab.tag %]');
+ do_search(event, '[% task.tag %]');
+ });
[% END %]
// on page load, load the content for the active tab