]> git.proxmox.com Git - proxmox-backup.git/blob - www/window/DataStoreEdit.js
c2a9527a83646c981a8e6ca3ba35384599705e3a
[proxmox-backup.git] / www / window / DataStoreEdit.js
1 Ext.define('PBS.DataStoreEdit', {
2 extend: 'Proxmox.window.Edit',
3 alias: 'widget.pbsDataStoreEdit',
4 mixins: ['Proxmox.Mixin.CBind'],
5
6 subject: gettext('Datastore'),
7 isAdd: true,
8
9 bodyPadding: 0,
10
11 cbindData: function(initialConfig) {
12 var me = this;
13
14 let name = initialConfig.name;
15 let baseurl = '/api2/extjs/config/datastore';
16
17 me.isCreate = !name;
18 if (!me.isCreate) {
19 me.defaultFocus = 'textfield[name=comment]';
20 }
21 me.url = name ? baseurl + '/' + name : baseurl;
22 me.method = name ? 'PUT' : 'POST';
23 me.autoLoad = !!name;
24 return {};
25 },
26
27 items: {
28 xtype: 'tabpanel',
29 bodyPadding: 10,
30 listeners: {
31 tabchange: function(tb, newCard) {
32 Ext.GlobalEvents.fireEvent('proxmoxShowHelp', newCard.onlineHelp);
33 }
34 },
35 items: [
36 {
37 title: gettext('General'),
38 xtype: 'inputpanel',
39 onlineHelp: 'datastore_intro',
40 column1: [
41 {
42 xtype: 'pmxDisplayEditField',
43 cbind: {
44 editable: '{isCreate}',
45 },
46 name: 'name',
47 allowBlank: false,
48 fieldLabel: gettext('Name'),
49 },
50 {
51 xtype: 'pmxDisplayEditField',
52 cbind: {
53 editable: '{isCreate}',
54 },
55 name: 'path',
56 allowBlank: false,
57 fieldLabel: gettext('Backing Path'),
58 emptyText: gettext('An absolute path'),
59 },
60 ],
61 column2: [
62 {
63 xtype: 'pbsCalendarEvent',
64 name: 'gc-schedule',
65 fieldLabel: gettext("GC Schedule"),
66 emptyText: gettext('none'),
67 cbind: {
68 deleteEmpty: '{!isCreate}',
69 },
70 },
71 {
72 xtype: 'pbsCalendarEvent',
73 name: 'prune-schedule',
74 fieldLabel: gettext("Prune Schedule"),
75 emptyText: gettext('none'),
76 cbind: {
77 deleteEmpty: '{!isCreate}',
78 },
79 },
80 {
81 xtype: 'pbsCalendarEvent',
82 name: 'verify-schedule',
83 fieldLabel: gettext("Verify Schedule"),
84 emptyText: gettext('none'),
85 cbind: {
86 deleteEmpty: '{!isCreate}',
87 },
88 },
89 ],
90 columnB: [
91 {
92 xtype: 'textfield',
93 name: 'comment',
94 fieldLabel: gettext('Comment'),
95 },
96 ],
97 },
98 {
99 title: gettext('Prune Options'),
100 xtype: 'inputpanel',
101 onlineHelp: 'backup_pruning',
102 column1: [
103 {
104 xtype: 'proxmoxintegerfield',
105 fieldLabel: gettext('Keep Last'),
106 name: 'keep-last',
107 cbind: {
108 deleteEmpty: '{!isCreate}',
109 },
110 minValue: 1,
111 allowBlank: true,
112 },
113 {
114 xtype: 'proxmoxintegerfield',
115 fieldLabel: gettext('Keep Daily'),
116 name: 'keep-daily',
117 cbind: {
118 deleteEmpty: '{!isCreate}',
119 },
120 minValue: 1,
121 allowBlank: true,
122 },
123 {
124 xtype: 'proxmoxintegerfield',
125 fieldLabel: gettext('Keep Monthly'),
126 name: 'keep-monthly',
127 cbind: {
128 deleteEmpty: '{!isCreate}',
129 },
130 minValue: 1,
131 allowBlank: true,
132 },
133 ],
134 column2: [
135 {
136 xtype: 'proxmoxintegerfield',
137 fieldLabel: gettext('Keep Hourly'),
138 name: 'keep-hourly',
139 cbind: {
140 deleteEmpty: '{!isCreate}',
141 },
142 minValue: 1,
143 allowBlank: true,
144 },
145 {
146 xtype: 'proxmoxintegerfield',
147 fieldLabel: gettext('Keep Weekly'),
148 name: 'keep-weekly',
149 cbind: {
150 deleteEmpty: '{!isCreate}',
151 },
152 minValue: 1,
153 allowBlank: true,
154 },
155 {
156 xtype: 'proxmoxintegerfield',
157 fieldLabel: gettext('Keep Yearly'),
158 name: 'keep-yearly',
159 cbind: {
160 deleteEmpty: '{!isCreate}',
161 },
162 minValue: 1,
163 allowBlank: true,
164 },
165 ],
166 },
167 ],
168 },
169 });