]> git.proxmox.com Git - proxmox-widget-toolkit.git/blob - form/NetworkSelector.js
b87efc18a0ca023a1e57337477fb953c4792b61d
[proxmox-widget-toolkit.git] / form / NetworkSelector.js
1 Ext.define('Proxmox.form.NetworkSelectorController', {
2 extend: 'Ext.app.ViewController',
3 alias: 'controller.proxmoxNetworkSelectorController',
4
5 init: function(view) {
6 let me = this;
7
8 if (!view.nodename) {
9 throw "missing custom view config: nodename";
10 }
11 view.getStore().getProxy().setUrl('/api2/json/nodes/'+ view.nodename + '/network');
12 },
13 });
14
15 Ext.define('Proxmox.data.NetworkSelector', {
16 extend: 'Ext.data.Model',
17 fields: [
18 { name: 'active' },
19 { name: 'cidr' },
20 { name: 'cidr6' },
21 { name: 'address' },
22 { name: 'address6' },
23 { name: 'comments' },
24 { name: 'iface' },
25 { name: 'slaves' },
26 { name: 'type' },
27 ],
28 });
29
30 Ext.define('Proxmox.form.NetworkSelector', {
31 extend: 'Proxmox.form.ComboGrid',
32 alias: 'widget.proxmoxNetworkSelector',
33
34 controller: 'proxmoxNetworkSelectorController',
35
36 nodename: 'localhost',
37 setNodename: function(nodename) {
38 this.nodename = nodename;
39 let networkSelectorStore = this.getStore();
40 networkSelectorStore.removeAll();
41 // because of manual local copy of data for ip4/6
42 this.getPicker().refresh();
43 if (networkSelectorStore && typeof networkSelectorStore.getProxy === 'function') {
44 networkSelectorStore.getProxy().setUrl('/api2/json/nodes/'+ nodename + '/network');
45 networkSelectorStore.load();
46 }
47 },
48 // set default value to empty array, else it inits it with
49 // null and after the store load it is an empty array,
50 // triggering dirtychange
51 value: [],
52 valueField: 'cidr',
53 displayField: 'cidr',
54 store: {
55 autoLoad: true,
56 model: 'Proxmox.data.NetworkSelector',
57 proxy: {
58 type: 'proxmox',
59 },
60 sorters: [
61 {
62 property: 'iface',
63 direction: 'ASC',
64 },
65 ],
66 filters: [
67 function(item) {
68 return item.data.cidr;
69 },
70 ],
71 listeners: {
72 load: function(store, records, successfull) {
73 if (successfull) {
74 records.forEach(function(record) {
75 if (record.data.cidr6) {
76 let dest = record.data.cidr ? record.copy(null) : record;
77 dest.data.cidr = record.data.cidr6;
78 dest.data.address = record.data.address6;
79 delete record.data.cidr6;
80 dest.data.comments = record.data.comments6;
81 delete record.data.comments6;
82 store.add(dest);
83 }
84 });
85 }
86 },
87 },
88 },
89 listConfig: {
90 width: 600,
91 columns: [
92 {
93
94 header: gettext('CIDR'),
95 dataIndex: 'cidr',
96 hideable: false,
97 flex: 1,
98 },
99 {
100
101 header: gettext('IP'),
102 dataIndex: 'address',
103 hidden: true,
104 },
105 {
106 header: gettext('Interface'),
107 width: 90,
108 dataIndex: 'iface',
109 },
110 {
111 header: gettext('Active'),
112 renderer: Proxmox.Utils.format_boolean,
113 width: 60,
114 dataIndex: 'active',
115 },
116 {
117 header: gettext('Type'),
118 width: 80,
119 hidden: true,
120 dataIndex: 'type',
121 },
122 {
123 header: gettext('Comment'),
124 flex: 2,
125 dataIndex: 'comments',
126 },
127 ],
128 },
129 });