interface_toggles.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // Toggle the display of IP addresses under interfaces
  2. $('button.toggle-ips').click(function() {
  3. var selected = $(this).attr('selected');
  4. if (selected) {
  5. $('#interfaces_table tr.interface:visible + tr.ipaddresses').hide();
  6. } else {
  7. $('#interfaces_table tr.interface:visible + tr.ipaddresses').show();
  8. }
  9. $(this).attr('selected', !selected);
  10. $(this).children('span').toggleClass('glyphicon-check glyphicon-unchecked');
  11. return false;
  12. });
  13. // Inteface filtering
  14. $('input.interface-filter').on('input', function() {
  15. var filter = new RegExp(this.value);
  16. var interface;
  17. for (interface of $('#interfaces_table > tbody > tr.interface')) {
  18. // Slice off 'interface_' at the start of the ID
  19. if (filter.test(interface.id.slice(10))) {
  20. // Match the toggle in case the filter now matches the interface
  21. $(interface).find('input:checkbox[name=pk]').prop('checked', $('input.toggle').prop('checked'));
  22. $(interface).show();
  23. if ($('button.toggle-ips').attr('selected')) {
  24. $(interface).next('tr.ipaddresses').show();
  25. }
  26. } else {
  27. // Uncheck to prevent actions from including it when it doesn't match
  28. $(interface).find('input:checkbox[name=pk]').prop('checked', false);
  29. $(interface).hide();
  30. $(interface).next('tr.ipaddresses').hide();
  31. }
  32. }
  33. });