diff --git a/src/django_devicectl/rest/serializers/devicectl.py b/src/django_devicectl/rest/serializers/devicectl.py index 5715598f..a9039aac 100644 --- a/src/django_devicectl/rest/serializers/devicectl.py +++ b/src/django_devicectl/rest/serializers/devicectl.py @@ -242,6 +242,7 @@ def get_virtual_port_name(self, port): @register class VirtualPort(TagMixin, ModelSerializer): physical_ports = serializers.SerializerMethodField() + logical_port = LogicalPort() device = serializers.SerializerMethodField() port = serializers.SerializerMethodField() tags = serializers.SerializerMethodField() @@ -262,7 +263,7 @@ class Meta: ] def get_physical_ports(self, obj): - return InlinePhysicalPort(obj.physical_ports.all(), many=True).data + return PhysicalPort(obj.physical_ports.all(), many=True).data def get_device(self, obj): return obj.device.id diff --git a/src/django_devicectl/static/devicectl/v2/devicectl.js b/src/django_devicectl/static/devicectl/v2/devicectl.js index 48945a27..6bdb4936 100644 --- a/src/django_devicectl/static/devicectl/v2/devicectl.js +++ b/src/django_devicectl/static/devicectl/v2/devicectl.js @@ -27,14 +27,6 @@ $ctl.application.Devicectl = $tc.extend( return new $ctl.application.Devicectl.DeviceDetails(); }); - this.tool("logical_ports", () => { - return new $ctl.application.Devicectl.LogicalPorts(); - }); - - this.tool("physical_ports", () => { - return new $ctl.application.Devicectl.PhysicalPorts(); - }); - this.tool("virtual_ports", () => { return new $ctl.application.Devicectl.VirtualPorts(); }); @@ -89,9 +81,7 @@ $ctl.application.Devicectl = $tc.extend( $('#ports-tab').on('show.bs.tab', () => { $('[data-element=button_create_facility]').hide(); - $('[data-component=virtual_ports').appendTo($("#device-detail")); - $('[data-component=logical_ports').appendTo($("#device-detail")); - $('[data-component=physical_ports').appendTo($("#device-detail")); + $('[data-component=virtual_ports').appendTo($("#allports")); }); $('#tab-overview').on('show.bs.tab', () => { @@ -101,9 +91,6 @@ $ctl.application.Devicectl = $tc.extend( $($ctl).trigger("init_tools", [this]); this.$t.devices.activate(); - this.$t.logical_ports.activate(); - this.$t.physical_ports.activate(); - this.$t.virtual_ports.activate(); this.sync(); @@ -187,8 +174,6 @@ $ctl.application.Devicectl.DeviceSelect = $tc.extend( sync : function() { $ctl.devicectl.$t.virtual_ports.sync(); - $ctl.devicectl.$t.logical_ports.sync(); - $ctl.devicectl.$t.physical_ports.sync(); $ctl.devicectl.$t.device.show_device(this.element.val()); }, @@ -1391,6 +1376,10 @@ $ctl.application.Devicectl.VirtualPorts = $tc.extend( if (!grainy.check(data.grainy, "d")) { button_delete.element.hide(); } + + row.click(() =>{ + new $ctl.application.Devicectl.PortsViewInformation(data); + }); }; this.$w.list.format_request_url = (url) => { @@ -1444,6 +1433,88 @@ $ctl.application.Devicectl.VirtualPorts = $tc.extend( $ctl.application.Tool ); +$ctl.application.Devicectl.PortsViewInformation = $tc.extend( + "PortsViewInformation", + { + PortsViewInformation: function (data) { + var title = "Virtual Ports - " + data.display_name; + var element = $('
'); + + var dataContent = ` +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + + `; + + data.physical_ports.forEach(function(physical_port, index){ + dataContent += ` + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ `; + }) + element.append(dataContent); + + this.Modal("no_button_lg", title, element); + } +}, + $ctl.application.Modal +); + $ctl.application.Devicectl.ModalVirtualPort = $tc.extend( "ModalVirtualPort", { @@ -1453,6 +1524,7 @@ $ctl.application.Devicectl.ModalVirtualPort = $tc.extend( var form = this.form = new twentyc.rest.Form( $ctl.template("form_virtual_port") ); + var LogicalPortsList = []; var logical_port_select = this.logical_port_select = new twentyc.rest.Select( form.element.find('select[name="logical_port"]') @@ -1465,14 +1537,141 @@ $ctl.application.Devicectl.ModalVirtualPort = $tc.extend( logical_port_select.load().then(() => { if (virtual_port) { logical_port_select.element.val(virtual_port.logical_port) } }); + + console.log(virtual_port) + + $.ajax({ + url: `/api/facility/digital_reality/${fullctl.devicectl.facility_slug()}/logical_ports/`, + type: 'GET', + success: function(response) { + logical_ports_data = response.data + response.data.forEach(function(data) { + LogicalPortsList.push({ + logical_ports_name: data.display_name + }); + }); + }, + error: function(xhr, status, error) { + console.error(xhr.responseText); + }, + async: false + }); + // channel + var logical_port_channel = form.element.find('input[name="logical_port_channel"]'); + if (virtual_port) { + logical_port_channel.val(virtual_port.logical_port.channel) + } + + // trunk + var logical_port_trunk = form.element.find('input[name="logical_port_trunk"]') + if (virtual_port) { + logical_port_trunk.val(virtual_port.logical_port.trunk) + } + + // description + var logical_port_description = form.element.find('input[name="logical_port_description"]'); + if (virtual_port) { + logical_port_description.val(virtual_port.logical_port.description) + } this.virtual_port = virtual_port; + physical_ports = form.element.find('.physical-ports-container'); + + // Creation of a Port + if (!virtual_port) { + var phyical_data_content = ` +
+
+ + +
+
+
+
+ + + + + +
+
+
+
+ + + + +
+
+
+
+ + +
+
+ ` + physical_ports.append(phyical_data_content) + var logical_ports_select = form.element.find('#physical_port-logical_port'); + logical_ports_select.append($('
diff --git a/src/django_devicectl/templates/devicectl/v2/tool/device/main.html b/src/django_devicectl/templates/devicectl/v2/tool/device/main.html index d0dc66ae..fef66f42 100644 --- a/src/django_devicectl/templates/devicectl/v2/tool/device/main.html +++ b/src/django_devicectl/templates/devicectl/v2/tool/device/main.html @@ -24,6 +24,9 @@ + @@ -56,6 +59,10 @@
+ +
+ +
@@ -71,6 +78,7 @@ {% include "devicectl/v2/tool/device/config-current.html" %} {% include "devicectl/v2/tool/device/config-reference.html" %} {% include "devicectl/v2/tool/device/reports.html" %} + {% include "devicectl/v2/tool/device/ports.html" %} diff --git a/src/django_devicectl/templates/devicectl/v2/tool/device/ports.html b/src/django_devicectl/templates/devicectl/v2/tool/device/ports.html new file mode 100644 index 00000000..936d4ade --- /dev/null +++ b/src/django_devicectl/templates/devicectl/v2/tool/device/ports.html @@ -0,0 +1,4 @@ +{% load static i18n %} +
+ {% include "devicectl/v2/tool/virtual_ports/main.html" %} +
diff --git a/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/form.html b/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/form.html index 75f9f24f..ab4cd516 100644 --- a/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/form.html +++ b/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/form.html @@ -27,5 +27,40 @@ + + + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ diff --git a/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/list.html b/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/list.html index dd7a2f9f..9b8e419f 100644 --- a/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/list.html +++ b/src/django_devicectl/templates/devicectl/v2/tool/virtual_ports/list.html @@ -21,13 +21,13 @@ - + - + -