mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-07-20 15:35:33 +00:00
143 lines
2.7 KiB
JavaScript
143 lines
2.7 KiB
JavaScript
Ext.define('PVE.window.ScheduleSimulator', {
|
|
extend: 'Ext.window.Window',
|
|
|
|
title: gettext('Job Schedule Simulator'),
|
|
|
|
controller: {
|
|
xclass: 'Ext.app.ViewController',
|
|
close: function() {
|
|
this.getView().close();
|
|
},
|
|
simulate: function() {
|
|
let me = this;
|
|
let schedule = me.lookup('schedule').getValue();
|
|
if (!schedule) {
|
|
return;
|
|
}
|
|
let iterations = me.lookup('iterations').getValue() || 10;
|
|
Proxmox.Utils.API2Request({
|
|
url: '/cluster/jobs/schedule-analyze',
|
|
method: 'GET',
|
|
params: {
|
|
schedule,
|
|
iterations,
|
|
},
|
|
failure: response => {
|
|
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);
|
|
},
|
|
});
|
|
},
|
|
|
|
scheduleChanged: function(field, value) {
|
|
this.lookup('simulateBtn').setDisabled(!value);
|
|
},
|
|
|
|
renderDate: function(value) {
|
|
let date = new Date(value*1000);
|
|
return date.toLocaleDateString();
|
|
},
|
|
|
|
renderTime: function(value) {
|
|
let date = new Date(value*1000);
|
|
return date.toLocaleTimeString();
|
|
},
|
|
|
|
init: function(view) {
|
|
let me = this;
|
|
if (view.schedule) {
|
|
me.lookup('schedule').setValue(view.schedule);
|
|
}
|
|
},
|
|
},
|
|
|
|
bodyPadding: 10,
|
|
modal: true,
|
|
resizable: false,
|
|
width: 600,
|
|
|
|
layout: 'fit',
|
|
|
|
items: [
|
|
{
|
|
xtype: 'inputpanel',
|
|
column1: [
|
|
{
|
|
xtype: 'pveCalendarEvent',
|
|
reference: 'schedule',
|
|
fieldLabel: gettext('Schedule'),
|
|
listeners: {
|
|
change: 'scheduleChanged',
|
|
},
|
|
},
|
|
{
|
|
xtype: 'proxmoxintegerfield',
|
|
reference: 'iterations',
|
|
fieldLabel: gettext('Iterations'),
|
|
minValue: 1,
|
|
maxValue: 100,
|
|
value: 10,
|
|
},
|
|
{
|
|
xtype: 'container',
|
|
layout: 'hbox',
|
|
items: [
|
|
{
|
|
xtype: 'box',
|
|
flex: 1,
|
|
},
|
|
{
|
|
xtype: 'button',
|
|
reference: 'simulateBtn',
|
|
text: gettext('Simulate'),
|
|
handler: 'simulate',
|
|
disabled: true,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
|
|
column2: [
|
|
{
|
|
xtype: 'grid',
|
|
reference: 'grid',
|
|
emptyText: Proxmox.Utils.NoneText,
|
|
scrollable: true,
|
|
height: 300,
|
|
columns: [
|
|
{
|
|
text: gettext('Date'),
|
|
renderer: 'renderDate',
|
|
dataIndex: 'timestamp',
|
|
flex: 1,
|
|
},
|
|
{
|
|
text: gettext('Time'),
|
|
renderer: 'renderTime',
|
|
dataIndex: 'timestamp',
|
|
align: 'right',
|
|
flex: 1,
|
|
},
|
|
],
|
|
store: {
|
|
fields: ['timestamp'],
|
|
data: [],
|
|
sorter: 'timestamp',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
|
|
buttons: [
|
|
{
|
|
text: gettext('Done'),
|
|
handler: 'close',
|
|
},
|
|
],
|
|
});
|