[pbs-devel] [PATCH proxmox-widget-toolkit 1/1] add NodeInfoRepoStatus
Fabian Ebner
f.ebner at proxmox.com
Thu Jul 22 15:27:34 CEST 2021
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 at 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
More information about the pbs-devel
mailing list