[pbs-devel] [PATCH proxmox-backup 4/4] www: add remote store selector
Fabian Grünbichler
f.gruenbichler at proxmox.com
Wed Nov 4 14:10:26 CET 2020
(hopefully) improved upon NFS export selection in PVE
Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
Notes:
does not display loading errors nicely (the remote store picker needs to be
opened before the remote changes, otherwise the elements needed to display the
error don't exist yet)
www/window/SyncJobEdit.js | 97 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 96 insertions(+), 1 deletion(-)
diff --git a/www/window/SyncJobEdit.js b/www/window/SyncJobEdit.js
index 43338cab..c71821d0 100644
--- a/www/window/SyncJobEdit.js
+++ b/www/window/SyncJobEdit.js
@@ -1,3 +1,90 @@
+Ext.define('PBS.form.RemoteStoreSelector', {
+ extend: 'Proxmox.form.ComboGrid',
+ alias: 'widget.pbsRemoteStoreSelector',
+
+ queryMode: 'local',
+
+ valueField: 'store',
+ displayField: 'store',
+ notFoundIsValid: true,
+
+ matchFieldWidth: false,
+ listConfig: {
+ loadingText: gettext('Scanning...'),
+ width: 350,
+ columns: [
+ {
+ header: gettext('Datastore'),
+ sortable: true,
+ dataIndex: 'store',
+ renderer: Ext.String.htmlEncode,
+ flex: 1,
+ },
+ {
+ header: gettext('Comment'),
+ dataIndex: 'comment',
+ renderer: Ext.String.htmlEncode,
+ flex: 1,
+ },
+ ],
+ },
+
+ doRawQuery: function() {
+ // do nothing.
+ },
+
+ setRemote: function(remote) {
+ let me = this;
+
+ if (me.remote === remote) {
+ return;
+ }
+
+ me.remote = remote;
+
+ let store = me.store;
+ store.removeAll();
+
+ if (me.remote) {
+ me.setDisabled(false);
+ if (me.actualChange) {
+ me.clearValue();
+ }
+
+ store.proxy.url = '/api2/json/config/remote/' + encodeURIComponent(me.remote) + '/scan';
+ store.load();
+
+ me.actualChange = true;
+ } else {
+ me.setDisabled(true);
+ me.clearValue();
+ }
+ },
+
+ initComponent: function() {
+ let me = this;
+
+ let store = Ext.create('Ext.data.Store', {
+ fields: ['store', 'comment'],
+ proxy: {
+ type: 'proxmox',
+ url: '/api2/json/config/remote/' + encodeURIComponent(me.remote) + '/scan',
+ },
+ });
+
+ store.sort('store', 'ASC');
+
+ Ext.apply(me, {
+ store: store,
+ });
+
+ me.callParent();
+
+ Proxmox.Utils.monStoreErrors(me.getPicker(), me.store);
+ },
+});
+
+
Ext.define('PBS.window.SyncJobEdit', {
extend: 'Proxmox.window.Edit',
alias: 'widget.pbsSyncJobEdit',
@@ -52,12 +139,20 @@ Ext.define('PBS.window.SyncJobEdit', {
xtype: 'pbsRemoteSelector',
allowBlank: false,
name: 'remote',
+ listeners: {
+ change: function(f, value) {
+ let me = this;
+ let remoteStoreField = me.up('pbsSyncJobEdit').down('field[name=remote-store]');
+ remoteStoreField.setRemote(value);
+ },
+ },
},
{
fieldLabel: gettext('Source Datastore'),
- xtype: 'proxmoxtextfield',
+ xtype: 'pbsRemoteStoreSelector',
allowBlank: false,
name: 'remote-store',
+ disabled: true,
},
],
--
2.20.1
More information about the pbs-devel
mailing list