From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 5EA1C1FF173 for ; Mon, 11 Nov 2024 16:50:39 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3AF4510720; Mon, 11 Nov 2024 16:50:38 +0100 (CET) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Mon, 11 Nov 2024 16:43:48 +0100 Message-Id: <20241111154353.482734-27-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241111154353.482734-1-c.ebner@proxmox.com> References: <20241111154353.482734-1-c.ebner@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.030 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH v7 proxmox-backup 26/31] ui: add view with separate grids for pull and push sync jobs X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Show sync jobs in pull and in push direction in two separate grids, visually separating them to limit possible misconfiguration. Signed-off-by: Christian Ebner --- changes since version 6: - Fix owner header label for sync direction push www/Makefile | 1 + www/config/SyncPullPushView.js | 61 ++++++++++++++++++++++++++++++++++ www/config/SyncView.js | 21 ++++++++++-- www/datastore/DataStoreList.js | 2 +- www/datastore/Panel.js | 2 +- 5 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 www/config/SyncPullPushView.js diff --git a/www/Makefile b/www/Makefile index 609a0ba67..d35e81283 100644 --- a/www/Makefile +++ b/www/Makefile @@ -61,6 +61,7 @@ JSSRC= \ config/TrafficControlView.js \ config/ACLView.js \ config/SyncView.js \ + config/SyncPullPushView.js \ config/VerifyView.js \ config/PruneView.js \ config/GCView.js \ diff --git a/www/config/SyncPullPushView.js b/www/config/SyncPullPushView.js new file mode 100644 index 000000000..3460bc662 --- /dev/null +++ b/www/config/SyncPullPushView.js @@ -0,0 +1,61 @@ +Ext.define('PBS.config.SyncPullPush', { + extend: 'Ext.panel.Panel', + alias: 'widget.pbsSyncJobPullPushView', + title: gettext('Sync Jobs'), + + mixins: ['Proxmox.Mixin.CBind'], + + layout: { + type: 'vbox', + align: 'stretch', + multi: true, + bodyPadding: 5, + }, + defaults: { + collapsible: false, + margin: 5, + }, + scrollable: true, + items: [ + { + xtype: 'pbsSyncJobView', + itemId: 'syncJobsPull', + syncDirection: 'pull', + cbind: { + datastore: '{datastore}', + }, + minHeight: 125, // shows at least one line of content + }, + { + xtype: 'splitter', + performCollapse: false, + }, + { + xtype: 'pbsSyncJobView', + itemId: 'syncJobsPush', + syncDirection: 'push', + cbind: { + datastore: '{datastore}', + }, + flex: 1, + minHeight: 125, // shows at least one line of content + }, + ], + initComponent: function() { + let me = this; + + let subPanelIds = me.items.map(el => el.itemId).filter(id => !!id); + + me.callParent(); + + for (const itemId of subPanelIds) { + let component = me.getComponent(itemId); + component.relayEvents(me, ['activate', 'deactivate', 'destroy']); + } + }, + + cbindData: function(initialConfig) { + let me = this; + me.datastore = initialConfig.datastore ? initialConfig.datastore : undefined; + }, +}); diff --git a/www/config/SyncView.js b/www/config/SyncView.js index 4669a23e2..c1b8fddc2 100644 --- a/www/config/SyncView.js +++ b/www/config/SyncView.js @@ -25,11 +25,21 @@ Ext.define('pbs-sync-jobs-status', { Ext.define('PBS.config.SyncJobView', { extend: 'Ext.grid.GridPanel', alias: 'widget.pbsSyncJobView', + mixins: ['Proxmox.Mixin.CBind'], stateful: true, stateId: 'grid-sync-jobs-v1', - title: gettext('Sync Jobs'), + title: gettext('Sync Jobs - Pull Direction'), + ownerHeader: gettext('Owner'), + + cbindData: function(initialConfig) { + let me = this; + if (me.syncDirection === 'push') { + me.title = gettext('Sync Jobs - Push Direction'); + me.ownerHeader = gettext('Local User'); + } + }, controller: { xclass: 'Ext.app.ViewController', @@ -39,6 +49,7 @@ Ext.define('PBS.config.SyncJobView', { let view = me.getView(); Ext.create('PBS.window.SyncJobEdit', { datastore: view.datastore, + syncDirection: view.syncDirection, listeners: { destroy: function() { me.reload(); @@ -56,6 +67,7 @@ Ext.define('PBS.config.SyncJobView', { Ext.create('PBS.window.SyncJobEdit', { datastore: view.datastore, id: selection[0].data.id, + syncDirection: view.syncDirection, listeners: { destroy: function() { me.reload(); @@ -117,6 +129,9 @@ Ext.define('PBS.config.SyncJobView', { if (view.datastore !== undefined) { params.store = view.datastore; } + if (view.syncDirection !== undefined) { + params["sync-direction"] = view.syncDirection; + } view.getStore().rstore.getProxy().setExtraParams(params); Proxmox.Utils.monStoreErrors(view, view.getStore().rstore); }, @@ -230,7 +245,9 @@ Ext.define('PBS.config.SyncJobView', { sortable: true, }, { - header: gettext('Owner'), + cbind: { + header: '{ownerHeader}', + }, dataIndex: 'owner', renderer: 'render_optional_owner', flex: 2, diff --git a/www/datastore/DataStoreList.js b/www/datastore/DataStoreList.js index fc68cfc10..22ef18540 100644 --- a/www/datastore/DataStoreList.js +++ b/www/datastore/DataStoreList.js @@ -239,7 +239,7 @@ Ext.define('PBS.datastore.DataStores', { { iconCls: 'fa fa-refresh', itemId: 'syncjobs', - xtype: 'pbsSyncJobView', + xtype: 'pbsSyncJobPullPushView', }, { iconCls: 'fa fa-check-circle', diff --git a/www/datastore/Panel.js b/www/datastore/Panel.js index ad9fc10fe..e1da7cfac 100644 --- a/www/datastore/Panel.js +++ b/www/datastore/Panel.js @@ -68,7 +68,7 @@ Ext.define('PBS.DataStorePanel', { { iconCls: 'fa fa-refresh', itemId: 'syncjobs', - xtype: 'pbsSyncJobView', + xtype: 'pbsSyncJobPullPushView', cbind: { datastore: '{datastore}', }, -- 2.39.5 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel