]> git.proxmox.com Git - proxmox-backup.git/blame - www/DataStoreConfig.js
ui: do *not* close panel when triggering datastore GC
[proxmox-backup.git] / www / DataStoreConfig.js
CommitLineData
d85facd1
DM
1Ext.define('pbs-data-store-config', {
2 extend: 'Ext.data.Model',
3 fields: [ 'name', 'path', 'comment' ],
4 proxy: {
5 type: 'proxmox',
6 url: "/api2/json/config/datastore"
7 },
8 idProperty: 'name'
9});
10
11Ext.define('PBS.DataStoreConfig', {
12 extend: 'Ext.grid.GridPanel',
13 alias: 'widget.pbsDataStoreConfig',
14
c8fd2dd2
DM
15 title: gettext('Data Store Configuration'),
16
d85facd1
DM
17 initComponent : function() {
18 var me = this;
19
20 var store = new Ext.data.Store({
21 model: 'pbs-data-store-config',
22 sorters: 'name',
23 });
24
25 var reload = function() {
26 store.load();
27 };
28
ad281d1b
DM
29 var sm = Ext.create('Ext.selection.RowModel', {});
30
31 var gc_btn = new Proxmox.button.Button({
32 text: gettext('Start GC'),
33 disabled: true,
34 selModel: sm,
35 handler: function() {
36 var rec = sm.getSelection()[0];
37 Proxmox.Utils.API2Request({
38 url: '/admin/datastore/' + rec.data.name + '/gc',
39 method: 'POST',
40 failure: function(response) {
41 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
8d76e8b7
DM
42 },
43 success: function(response, options) {
44 var upid = response.result.data;
45
46 var win = Ext.create('Proxmox.window.TaskViewer', {
47 upid: upid
48 });
49 win.show();
ad281d1b
DM
50 }
51 });
52 }
53 });
54
55 var tbar = [
d85facd1
DM
56 {
57 text: gettext('Create'),
58 handler: function() {
4897426c
TL
59 let win = Ext.create('PBS.DataStoreEdit', {});
60 win.on('destroy', reload);
61 win.show();
d85facd1 62 }
ad281d1b
DM
63 },
64 gc_btn
d85facd1
DM
65 //edit_btn, remove_btn
66 ];
67
d85facd1
DM
68 Proxmox.Utils.monStoreErrors(me, store);
69
70 Ext.apply(me, {
71 store: store,
72 selModel: sm,
73 tbar: tbar,
74 viewConfig: {
75 trackOver: false
76 },
77 columns: [
78 {
79 header: gettext('Name'),
80 sortable: true,
81 dataIndex: 'name',
82 flex: 1
83 },
84 {
85 header: gettext('Path'),
86 sortable: true,
87 dataIndex: 'path',
88 flex: 1
89 },
90 {
91 header: gettext('Comment'),
92 sortable: false,
93 dataIndex: 'comment',
94 renderer: Ext.String.htmlEncode,
95 flex: 2
96 }
97 ],
98 listeners: {
99 activate: reload
100 }
101 });
102
103 me.callParent();
104
105 store.load();
106 }
107});
4897426c
TL
108
109Ext.define('PBS.DataStoreInputPanel', {
110 extend: 'Proxmox.panel.InputPanel',
111 alias: 'widget.pbsDataStoreInputPanel',
112
113 onGetValues: function(values) {
114 var me = this;
115
116 delete values.comment;
117
118 return values;
119 },
120
121 column1: [
122 {
123 xtype: 'textfield',
124 name: 'name',
125 fieldLabel: gettext('Name'),
126 },
127 ],
128
129 column2: [
130 {
131 xtype: 'textfield',
132 name: 'path',
133 fieldLabel: gettext('Backing Path')
134 },
135 ],
136
137 columnB: [
138 {
139 xtype: 'textfield',
140 name: 'comment',
141 emptyText: 'Not yet submitted...',
142 fieldLabel: gettext('Comment')
143 },
144 ],
145});
146
147Ext.define('PBS.DataStoreEdit', {
148 extend: 'Proxmox.window.Edit',
149
150 url: '/api2/extjs/config/datastore',
151 method: 'POST',
152
153 subject: gettext('Datastore'),
154 isAdd: true,
155 items: [{
156 xtype: 'pbsDataStoreInputPanel',
157 }],
158});