]> git.proxmox.com Git - pmg-gui.git/blob - js/RelayDomains.js
RelayDomains.js: allow to manage relay domains
[pmg-gui.git] / js / RelayDomains.js
1 Ext.define('pmg-domains', {
2 extend: 'Ext.data.Model',
3 fields: [ 'domain', 'comment' ],
4 proxy: {
5 type: 'proxmox',
6 url: "/api2/json/config/domains"
7 },
8 idProperty: 'domain'
9 });
10
11 Ext.define('PMG.RelayDomains', {
12 extend: 'Ext.grid.GridPanel',
13 alias: ['widget.pmgRelayDomains'],
14
15 initComponent : function() {
16 var me = this;
17
18 var store = new Ext.data.Store({
19 model: 'pmg-domains',
20 sorters: {
21 property: 'domain',
22 order: 'DESC'
23 }
24 });
25
26 var reload = function() {
27 store.load();
28 };
29
30 var sm = Ext.create('Ext.selection.RowModel', {});
31
32 var remove_btn = Ext.createWidget('proxmoxButton', {
33 text: gettext('Remove'),
34 disabled: true,
35 selModel: sm,
36 confirmMsg: function (rec) {
37 return Ext.String.format(
38 gettext('Are you sure you want to remove entry {0}'),
39 "'" + rec.data.domain + "'");
40 },
41 handler: function(btn, event, rec) {
42 Proxmox.Utils.API2Request({
43 url: '/config/domains/' + rec.data.domain,
44 method: 'DELETE',
45 waitMsgTarget: me,
46 callback: function() {
47 reload();
48 },
49 failure: function (response, opts) {
50 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
51 }
52 });
53 }
54 });
55
56 var tbar = [
57 {
58 text: gettext('Create'),
59 handler: function() {
60 var config = {
61 method: 'POST',
62 create: true,
63 url: "/api2/extjs/config/domains",
64 subject: gettext("Relay Domain"),
65 items: {
66 xtype: 'proxmoxtextfield',
67 name: 'domain',
68 fieldLabel: gettext("Relay Domain")
69 }
70 };
71
72 var win = Ext.createWidget('proxmoxWindowEdit', config);
73 win.on('destroy', reload);
74 win.show();
75 }
76 },
77 remove_btn
78 ];
79
80 Proxmox.Utils.monStoreErrors(me, store);
81
82 Ext.apply(me, {
83 store: store,
84 selModel: sm,
85 tbar: tbar,
86 viewConfig: {
87 trackOver: false
88 },
89 columns: [
90 {
91 header: gettext('Relay Domain'),
92 width: 200,
93 sortable: true,
94 dataIndex: 'domain'
95 },
96 {
97 header: gettext('Comment'),
98 sortable: false,
99 renderer: Ext.String.htmlEncode,
100 dataIndex: 'comment',
101 flex: 1
102 }
103 ],
104 listeners: {
105 activate: reload
106 }
107 });
108
109 me.callParent();
110 }
111 });