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