]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/sdn/ZoneContentView.js
sdn: add subnet/ipam/sdn management
[pve-manager.git] / www / manager6 / sdn / ZoneContentView.js
CommitLineData
9233148b
AD
1Ext.define('PVE.sdn.ZoneContentView', {
2 extend: 'Ext.grid.GridPanel',
9233148b
AD
3 alias: 'widget.pveSDNZoneContentView',
4
5 stateful: true,
6 stateId: 'grid-sdnzone-content',
7 viewConfig: {
8 trackOver: false,
f6710aac 9 loadMask: false,
9233148b
AD
10 },
11 features: [
12 {
13 ftype: 'grouping',
f6710aac
TL
14 groupHeaderTpl: '{name} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
15 },
9233148b 16 ],
8058410f 17 initComponent: function() {
9233148b
AD
18 var me = this;
19
20 var nodename = me.pveSelNode.data.node;
21 if (!nodename) {
22 throw "no node name specified";
23 }
24
25 var zone = me.pveSelNode.data.sdn;
26 if (!zone) {
27 throw "no zone ID specified";
28 }
29
30 var baseurl = "/nodes/" + nodename + "/sdn/zones/" + zone + "/content";
f6710aac 31 var store = Ext.create('Ext.data.Store', {
9233148b
AD
32 model: 'pve-sdnzone-content',
33 groupField: 'content',
34 proxy: {
1d9643f6 35 type: 'proxmox',
f6710aac 36 url: '/api2/json' + baseurl,
9233148b
AD
37 },
38 sorters: {
39 property: 'vnet',
f6710aac
TL
40 order: 'DESC',
41 },
9233148b
AD
42 });
43
44 var sm = Ext.create('Ext.selection.RowModel', {});
45
46 var reload = function() {
47 store.load();
48 };
49
50 Proxmox.Utils.monStoreErrors(me, store);
51
52 Ext.apply(me, {
53 store: store,
54 selModel: sm,
55 tbar: [
56 ],
57 columns: [
58 {
68dc9092 59 header: 'VNet',
1d9643f6 60 width: 100,
9233148b 61 sortable: true,
f6710aac 62 dataIndex: 'vnet',
9233148b 63 },
1d9643f6
AD
64 {
65 header: 'Alias',
66 width: 300,
67 sortable: true,
68 dataIndex: 'alias'
69 },
9233148b
AD
70 {
71 header: gettext('Status'),
1d9643f6
AD
72 width: 100,
73 sortable: true,
9233148b
AD
74 dataIndex: 'status',
75 },
76 {
68dc9092 77 header: gettext('Details'),
1d9643f6 78 flex: 1,
9233148b
AD
79 dataIndex: 'statusmsg',
80 },
81 ],
82 listeners: {
f6710aac
TL
83 activate: reload,
84 },
9233148b
AD
85 });
86
87 me.callParent();
f6710aac 88 },
9233148b 89}, function() {
9233148b
AD
90 Ext.define('pve-sdnzone-content', {
91 extend: 'Ext.data.Model',
92 fields: [
93 'vnet', 'status', 'statusmsg',
94 {
95 name: 'text',
96 convert: function(value, record) {
97 // check for volid, because if you click on a grouping header,
98 // it calls convert (but with an empty volid)
99 if (value || record.data.vnet === null) {
100 return value;
101 }
102 return PVE.Utils.format_sdnvnet_type(value, {}, record);
f6710aac
TL
103 },
104 },
9233148b 105 ],
f6710aac 106 idProperty: 'vnet',
9233148b 107 });
9233148b 108});