factor out tab-specific stuff to common.js
This commit is contained in:
		| @@ -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( | ||||
|     '<div class="span2 alert">Waiting for results...</div>' | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user