]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/ScheduleSimulator.js
ui: schedule sim: fix right alignment of simulate button
[pve-manager.git] / www / manager6 / window / ScheduleSimulator.js
1 Ext.define('PVE.window.ScheduleSimulator', {
2 extend: 'Ext.window.Window',
3
4 title: gettext('Simulate Schedule'),
5
6 controller: {
7 xclass: 'Ext.app.ViewController',
8 close: function() { this.getView().close(); },
9 simulate: function() {
10 let me = this;
11 let schedule = me.lookup('schedule').getValue();
12 if (!schedule) {
13 return;
14 }
15 let iterations = me.lookup('iterations').getValue() || 10;
16 Proxmox.Utils.API2Request({
17 url: '/cluster/jobs/schedule-analyze',
18 method: 'GET',
19 params: {
20 schedule,
21 iterations,
22 },
23 failure: function(response, opts) {
24 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
25 },
26 success: function(response) {
27 let schedules = response.result.data;
28 me.lookup('grid').getStore().setData(schedules);
29 },
30 });
31 },
32
33 scheduleChanged: function(field, value) {
34 this.lookup('simulateBtn').setDisabled(!value);
35 },
36
37 renderTimestamp: function(value) {
38 let date = new Date(value*1000);
39 return date.toLocaleString();
40 },
41
42 init: function(view) {
43 let me = this;
44 if (view.schedule) {
45 me.lookup('schedule').setValue(view.schedule);
46 }
47 },
48 },
49
50 bodyPadding: 10,
51 modal: true,
52 resizable: false,
53 width: 600,
54
55 layout: 'fit',
56
57 items: [
58 {
59 xtype: 'inputpanel',
60 column1: [
61 {
62 xtype: 'pveCalendarEvent',
63 reference: 'schedule',
64 fieldLabel: gettext('Schedule'),
65 listeners: {
66 change: 'scheduleChanged',
67 },
68 },
69 {
70 xtype: 'proxmoxintegerfield',
71 minValue: 1,
72 maxValue: 100,
73 value: 10,
74 reference: 'iterations',
75 fieldLabel: gettext('Iterations'),
76 },
77 {
78 xtype: 'container',
79 layout: 'hbox',
80 items: [
81 {
82 xtype: 'box',
83 flex: 1,
84 },
85 {
86 xtype: 'button',
87 reference: 'simulateBtn',
88 text: gettext('Simulate'),
89 handler: 'simulate',
90 disabled: true,
91 },
92 ],
93 },
94 ],
95
96 column2: [
97 {
98 xtype: 'grid',
99 reference: 'grid',
100 emptyText: Proxmox.Utils.NoneText,
101 scrollable: true,
102 height: 300,
103 columns: [
104 {
105 text: gettext('Local Time'),
106 renderer: 'renderTimestamp',
107 dataIndex: 'timestamp',
108 flex: 1,
109 },
110 ],
111 store: {
112 fields: ['timestamp'],
113 data: [],
114 sorter: 'timestamp',
115 },
116 },
117 ],
118 },
119 ],
120
121 buttons: [
122 {
123 text: gettext('OK'),
124 handler: 'close',
125 },
126 ],
127 });