]> git.proxmox.com Git - proxmox-backup.git/blob - www/config/DataStoreConfig.js
ui: refactor DataStoreConfig and Edit
[proxmox-backup.git] / www / config / DataStoreConfig.js
1 Ext.define('pbs-datastore-list', {
2 extend: 'Ext.data.Model',
3 fields: [ 'name', 'comment' ],
4 proxy: {
5 type: 'proxmox',
6 url: "/api2/json/admin/datastore"
7 },
8 idProperty: 'store'
9 });
10
11 Ext.define('pbs-data-store-config', {
12 extend: 'Ext.data.Model',
13 fields: [ 'name', 'path', 'comment' ],
14 proxy: {
15 type: 'proxmox',
16 url: "/api2/json/config/datastore"
17 },
18 idProperty: 'name'
19 });
20
21 Ext.define('PBS.DataStoreConfig', {
22 extend: 'Ext.grid.GridPanel',
23 alias: 'widget.pbsDataStoreConfig',
24
25 title: gettext('Data Store Configuration'),
26
27 controller: {
28 xclass: 'Ext.app.ViewController',
29
30 createDataStore: function() {
31 let me = this;
32 Ext.create('PBS.DataStoreEdit', {
33 listeners: {
34 destroy: function() {
35 me.reload();
36 },
37 },
38 }).show();
39 },
40
41 garbageCollect: function() {
42 let me = this;
43 let view = me.getView();
44 let selection = view.getSelection();
45 if (selection.length < 1) return;
46
47 let name = encodeURIComponent(selection[0].data.name);
48 Proxmox.Utils.API2Request({
49 url: `/admin/datastore/${name}/gc`,
50 method: 'POST',
51 failure: function(response) {
52 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
53 },
54 success: function(response, options) {
55 Ext.create('Proxmox.window.TaskViewer', {
56 upid: response.result.data,
57 }).show();
58 },
59 });
60 },
61
62 reload: function() { this.getView().getStore().rstore.load(); },
63
64 init: function(view) {
65 Proxmox.Utils.monStoreErrors(view, view.getStore().rstore);
66 },
67 },
68
69 store: {
70 type: 'diff',
71 autoDestroy: true,
72 autoDestroyRstore: true,
73 sorters: 'name',
74 rstore: {
75 type: 'update',
76 storeid: 'pbs-data-store-config',
77 model: 'pbs-data-store-config',
78 autoStart: true,
79 interval: 10000,
80 },
81 },
82
83 tbar: [
84 {
85 xtype: 'proxmoxButton',
86 selModel: false,
87 text: gettext('Create'),
88 handler: 'createDataStore',
89 },
90 // edit/remove button
91 '-',
92 {
93 xtype: 'proxmoxButton',
94 text: gettext('Start GC'),
95 disabled: true,
96 handler: 'garbageCollect',
97 },
98 ],
99
100 columns: [
101 {
102 header: gettext('Name'),
103 sortable: true,
104 dataIndex: 'name',
105 flex: 1,
106 },
107 {
108 header: gettext('Path'),
109 sortable: true,
110 dataIndex: 'path',
111 flex: 1,
112 },
113 {
114 header: gettext('Comment'),
115 sortable: false,
116 dataIndex: 'comment',
117 renderer: Ext.String.htmlEncode,
118 flex: 2,
119 },
120 ],
121
122 listeners: {
123 activate: 'reload',
124 },
125 });