]>
Commit | Line | Data |
---|---|---|
68931742 DC |
1 | Ext.define('PBS.DataStoreNotes', { |
2 | extend: 'Ext.panel.Panel', | |
3 | xtype: 'pbsDataStoreNotes', | |
4 | mixins: ['Proxmox.Mixin.CBind'], | |
5 | ||
6 | title: gettext("Comment"), | |
7 | bodyStyle: 'white-space:pre', | |
8 | bodyPadding: 10, | |
9 | scrollable: true, | |
10 | animCollapse: false, | |
11 | ||
12 | cbindData: function(initalConfig) { | |
13 | let me = this; | |
14 | me.url = `/api2/extjs/config/datastore/${me.datastore}`; | |
15 | return { }; | |
16 | }, | |
17 | ||
18 | run_editor: function() { | |
19 | let me = this; | |
20 | let win = Ext.create('Proxmox.window.Edit', { | |
21 | title: gettext('Comment'), | |
22 | width: 600, | |
23 | resizable: true, | |
24 | layout: 'fit', | |
25 | defaultButton: undefined, | |
26 | items: { | |
27 | xtype: 'textfield', | |
28 | name: 'comment', | |
29 | value: '', | |
30 | hideLabel: true, | |
31 | }, | |
32 | url: me.url, | |
33 | listeners: { | |
34 | destroy: function() { | |
35 | me.load(); | |
36 | }, | |
37 | }, | |
38 | }).show(); | |
39 | win.load(); | |
40 | }, | |
41 | ||
42 | setNotes: function(value) { | |
43 | let me = this; | |
44 | var data = value || ''; | |
45 | me.update(Ext.htmlEncode(data)); | |
46 | ||
47 | if (me.collapsible && me.collapseMode === 'auto') { | |
48 | me.setCollapsed(data === ''); | |
49 | } | |
50 | }, | |
51 | ||
52 | load: function() { | |
53 | var me = this; | |
54 | ||
55 | Proxmox.Utils.API2Request({ | |
56 | url: me.url, | |
57 | waitMsgTarget: me, | |
58 | failure: function(response, opts) { | |
59 | me.update(gettext('Error') + " " + response.htmlStatus); | |
60 | me.setCollapsed(false); | |
61 | }, | |
62 | success: function(response, opts) { | |
63 | me.setNotes(response.result.data.comment); | |
64 | }, | |
65 | }); | |
66 | }, | |
67 | ||
68 | listeners: { | |
69 | render: function(c) { | |
70 | var me = this; | |
71 | me.getEl().on('dblclick', me.run_editor, me); | |
72 | }, | |
73 | afterlayout: function() { | |
74 | let me = this; | |
75 | if (me.collapsible && !me.getCollapsed() && me.collapseMode === 'always') { | |
76 | me.setCollapsed(true); | |
77 | me.collapseMode = ''; // only once, on initial load! | |
78 | } | |
79 | }, | |
80 | }, | |
81 | ||
82 | tools: [{ | |
83 | type: 'gear', | |
84 | handler: function() { | |
85 | this.up('panel').run_editor(); | |
86 | }, | |
87 | }], | |
88 | ||
89 | collapsible: true, | |
90 | collapseDirection: 'right', | |
91 | ||
92 | initComponent: function() { | |
93 | var me = this; | |
94 | ||
95 | me.callParent(); | |
96 | ||
97 | let sp = Ext.state.Manager.getProvider(); | |
98 | me.collapseMode = sp.get('notes-collapse', 'never'); | |
99 | ||
100 | if (me.collapseMode === 'auto') { | |
101 | me.setCollapsed(true); | |
102 | } | |
103 | }, | |
104 | }); |