Commit 03d1f71a authored by Dietmar Maurer's avatar Dietmar Maurer

mplement pool management

parent bcde5fa5
......@@ -23,6 +23,7 @@ JSSRC= \
form/ComboGrid.js \
form/KVComboBox.js \
form/Boolean.js \
form/PoolSelector.js \
form/GroupSelector.js \
form/UserSelector.js \
form/RoleSelector.js \
......@@ -118,6 +119,8 @@ JSSRC= \
dc/StorageView.js \
dc/UserEdit.js \
dc/UserView.js \
dc/PoolView.js \
dc/PoolEdit.js \
dc/GroupView.js \
dc/GroupEdit.js \
dc/RoleView.js \
......
......@@ -39,6 +39,11 @@ Ext.define('PVE.dc.Config', {
title: gettext('Groups'),
itemId: 'groups'
},
{
xtype: 'pvePoolView',
title: gettext('Pools'),
itemId: 'pools'
},
{
xtype: 'pveACLView',
title: gettext('Permissions'),
......
......@@ -31,11 +31,10 @@ Ext.define('PVE.dc.GroupEdit', {
allowBlank: false
},
{
xtype: 'pvetextfield',
xtype: 'textfield',
fieldLabel: gettext('Comment'),
name: 'comment',
value: me.groupid,
allowBlank: false
allowBlank: true
}
]
});
......
Ext.define('PVE.dc.PoolEdit', {
extend: 'PVE.window.Edit',
alias: ['widget.pveDcPoolEdit'],
initComponent : function() {
var me = this;
me.create = !me.poolid;
var url;
var method;
if (me.create) {
url = '/api2/extjs/access/pools';
method = 'POST';
} else {
url = '/api2/extjs/access/pools/' + me.poolid;
method = 'PUT';
}
Ext.applyIf(me, {
subject: gettext('Pool'),
url: url,
method: method,
items: [
{
xtype: me.create ? 'pvetextfield' : 'displayfield',
fieldLabel: gettext('Name'),
name: 'poolid',
value: me.poolid,
allowBlank: false
},
{
xtype: 'textfield',
fieldLabel: gettext('Comment'),
name: 'comment',
allowBlank: true
}
]
});
me.callParent();
if (!me.create) {
me.load();
}
}
});
Ext.define('PVE.dc.PoolView', {
extend: 'Ext.grid.GridPanel',
alias: ['widget.pvePoolView'],
initComponent : function() {
var me = this;
var store = new Ext.data.Store({
model: 'pve-pools',
sorters: {
property: 'poolid',
order: 'DESC'
}
});
var reload = function() {
store.load();
};
var sm = Ext.create('Ext.selection.RowModel', {});
var remove_btn = new PVE.button.Button({
text: gettext('Remove'),
disabled: true,
selModel: sm,
confirmMsg: function (rec) {
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'),
"'" + rec.data.poolid + "'");
},
handler: function(btn, event, rec) {
PVE.Utils.API2Request({
url: '/access/pools/' + rec.data.poolid,
method: 'DELETE',
waitMsgTarget: me,
callback: function() {
reload();
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
}
});
var run_editor = function() {
var rec = sm.getSelection()[0];
if (!rec) {
return;
}
var win = Ext.create('PVE.dc.PoolEdit',{
poolid: rec.data.poolid
});
win.on('destroy', reload);
win.show();
};
var edit_btn = new PVE.button.Button({
text: gettext('Edit'),
disabled: true,
selModel: sm,
handler: run_editor
});
var tbar = [
{
text: gettext('Create'),
handler: function() {
var win = Ext.create('PVE.dc.PoolEdit', {});
win.on('destroy', reload);
win.show();
}
},
edit_btn, remove_btn
];
PVE.Utils.monStoreErrors(me, store);
Ext.apply(me, {
store: store,
selModel: sm,
stateful: false,
tbar: tbar,
viewConfig: {
trackOver: false
},
columns: [
{
header: gettext('Name'),
width: 200,
sortable: true,
dataIndex: 'poolid'
},
{
header: gettext('Comment'),
sortable: false,
dataIndex: 'comment',
flex: 1
}
],
listeners: {
show: reload,
itemdblclick: run_editor
}
});
me.callParent();
}
});
Ext.define('PVE.form.PoolSelector', {
extend: 'PVE.form.ComboGrid',
alias: ['widget.pvePoolSelector'],
allowBlank: false,
initComponent: function() {
var me = this;
var store = new Ext.data.Store({
model: 'pve-pools'
});
Ext.apply(me, {
store: store,
autoSelect: false,
valueField: 'poolid',
displayField: 'poolid',
listConfig: {
columns: [
{
header: gettext('Pool'),
sortable: true,
dataIndex: 'poolid',
flex: 1
},
{
id: 'comment',
header: 'Comment',
sortable: false,
dataIndex: 'comment',
flex: 1
}
]
}
});
me.callParent();
store.load();
}
}, function() {
Ext.define('pve-pools', {
extend: 'Ext.data.Model',
fields: [ 'poolid', 'comment' ],
proxy: {
type: 'pve',
url: "/api2/json/access/pools",
},
idProperty: 'poolid'
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment