Jeremy Stretch 5 лет назад
Родитель
Сommit
992657cbe0

+ 6 - 0
netbox/project-static/js/forms.js

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

+ 8 - 0
netbox/utilities/forms/widgets.py

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

+ 20 - 0
netbox/utilities/templates/widgets/select_speed.html

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