]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/sdn/ZoneView.js
ui: eslint: fix various spacing related issues
[pve-manager.git] / www / manager6 / sdn / ZoneView.js
1 Ext.define('PVE.sdn.ZoneView', {
2 extend: 'Ext.grid.GridPanel',
3 alias: ['widget.pveSDNZoneView'],
4
5 onlineHelp: 'pvesdn_zone_plugins',
6
7 stateful: true,
8 stateId: 'grid-sdn-zone',
9
10 createSDNEditWindow: function(type, sid) {
11 let schema = PVE.Utils.sdnzoneSchema[type];
12 if (!schema || !schema.ipanel) {
13 throw "no editor registered for zone type: " + type;
14 }
15
16 Ext.create('PVE.sdn.zones.BaseEdit', {
17 paneltype: 'PVE.sdn.zones.' + schema.ipanel,
18 type: type,
19 zone: sid,
20 autoShow: true,
21 listeners: {
22 destroy: this.reloadStore,
23 },
24 });
25 },
26
27 initComponent: function() {
28 let me = this;
29
30 let store = new Ext.data.Store({
31 model: 'pve-sdn-zone',
32 proxy: {
33 type: 'proxmox',
34 url: "/api2/json/cluster/sdn/zones",
35 },
36 sorters: {
37 property: 'zone',
38 order: 'DESC',
39 },
40 });
41
42 let reload = function() {
43 store.load();
44 };
45
46 let sm = Ext.create('Ext.selection.RowModel', {});
47
48 let run_editor = function() {
49 let rec = sm.getSelection()[0];
50 if (!rec) {
51 return;
52 }
53 let type = rec.data.type,
54 zone = rec.data.zone;
55
56 me.createSDNEditWindow(type, zone);
57 };
58
59 let edit_btn = new Proxmox.button.Button({
60 text: gettext('Edit'),
61 disabled: true,
62 selModel: sm,
63 handler: run_editor,
64 });
65
66 let remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
67 selModel: sm,
68 baseurl: '/cluster/sdn/zones/',
69 callback: reload,
70 });
71
72 // else we cannot dynamically generate the add menu handlers
73 let addHandleGenerator = function(type) {
74 return function() { me.createSDNEditWindow(type); };
75 };
76 let addMenuItems = [], type;
77
78 for (type in PVE.Utils.sdnzoneSchema) {
79 let zone = PVE.Utils.sdnzoneSchema[type];
80 if (zone.hideAdd) {
81 continue;
82 }
83 addMenuItems.push({
84 text: PVE.Utils.format_sdnzone_type(type),
85 iconCls: 'fa fa-fw fa-' + zone.faIcon,
86 handler: addHandleGenerator(type),
87 });
88 }
89
90 Ext.apply(me, {
91 store: store,
92 reloadStore: reload,
93 selModel: sm,
94 viewConfig: {
95 trackOver: false,
96 },
97 tbar: [
98 {
99 text: gettext('Add'),
100 menu: new Ext.menu.Menu({
101 items: addMenuItems,
102 }),
103 },
104 remove_btn,
105 edit_btn,
106 ],
107 columns: [
108 {
109 header: 'ID',
110 flex: 2,
111 dataIndex: 'zone',
112 },
113 {
114 header: gettext('Type'),
115 flex: 1,
116 dataIndex: 'type',
117 renderer: PVE.Utils.format_sdnzone_type,
118 },
119 {
120 header: 'MTU',
121 flex: 1,
122 dataIndex: 'mtu',
123 },
124 {
125 header: gettext('Nodes'),
126 flex: 3,
127 dataIndex: 'nodes',
128 },
129 ],
130 listeners: {
131 activate: reload,
132 itemdblclick: run_editor,
133 },
134 });
135
136 me.callParent();
137 },
138 });