]>
git.proxmox.com Git - pmg-gui.git/blob - js/ObjectGroup.js
1 Ext
.define('PMG.ObjectGroup', {
2 extend
: 'Ext.grid.GridPanel',
3 alias
: 'widget.pmgObjectGroup',
10 showDirection
: false, // only important for SMTP Whitelist
14 emptyText
: gettext('Please select an object.'),
16 setBaseUrl: function(baseurl
) {
21 if (me
.baseurl
=== undefined) {
22 me
.store
.proxy
.setUrl(undefined);
24 me
.setButtonState(me
.store
, [], false);
26 let url
= '/api2/json' + me
.baseurl
+ '/objects';
27 me
.store
.proxy
.setUrl(url
);
32 setObjectInfo: function(ogdata
) {
37 if (me
.ogdata
=== undefined) {
38 me
.down('#oginfo').update(me
.emptyText
);
40 let html
= '<b>' + Ext
.String
.htmlEncode(me
.ogdata
.name
) + '</b>';
42 html
+= Ext
.String
.htmlEncode(Ext
.String
.trim(me
.ogdata
.info
));
44 me
.down('#oginfo').update(html
);
45 me
.down('#ogdata').setHidden(false);
49 setButtonState: function(store
, records
, success
) {
51 if (!success
|| !me
.baseurl
) {
52 me
.down('#addMenuButton').setDisabled(true);
55 me
.down('#addMenuButton').setDisabled(false);
58 initComponent: function() {
61 me
.store
= new Ext
.data
.Store({
62 model
: 'pmg-object-list',
68 property
: 'receivertest',
78 header
: gettext('Type'),
80 renderer
: PMG
.Utils
.format_otype
,
84 if (me
.showDirection
) {
86 header
: gettext('Direction'),
87 dataIndex
: 'receivertest',
88 renderer: function(value
) {
89 return value
? PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
95 header
: gettext('Value'),
97 renderer
: Ext
.String
.htmlEncode
,
101 let reload = function() {
105 me
.selModel
= Ext
.create('Ext.selection.RowModel', {});
107 let remove_btn
= Ext
.createWidget('proxmoxStdRemoveButton', {
108 selModel
: me
.selModel
,
109 getUrl: function(rec
) {
110 return me
.baseurl
+ '/objects/' + rec
.data
.id
;
113 getRecordName: function(rec
) {
114 return PMG
.Utils
.format_otype(rec
.data
.otype
) +
115 ': ' + rec
.data
.descr
;
120 let full_subject = function(subject
, receivertest
) {
121 if (me
.showDirection
) {
122 let direction
= receivertest
123 ? PMG
.Utils
.receiverText
: PMG
.Utils
.senderText
;
125 return subject
+ ' (' + direction
+ ')';
131 let run_editor = function() {
132 let rec
= me
.selModel
.getSelection()[0];
137 let editor
= PMG
.Utils
.object_editors
[rec
.data
.otype
];
138 if (!editor
|| editor
.uneditable
) {
142 let config
= Ext
.apply({ method
: 'PUT' }, editor
);
143 config
.subject
= full_subject(editor
.subject
, rec
.data
.receivertest
);
144 config
.url
= me
.baseurl
+ '/' + editor
.subdir
+ '/' + rec
.data
.id
;
146 let win
= Ext
.createWidget(config
);
149 win
.on('destroy', reload
);
155 Ext
.Array
.each(me
.otype_list
, function(otype
) {
156 let editor
= PMG
.Utils
.object_editors
[otype
];
158 let config
= Ext
.apply({ method
: 'POST' }, editor
);
159 config
.subject
= full_subject(editor
.subject
, editor
.receivertest
);
162 text
: config
.subject
,
163 iconCls
: config
.iconCls
|| 'fa fa-question-circle',
164 handler: function() {
165 if (me
.baseurl
=== undefined) {
168 config
.url
= me
.baseurl
+ '/' + editor
.subdir
;
169 let win
= Ext
.create(config
);
170 win
.on('destroy', reload
);
178 me
.dockedItems
.push({
183 text
: gettext('Add'),
185 itemId
: 'addMenuButton',
191 xtype
: 'proxmoxButton',
192 text
: gettext('Edit'),
194 selModel
: me
.selModel
,
195 enableFn: function(rec
) {
196 let editor
= PMG
.Utils
.object_editors
[rec
.data
.otype
];
197 return editor
&& !editor
.uneditable
;
205 me
.dockedItems
.push({
209 hidden
: !!me
.hideGroupInfo
,
216 style
: { 'white-space': 'pre' },
222 if (me
.ogdata
=== undefined) { return; }
223 me
.fireEvent('dblclickOGInfo', me
, e
, t
, me
.ogdata
);
233 Proxmox
.Utils
.monStoreErrors(me
, me
.store
, true);
236 run_editor
: run_editor
,
238 itemdblclick
: run_editor
,
245 me
.mon(me
.store
, 'load', me
.setButtonState
, me
);
248 me
.setBaseUrl(me
.baseurl
); // configure store, load()