[pbs-devel] [PATCH proxmox-backup v2 10/15] ui: tape: add PoolConfig

Dominik Csapak d.csapak at proxmox.com
Thu Jan 28 12:59:50 CET 2021


CRUD interface to manage media pools

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/Makefile           |   1 +
 www/tape/PoolConfig.js | 119 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 120 insertions(+)
 create mode 100644 www/tape/PoolConfig.js

diff --git a/www/Makefile b/www/Makefile
index 9a6ff357..27a89d90 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -23,6 +23,7 @@ TAPE_UI_FILES=						\
 	tape/BackupOverview.js				\
 	tape/ChangerStatus.js				\
 	tape/DriveConfig.js				\
+	tape/PoolConfig.js				\
 	TapeManagement.js
 endif
 
diff --git a/www/tape/PoolConfig.js b/www/tape/PoolConfig.js
new file mode 100644
index 00000000..1782d9dc
--- /dev/null
+++ b/www/tape/PoolConfig.js
@@ -0,0 +1,119 @@
+Ext.define('pbs-model-media-pool', {
+    extend: 'Ext.data.Model',
+    fields: ['drive', 'name', 'allocation', 'retention', 'template', 'encrypt'],
+    idProperty: 'name',
+});
+
+Ext.define('PBS.TapeManagement.PoolPanel', {
+    extend: 'Ext.grid.Panel',
+    alias: 'widget.pbsMediaPoolPanel',
+
+    controller: {
+	xclass: 'Ext.app.ViewController',
+
+	onAdd: function() {
+	    let me = this;
+	    Ext.create('PBS.TapeManagement.PoolEditWindow', {
+		listeners: {
+		    destroy: function() {
+			me.reload();
+		    },
+		},
+	    }).show();
+	},
+
+	onEdit: function() {
+	    let me = this;
+	    let view = me.getView();
+	    let selection = view.getSelection();
+	    if (!selection || selection.length < 1) {
+		return;
+	    }
+	    Ext.create('PBS.TapeManagement.PoolEditWindow', {
+		poolid: selection[0].data.name,
+		autoLoad: true,
+		listeners: {
+		    destroy: () => me.reload(),
+		},
+	    }).show();
+	},
+
+	reload: function() {
+	    this.getView().getStore().rstore.load();
+	},
+
+	stopStore: function() {
+	    this.getView().getStore().rstore.stopUpdate();
+	},
+
+	startStore: function() {
+	    this.getView().getStore().rstore.startUpdate();
+	},
+    },
+
+    listeners: {
+	beforedestroy: 'stopStore',
+	deactivate: 'stopStore',
+	activate: 'startStore',
+	itemdblclick: 'onEdit',
+    },
+
+    store: {
+	type: 'diff',
+	rstore: {
+	    type: 'update',
+	    storeid: 'proxmox-tape-media-pools',
+	    model: 'pbs-model-media-pool',
+	    proxy: {
+		type: 'proxmox',
+		url: "/api2/json/config/media-pool",
+	    },
+	},
+	sorters: 'name',
+    },
+
+    tbar: [
+	{
+	    text: gettext('Add'),
+	    xtype: 'proxmoxButton',
+	    handler: 'onAdd',
+	    selModel: false,
+	},
+	'-',
+	{
+	    text: gettext('Edit'),
+	    xtype: 'proxmoxButton',
+	    handler: 'onEdit',
+	    disabled: true,
+	},
+	{
+	    xtype: 'proxmoxStdRemoveButton',
+	    baseurl: '/api2/extjs/config/media-pool',
+	    callback: 'reload',
+	},
+    ],
+
+    columns: [
+	{
+	    text: gettext('Name'),
+	    dataIndex: 'name',
+	},
+	{
+	    text: gettext('Drive'),
+	    dataIndex: 'drive',
+	},
+	{
+	    text: gettext('Allocation'),
+	    dataIndex: 'allocation',
+	},
+	{
+	    text: gettext('Retention'),
+	    dataIndex: 'retention',
+	},
+	{
+	    text: gettext('Encryption Fingerprint'),
+	    dataIndex: 'encryption',
+	},
+    ],
+});
+
-- 
2.20.1






More information about the pbs-devel mailing list