[pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid
Dominik Csapak
d.csapak at proxmox.com
Fri Jan 29 14:57:49 CET 2021
analogous to the drive grid
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
www/Makefile | 1 +
www/tape/ChangerConfig.js | 128 +++++++++++++++++++++++++++++++++++++
www/tape/TapeManagement.js | 7 +-
3 files changed, 135 insertions(+), 1 deletion(-)
create mode 100644 www/tape/ChangerConfig.js
diff --git a/www/Makefile b/www/Makefile
index 91899028..7a47ad8d 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -21,6 +21,7 @@ TAPE_UI_FILES= \
tape/window/PoolEdit.js \
tape/window/TapeBackup.js \
tape/BackupOverview.js \
+ tape/ChangerConfig.js \
tape/ChangerStatus.js \
tape/DriveConfig.js \
tape/PoolConfig.js \
diff --git a/www/tape/ChangerConfig.js b/www/tape/ChangerConfig.js
new file mode 100644
index 00000000..a4258dfd
--- /dev/null
+++ b/www/tape/ChangerConfig.js
@@ -0,0 +1,128 @@
+Ext.define('pbs-model-changers', {
+ extend: 'Ext.data.Model',
+ fields: ['path', 'model', 'name', 'serial', 'vendor', 'export-slots'],
+ idProperty: 'name',
+});
+
+Ext.define('PBS.TapeManagement.ChangerPanel', {
+ extend: 'Ext.grid.Panel',
+ alias: 'widget.pbsTapeChangerPanel',
+
+ controller: {
+ xclass: 'Ext.app.ViewController',
+
+ onAdd: function() {
+ let me = this;
+ Ext.create('PBS.TapeManagement.ChangerEditWindow', {
+ 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.ChangerEditWindow', {
+ changerid: 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-changers',
+ model: 'pbs-model-changers',
+ proxy: {
+ type: 'proxmox',
+ url: "/api2/json/tape/changer",
+ },
+ },
+ 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/changer',
+ callback: 'reload',
+ },
+ ],
+ columns: [
+ {
+ text: gettext('Name'),
+ dataIndex: 'name',
+ flex: 1,
+ },
+ {
+ text: gettext('Path'),
+ dataIndex: 'path',
+ flex: 2,
+ },
+ {
+ text: gettext('Vendor'),
+ dataIndex: 'vendor',
+ flex: 1,
+ },
+ {
+ text: gettext('Model'),
+ dataIndex: 'model',
+ flex: 1,
+ },
+ {
+ text: gettext('Serial'),
+ dataIndex: 'serial',
+ flex: 1,
+ },
+ {
+ text: gettext('Import/Export Slots'),
+ dataIndex: 'export-slots',
+ flex: 1,
+ },
+ ],
+});
+
diff --git a/www/tape/TapeManagement.js b/www/tape/TapeManagement.js
index f61c26d7..8461b0b3 100644
--- a/www/tape/TapeManagement.js
+++ b/www/tape/TapeManagement.js
@@ -16,10 +16,15 @@ Ext.define('PBS.TapeManagement', {
itemId: 'backup',
xtype: 'pbsBackupOverview',
},
+ {
+ title: gettext('Library'),
+ itemId: 'library',
+ xtype: 'pbsChangerStatus',
+ },
{
title: gettext('Changers'),
itemId: 'changers',
- xtype: 'pbsChangerStatus',
+ xtype: 'pbsTapeChangerPanel',
},
{
title: gettext('Drives'),
--
2.20.1
More information about the pbs-devel
mailing list