]> git.proxmox.com Git - proxmox-backup.git/blob - www/tape/window/TapeBackupJob.js
ui: improve tape job edit (add eject-media and export-media-set)
[proxmox-backup.git] / www / tape / window / TapeBackupJob.js
1 Ext.define('PBS.TapeManagement.BackupJobEdit', {
2 extend: 'Proxmox.window.Edit',
3 alias: 'widget.pbsTapeBackupJobEdit',
4 mixins: ['Proxmox.Mixin.CBind'],
5
6 userid: undefined,
7
8 isAdd: true,
9
10 subject: gettext('Tape Backup Job'),
11
12 fieldDefaults: { labelWidth: 120 },
13
14 cbindData: function(initialConfig) {
15 let me = this;
16
17 let baseurl = '/api2/extjs/config/tape-backup-job';
18 let id = initialConfig.id;
19
20 me.isCreate = !id;
21 me.url = id ? `${baseurl}/${id}` : baseurl;
22 me.method = id ? 'PUT' : 'POST';
23 me.autoLoad = !!id;
24 me.scheduleValue = id ? null : 'daily';
25 me.authid = id ? null : Proxmox.UserName;
26 me.editDatastore = me.datastore === undefined && me.isCreate;
27 return { };
28 },
29
30 items: {
31 xtype: 'inputpanel',
32 column1: [
33 {
34 xtype: 'pmxDisplayEditField',
35 name: 'id',
36 fieldLabel: gettext('Job ID'),
37 renderer: Ext.htmlEncode,
38 allowBlank: false,
39 cbind: {
40 editable: '{isCreate}',
41 },
42 },
43 {
44 xtype: 'pbsDataStoreSelector',
45 fieldLabel: gettext('Local Datastore'),
46 name: 'store',
47 },
48 {
49 xtype: 'pbsMediaPoolSelector',
50 fieldLabel: gettext('Media Pool'),
51 name: 'pool',
52 },
53 {
54 xtype: 'pbsDriveSelector',
55 fieldLabel: gettext('Drive'),
56 name: 'drive',
57 },
58 ],
59
60 column2: [
61 {
62 fieldLabel: gettext('Schedule'),
63 xtype: 'pbsCalendarEvent',
64 name: 'schedule',
65 emptyText: gettext('none (disabled)'),
66 cbind: {
67 deleteEmpty: '{!isCreate}',
68 value: '{scheduleValue}',
69 },
70 },
71 {
72 fieldLabel: gettext('Export Media Set'),
73 xtype: 'proxmoxcheckbox',
74 name: 'export-media-set',
75 cbind: {
76 deleteEmpty: '{!isCreate}',
77 },
78 listeners: {
79 change1: function(cb, value) {
80 let me = this;
81 let eject = me.up('window').down('proxmoxcheckbox[name=eject-media]');
82 if (value) {
83 eject.setValue(false);
84 }
85 eject.setDisabled(!!value);
86 },
87 },
88 },
89 {
90 fieldLabel: gettext('Eject Media'),
91 xtype: 'proxmoxcheckbox',
92 name: 'eject-media',
93 cbind: {
94 deleteEmpty: '{!isCreate}',
95 },
96 },
97 ],
98
99 columnB: [
100 {
101 fieldLabel: gettext('Comment'),
102 xtype: 'proxmoxtextfield',
103 name: 'comment',
104 cbind: {
105 deleteEmpty: '{!isCreate}',
106 },
107 },
108 ],
109 },
110 });