]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/window/ScheduleSimulator.js
ui: add bulk suspend support
[pve-manager.git] / www / manager6 / window / ScheduleSimulator.js
index c271f9c35a411d70c529626bcc78a7f2e8580ec2..104e93c9c6f51774044a3c4e35073af72cf9501d 100644 (file)
@@ -1,11 +1,22 @@
 Ext.define('PVE.window.ScheduleSimulator', {
     extend: 'Ext.window.Window',
 
-    title: gettext('Simulate Schedule'),
+    title: gettext('Job Schedule Simulator'),
+
+    viewModel: {
+       data: {
+           simulatedOnce: false,
+       },
+       formulas: {
+           gridEmptyText: get => get('simulatedOnce') ? Proxmox.Utils.NoneText : gettext('No simulation done'),
+       },
+    },
 
     controller: {
        xclass: 'Ext.app.ViewController',
-       close: function() { this.getView().close(); },
+       close: function() {
+           this.getView().close();
+       },
        simulate: function() {
            let me = this;
            let schedule = me.lookup('schedule').getValue();
@@ -20,12 +31,15 @@ Ext.define('PVE.window.ScheduleSimulator', {
                    schedule,
                    iterations,
                },
-               failure: function(response, opts) {
+               failure: response => {
+                   me.getViewModel().set('simulatedOnce', true);
+                   me.lookup('grid').getStore().setData([]);
                    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
                },
                success: function(response) {
                    let schedules = response.result.data;
                    me.lookup('grid').getStore().setData(schedules);
+                   me.getViewModel().set('simulatedOnce', true);
                },
            });
        },
@@ -34,9 +48,14 @@ Ext.define('PVE.window.ScheduleSimulator', {
            this.lookup('simulateBtn').setDisabled(!value);
        },
 
-       renderTimestamp: function(value) {
+       renderDate: function(value) {
+           let date = new Date(value*1000);
+           return date.toLocaleDateString();
+       },
+
+       renderTime: function(value) {
            let date = new Date(value*1000);
-           return date.toLocaleString();
+           return date.toLocaleTimeString();
        },
 
        init: function(view) {
@@ -68,19 +87,28 @@ Ext.define('PVE.window.ScheduleSimulator', {
                },
                {
                    xtype: 'proxmoxintegerfield',
+                   reference: 'iterations',
+                   fieldLabel: gettext('Iterations'),
                    minValue: 1,
                    maxValue: 100,
                    value: 10,
-                   reference: 'iterations',
-                   fieldLabel: gettext('Iterations'),
                },
                {
-                   xtype: 'button',
-                   reference: 'simulateBtn',
-                   text: gettext('Simulate'),
-                   handler: 'simulate',
-                   align: 'right',
-                   disabled: true,
+                   xtype: 'container',
+                   layout: 'hbox',
+                   items: [
+                       {
+                           xtype: 'box',
+                           flex: 1,
+                       },
+                       {
+                           xtype: 'button',
+                           reference: 'simulateBtn',
+                           text: gettext('Simulate'),
+                           handler: 'simulate',
+                           disabled: true,
+                       },
+                   ],
                },
            ],
 
@@ -88,14 +116,23 @@ Ext.define('PVE.window.ScheduleSimulator', {
                {
                    xtype: 'grid',
                    reference: 'grid',
-                   emptyText: Proxmox.Utils.NoneText,
+                   bind: {
+                       emptyText: '{gridEmptyText}',
+                   },
                    scrollable: true,
                    height: 300,
                    columns: [
                        {
-                           text: gettext('Local Time'),
-                           renderer: 'renderTimestamp',
+                           text: gettext('Date'),
+                           renderer: 'renderDate',
+                           dataIndex: 'timestamp',
+                           flex: 1,
+                       },
+                       {
+                           text: gettext('Time'),
+                           renderer: 'renderTime',
                            dataIndex: 'timestamp',
+                           align: 'right',
                            flex: 1,
                        },
                    ],
@@ -111,7 +148,7 @@ Ext.define('PVE.window.ScheduleSimulator', {
 
     buttons: [
        {
-           text: gettext('OK'),
+           text: gettext('Done'),
            handler: 'close',
        },
     ],