98bb3b9016
We will show an overall status of the DataStores in the Dashboard, so there is no need for a seperate DataStores Status. This means we can move the Config to where the Status was, and remove the duplicated entry in the NavigationTree, reducing confusion for users We can still seperate the permissions by simply showing a permission denied error, or simply leaving the list empty Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
167 lines
3.1 KiB
JavaScript
167 lines
3.1 KiB
JavaScript
Ext.define('pbs-datastore-list', {
|
|
extend: 'Ext.data.Model',
|
|
fields: [ 'name', 'comment' ],
|
|
proxy: {
|
|
type: 'proxmox',
|
|
url: "/api2/json/admin/datastore"
|
|
},
|
|
idProperty: 'store'
|
|
});
|
|
|
|
Ext.define('pbs-data-store-config', {
|
|
extend: 'Ext.data.Model',
|
|
fields: [ 'name', 'path', 'comment' ],
|
|
proxy: {
|
|
type: 'proxmox',
|
|
url: "/api2/json/config/datastore"
|
|
},
|
|
idProperty: 'name'
|
|
});
|
|
|
|
Ext.define('PBS.DataStoreConfig', {
|
|
extend: 'Ext.grid.GridPanel',
|
|
alias: 'widget.pbsDataStoreConfig',
|
|
|
|
title: gettext('Data Store Configuration'),
|
|
|
|
initComponent : function() {
|
|
var me = this;
|
|
|
|
var store = new Ext.data.Store({
|
|
model: 'pbs-data-store-config',
|
|
sorters: 'name',
|
|
});
|
|
|
|
var reload = function() {
|
|
store.load();
|
|
};
|
|
|
|
var sm = Ext.create('Ext.selection.RowModel', {});
|
|
|
|
var gc_btn = new Proxmox.button.Button({
|
|
text: gettext('Start GC'),
|
|
disabled: true,
|
|
selModel: sm,
|
|
handler: function() {
|
|
var rec = sm.getSelection()[0];
|
|
Proxmox.Utils.API2Request({
|
|
url: '/admin/datastore/' + rec.data.name + '/gc',
|
|
method: 'POST',
|
|
failure: function(response) {
|
|
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
|
|
},
|
|
success: function(response, options) {
|
|
var upid = response.result.data;
|
|
|
|
var win = Ext.create('Proxmox.window.TaskViewer', {
|
|
upid: upid
|
|
});
|
|
win.show();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
var tbar = [
|
|
{
|
|
text: gettext('Create'),
|
|
handler: function() {
|
|
let win = Ext.create('PBS.DataStoreEdit', {});
|
|
win.on('destroy', reload);
|
|
win.show();
|
|
}
|
|
},
|
|
'-',
|
|
gc_btn
|
|
//edit_btn, remove_btn
|
|
];
|
|
|
|
Proxmox.Utils.monStoreErrors(me, store);
|
|
|
|
Ext.apply(me, {
|
|
store: store,
|
|
selModel: sm,
|
|
tbar: tbar,
|
|
columns: [
|
|
{
|
|
header: gettext('Name'),
|
|
sortable: true,
|
|
dataIndex: 'name',
|
|
flex: 1
|
|
},
|
|
{
|
|
header: gettext('Path'),
|
|
sortable: true,
|
|
dataIndex: 'path',
|
|
flex: 1
|
|
},
|
|
{
|
|
header: gettext('Comment'),
|
|
sortable: false,
|
|
dataIndex: 'comment',
|
|
renderer: Ext.String.htmlEncode,
|
|
flex: 2
|
|
}
|
|
],
|
|
listeners: {
|
|
activate: reload
|
|
}
|
|
});
|
|
|
|
me.callParent();
|
|
|
|
store.load();
|
|
}
|
|
});
|
|
|
|
Ext.define('PBS.DataStoreInputPanel', {
|
|
extend: 'Proxmox.panel.InputPanel',
|
|
alias: 'widget.pbsDataStoreInputPanel',
|
|
|
|
onGetValues: function(values) {
|
|
var me = this;
|
|
|
|
return values;
|
|
},
|
|
|
|
column1: [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'name',
|
|
allowBlank: false,
|
|
fieldLabel: gettext('Name'),
|
|
},
|
|
],
|
|
|
|
column2: [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'path',
|
|
allowBlank: false,
|
|
fieldLabel: gettext('Backing Path'),
|
|
emptyText: gettext('An absolute path'),
|
|
},
|
|
],
|
|
|
|
columnB: [
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'comment',
|
|
fieldLabel: gettext('Comment'),
|
|
},
|
|
],
|
|
});
|
|
|
|
Ext.define('PBS.DataStoreEdit', {
|
|
extend: 'Proxmox.window.Edit',
|
|
|
|
url: '/api2/extjs/config/datastore',
|
|
method: 'POST',
|
|
|
|
subject: gettext('Datastore'),
|
|
isAdd: true,
|
|
items: [{
|
|
xtype: 'pbsDataStoreInputPanel',
|
|
}],
|
|
});
|