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();
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);
},
});
},
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) {
},
{
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,
+ },
+ ],
},
],
{
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,
},
],
buttons: [
{
- text: gettext('OK'),
+ text: gettext('Done'),
handler: 'close',
},
],