allow control ports list by port status
This commit is contained in:
@@ -55,12 +55,37 @@ ajax '/ajax/content/device/ports' => require_login sub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# filter for free ports if asked
|
# filter for port status if asked
|
||||||
my $free_filter = (param('free') ? 'only_free_ports' : 'with_is_free');
|
my %port_state = map {$_ => 1} (param('port_state') || ());
|
||||||
$set = $set->$free_filter({
|
|
||||||
age_num => (param('age_num') || 3),
|
if (exists $port_state{free}) {
|
||||||
age_unit => (param('age_unit') || 'months')
|
if (scalar keys %port_state == 1) {
|
||||||
});
|
$set = $set->only_free_ports({
|
||||||
|
age_num => (param('age_num') || 3),
|
||||||
|
age_unit => (param('age_unit') || 'months')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$set = $set->with_is_free({
|
||||||
|
age_num => (param('age_num') || 3),
|
||||||
|
age_unit => (param('age_unit') || 'months')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
delete $port_state{free};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scalar keys %port_state < 3) {
|
||||||
|
my @combi = ();
|
||||||
|
|
||||||
|
push @combi, {'me.up' => 'up'}
|
||||||
|
if exists $port_state{up};
|
||||||
|
push @combi, {'me.up_admin' => 'up', 'me.up' => { '!=' => 'up'}}
|
||||||
|
if exists $port_state{down};
|
||||||
|
push @combi, {'me.up_admin' => { '!=' => 'up'}}
|
||||||
|
if exists $port_state{shut};
|
||||||
|
|
||||||
|
$set = $set->search({-or => \@combi});
|
||||||
|
}
|
||||||
|
|
||||||
# make sure query asks for formatted timestamps when needed
|
# make sure query asks for formatted timestamps when needed
|
||||||
$set = $set->with_times if param('c_lastchange');
|
$set = $set->with_times if param('c_lastchange');
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<i class="icon-remove"></i>
|
<i class="icon-remove"></i>
|
||||||
[% ELSIF row.stp == 'blocking' %]
|
[% ELSIF row.stp == 'blocking' %]
|
||||||
<i class="icon-fullscreen text-info"></i>
|
<i class="icon-fullscreen text-info"></i>
|
||||||
[% ELSIF params.free OR row.is_free %]
|
[% ELSIF row.has_column('is_free') AND row.is_free %]
|
||||||
<i class="icon-arrow-down text-success"></i>
|
<i class="icon-arrow-down text-success"></i>
|
||||||
[% ELSIF row.up_admin == 'up' AND row.up == 'down' %]
|
[% ELSIF row.up_admin == 'up' AND row.up == 'down' %]
|
||||||
<i class="icon-arrow-down text-error"></i>
|
<i class="icon-arrow-down text-error"></i>
|
||||||
|
|||||||
@@ -75,11 +75,15 @@
|
|||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="checkbox">
|
<em class="muted">Show Ports with Status:</em><br/>
|
||||||
<input type="checkbox" id="free"
|
<div class="clearfix">
|
||||||
name="free"[% ' checked="checked"' IF params.free %]/>
|
<select class="nd_side-select" size="4" multiple="on" name="port_state"/>
|
||||||
Only show Free Ports
|
<option selected="selected" value="up">Link Up</option>
|
||||||
</label>
|
<option selected="selected" value="free">Port Free</option>
|
||||||
|
<option selected="selected" value="down">Link Down</option>
|
||||||
|
<option selected="selected" value="shut">Admin Disabled</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user