public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus
@ 2021-07-22 13:27 Fabian Ebner
  2021-07-22 13:27 ` [pbs-devel] [PATCH proxmox-backup 1/1] ui: dashboard: node status: use repo status widget from widget-toolkit Fabian Ebner
  2021-07-27 14:36 ` [pbs-devel] applied: [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus Thomas Lamprecht
  0 siblings, 2 replies; 4+ messages in thread
From: Fabian Ebner @ 2021-07-22 13:27 UTC (permalink / raw)
  To: pbs-devel

adapted from PMG, because it has an additional fix to avoid setting
undefined in the view model, which still affects PBS (see pmg-gui
commit 774418f08b10c651357d11ccb161ac075e1ae905).

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
 src/Makefile                    |   1 +
 src/panel/NodeInfoRepoStatus.js | 102 ++++++++++++++++++++++++++++++++
 2 files changed, 103 insertions(+)
 create mode 100644 src/panel/NodeInfoRepoStatus.js

diff --git a/src/Makefile b/src/Makefile
index 36f316c..a490ccd 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -51,6 +51,7 @@ JSSRC=					\
 	panel/InputPanel.js		\
 	panel/InfoWidget.js		\
 	panel/LogView.js		\
+	panel/NodeInfoRepoStatus.js	\
 	panel/JournalView.js		\
 	panel/PermissionView.js		\
 	panel/PruneKeepPanel.js		\
diff --git a/src/panel/NodeInfoRepoStatus.js b/src/panel/NodeInfoRepoStatus.js
new file mode 100644
index 0000000..df1ca9f
--- /dev/null
+++ b/src/panel/NodeInfoRepoStatus.js
@@ -0,0 +1,102 @@
+Ext.define('Proxmox.widget.NodeInfoRepoStatus', {
+    extend: 'Proxmox.widget.Info',
+    alias: 'widget.pmxNodeInfoRepoStatus',
+
+    title: gettext('Repository Status'),
+
+    colspan: 2,
+
+    printBar: false,
+
+    product: undefined,
+    repoLink: undefined,
+
+    viewModel: {
+	data: {
+	    subscriptionActive: '',
+	    noSubscriptionRepo: '',
+	    enterpriseRepo: '',
+	    testRepo: '',
+	},
+
+	formulas: {
+	    repoStatus: function(get) {
+		if (get('subscriptionActive') === '' || get('enterpriseRepo') === '') {
+		    return '';
+		}
+
+		if (get('noSubscriptionRepo') || get('testRepo')) {
+		    return 'non-production';
+		} else if (get('subscriptionActive') && get('enterpriseRepo')) {
+		    return 'ok';
+		} else if (!get('subscriptionActive') && get('enterpriseRepo')) {
+		    return 'no-sub';
+		} else if (!get('enterpriseRepo') || !get('noSubscriptionRepo') || !get('testRepo')) {
+		    return 'no-repo';
+		}
+		return 'unknown';
+	    },
+
+	    repoStatusMessage: function(get) {
+		let me = this;
+		let view = me.getView();
+
+		const status = get('repoStatus');
+
+		let repoLink = ` <a data-qtip="${gettext("Open Repositories Panel")}"
+		    href="${view.repoLink}">
+		    <i class="fa black fa-chevron-right txt-shadow-hover"></i>
+		    </a>`;
+
+		return Proxmox.Utils.formatNodeRepoStatus(status, view.product) + repoLink;
+	    },
+	},
+    },
+
+    setValue: function(value) { // for binding below
+	this.updateValue(value);
+    },
+
+    bind: {
+	value: '{repoStatusMessage}',
+    },
+
+    setRepositoryInfo: function(standardRepos) {
+	let me = this;
+	let vm = me.getViewModel();
+
+	for (const standardRepo of standardRepos) {
+	    const handle = standardRepo.handle;
+	    const status = standardRepo.status || 0;
+
+	    if (handle === "enterprise") {
+		vm.set('enterpriseRepo', status);
+	    } else if (handle === "no-subscription") {
+		vm.set('noSubscriptionRepo', status);
+	    } else if (handle === "test") {
+		vm.set('testRepo', status);
+	    }
+	}
+    },
+
+    setSubscriptionStatus: function(status) {
+	let me = this;
+	let vm = me.getViewModel();
+
+	vm.set('subscriptionActive', status);
+    },
+
+    initComponent: function() {
+	let me = this;
+
+	if (me.product === undefined) {
+	    throw "no product name provided";
+	}
+
+	if (me.repoLink === undefined) {
+	    throw "no repo link href provided";
+	}
+
+	me.callParent();
+    },
+});
-- 
2.30.2





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pbs-devel] [PATCH proxmox-backup 1/1] ui: dashboard: node status: use repo status widget from widget-toolkit
  2021-07-22 13:27 [pbs-devel] [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus Fabian Ebner
@ 2021-07-22 13:27 ` Fabian Ebner
  2021-11-30  9:21   ` Fabian Ebner
  2021-07-27 14:36 ` [pbs-devel] applied: [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus Thomas Lamprecht
  1 sibling, 1 reply; 4+ messages in thread
From: Fabian Ebner @ 2021-07-22 13:27 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
 www/Dashboard.js      |  7 +++--
 www/panel/NodeInfo.js | 68 ++-----------------------------------------
 2 files changed, 8 insertions(+), 67 deletions(-)

diff --git a/www/Dashboard.js b/www/Dashboard.js
index 70c2305b..7d3244fd 100644
--- a/www/Dashboard.js
+++ b/www/Dashboard.js
@@ -62,7 +62,8 @@ Ext.define('PBS.Dashboard', {
 	updateRepositoryStatus: function(store, records, success) {
 	    if (!success) { return; }
 	    let me = this;
-	    me.lookup('nodeInfo').setRepositoryInfo(records[0].data['standard-repos']);
+	    let repoStatus = me.lookup('nodeInfo').down('#repositoryStatus');
+	    repoStatus.setRepositoryInfo(records[0].data['standard-repos']);
 	},
 
 	updateSubscription: function(store, records, success) {
@@ -72,7 +73,9 @@ Ext.define('PBS.Dashboard', {
 	    // 2 = all good, 1 = different leves, 0 = none
 	    let subStatus = status.toLowerCase() === 'active' ? 2 : 0;
 	    me.lookup('subscription').setSubStatus(subStatus);
-	    me.lookup('nodeInfo').setSubscriptionStatus(subStatus);
+
+	    let repoStatus = me.lookup('nodeInfo').down('#repositoryStatus');
+	    repoStatus.setSubscriptionStatus(subStatus);
 	},
 
 	updateTasks: function(store, records, success) {
diff --git a/www/panel/NodeInfo.js b/www/panel/NodeInfo.js
index ff96e8fc..f41eb3a3 100644
--- a/www/panel/NodeInfo.js
+++ b/www/panel/NodeInfo.js
@@ -20,37 +20,6 @@ Ext.define('PBS.NodeInfoPanel', {
 	padding: '0 10 5 10',
     },
 
-    viewModel: {
-	data: {
-	    subscriptionActive: '',
-	    noSubscriptionRepo: '',
-	    enterpriseRepo: '',
-	    testRepo: '',
-	},
-	formulas: {
-	    repoStatus: function(get) {
-		if (get('subscriptionActive') === '' || get('enterpriseRepo') === '') {
-		    return '';
-		}
-
-		if (get('noSubscriptionRepo') || get('testRepo')) {
-		    return 'non-production';
-		} else if (get('subscriptionActive') && get('enterpriseRepo')) {
-		    return 'ok';
-		} else if (!get('subscriptionActive') && get('enterpriseRepo')) {
-		    return 'no-sub';
-		} else if (!get('enterpriseRepo') || !get('noSubscriptionRepo') || !get('testRepo')) {
-		    return 'no-repo';
-		}
-		return 'unknown';
-	    },
-	    repoStatusMessage: function(get) {
-		const status = get('repoStatus');
-		return Proxmox.Utils.formatNodeRepoStatus(status, 'Proxmox Backup Server');
-	    },
-	},
-    },
-
     controller: {
 	xclass: 'Ext.app.ViewController',
 
@@ -179,16 +148,10 @@ Ext.define('PBS.NodeInfoPanel', {
 	    value: '',
 	},
 	{
+	    xtype: 'pmxNodeInfoRepoStatus',
 	    itemId: 'repositoryStatus',
-	    colspan: 2,
-	    printBar: false,
-	    title: gettext('Repository Status'),
-	    setValue: function(value) { // for binding below
-		this.updateValue(value);
-	    },
-	    bind: {
-		value: '{repoStatusMessage}',
-	    },
+	    product: 'Proxmox Backup Server',
+	    repoLink: '#pbsServerAdministration:aptrepositories',
 	},
     ],
 
@@ -198,31 +161,6 @@ Ext.define('PBS.NodeInfoPanel', {
 	me.setTitle(Proxmox.NodeName + ' (' + gettext('Uptime') + ': ' + uptime + ')');
     },
 
-    setRepositoryInfo: function(standardRepos) {
-	let me = this;
-	let vm = me.getViewModel();
-
-	for (const standardRepo of standardRepos) {
-	    const handle = standardRepo.handle;
-	    const status = standardRepo.status;
-
-	    if (handle === "enterprise") {
-		vm.set('enterpriseRepo', status);
-	    } else if (handle === "no-subscription") {
-		vm.set('noSubscriptionRepo', status);
-	    } else if (handle === "test") {
-		vm.set('testRepo', status);
-	    }
-	}
-    },
-
-    setSubscriptionStatus: function(status) {
-	let me = this;
-	let vm = me.getViewModel();
-
-	vm.set('subscriptionActive', status);
-    },
-
     initComponent: function() {
 	let me = this;
 
-- 
2.30.2





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus
  2021-07-22 13:27 [pbs-devel] [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus Fabian Ebner
  2021-07-22 13:27 ` [pbs-devel] [PATCH proxmox-backup 1/1] ui: dashboard: node status: use repo status widget from widget-toolkit Fabian Ebner
@ 2021-07-27 14:36 ` Thomas Lamprecht
  1 sibling, 0 replies; 4+ messages in thread
From: Thomas Lamprecht @ 2021-07-27 14:36 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Fabian Ebner

On 22.07.21 15:27, Fabian Ebner wrote:
> adapted from PMG, because it has an additional fix to avoid setting
> undefined in the view model, which still affects PBS (see pmg-gui
> commit 774418f08b10c651357d11ccb161ac075e1ae905).
> 
> Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
> ---
>  src/Makefile                    |   1 +
>  src/panel/NodeInfoRepoStatus.js | 102 ++++++++++++++++++++++++++++++++
>  2 files changed, 103 insertions(+)
>  create mode 100644 src/panel/NodeInfoRepoStatus.js
> 
>

applied, thanks!




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [pbs-devel] [PATCH proxmox-backup 1/1] ui: dashboard: node status: use repo status widget from widget-toolkit
  2021-07-22 13:27 ` [pbs-devel] [PATCH proxmox-backup 1/1] ui: dashboard: node status: use repo status widget from widget-toolkit Fabian Ebner
@ 2021-11-30  9:21   ` Fabian Ebner
  0 siblings, 0 replies; 4+ messages in thread
From: Fabian Ebner @ 2021-11-30  9:21 UTC (permalink / raw)
  To: pbs-devel

Ping. Still applies and a quick re-test seemed fine.

Am 22.07.21 um 15:27 schrieb Fabian Ebner:
> Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
> ---
>   www/Dashboard.js      |  7 +++--
>   www/panel/NodeInfo.js | 68 ++-----------------------------------------
>   2 files changed, 8 insertions(+), 67 deletions(-)
> 
> diff --git a/www/Dashboard.js b/www/Dashboard.js
> index 70c2305b..7d3244fd 100644
> --- a/www/Dashboard.js
> +++ b/www/Dashboard.js
> @@ -62,7 +62,8 @@ Ext.define('PBS.Dashboard', {
>   	updateRepositoryStatus: function(store, records, success) {
>   	    if (!success) { return; }
>   	    let me = this;
> -	    me.lookup('nodeInfo').setRepositoryInfo(records[0].data['standard-repos']);
> +	    let repoStatus = me.lookup('nodeInfo').down('#repositoryStatus');
> +	    repoStatus.setRepositoryInfo(records[0].data['standard-repos']);
>   	},
>   
>   	updateSubscription: function(store, records, success) {
> @@ -72,7 +73,9 @@ Ext.define('PBS.Dashboard', {
>   	    // 2 = all good, 1 = different leves, 0 = none
>   	    let subStatus = status.toLowerCase() === 'active' ? 2 : 0;
>   	    me.lookup('subscription').setSubStatus(subStatus);
> -	    me.lookup('nodeInfo').setSubscriptionStatus(subStatus);
> +
> +	    let repoStatus = me.lookup('nodeInfo').down('#repositoryStatus');
> +	    repoStatus.setSubscriptionStatus(subStatus);
>   	},
>   
>   	updateTasks: function(store, records, success) {
> diff --git a/www/panel/NodeInfo.js b/www/panel/NodeInfo.js
> index ff96e8fc..f41eb3a3 100644
> --- a/www/panel/NodeInfo.js
> +++ b/www/panel/NodeInfo.js
> @@ -20,37 +20,6 @@ Ext.define('PBS.NodeInfoPanel', {
>   	padding: '0 10 5 10',
>       },
>   
> -    viewModel: {
> -	data: {
> -	    subscriptionActive: '',
> -	    noSubscriptionRepo: '',
> -	    enterpriseRepo: '',
> -	    testRepo: '',
> -	},
> -	formulas: {
> -	    repoStatus: function(get) {
> -		if (get('subscriptionActive') === '' || get('enterpriseRepo') === '') {
> -		    return '';
> -		}
> -
> -		if (get('noSubscriptionRepo') || get('testRepo')) {
> -		    return 'non-production';
> -		} else if (get('subscriptionActive') && get('enterpriseRepo')) {
> -		    return 'ok';
> -		} else if (!get('subscriptionActive') && get('enterpriseRepo')) {
> -		    return 'no-sub';
> -		} else if (!get('enterpriseRepo') || !get('noSubscriptionRepo') || !get('testRepo')) {
> -		    return 'no-repo';
> -		}
> -		return 'unknown';
> -	    },
> -	    repoStatusMessage: function(get) {
> -		const status = get('repoStatus');
> -		return Proxmox.Utils.formatNodeRepoStatus(status, 'Proxmox Backup Server');
> -	    },
> -	},
> -    },
> -
>       controller: {
>   	xclass: 'Ext.app.ViewController',
>   
> @@ -179,16 +148,10 @@ Ext.define('PBS.NodeInfoPanel', {
>   	    value: '',
>   	},
>   	{
> +	    xtype: 'pmxNodeInfoRepoStatus',
>   	    itemId: 'repositoryStatus',
> -	    colspan: 2,
> -	    printBar: false,
> -	    title: gettext('Repository Status'),
> -	    setValue: function(value) { // for binding below
> -		this.updateValue(value);
> -	    },
> -	    bind: {
> -		value: '{repoStatusMessage}',
> -	    },
> +	    product: 'Proxmox Backup Server',
> +	    repoLink: '#pbsServerAdministration:aptrepositories',
>   	},
>       ],
>   
> @@ -198,31 +161,6 @@ Ext.define('PBS.NodeInfoPanel', {
>   	me.setTitle(Proxmox.NodeName + ' (' + gettext('Uptime') + ': ' + uptime + ')');
>       },
>   
> -    setRepositoryInfo: function(standardRepos) {
> -	let me = this;
> -	let vm = me.getViewModel();
> -
> -	for (const standardRepo of standardRepos) {
> -	    const handle = standardRepo.handle;
> -	    const status = standardRepo.status;
> -
> -	    if (handle === "enterprise") {
> -		vm.set('enterpriseRepo', status);
> -	    } else if (handle === "no-subscription") {
> -		vm.set('noSubscriptionRepo', status);
> -	    } else if (handle === "test") {
> -		vm.set('testRepo', status);
> -	    }
> -	}
> -    },
> -
> -    setSubscriptionStatus: function(status) {
> -	let me = this;
> -	let vm = me.getViewModel();
> -
> -	vm.set('subscriptionActive', status);
> -    },
> -
>       initComponent: function() {
>   	let me = this;
>   
> 




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-30  9:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-22 13:27 [pbs-devel] [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus Fabian Ebner
2021-07-22 13:27 ` [pbs-devel] [PATCH proxmox-backup 1/1] ui: dashboard: node status: use repo status widget from widget-toolkit Fabian Ebner
2021-11-30  9:21   ` Fabian Ebner
2021-07-27 14:36 ` [pbs-devel] applied: [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal