factor out tab-specific stuff to common.js

This commit is contained in:
Oliver Gorwits
2013-09-02 22:35:36 +01:00
parent be806d5ab1
commit 7ca1623d2f
2 changed files with 61 additions and 38 deletions

View File

@@ -1,30 +1,13 @@
// parameterised for the active tab - submits search form and injects // parameterised for the active tab - submits search form and injects
// HTML response into the tab pane, or an error/empty-results message // HTML response into the tab pane, or an error/empty-results message
function do_search (event, tab) { function do_search (event, tab) {
var form = '#' + tab + '_form'; var form = '#' + tab + '_form';
var target = '#' + tab + '_pane'; var target = '#' + tab + '_pane';
var query = $(form).serialize();
// stop form from submitting normally // stop form from submitting normally
event.preventDefault(); 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, // hide or show sidebars depending on previous state,
// and whether the sidebar contains any content (detected by TT) // and whether the sidebar contains any content (detected by TT)
if (has_sidebar[tab] == 0) { 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 // in case of slow data load, let the user know
$(target).html( $(target).html(
'<div class="span2 alert">Waiting for results...</div>' '<div class="span2 alert">Waiting for results...</div>'

View File

@@ -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() { $(document).ready(function() {
// search tabs // search tabs
[% FOREACH tab IN settings._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 %] [% END %]
// device tabs // device tabs
[% FOREACH tab IN settings._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 %] [% END %]
[% IF report %] [% IF report %]
// for the report pages // 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 -%] [% END -%]
[% IF task %] [% IF task %]
// for the admin pages // 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 %] [% END %]
// on page load, load the content for the active tab // on page load, load the content for the active tab