]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/form/FileSelector.js
ui: FileSelector: add setNodename to allow data binding
[pve-manager.git] / www / manager6 / form / FileSelector.js
1 Ext.define('PVE.form.FileSelector', {
2 extend: 'Proxmox.form.ComboGrid',
3 alias: 'widget.pveFileSelector',
4
5 editable: true,
6 anyMatch: true,
7 forceSelection: true,
8
9 listeners: {
10 afterrender: function() {
11 var me = this;
12 if (!me.disabled) {
13 me.setStorage(me.storage, me.nodename);
14 }
15 }
16 },
17
18 setStorage: function(storage, nodename) {
19 var me = this;
20
21 var change = false;
22 if (storage && (me.storage !== storage)) {
23 me.storage = storage;
24 change = true;
25 }
26
27 if (nodename && (me.nodename !== nodename)) {
28 me.nodename = nodename;
29 change = true;
30 }
31
32 if (!(me.storage && me.nodename && change)) {
33 return;
34 }
35
36 var url = '/api2/json/nodes/' + me.nodename + '/storage/' + me.storage + '/content';
37 if (me.storageContent) {
38 url += '?content=' + me.storageContent;
39 }
40
41 me.store.setProxy({
42 type: 'proxmox',
43 url: url
44 });
45
46 me.store.removeAll();
47 me.store.load();
48 },
49
50 setNodename: function(nodename) {
51 this.setStorage(undefined, nodename);
52 },
53
54 store: {
55 model: 'pve-storage-content'
56 },
57
58 allowBlank: false,
59 autoSelect: false,
60 valueField: 'volid',
61 displayField: 'text',
62
63 listConfig: {
64 width: 600,
65 columns: [
66 {
67 header: gettext('Name'),
68 dataIndex: 'text',
69 hideable: false,
70 flex: 1
71 },
72 {
73 header: gettext('Format'),
74 width: 60,
75 dataIndex: 'format'
76 },
77 {
78 header: gettext('Size'),
79 width: 100,
80 dataIndex: 'size',
81 renderer: Proxmox.Utils.format_size
82 }
83 ]
84 }
85 });