2020-10-27 16:20:07 +01:00
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 ,
2024-08-07 14:10:45 +02:00
cbindData : function ( initialConfig ) {
2020-10-27 16:20:07 +01:00
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 ) {
2020-11-13 15:02:36 +01:00
Ext . Msg . alert ( gettext ( 'Error' ) , response . htmlStatus ) ;
2020-10-27 16:20:07 +01:00
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 ) ;
}
} ,
} ) ;