]> git.proxmox.com Git - pmg-gui.git/blob - js/Transport.js
Transport.js: add editor for transport map
[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('proxmoxButton', {
34 text: gettext('Remove'),
35 disabled: true,
36 selModel: me.selModel,
37 confirmMsg: function (rec) {
38 return Ext.String.format(
39 gettext('Are you sure you want to remove entry {0}'),
40 "'" + rec.data.domain + "'");
41 },
42 handler: function(btn, event, rec) {
43 Proxmox.Utils.API2Request({
44 url: '/config/transport/' + rec.data.domain,
45 method: 'DELETE',
46 waitMsgTarget: me,
47 callback: function() {
48 reload();
49 },
50 failure: function (response, opts) {
51 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
52 }
53 });
54 }
55 });
56
57 var common_properties = [
58 {
59 xtype: 'textfield',
60 name: 'host',
61 fieldLabel: gettext("Host")
62 },
63 {
64 xtype: 'proxmoxintegerfield',
65 name: 'port',
66 value: 25,
67 minValue: 1,
68 maxValue: 65535,
69 fieldLabel: gettext("Port")
70 },
71 {
72 xtype: 'proxmoxcheckbox',
73 name: 'use_mx',
74 checked: true,
75 uncheckedValue: 0,
76 fieldLabel: gettext("Use MX")
77 },
78 {
79 xtype: 'textfield',
80 name: 'comment',
81 fieldLabel: gettext("Comment")
82 }
83 ];
84
85 var edit_properties = common_properties.slice();
86 edit_properties.unshift({
87 xtype: 'displayfield',
88 name: 'domain',
89 fieldLabel: gettext("Relay Domain")
90 });
91
92 var create_properties = common_properties.slice();
93 create_properties.unshift({
94 xtype: 'proxmoxtextfield',
95 name: 'domain',
96 fieldLabel: gettext("Relay Domain")
97 });
98
99 var run_editor = function() {
100 var rec = me.selModel.getSelection()[0];
101 if (!rec) {
102 return;
103 }
104
105 var config = {
106 url: "/api2/extjs/config/transport/" + rec.data.domain,
107 method: 'PUT',
108 subject: gettext("Transport"),
109 items: edit_properties
110 };
111
112 var win = Ext.createWidget('proxmoxWindowEdit', config);
113
114 win.load();
115 win.on('destroy', reload);
116 win.show();
117 };
118
119 var tbar = [
120 {
121 xtype: 'proxmoxButton',
122 text: gettext('Edit'),
123 disabled: true,
124 selModel: me.selModel,
125 handler: run_editor
126 },
127 {
128 text: gettext('Create'),
129 handler: function() {
130 var config = {
131 method: 'POST',
132 url: "/api2/extjs/config/transport",
133 create: true,
134 subject: gettext("Transport"),
135 items: create_properties
136 };
137
138 var win = Ext.createWidget('proxmoxWindowEdit', config);
139
140 win.on('destroy', reload);
141 win.show();
142 }
143 },
144 remove_btn
145 ];
146
147 Proxmox.Utils.monStoreErrors(me, store);
148
149 Ext.apply(me, {
150 store: store,
151 tbar: tbar,
152 viewConfig: {
153 trackOver: false
154 },
155 columns: [
156 {
157 header: gettext('Relay Domain'),
158 width: 200,
159 sortable: true,
160 dataIndex: 'domain'
161 },
162 {
163 header: gettext('Host'),
164 width: 200,
165 sortable: true,
166 dataIndex: 'host'
167 },
168 {
169 header: gettext('Port'),
170 width: 80,
171 sortable: false,
172 dataIndex: 'port'
173 },
174 {
175 header: gettext('Use MX'),
176 width: 80,
177 renderer: Proxmox.Utils.format_boolean,
178 sortable: false,
179 dataIndex: 'use_mx'
180 },
181 {
182 header: gettext('Comment'),
183 sortable: false,
184 renderer: Ext.String.htmlEncode,
185 dataIndex: 'comment',
186 flex: 1
187 }
188 ],
189 listeners: {
190 itemdblclick: run_editor,
191 activate: reload
192 }
193 });
194
195 me.callParent();
196 }
197 });