complete the observium plugin
This commit is contained in:
@@ -19,6 +19,7 @@ requires 'HTML::Parser' => 3.70;
|
|||||||
requires 'HTTP::Tiny' => 0.029;
|
requires 'HTTP::Tiny' => 0.029;
|
||||||
requires 'JSON' => 0;
|
requires 'JSON' => 0;
|
||||||
requires 'List::MoreUtils' => 0.33;
|
requires 'List::MoreUtils' => 0.33;
|
||||||
|
requires 'MIME::Base64' => 3.13;
|
||||||
requires 'Moo' => 1.001000;
|
requires 'Moo' => 1.001000;
|
||||||
requires 'MCE' => 1.408;
|
requires 'MCE' => 1.408;
|
||||||
requires 'Net::DNS' => 0.72;
|
requires 'Net::DNS' => 0.72;
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ package App::Netdisco::DB::Result::DevicePort;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
|
use MIME::Base64 'encode_base64url';
|
||||||
|
|
||||||
use base 'DBIx::Class::Core';
|
use base 'DBIx::Class::Core';
|
||||||
__PACKAGE__->table("device_port");
|
__PACKAGE__->table("device_port");
|
||||||
__PACKAGE__->add_columns(
|
__PACKAGE__->add_columns(
|
||||||
@@ -266,4 +268,13 @@ See the C<with_is_free> and C<only_free_ports> modifiers to C<search()>.
|
|||||||
|
|
||||||
sub is_free { return (shift)->get_column('is_free') }
|
sub is_free { return (shift)->get_column('is_free') }
|
||||||
|
|
||||||
|
=head2 base64url_port
|
||||||
|
|
||||||
|
Returns a Base64 encoded version of the C<port> column value suitable for use
|
||||||
|
in a URL.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub base64url_port { return encode_base64url((shift)->port) }
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package App::NetdiscoX::Web::Plugin::ObserviumSparklines;
|
package App::NetdiscoX::Web::Plugin::Observium;
|
||||||
|
|
||||||
use Dancer ':syntax';
|
use Dancer ':syntax';
|
||||||
use Dancer::Plugin::DBIC;
|
use Dancer::Plugin::DBIC;
|
||||||
@@ -9,13 +9,13 @@ use File::ShareDir 'dist_dir';
|
|||||||
use Path::Class;
|
use Path::Class;
|
||||||
|
|
||||||
register_device_port_column({
|
register_device_port_column({
|
||||||
name => 'observiumsparklines',
|
name => 'observium',
|
||||||
position => 'mid',
|
position => 'mid',
|
||||||
label => 'Traffic',
|
label => 'Traffic',
|
||||||
default => 'on',
|
default => 'on',
|
||||||
});
|
});
|
||||||
|
|
||||||
register_css('observiumsparklines');
|
register_css('observium');
|
||||||
register_javascript('observiumsparklines');
|
register_javascript('observium');
|
||||||
|
|
||||||
true;
|
true;
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -66,9 +66,13 @@
|
|||||||
[% FOREACH config IN settings._extra_device_port_cols %]
|
[% FOREACH config IN settings._extra_device_port_cols %]
|
||||||
[% NEXT UNLESS config.position == 'mid' AND params.${config.name} %]
|
[% NEXT UNLESS config.position == 'mid' AND params.${config.name} %]
|
||||||
<td>
|
<td>
|
||||||
|
[% TRY %]
|
||||||
[% INCLUDE "plugin/${config.name}/device_port_column.tt" %]
|
[% INCLUDE "plugin/${config.name}/device_port_column.tt" %]
|
||||||
|
[% CATCH %]
|
||||||
|
<!-- dummy content required by Template Toolkit TRY -->
|
||||||
|
[% END %]
|
||||||
</td>
|
</td>
|
||||||
[% END -%]
|
[% END %]
|
||||||
|
|
||||||
[% IF params.c_descr %]
|
[% IF params.c_descr %]
|
||||||
<td nowrap>[% row.descr | html_entity %]</td>
|
<td nowrap>[% row.descr | html_entity %]</td>
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<a href="http://[% settings.plugin_observium.webhost | uri %]/device/hostname=[% device.dns || device.name | uri %]/tab=port/ifdescr=[% row.base64url_port %]/"
|
||||||
|
[% 'target="_blank"' IF settings.plugin_observium.open_in_new_window %]
|
||||||
|
class="btn nd_observium"
|
||||||
|
data-content='
|
||||||
|
<img src="http://[% settings.plugin_observium.webhost | uri %]/graph.php?type=port_bits&device=[% device.dns || device.name | uri %]&port=[% row.port | uri %]&from=-1w&to=now&width=208&height=100&title=yes"/>'
|
||||||
|
><i class="icon-bar-chart"></i></a>
|
||||||
6
Netdisco/share/views/plugin/observium/observium.css
Normal file
6
Netdisco/share/views/plugin/observium/observium.css
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
.nd_observium-style {
|
||||||
|
min-width: none;
|
||||||
|
max-width: none;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
25
Netdisco/share/views/plugin/observium/observium.js
Normal file
25
Netdisco/share/views/plugin/observium/observium.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
// bind qtip2 even to all future .observium buttons
|
||||||
|
$('#ports_pane').on('mouseover', '.nd_observium', function(event) {
|
||||||
|
$(this).qtip({
|
||||||
|
overwrite: false,
|
||||||
|
content: {
|
||||||
|
attr: 'data-content'
|
||||||
|
},
|
||||||
|
show: {
|
||||||
|
event: event.type,
|
||||||
|
ready: true
|
||||||
|
},
|
||||||
|
position: {
|
||||||
|
my: 'left center',
|
||||||
|
at: 'right centre',
|
||||||
|
target: 'mouse'
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
classes: 'qtip-bootstrap nd_observium-style'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<button class="btn" rel="popover" data-trigger="hover" data-html="true" data-content='
|
|
||||||
<img src="http://[% settings.plugin_observiumsparklines.webhost | html_entity %]/graph.php?type=port_bits&device=[% device.dns || device.name | uri %]&port=[% row.port | uri %]&from=-1w&to=now&width=208&height=100&title=yes"/>
|
|
||||||
'
|
|
||||||
><i class="icon-bar-chart"></i></button>
|
|
||||||
Reference in New Issue
Block a user