]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/SyncWindow.js
ui: realm sync: add some empty texts and specifiy what gets purged
[pve-manager.git] / www / manager6 / dc / SyncWindow.js
1 Ext.define('PVE.dc.SyncWindow', {
2 extend: 'Ext.window.Window',
3
4 title: gettext('Realm Sync'),
5
6 width: 600,
7 bodyPadding: 10,
8 modal: true,
9 resizable: false,
10
11 controller: {
12 xclass: 'Ext.app.ViewController',
13
14 control: {
15 'form': {
16 validitychange: function(field, valid) {
17 let me = this;
18 me.lookup('preview_btn').setDisabled(!valid);
19 me.lookup('sync_btn').setDisabled(!valid);
20 },
21 },
22 'button': {
23 click: function(btn) {
24 this.sync_realm(btn.reference === 'preview_btn');
25 },
26 },
27 },
28
29 sync_realm: function(is_preview) {
30 let me = this;
31 let view = me.getView();
32 let ipanel = me.lookup('ipanel');
33 let params = ipanel.getValues();
34 params['dry-run'] = is_preview ? 1 : 0;
35 Proxmox.Utils.API2Request({
36 url: `/access/domains/${view.realm}/sync`,
37 waitMsgTarget: view,
38 method: 'POST',
39 params,
40 failure: function(response) {
41 view.show();
42 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
43 },
44 success: function(response) {
45 view.hide();
46 Ext.create('Proxmox.window.TaskViewer', {
47 upid: response.result.data,
48 listeners: {
49 destroy: function() {
50 if (is_preview) {
51 view.show();
52 } else {
53 view.close();
54 }
55 },
56 },
57 }).show();
58 },
59 });
60 },
61 },
62
63 items: [
64 {
65 xtype: 'form',
66 reference: 'form',
67 border: false,
68 fieldDefaults: {
69 labelWidth: 100,
70 anchor: '100%',
71 },
72 items: [{
73 xtype: 'inputpanel',
74 reference: 'ipanel',
75 column1: [
76 {
77 xtype: 'proxmoxKVComboBox',
78 name: 'scope',
79 fieldLabel: gettext('Scope'),
80 value: '',
81 emptyText: gettext('No default available'),
82 deleteEmpty: false,
83 allowBlank: false,
84 comboItems: [
85 ['users', gettext('Users')],
86 ['groups', gettext('Groups')],
87 ['both', gettext('Users and Groups')],
88 ],
89 },
90 {
91 xtype: 'proxmoxKVComboBox',
92 value: '',
93 emptyText: gettext('No default available'),
94 deleteEmpty: false,
95 allowBlank: false,
96 comboItems: [
97 ['1', Proxmox.Utils.yesText],
98 ['0', Proxmox.Utils.noText],
99 ],
100 name: 'full',
101 fieldLabel: gettext('Full'),
102 },
103 ],
104
105 column2: [
106 {
107 xtype: 'proxmoxKVComboBox',
108 value: '1',
109 deleteEmpty: false,
110 allowBlank: false,
111 comboItems: [
112 ['1', Proxmox.Utils.yesText],
113 ['0', Proxmox.Utils.noText],
114 ],
115 name: 'enable-new',
116 fieldLabel: gettext('Enable new'),
117 },
118 {
119 xtype: 'proxmoxKVComboBox',
120 value: '',
121 emptyText: gettext('No default available'),
122 deleteEmpty: false,
123 allowBlank: false,
124 comboItems: [
125 ['1', Proxmox.Utils.yesText],
126 ['0', Proxmox.Utils.noText],
127 ],
128 name: 'purge',
129 fieldLabel: gettext('Purge ACLs'),
130 },
131 ],
132
133 columnB: [
134 {
135 xtype: 'displayfield',
136 reference: 'defaulthint',
137 value: gettext('Default sync options can be set by editing the realm.'),
138 userCls: 'pmx-hint',
139 hidden: true
140 },
141 ],
142 }],
143 },
144 ],
145
146 buttons: [
147 {
148 text: gettext('Preview'),
149 reference: 'preview_btn',
150 },
151 {
152 text: gettext('Sync'),
153 reference: 'sync_btn',
154 },
155 ],
156
157 initComponent: function() {
158 let me = this;
159
160 if (!me.realm) {
161 throw "no realm defined";
162 }
163
164 me.callParent();
165
166 Proxmox.Utils.API2Request({
167 url: `/access/domains/${me.realm}`,
168 waitMsgTarget: me,
169 method: 'GET',
170 failure: function(response) {
171 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
172 me.close();
173 },
174 success: function(response) {
175 let default_options = response.result.data['sync-defaults-options'];
176 if (default_options) {
177 let options = PVE.Parser.parsePropertyString(default_options);
178 let ipanel = me.lookup('ipanel');
179 ipanel.setValues(options);
180 } else {
181 me.lookup('defaulthint').setVisible(true);
182 }
183
184 // check validity for button state
185 me.lookup('form').isValid();
186 },
187 });
188 },
189 });