for reuse in PMG

Signed-off-by: Stoiko Ivanov <s.iva...@proxmox.com>
---
 src/Makefile                      |  1 +
 src/form/PBSEncryptionCheckbox.js | 63 +++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+)
 create mode 100644 src/form/PBSEncryptionCheckbox.js

diff --git a/src/Makefile b/src/Makefile
index cd0bf26..3e10e9d 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -31,6 +31,7 @@ JSSRC=                                        \
        form/RoleSelector.js            \
        form/DiskSelector.js            \
        form/MultiDiskSelector.js       \
+       form/PBSEncryptionCheckbox.js   \
        button/Button.js                \
        button/HelpButton.js            \
        grid/ObjectGrid.js              \
diff --git a/src/form/PBSEncryptionCheckbox.js 
b/src/form/PBSEncryptionCheckbox.js
new file mode 100644
index 0000000..35c6950
--- /dev/null
+++ b/src/form/PBSEncryptionCheckbox.js
@@ -0,0 +1,63 @@
+Ext.define('Proxmox.form.PBSEncryptionCheckbox', {
+    extend: 'Ext.form.field.Checkbox',
+    xtype: 'pbsEncryptionCheckbox',
+
+    inputValue: true,
+
+    viewModel: {
+       data: {
+           value: null,
+           originalValue: null,
+       },
+       formulas: {
+           blabel: (get) => {
+               let v = get('value');
+               let original = get('originalValue');
+               if (!get('isCreate') && original) {
+                   if (!v) {
+                       return gettext('Warning: Existing encryption key will 
be deleted!');
+                   }
+                   return gettext('Active');
+               } else {
+                   return gettext('Auto-generate a client encryption key, 
saved privately on cluster filesystem');
+               }
+           },
+       },
+    },
+
+    bind: {
+       value: '{value}',
+       boxLabel: '{blabel}',
+    },
+    resetOriginalValue: function() {
+       let me = this;
+       let vm = me.getViewModel();
+       vm.set('originalValue', me.value);
+
+       me.callParent(arguments);
+    },
+
+    getSubmitData: function() {
+       let me = this;
+       let val = me.getSubmitValue();
+       if (!me.isCreate) {
+           if (val === null) {
+              return { 'delete': 'encryption-key' };
+           } else if (val && !!val !== !!me.originalValue) {
+              return { 'encryption-key': 'autogen' };
+           }
+       } else if (val) {
+          return { 'encryption-key': 'autogen' };
+       }
+       return null;
+    },
+
+    initComponent: function() {
+       let me = this;
+       me.callParent();
+
+       let vm = me.getViewModel();
+       vm.set('isCreate', me.isCreate);
+    },
+});
+
-- 
2.20.1



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to