Introduce SelectSpeedWidget

This commit is contained in:
Jeremy Stretch 2021-02-25 11:47:26 -05:00
parent 3208c8317d
commit 992657cbe0
3 changed files with 34 additions and 0 deletions

View File

@ -103,6 +103,12 @@ $(document).ready(function() {
return data.text;
}
// Speed selector
$("a.set_speed").click(function(e) {
e.preventDefault();
$("#id_" + $(this).attr("target")).val($(this).attr("data"));
});
// Color Picker
$('.netbox-select2-color-picker').select2({
allowClear: true,

View File

@ -16,6 +16,7 @@ __all__ = (
'DatePicker',
'DateTimePicker',
'NumericArrayField',
'SelectSpeedWidget',
'SelectWithDisabled',
'SelectWithPK',
'SlugWidget',
@ -111,6 +112,13 @@ class ContentTypeSelect(StaticSelect2):
option_template_name = 'widgets/select_contenttype.html'
class SelectSpeedWidget(forms.NumberInput):
"""
Speed field with dropdown selections for convenience.
"""
template_name = 'widgets/select_speed.html'
class NumericArrayField(SimpleArrayField):
def to_python(self, value):

View File

@ -0,0 +1,20 @@
<div class="input-group">
{% include 'django/forms/widgets/number.html' %}
<span class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<li><a href="#" target="{{ widget.name }}" data="10000" class="set_speed">10 Mbps</a></li>
<li><a href="#" target="{{ widget.name }}" data="100000" class="set_speed">100 Mbps</a></li>
<li><a href="#" target="{{ widget.name }}" data="1000000" class="set_speed">1 Gbps</a></li>
<li><a href="#" target="{{ widget.name }}" data="10000000" class="set_speed">10 Gbps</a></li>
<li><a href="#" target="{{ widget.name }}" data="25000000" class="set_speed">25 Gbps</a></li>
<li><a href="#" target="{{ widget.name }}" data="40000000" class="set_speed">40 Gbps</a></li>
<li><a href="#" target="{{ widget.name }}" data="100000000" class="set_speed">100 Gbps</a></li>
<li class="divider"></li>
<li><a href="#" target="{{ widget.name }}" data="1544" class="set_speed">T1 (1.544 Mbps)</a></li>
<li><a href="#" target="{{ widget.name }}" data="2048" class="set_speed">E1 (2.048 Mbps)</a></li>
</ul>
</span>
</div>