68931742cb
this adds a 'Summary' panel to the datastores, similar to what we have for PVE's nodes/guests/storages contains an info panel with useful information, a comment field, and the charts from the statistics panel (which can be deleted since it is not necessary any more) Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
105 lines
2.1 KiB
JavaScript
105 lines
2.1 KiB
JavaScript
Ext.define('PBS.DataStoreNotes', {
|
|
extend: 'Ext.panel.Panel',
|
|
xtype: 'pbsDataStoreNotes',
|
|
mixins: ['Proxmox.Mixin.CBind'],
|
|
|
|
title: gettext("Comment"),
|
|
bodyStyle: 'white-space:pre',
|
|
bodyPadding: 10,
|
|
scrollable: true,
|
|
animCollapse: false,
|
|
|
|
cbindData: function(initalConfig) {
|
|
let me = this;
|
|
me.url = `/api2/extjs/config/datastore/${me.datastore}`;
|
|
return { };
|
|
},
|
|
|
|
run_editor: function() {
|
|
let me = this;
|
|
let win = Ext.create('Proxmox.window.Edit', {
|
|
title: gettext('Comment'),
|
|
width: 600,
|
|
resizable: true,
|
|
layout: 'fit',
|
|
defaultButton: undefined,
|
|
items: {
|
|
xtype: 'textfield',
|
|
name: 'comment',
|
|
value: '',
|
|
hideLabel: true,
|
|
},
|
|
url: me.url,
|
|
listeners: {
|
|
destroy: function() {
|
|
me.load();
|
|
},
|
|
},
|
|
}).show();
|
|
win.load();
|
|
},
|
|
|
|
setNotes: function(value) {
|
|
let me = this;
|
|
var data = value || '';
|
|
me.update(Ext.htmlEncode(data));
|
|
|
|
if (me.collapsible && me.collapseMode === 'auto') {
|
|
me.setCollapsed(data === '');
|
|
}
|
|
},
|
|
|
|
load: function() {
|
|
var me = this;
|
|
|
|
Proxmox.Utils.API2Request({
|
|
url: me.url,
|
|
waitMsgTarget: me,
|
|
failure: function(response, opts) {
|
|
me.update(gettext('Error') + " " + response.htmlStatus);
|
|
me.setCollapsed(false);
|
|
},
|
|
success: function(response, opts) {
|
|
me.setNotes(response.result.data.comment);
|
|
},
|
|
});
|
|
},
|
|
|
|
listeners: {
|
|
render: function(c) {
|
|
var me = this;
|
|
me.getEl().on('dblclick', me.run_editor, me);
|
|
},
|
|
afterlayout: function() {
|
|
let me = this;
|
|
if (me.collapsible && !me.getCollapsed() && me.collapseMode === 'always') {
|
|
me.setCollapsed(true);
|
|
me.collapseMode = ''; // only once, on initial load!
|
|
}
|
|
},
|
|
},
|
|
|
|
tools: [{
|
|
type: 'gear',
|
|
handler: function() {
|
|
this.up('panel').run_editor();
|
|
},
|
|
}],
|
|
|
|
collapsible: true,
|
|
collapseDirection: 'right',
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
me.callParent();
|
|
|
|
let sp = Ext.state.Manager.getProvider();
|
|
me.collapseMode = sp.get('notes-collapse', 'never');
|
|
|
|
if (me.collapseMode === 'auto') {
|
|
me.setCollapsed(true);
|
|
}
|
|
},
|
|
});
|