]>
Commit | Line | Data |
---|---|---|
9233148b AD |
1 | Ext.define('PVE.sdn.VnetView', { |
2 | extend: 'Ext.grid.GridPanel', | |
3 | ||
4 | alias: ['widget.pveSDNVnetView'], | |
5 | ||
6 | stateful: true, | |
7 | stateId: 'grid-sdn-vnet', | |
8 | ||
9 | initComponent : function() { | |
68dc9092 | 10 | let me = this; |
9233148b | 11 | |
68dc9092 | 12 | let store = new Ext.data.Store({ |
9233148b AD |
13 | model: 'pve-sdn-vnet', |
14 | proxy: { | |
15 | type: 'proxmox', | |
16 | url: "/api2/json/cluster/sdn/vnets" | |
17 | }, | |
18 | sorters: { | |
19 | property: 'vnet', | |
20 | order: 'DESC' | |
21 | } | |
22 | }); | |
68dc9092 | 23 | let reload = () => store.load(); |
9233148b | 24 | |
68dc9092 | 25 | let sm = Ext.create('Ext.selection.RowModel', {}); |
9233148b | 26 | |
68dc9092 TL |
27 | let run_editor = function() { |
28 | let rec = sm.getSelection()[0]; | |
9233148b | 29 | |
68dc9092 TL |
30 | let win = Ext.create('PVE.sdn.VnetEdit',{ |
31 | autoShow: true, | |
32 | vnet: rec.data.vnet, | |
33 | }); | |
34 | win.on('destroy', reload); | |
9233148b AD |
35 | }; |
36 | ||
68dc9092 | 37 | let edit_btn = new Proxmox.button.Button({ |
9233148b AD |
38 | text: gettext('Edit'), |
39 | disabled: true, | |
40 | selModel: sm, | |
68dc9092 | 41 | handler: run_editor, |
9233148b AD |
42 | }); |
43 | ||
68dc9092 | 44 | let remove_btn = Ext.create('Proxmox.button.StdRemoveButton', { |
9233148b AD |
45 | selModel: sm, |
46 | baseurl: '/cluster/sdn/vnets/', | |
47 | callback: reload | |
48 | }); | |
49 | ||
50 | Ext.apply(me, { | |
51 | store: store, | |
52 | reloadStore: reload, | |
53 | selModel: sm, | |
54 | viewConfig: { | |
55 | trackOver: false | |
56 | }, | |
57 | tbar: [ | |
68dc9092 TL |
58 | { |
59 | text: gettext('Create'), | |
60 | handler: function() { | |
61 | let win = Ext.create('PVE.sdn.VnetEdit', { | |
62 | autoShow: true, | |
63 | type: 'vnet', | |
9233148b | 64 | }); |
68dc9092 TL |
65 | win.on('destroy', reload); |
66 | } | |
67 | }, | |
9233148b AD |
68 | remove_btn, |
69 | edit_btn, | |
9233148b AD |
70 | ], |
71 | columns: [ | |
72 | { | |
73 | header: 'ID', | |
74 | flex: 2, | |
9233148b AD |
75 | dataIndex: 'vnet' |
76 | }, | |
77 | { | |
68dc9092 | 78 | header: gettext('Alias'), |
9233148b | 79 | flex: 1, |
9233148b AD |
80 | dataIndex: 'alias', |
81 | }, | |
82 | { | |
68dc9092 | 83 | header: gettext('Zone'), |
9233148b | 84 | flex: 1, |
9233148b AD |
85 | dataIndex: 'zone', |
86 | }, | |
87 | { | |
68dc9092 | 88 | header: gettext('Tag'), |
9233148b | 89 | flex: 1, |
9233148b AD |
90 | dataIndex: 'tag', |
91 | }, | |
92 | { | |
68dc9092 | 93 | header: 'IPv4/CIDR', |
9233148b | 94 | flex: 1, |
9233148b AD |
95 | dataIndex: 'ipv4', |
96 | }, | |
97 | { | |
68dc9092 | 98 | header: 'IPv6/CIDR', |
9233148b | 99 | flex: 1, |
9233148b AD |
100 | dataIndex: 'ipv6', |
101 | }, | |
102 | { | |
68dc9092 | 103 | header: 'MAC', |
9233148b | 104 | flex: 1, |
9233148b AD |
105 | dataIndex: 'mac', |
106 | }, | |
107 | { | |
68dc9092 | 108 | header: 'MTU', |
9233148b | 109 | flex: 1, |
9233148b AD |
110 | dataIndex: 'mtu', |
111 | }, | |
112 | ], | |
113 | listeners: { | |
114 | activate: reload, | |
115 | itemdblclick: run_editor | |
116 | } | |
117 | }); | |
118 | ||
119 | me.callParent(); | |
120 | } | |
121 | }, function() { | |
122 | ||
123 | Ext.define('pve-sdn-vnet', { | |
124 | extend: 'Ext.data.Model', | |
125 | fields: [ | |
68dc9092 TL |
126 | 'alias', |
127 | 'ipv4', | |
128 | 'ipv6', | |
129 | 'mac', | |
130 | 'mtu', | |
131 | 'tag', | |
132 | 'type', | |
133 | 'vnet', | |
134 | 'zone', | |
9233148b AD |
135 | ], |
136 | idProperty: 'vnet' | |
137 | }); | |
138 | ||
139 | }); |