d757021f4c
taken mostly from PVE, with adaption to how PBS does things. Main difference is that we do not have a resource store singleton here which we can use, but for datastores we can already use the always present datastore-list store. Register it to the store manager with a "storeId" property (vs. our internal storeid one). Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
74 lines
1.7 KiB
JavaScript
74 lines
1.7 KiB
JavaScript
Ext.define('PBS.data.PermissionPathsStore', {
|
|
extend: 'Ext.data.Store',
|
|
alias: 'store.pbsPermissionPaths',
|
|
fields: ['value'],
|
|
autoLoad: false,
|
|
data: [
|
|
{ 'value': '/' },
|
|
{ 'value': '/access' },
|
|
{ 'value': '/access/acl' },
|
|
{ 'value': '/access/users' },
|
|
{ 'value': '/datastore' },
|
|
{ 'value': '/remote' },
|
|
{ 'value': '/system' },
|
|
{ 'value': '/system/disks' },
|
|
{ 'value': '/system/log' },
|
|
{ 'value': '/system/network' },
|
|
{ 'value': '/system/network/dns' },
|
|
{ 'value': '/system/network/interfaces' },
|
|
{ 'value': '/system/services' },
|
|
{ 'value': '/system/status' },
|
|
{ 'value': '/system/tasks' },
|
|
{ 'value': '/system/time' },
|
|
],
|
|
|
|
constructor: function(config) {
|
|
let me = this;
|
|
|
|
config = config || {};
|
|
me.callParent([config]);
|
|
|
|
// TODO: this is but a HACK until we have some sort of resource
|
|
// storage like PVE
|
|
let datastores = Ext.data.StoreManager.lookup('pbs-datastore-list');
|
|
|
|
if (datastores) {
|
|
let donePaths = {};
|
|
me.suspendEvents();
|
|
datastores.each(function(record) {
|
|
let path = `/datastore/${record.data.store}`;
|
|
if (path !== undefined && !donePaths[path]) {
|
|
me.add({ value: path });
|
|
donePaths[path] = 1;
|
|
}
|
|
});
|
|
me.resumeEvents();
|
|
|
|
me.fireEvent('refresh', me);
|
|
me.fireEvent('datachanged', me);
|
|
}
|
|
|
|
me.sort({
|
|
property: 'value',
|
|
direction: 'ASC',
|
|
});
|
|
},
|
|
});
|
|
|
|
Ext.define('PBS.form.PermissionPathSelector', {
|
|
extend: 'Ext.form.field.ComboBox',
|
|
xtype: 'pbsPermissionPathSelector',
|
|
|
|
valueField: 'value',
|
|
displayField: 'value',
|
|
typeAhead: true,
|
|
anyMatch: true,
|
|
queryMode: 'local',
|
|
|
|
store: {
|
|
type: 'pbsPermissionPaths',
|
|
},
|
|
regexText: gettext('Invalid permission path.'),
|
|
regex: /\/((access|datastore|remote|system)\/.*)?/,
|
|
});
|