[pve-devel] [PATCH manager 2/4] add BulkAction window class
Dominik Csapak
d.csapak at proxmox.com
Thu Jan 5 12:25:01 CET 2017
this is mostly copied from MigrateAll.js, but a more generic way,
to allow startall and stopall to also use it
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
www/manager6/window/BulkAction.js | 141 ++++++++++++++++++++++++++++++++++++++
1 file changed, 141 insertions(+)
create mode 100644 www/manager6/window/BulkAction.js
diff --git a/www/manager6/window/BulkAction.js b/www/manager6/window/BulkAction.js
new file mode 100644
index 0000000..bd65f5c
--- /dev/null
+++ b/www/manager6/window/BulkAction.js
@@ -0,0 +1,141 @@
+Ext.define('PVE.window.BulkAction', {
+ extend: 'Ext.window.Window',
+
+ resizable: true,
+ width: 800,
+ modal: true,
+ layout: {
+ type: 'fit'
+ },
+ border: false,
+
+ // the action to be set
+ // currently there are
+ // startall
+ // migrateall
+ // stopall
+ action: undefined,
+
+ submit: function(params) {
+ var me = this;
+ PVE.Utils.API2Request({
+ params: params,
+ url: '/nodes/' + me.nodename + '/' + "/" + me.action,
+ waitMsgTarget: me,
+ method: 'POST',
+ failure: function(response, opts) {
+ Ext.Msg.alert('Error', response.htmlStatus);
+ },
+ success: function(response, options) {
+ var upid = response.result.data;
+
+ var win = Ext.create('PVE.window.TaskViewer', {
+ upid: upid
+ });
+ win.show();
+ me.hide();
+ win.on('destroy', function() {
+ me.close();
+ });
+ }
+ });
+ },
+
+ initComponent : function() {
+ var me = this;
+
+ if (!me.nodename) {
+ throw "no node name specified";
+ }
+
+ if (!me.action) {
+ throw "no action specified";
+ }
+
+ if (!me.btnText) {
+ throw "no button text specified";
+ }
+
+ if (!me.title) {
+ throw "no title specified";
+ }
+
+ var items = [];
+
+ if (me.action === 'migrateall') {
+ items.push(
+ {
+ xtype: 'pveNodeSelector',
+ name: 'target',
+ disallowedNodes: [me.nodename],
+ fieldLabel: 'Target node',
+ allowBlank: false,
+ onlineValidator: true
+ },
+ {
+ xtype: 'pveIntegerField',
+ name: 'maxworkers',
+ minValue: 1,
+ maxValue: 100,
+ value: 1,
+ fieldLabel: 'Parallel jobs',
+ allowBlank: false
+ }
+ );
+ } else if (me.action === 'startall') {
+ items.push({
+ xtype: 'hiddenfield',
+ name: 'force',
+ value: 1
+ });
+ }
+
+ items.push({
+ xtype: 'vmselector',
+ itemId: 'vms',
+ name: 'vms',
+ flex: 1,
+ height: 300,
+ selectAll: true,
+ allowBlank: false,
+ nodename: me.nodename
+ });
+
+ me.formPanel = Ext.create('Ext.form.Panel', {
+ bodyPadding: 10,
+ border: false,
+ layout: {
+ type: 'vbox',
+ align: 'stretch'
+ },
+ fieldDefaults: {
+ labelWidth: 300,
+ anchor: '100%'
+ },
+ items: items
+ });
+
+ var form = me.formPanel.getForm();
+
+ var submitBtn = Ext.create('Ext.Button', {
+ text: me.btnText,
+ handler: function() {
+ form.isValid();
+ me.submit(form.getValues());
+ }
+ });
+
+ Ext.apply(me, {
+ items: [ me.formPanel ],
+ buttons: [ submitBtn ]
+ });
+
+ me.callParent();
+
+ form.on('validitychange', function() {
+ var valid = form.isValid();
+ submitBtn.setDisabled(!valid);
+ });
+ form.isValid();
+ }
+});
--
2.1.4
More information about the pve-devel
mailing list