]> git.proxmox.com Git - pve-manager.git/blob - www/manager5/form/IPRefSelector.js
a017e15d8abfc2cf03b9c467b94fbd95791e2501
[pve-manager.git] / www / manager5 / form / IPRefSelector.js
1 Ext.define('PVE.form.IPRefSelector', {
2 extend: 'PVE.form.ComboGrid',
3 alias: ['widget.pveIPRefSelector'],
4
5 base_url: undefined,
6
7 preferredValue: '', // hack: else Form sets dirty flag?
8
9 ref_type: undefined, // undefined = any [undefined, 'ipset' or 'alias']
10
11 initComponent: function() {
12 var me = this;
13
14 if (!me.base_url) {
15 throw "no base_url specified";
16 }
17
18 var url = "/api2/json" + me.base_url;
19 if (me.ref_type) {
20 url += "?type=" + me.ref_type;
21 }
22
23 var store = Ext.create('Ext.data.Store', {
24 autoLoad: true,
25 fields: [ 'type', 'name', 'ref', 'comment' ],
26 idProperty: 'ref',
27 proxy: {
28 type: 'pve',
29 url: url
30 },
31 sorters: {
32 property: 'ref',
33 order: 'DESC'
34 }
35 });
36
37 var disable_query_for_ips = function(f, value) {
38 if (value === null ||
39 value.match(/^\d/)) { // IP address starts with \d
40 f.queryDelay = 9999999999; // hack: disbale with long delay
41 } else {
42 f.queryDelay = 10;
43 }
44 };
45
46 var columns = [];
47
48 if (!me.ref_type) {
49 columns.push({
50 header: gettext('Type'),
51 dataIndex: 'type',
52 hideable: false,
53 width: 60
54 });
55 }
56
57 columns.push([
58 {
59 header: gettext('Name'),
60 dataIndex: 'ref',
61 hideable: false,
62 width: 140
63 },
64 {
65 header: gettext('Comment'),
66 dataIndex: 'comment',
67 flex: 1
68 }
69 ]);
70
71 Ext.apply(me, {
72 store: store,
73 valueField: 'ref',
74 displayField: 'ref',
75 listConfig: { columns: columns }
76 });
77
78 me.on('change', disable_query_for_ips);
79
80 me.callParent();
81 }
82 });
83