]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/panel/NotesView.js
edf38e5d219daca998a745456a7d41be5b29c861
[pve-manager.git] / www / manager6 / panel / NotesView.js
1 Ext.define('PVE.panel.NotesView', {
2 extend: 'Ext.panel.Panel',
3 xtype: 'pveNotesView',
4
5 title: gettext("Notes"),
6 bodyStyle: 'white-space:pre',
7 bodyPadding: 10,
8 scrollable: true,
9 animCollapse: false,
10
11 tbar: {
12 itemId: 'tbar',
13 hidden: true,
14 items: [
15 {
16 text: gettext('Edit'),
17 handler: function() {
18 var me = this.up('panel');
19 me.run_editor();
20 }
21 }
22 ]
23 },
24
25 run_editor: function() {
26 var me = this;
27 var win = Ext.create('PVE.window.NotesEdit', {
28 pveSelNode: me.pveSelNode,
29 url: me.url
30 });
31 win.show();
32 win.on('destroy', me.load, me);
33 },
34
35 load: function() {
36 var me = this;
37
38 Proxmox.Utils.API2Request({
39 url: me.url,
40 waitMsgTarget: me,
41 failure: function(response, opts) {
42 me.update(gettext('Error') + " " + response.htmlStatus);
43 me.setCollapsed(false);
44 },
45 success: function(response, opts) {
46 var data = response.result.data.description || '';
47 me.update(Ext.htmlEncode(data));
48
49 if (me.collapsible && me.collapseMode === 'auto') {
50 me.setCollapsed(data === '');
51 }
52 }
53 });
54 },
55
56 listeners: {
57 render: function(c) {
58 var me = this;
59 me.getEl().on('dblclick', me.run_editor, me);
60 },
61 afterlayout: function() {
62 let me = this;
63 if (me.collapsible && !me.getCollapsed() && me.collapseMode === 'always') {
64 me.setCollapsed(true);
65 me.collapseMode = ''; // only once, on initial load!
66 }
67 },
68 },
69
70 tools: [{
71 type: 'gear',
72 handler: function() {
73 var me = this.up('panel');
74 me.run_editor();
75 }
76 }],
77
78 initComponent : function() {
79 var me = this;
80
81 var nodename = me.pveSelNode.data.node;
82 if (!nodename) {
83 throw "no node name specified";
84 }
85
86 var type = me.pveSelNode.data.type;
87 if (!Ext.Array.contains(['node', 'qemu', 'lxc'], type)) {
88 throw 'invalid type specified';
89 }
90
91 var vmid = me.pveSelNode.data.vmid;
92 if (!vmid && type !== 'node') {
93 throw "no VM ID specified";
94 }
95
96 me.url = '/api2/extjs/nodes/' + nodename + '/';
97
98 // add the type specific path if qemu/lxc
99 if (type === 'qemu' || type === 'lxc') {
100 me.url += type + '/' + vmid + '/';
101 }
102
103 me.url += 'config';
104
105 me.callParent();
106 if (type === 'node') {
107 me.down('#tbar').setVisible(true);
108 } else {
109 me.setCollapsible(true);
110 me.collapseDirection = 'right';
111
112 let sp = Ext.state.Manager.getProvider();
113 me.collapseMode = sp.get('guest-notes-collapse', 'never');
114
115 if (me.collapseMode === 'auto') {
116 me.setCollapsed(true);
117 }
118 }
119 me.load();
120 }
121 });