complete the observium plugin

This commit is contained in:
Oliver Gorwits
2013-06-02 15:30:26 +01:00
parent 66b3ced179
commit 798086ca29
10 changed files with 67 additions and 12 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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>

View File

@@ -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>

View File

@@ -0,0 +1,6 @@
.nd_observium-style {
min-width: none;
max-width: none;
margin-top: 5px;
margin-left: 15px;
}

View 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'
}
});
});
});

View File

@@ -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>