From 7ca1623d2f11aaeb7aeef181230b5b1a765514eb Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Mon, 2 Sep 2013 22:35:36 +0100 Subject: [PATCH] factor out tab-specific stuff to common.js --- Netdisco/share/public/javascripts/netdisco.js | 36 +---------- Netdisco/share/views/js/common.js | 63 +++++++++++++++++-- 2 files changed, 61 insertions(+), 38 deletions(-) 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