]>
Commit | Line | Data |
---|---|---|
c69884a4 WB |
1 | Ext.define('PBS.window.PruneJobEdit', { |
2 | extend: 'Proxmox.window.Edit', | |
3 | alias: 'widget.pbsPruneJobEdit', | |
4 | mixins: ['Proxmox.Mixin.CBind'], | |
5 | ||
6 | userid: undefined, | |
7 | ||
e198127e | 8 | onlineHelp: 'maintenance_prune_jobs', |
c69884a4 WB |
9 | |
10 | isAdd: true, | |
11 | ||
12 | subject: gettext('Prune Job'), | |
13 | ||
c69884a4 WB |
14 | defaultFocus: 'proxmoxtextfield[name=comment]', |
15 | ||
16 | cbindData: function(initialConfig) { | |
17 | let me = this; | |
18 | ||
19 | let baseurl = '/api2/extjs/config/prune'; | |
20 | let id = initialConfig.id; | |
21 | ||
22 | me.isCreate = !id; | |
23 | me.url = id ? `${baseurl}/${id}` : baseurl; | |
24 | me.method = id ? 'PUT' : 'POST'; | |
25 | me.autoLoad = !!id; | |
26 | me.scheduleValue = id ? null : 'hourly'; | |
c69884a4 WB |
27 | me.editDatastore = me.datastore === undefined && me.isCreate; |
28 | return { }; | |
29 | }, | |
30 | ||
31 | controller: { | |
32 | xclass: 'Ext.app.ViewController', | |
33 | control: { | |
34 | 'pbsDataStoreSelector[name=store]': { | |
35 | change: 'storeChange', | |
36 | }, | |
37 | }, | |
38 | ||
39 | storeChange: function(field, value) { | |
40 | let view = this.getView(); | |
41 | let nsSelector = view.down('pbsNamespaceSelector[name=ns]'); | |
42 | nsSelector.setDatastore(value); | |
43 | }, | |
44 | }, | |
45 | ||
c69884a4 | 46 | items: { |
9ce2f903 TL |
47 | xtype: 'inputpanel', |
48 | onGetValues: function(values) { | |
49 | let me = this; | |
50 | ||
51 | if (!values.id && me.up('pbsPruneJobEdit').isCreate) { | |
52 | values.id = 's-' + Ext.data.identifier.Uuid.Global.generate().slice(0, 13); | |
53 | } | |
54 | if (!me.isCreate) { | |
55 | if (typeof values.delete === 'string') { | |
56 | values.delete = values.delete.split(','); | |
57 | } | |
58 | } | |
c93a8de8 TL |
59 | values.disable = !values.enable; |
60 | delete values.enable; | |
61 | ||
62 | return values; | |
63 | }, | |
64 | onSetValues: function(values) { | |
65 | let me = this; | |
66 | values.enable = !values.disable; | |
67 | delete values.disable; | |
68 | ||
9ce2f903 TL |
69 | return values; |
70 | }, | |
71 | column1: [ | |
c69884a4 | 72 | { |
9ce2f903 TL |
73 | xtype: 'pmxDisplayEditField', |
74 | fieldLabel: gettext('Datastore'), | |
75 | name: 'store', | |
76 | submitValue: true, | |
77 | cbind: { | |
78 | editable: '{editDatastore}', | |
79 | value: '{datastore}', | |
c69884a4 | 80 | }, |
9ce2f903 TL |
81 | editConfig: { |
82 | xtype: 'pbsDataStoreSelector', | |
83 | allowBlank: false, | |
84 | }, | |
85 | }, | |
86 | { | |
87 | xtype: 'pbsNamespaceSelector', | |
88 | fieldLabel: gettext('Namespace'), | |
89 | name: 'ns', | |
90 | cbind: { | |
91 | datastore: '{datastore}', | |
92 | }, | |
93 | listeners: { | |
94 | change: function(field, localNs) { | |
95 | let me = this; | |
96 | let view = me.up('pbsPruneJobEdit'); | |
97 | ||
98 | let maxDepthField = view.down('field[name=max-depth]'); | |
99 | maxDepthField.setLimit(localNs); | |
100 | maxDepthField.validate(); | |
c69884a4 | 101 | }, |
9ce2f903 TL |
102 | }, |
103 | }, | |
104 | { | |
105 | xtype: 'pbsNamespaceMaxDepthReduced', | |
106 | name: 'max-depth', | |
107 | fieldLabel: gettext('Max. Depth'), | |
169ddf54 DC |
108 | cbind: { |
109 | deleteEmpty: '{!isCreate}', | |
110 | }, | |
9ce2f903 TL |
111 | }, |
112 | ], | |
c69884a4 | 113 | |
9ce2f903 TL |
114 | column2: [ |
115 | { | |
116 | fieldLabel: gettext('Prune Schedule'), | |
117 | xtype: 'pbsCalendarEvent', | |
118 | name: 'schedule', | |
0f7204a4 | 119 | allowBlank: false, |
9ce2f903 | 120 | cbind: { |
38fd54fb | 121 | value: '{scheduleValue}', |
9ce2f903 TL |
122 | }, |
123 | }, | |
124 | { | |
125 | xtype: 'proxmoxcheckbox', | |
126 | fieldLabel: gettext('Enabled'), | |
127 | name: 'enable', | |
128 | uncheckedValue: 0, | |
129 | defaultValue: 1, | |
130 | checked: true, | |
131 | }, | |
132 | ], | |
c69884a4 | 133 | |
9ce2f903 TL |
134 | columnB: [ |
135 | { | |
136 | xtype: 'pbsPruneInputPanel', | |
169ddf54 DC |
137 | cbind: { |
138 | isCreate: '{isCreate}', | |
139 | }, | |
27d3a232 | 140 | getValues: () => ({}), // let that handle our inputpanel here |
9ce2f903 TL |
141 | }, |
142 | { | |
143 | fieldLabel: gettext('Comment'), | |
144 | xtype: 'proxmoxtextfield', | |
145 | name: 'comment', | |
146 | cbind: { | |
147 | deleteEmpty: '{!isCreate}', | |
148 | }, | |
149 | }, | |
150 | ], | |
151 | advancedColumn1: [ | |
152 | { | |
153 | xtype: 'pmxDisplayEditField', | |
154 | fieldLabel: gettext('Job ID'), | |
155 | emptyText: gettext('Autogenerate'), | |
156 | name: 'id', | |
157 | allowBlank: true, | |
158 | regex: PBS.Utils.SAFE_ID_RE, | |
159 | cbind: { | |
160 | editable: '{isCreate}', | |
161 | }, | |
c69884a4 WB |
162 | }, |
163 | ], | |
164 | }, | |
165 | }); |