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