From 4e247bf4bebbacea6f0fa8c8e4e872a21be4dacc Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Mon, 20 Apr 2015 06:11:26 +0200 Subject: [PATCH] copy form/ViewSelector.js from manager to manager5 --- www/manager5/form/ViewSelector.js | 102 ++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 www/manager5/form/ViewSelector.js diff --git a/www/manager5/form/ViewSelector.js b/www/manager5/form/ViewSelector.js new file mode 100644 index 00000000..5306c725 --- /dev/null +++ b/www/manager5/form/ViewSelector.js @@ -0,0 +1,102 @@ +Ext.define('PVE.form.ViewSelector', { + extend: 'Ext.form.field.ComboBox', + alias: ['widget.pveViewSelector'], + + initComponent: function() { + var me = this; + + var default_views = { + server: { + text: gettext('Server View'), + groups: ['node'] + }, + folder: { + text: gettext('Folder View'), + groups: ['type'] + }, + storage: { + text: gettext('Storage View'), + groups: ['node'], + filterfn: function(node) { + return node.data.type === 'storage' || node.data.type === 'node'; + } + }, + pool: { + text: gettext('Pool View'), + groups: ['pool'], + // Pool View only lists VMs and Containers + filterfn: function(node) { + return node.data.type === 'qemu' || node.data.type === 'openvz' || + node.data.type === 'pool'; + } + } + }; + + var groupdef = []; + Ext.Object.each(default_views, function(viewname, value) { + groupdef.push([viewname, value.text]); + }); + + var store = Ext.create('Ext.data.Store', { + model: 'KeyValue', + proxy: { + type: 'memory', + reader: 'array' + }, + data: groupdef, + autoload: true, + autoDestory: true + }); + + Ext.apply(me, { + hideLabel: true, + store: store, + value: groupdef[0][0], + editable: false, + queryMode: 'local', + allowBlank: false, + forceSelection: true, + autoSelect: false, + triggerAction: 'all', + valueField: 'key', + displayField: 'value', + + getViewFilter: function() { + var view = me.getValue(); + return Ext.apply({ id: view }, default_views[view] || default_views.server); + }, + + getState: function() { + return { value: me.getValue() }; + }, + + applyState : function(state, doSelect) { + var view = me.getValue(); + if (state && state.value && (view != state.value)) { + var record = store.findRecord('key', state.value); + if (record) { + me.setValue(state.value, true); + if (doSelect) { + me.fireEvent('select', me, [record]); + } + } + } + }, + stateEvents: [ 'select' ], + stateful: true, + id: 'view' + }); + + me.callParent(); + + var statechange = function(sp, key, value) { + if (key === me.id) { + me.applyState(value, true); + } + }; + + var sp = Ext.state.Manager.getProvider(); + + me.mon(sp, 'statechange', statechange, me); + } +}); \ No newline at end of file