]> git.proxmox.com Git - pmg-gui.git/blob - js/Transport.js
use new proxmoxStdRemoveButton widget
[pmg-gui.git] / js / Transport.js
1 Ext.define('pmg-transport', {
2 extend: 'Ext.data.Model',
3 fields: [ 'domain', 'host', { name: 'port', type: 'integer' },
4 { name: 'use_mx', type: 'boolean' }, 'comment' ],
5 proxy: {
6 type: 'proxmox',
7 url: "/api2/json/config/transport"
8 },
9 idProperty: 'domain'
10 });
11
12 Ext.define('PMG.Transport', {
13 extend: 'Ext.grid.GridPanel',
14 alias: ['widget.pmgTransport'],
15
16 initComponent : function() {
17 var me = this;
18
19 var store = new Ext.data.Store({
20 model: 'pmg-transport',
21 sorters: {
22 property: 'domain',
23 order: 'DESC'
24 }
25 });
26
27 var reload = function() {
28 store.load();
29 };
30
31 me.selModel = Ext.create('Ext.selection.RowModel', {});
32
33 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
34 selModel: me.selModel,
35 baseurl: '/config/transport',
36 callback: reload,
37 waitMsgTarget: me
38 });
39
40 var common_properties = [
41 {
42 xtype: 'textfield',
43 name: 'host',
44 fieldLabel: gettext("Host")
45 },
46 {
47 xtype: 'proxmoxintegerfield',
48 name: 'port',
49 value: 25,
50 minValue: 1,
51 maxValue: 65535,
52 fieldLabel: gettext("Port")
53 },
54 {
55 xtype: 'proxmoxcheckbox',
56 name: 'use_mx',
57 checked: true,
58 uncheckedValue: 0,
59 fieldLabel: gettext("Use MX")
60 },
61 {
62 xtype: 'textfield',
63 name: 'comment',
64 fieldLabel: gettext("Comment")
65 }
66 ];
67
68 var edit_properties = common_properties.slice();
69 edit_properties.unshift({
70 xtype: 'displayfield',
71 name: 'domain',
72 fieldLabel: gettext("Relay Domain")
73 });
74
75 var create_properties = common_properties.slice();
76 create_properties.unshift({
77 xtype: 'proxmoxtextfield',
78 name: 'domain',
79 fieldLabel: gettext("Relay Domain")
80 });
81
82 var run_editor = function() {
83 var rec = me.selModel.getSelection()[0];
84 if (!rec) {
85 return;
86 }
87
88 var config = {
89 url: "/api2/extjs/config/transport/" + rec.data.domain,
90 method: 'PUT',
91 subject: gettext("Transport"),
92 items: edit_properties
93 };
94
95 var win = Ext.createWidget('proxmoxWindowEdit', config);
96
97 win.load();
98 win.on('destroy', reload);
99 win.show();
100 };
101
102 var tbar = [
103 {
104 xtype: 'proxmoxButton',
105 text: gettext('Edit'),
106 disabled: true,
107 selModel: me.selModel,
108 handler: run_editor
109 },
110 {
111 text: gettext('Create'),
112 handler: function() {
113 var config = {
114 method: 'POST',
115 url: "/api2/extjs/config/transport",
116 create: true,
117 subject: gettext("Transport"),
118 items: create_properties
119 };
120
121 var win = Ext.createWidget('proxmoxWindowEdit', config);
122
123 win.on('destroy', reload);
124 win.show();
125 }
126 },
127 remove_btn
128 ];
129
130 Proxmox.Utils.monStoreErrors(me, store);
131
132 Ext.apply(me, {
133 store: store,
134 tbar: tbar,
135 viewConfig: {
136 trackOver: false
137 },
138 columns: [
139 {
140 header: gettext('Relay Domain'),
141 width: 200,
142 sortable: true,
143 dataIndex: 'domain'
144 },
145 {
146 header: gettext('Host'),
147 width: 200,
148 sortable: true,
149 dataIndex: 'host'
150 },
151 {
152 header: gettext('Port'),
153 width: 80,
154 sortable: false,
155 dataIndex: 'port'
156 },
157 {
158 header: gettext('Use MX'),
159 width: 80,
160 renderer: Proxmox.Utils.format_boolean,
161 sortable: false,
162 dataIndex: 'use_mx'
163 },
164 {
165 header: gettext('Comment'),
166 sortable: false,
167 renderer: Ext.String.htmlEncode,
168 dataIndex: 'comment',
169 flex: 1
170 }
171 ],
172 listeners: {
173 itemdblclick: run_editor,
174 activate: reload
175 }
176 });
177
178 me.callParent();
179 }
180 });