view release on metacpan or search on metacpan
[ENHANCEMENTS]
* Store port control and device delete log messages
[BUG FIXES]
* z-index fix for modals
* Better toastr message on device delete
* Delete manual topology on device delete
* Fix Node age stamp option in ports
* Prevent cascade operations on virtual tables in DBIC
2.015000 - 2013-09-06
[NEW FEATURES]
* Device Modules tab (jeneric)
* Half Duplex Ports Report
* Remember device ports columns and display options in a Cookie
* Delete device button for admins
lib/App/Netdisco/DB/Result/Admin.pm view on Meta::CPAN
"$args->{foreign_alias}.actionset"
=> { '@>' => \"string_to_array($args->{self_alias}.action,'')" },
-and => [
"$args->{foreign_alias}.deferrals" => { '>=' => \'?' },
"$args->{foreign_alias}.last_defer" =>
{ '>', \'(LOCALTIMESTAMP - ?::interval)' },
],
],
};
},
{ cascade_copy => 0, cascade_update => 0, cascade_delete => 0 }
);
=head2 target
Returns the single C<device> to which this Job entry was associated.
The JOIN is of type LEFT, in case the C<device> is not in the database.
=cut
lib/App/Netdisco/DB/Result/Device.pm view on Meta::CPAN
my $args = shift;
return {
"$args->{foreign_alias}.ip" => { -ident => "$args->{self_alias}.ip" },
-or => [
"$args->{foreign_alias}.dns" => { 'ilike', \'?' },
"$args->{foreign_alias}.alias" => { '<<=', \'?' },
"$args->{foreign_alias}.alias::text" => { 'ilike', \'?' },
],
};
},
{ cascade_copy => 0, cascade_update => 0, cascade_delete => 0 }
);
=head2 vlans
Returns the C<device_vlan> entries for this Device. That is, the list of VLANs
configured on or known by this Device.
=cut
__PACKAGE__->has_many( vlans => 'App::Netdisco::DB::Result::DeviceVlan', 'ip' );
lib/App/Netdisco/DB/Result/Device.pm view on Meta::CPAN
=cut
__PACKAGE__->has_many( ports_by_mac => 'App::Netdisco::DB::Result::DevicePort',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.ip" => { -ident => "$args->{self_alias}.ip" },
"$args->{foreign_alias}.mac::text" => { 'ilike', \'?' },
};
},
{ cascade_copy => 0, cascade_update => 0, cascade_delete => 0 }
);
=head2 modules
Returns the set chassis modules on this Device.
=cut
__PACKAGE__->has_many( modules => 'App::Netdisco::DB::Result::DeviceModule', 'ip' );
lib/App/Netdisco/DB/Result/DevicePort.pm view on Meta::CPAN
},
{ join_type => 'LEFT' },
);
__PACKAGE__->has_many( nodes_with_age => 'App::Netdisco::DB::Result::Virtual::NodeWithAge',
{
'foreign.switch' => 'self.ip',
'foreign.port' => 'self.port',
},
{ join_type => 'LEFT',
cascade_copy => 0, cascade_update => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many( active_nodes => 'App::Netdisco::DB::Result::Virtual::ActiveNode',
{
'foreign.switch' => 'self.ip',
'foreign.port' => 'self.port',
},
{ join_type => 'LEFT',
cascade_copy => 0, cascade_update => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many( active_nodes_with_age => 'App::Netdisco::DB::Result::Virtual::ActiveNodeWithAge',
{
'foreign.switch' => 'self.ip',
'foreign.port' => 'self.port',
},
{ join_type => 'LEFT',
cascade_copy => 0, cascade_update => 0, cascade_delete => 0 },
);
=head2 logs
Returns the set of C<device_port_log> entries associated with this Port.
=cut
__PACKAGE__->has_many( logs => 'App::Netdisco::DB::Result::DevicePortLog',
{ 'foreign.ip' => 'self.ip', 'foreign.port' => 'self.port' },
lib/App/Netdisco/DB/Result/DevicePortSsid.pm view on Meta::CPAN
Port SSID.
=cut
__PACKAGE__->has_many( nodes => 'App::Netdisco::DB::Result::Node',
{
'foreign.switch' => 'self.ip',
'foreign.port' => 'self.port',
},
{ join_type => 'LEFT',
cascade_copy => 0, cascade_update => 0, cascade_delete => 0 },
);
1;
lib/App/Netdisco/DB/Result/DevicePortWireless.pm view on Meta::CPAN
Port Wireless.
=cut
__PACKAGE__->has_many( nodes => 'App::Netdisco::DB::Result::Node',
{
'foreign.switch' => 'self.ip',
'foreign.port' => 'self.port',
},
{ join_type => 'LEFT',
cascade_copy => 0, cascade_update => 0, cascade_delete => 0 },
);
1;
lib/App/Netdisco/DB/Result/DeviceVlan.pm view on Meta::CPAN
__PACKAGE__->has_many( port_vlans_tagged => 'App::Netdisco::DB::Result::DevicePortVlan',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.ip" => { -ident => "$args->{self_alias}.ip" },
"$args->{foreign_alias}.vlan" => { -ident => "$args->{self_alias}.vlan" },
-not_bool => "$args->{foreign_alias}.native",
};
},
{ cascade_copy => 0, cascade_update => 0, cascade_delete => 0 }
);
=head2 port_vlans_untagged
Link relationship to support C<untagged_ports>, see below.
=cut
__PACKAGE__->has_many( port_vlans_untagged => 'App::Netdisco::DB::Result::DevicePortVlan',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.ip" => { -ident => "$args->{self_alias}.ip" },
"$args->{foreign_alias}.vlan" => { -ident => "$args->{self_alias}.vlan" },
-bool => "$args->{foreign_alias}.native",
};
},
{ cascade_copy => 0, cascade_update => 0, cascade_delete => 0 }
);
=head2 ports
Link relationship to support C<ports>.
=cut
__PACKAGE__->has_many( ports => 'App::Netdisco::DB::Result::DevicePortVlan',
{ 'foreign.ip' => 'self.ip', 'foreign.vlan' => 'self.vlan' },
{ cascade_copy => 0, cascade_update => 0, cascade_delete => 0 }
);
=head2 tagged_ports
Returns the set of Device Ports on which this VLAN is configured to be tagged.
=cut
__PACKAGE__->many_to_many( tagged_ports => 'port_vlans_tagged', 'port' );
lib/App/Netdisco/DB/Result/User.pm view on Meta::CPAN
"admin",
{ data_type => "boolean", default_value => \"false", is_nullable => 1 },
"fullname",
{ data_type => "text", is_nullable => 1 },
"note",
{ data_type => "text", is_nullable => 1 },
);
__PACKAGE__->set_primary_key("username");
__PACKAGE__->has_many( roles => 'App::Netdisco::DB::Result::Virtual::UserRole',
'username', { cascade_copy => 0, cascade_update => 0, cascade_delete => 0 } );
sub created { return (shift)->get_column('created') }
sub last_seen { return (shift)->get_column('last_seen') }
1;
share/public/javascripts/jstree/jstree.min.js view on Meta::CPAN
/*! jsTree - v3.3.12 - 2021-09-03 - (MIT) */
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("s...
a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a...
!p)return!1;for(m=this.get_node(p),c&&c.state&&c.state.loaded===!1&&(m.state.loaded=!1),l=[],l.push(p),l=l.concat(m.children_d),this.trigger("model",{nodes:l,parent:r.id}),n=0,o=r.parents.length;o>n;n++)this._model.data[r.parents[n]].children_d=this....
var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(i).one("context_show.vakata.jstree",function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d),g.addClass("jstree-context")}.bind(this)),this._d...
"default":{}},a.jstree.defaults.types[a.jstree.root]={},a.jstree.plugins.types=function(c,d){this.init=function(c,e){var f,g;if(e&&e.types&&e.types["default"])for(f in e.types)if("default"!==f&&f!==a.jstree.root&&e.types.hasOwnProperty(f))for(g in e....