]>
git.proxmox.com Git - proxmox-backup.git/blob - www/form/PermissionPathSelector.js
1 Ext
.define('PBS.data.PermissionPathsStore', {
2 extend
: 'Ext.data.Store',
3 alias
: 'store.pbsPermissionPaths',
8 { 'value': '/access' },
9 { 'value': '/access/acl' },
10 { 'value': '/access/users' },
11 { 'value': '/access/domains' },
12 { 'value': '/access/openid' },
13 { 'value': '/datastore' },
14 { 'value': '/remote' },
15 { 'value': '/system' },
16 { 'value': '/system/certificates' },
17 { 'value': '/system/disks' },
18 { 'value': '/system/log' },
19 { 'value': '/system/network' },
20 { 'value': '/system/network/dns' },
21 { 'value': '/system/network/interfaces' },
22 { 'value': '/system/notifications' },
23 { 'value': '/system/services' },
24 { 'value': '/system/status' },
25 { 'value': '/system/tasks' },
26 { 'value': '/system/time' },
28 { 'value': '/tape/device' },
29 { 'value': '/tape/pool' },
30 { 'value': '/tape/job' },
33 constructor: function(config
) {
36 config
= config
|| {};
37 me
.callParent([config
]);
39 // TODO: this is but a HACK until we have some sort of resource storage like PVE
40 let datastores
= Ext
.data
.StoreManager
.lookup('pbs-datastore-list');
45 datastores
.each(function(record
) {
46 let path
= `/datastore/${record.data.store}`;
47 if (path
!== undefined && !donePaths
[path
]) {
48 me
.add({ value
: path
});
55 me
.setDatastore(me
.datastore
);
58 me
.fireEvent('refresh', me
);
59 me
.fireEvent('datachanged', me
);
66 me
.initialized
= true;
69 setDatastore
: async
function(datastore
) {
75 let url
= `/api2/extjs/admin/datastore/${datastore}/namespace?max-depth=7`;
76 let { result
: { data
: ns
} } = await Proxmox
.Async
.api2({ url
});
77 // TODO: remove "old" datastore's ns paths?
82 for (const item
of ns
) {
84 me
.add({ value
: `/datastore/${datastore}/${item.ns}` });
89 me
.fireEvent('refresh', me
);
90 me
.fireEvent('datachanged', me
);
93 me
.filter(item
=> item
.get('value')?.startsWith(`/datastore/${datastore}`));
97 Ext
.define('PBS.form.PermissionPathSelector', {
98 extend
: 'Ext.form.field.ComboBox',
99 xtype
: 'pbsPermissionPathSelector',
100 mixins
: ['Proxmox.Mixin.CBind'],
103 datastore
: null, // set to filter by a datastore, could be also made generic path
106 setDatastore: function(datastore
) {
108 if (me
.datastore
=== datastore
) {
111 me
.datastore
= datastore
;
112 let store
= me
.getStore();
115 store
.datastore
= datastore
;
118 store
.setDatastore(datastore
);
123 displayField
: 'value',
125 typeAhead
: '{editable}',
131 type
: 'pbsPermissionPaths',
133 regexText
: gettext('Invalid permission path.'),
134 regex
: /\/((access|datastore|remote|system)\/.*)?/,