]> git.proxmox.com Git - pve-manager.git/commitdiff
dc/OptionView: cleanup & use new features from ObjectGrid
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 6 Dec 2017 14:09:23 +0000 (15:09 +0100)
committerDominik Csapak <d.csapak@proxmox.com>
Thu, 25 Jan 2018 12:36:38 +0000 (13:36 +0100)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
www/manager6/Toolkit.js
www/manager6/Utils.js
www/manager6/dc/OptionView.js

index 44c7a83df0a9db6572b875dc0afb7f03b276d196..c7f9a0c45d231ea34f318d5ab14e996bc046cfbb 100644 (file)
@@ -55,6 +55,12 @@ Ext.apply(Ext.form.field.VTypes, {
     MacAddressMask: /[a-fA-F0-9:]/,
     MacAddressText: gettext('Example') + ': 01:23:45:67:89:ab',
 
+    MacPrefix:  function(v) {
+       return (/^[a-f0-9]{2}(?::[a-f0-9]{2}){0,2}:?$/i).test(v);
+    },
+    MacPrefixMask: /[a-fA-F0-9:]/,
+    MacPrefixText: gettext('Example') + ': 02:8f',
+
     BridgeName: function(v) {
         return (/^vmbr\d{1,4}$/).test(v);
     },
index e9d382f5bff737eca4f091bf81fda3a34469b453..1d67238e1d9c2ffd3bf4b50a5917d0f0985861c0 100644 (file)
@@ -300,6 +300,12 @@ Ext.define('PVE.Utils', { utilities: {
        }
     },
 
+    console_viewer_array: function() {
+       return Ext.Array.map(['__default__','vv', 'html5'], function(v) {
+           return [v, PVE.Utils.render_console_viewer(v)];
+       });
+    },
+
     render_kvm_vga_driver: function (value) {
        if (!value) {
            return Proxmox.Utils.defaultText;
index 74388475fbdb056c412b0a65fdccc2a2cd02a31b..5b1359519a38e4c5040adb5ad5c60949b015abd1 100644 (file)
-Ext.define('PVE.dc.HttpProxyEdit', {
-    extend: 'PVE.window.Edit',
-
-    initComponent : function() {
-       var me = this;
-
-       Ext.applyIf(me, {
-           subject: gettext('HTTP proxy'),
-           items: {
-               xtype: 'proxmoxtextfield',
-               name: 'http_proxy',
-               vtype: 'HttpProxy',
-               emptyText: Proxmox.Utils.noneText,
-               deleteEmpty: true,
-               value: '',
-               fieldLabel: gettext('HTTP proxy')
-           }
-       });
-
-       me.callParent();
+Ext.define('PVE.dc.OptionView', {
+    extend: 'Proxmox.grid.ObjectGrid',
+    alias: ['widget.pveDcOptionView'],
 
-       me.load();
-    }
-});
+    onlineHelp: 'datacenter_configuration_file',
 
-Ext.define('PVE.dc.KeyboardEdit', {
-    extend: 'PVE.window.Edit',
+    monStoreErrors: true,
 
     initComponent : function() {
        var me = this;
 
-       Ext.applyIf(me, {
-           subject: gettext('Keyboard Layout'),
-           items: {
-               xtype: 'VNCKeyboardSelector',
-               name: 'keyboard',
-               value: '__default__',
-               fieldLabel: gettext('Keyboard Layout')
-           }
+       me.add_combobox_row('keyboard', gettext('Keyboard Layout'), {
+           renderer: PVE.Utils.render_kvm_language,
+           comboItems: PVE.Utils.kvm_keymap_array(),
+           defaultValue: '__default__',
+           deleteEmpty: true
        });
-
-       me.callParent();
-
-       me.load();
-    }
-});
-
-Ext.define('PVE.dc.ConsoleViewerEdit', {
-    extend: 'PVE.window.Edit',
-
-    initComponent : function() {
-       var me = this;
-
-       var data = [];
-
-       Ext.Array.each(['__default__','vv', 'html5'], function(value) {
-           data.push([value, PVE.Utils.render_console_viewer(value)]);
+       me.add_text_row('http_proxy', gettext('HTTP proxy'), {
+           defaultValue: Proxmox.Utils.noneText,
+           vtype: 'HttpProxy',
+           deleteEmpty: true
        });
-
-       Ext.applyIf(me, {
-           subject: gettext('Console Viewer'),
-           items: {
-               xtype: 'proxmoxKVComboBox',
-               name: 'console',
-               value: '__default__',
-               fieldLabel: gettext('Console Viewer'),
-               comboItems: data
-           }
+       me.add_combobox_row('console', gettext('Console Viewer'), {
+           renderer: PVE.Utils.render_console_viewer,
+           comboItems: PVE.Utils.console_viewer_array(),
+           defaultValue: '__default__',
+           deleteEmpty: true
        });
-
-       me.callParent();
-
-       me.load();
-    }
-});
-
-Ext.define('PVE.dc.EmailFromEdit', {
-    extend: 'PVE.window.Edit',
-
-    initComponent : function() {
-       var me = this;
-
-       Ext.applyIf(me, {
-           subject: gettext('Email from address'),
-           items: {
-               xtype: 'proxmoxtextfield',
-               name: 'email_from',
-               vtype: 'pveMail',
-               emptyText: 'root@$hostname',
-               deleteEmpty: true,
-               value: '',
-               fieldLabel: gettext('Email from address')
-           }
+       me.add_text_row('email_from', gettext('Email from address'), {
+           deleteEmpty: true,
+           vtype: 'pveMail',
+           defaultValue: 'root@$hostname'
        });
-
-       me.callParent();
-
-       me.load();
-    }
-});
-
-Ext.define('PVE.dc.MacPrefixEdit', {
-    extend: 'PVE.window.Edit',
-
-    initComponent : function() {
-       var me = this;
-
-       Ext.applyIf(me, {
-           subject: gettext('MAC address prefix'),
-           items: {
-               xtype: 'proxmoxtextfield',
-               name: 'mac_prefix',
-               regex: /^[a-f0-9]{2}(?::[a-f0-9]{2}){0,2}:?$/i,
-               regexText: gettext('Example') + ': 02:8f',
-               emptyText: Proxmox.Utils.noneText,
-               deleteEmpty: true,
-               value: '',
-               fieldLabel: gettext('MAC address prefix')
-           }
+       me.add_text_row('mac_prefix', gettext('MAC address prefix'), {
+           vtype: 'MacPrefix',
+           defaultValue: Proxmox.Utils.noneText
        });
 
-       me.callParent();
-
-       me.load();
-    }
-});
-
-Ext.define('PVE.dc.OptionView', {
-    extend: 'Proxmox.grid.ObjectGrid',
-    alias: ['widget.pveDcOptionView'],
-
-    onlineHelp: 'datacenter_configuration_file',
-
-    initComponent : function() {
-       var me = this;
-
-       var reload = function() {
-           me.rstore.load();
-       };
-
-       var rows = {
-           keyboard: { 
-               header: gettext('Keyboard Layout'), 
-               editor: 'PVE.dc.KeyboardEdit',
-               renderer: PVE.Utils.render_kvm_language,
-               required: true 
-           },
-           http_proxy: { 
-               header: gettext('HTTP proxy'),
-               editor: 'PVE.dc.HttpProxyEdit', 
-               required: true,
-               renderer: function(value) {
-                   if (!value) {
-                       return Proxmox.Utils.noneText;
-                   }
-                   return value;
-               }
-           },
-           console: {
-               header: gettext('Console Viewer'),
-               editor: 'PVE.dc.ConsoleViewerEdit',
-               required: true,
-               renderer: PVE.Utils.render_console_viewer
-           },
-           email_from: { 
-               header: gettext('Email from address'),
-               editor: 'PVE.dc.EmailFromEdit', 
-               required: true,
-               renderer: function(value) {
-                   if (!value) {
-                       return 'root@$hostname';
-                   }
-                   return value;
-               }
-           },
-           mac_prefix: {
-               header: gettext('MAC address prefix'),
-               editor: 'PVE.dc.MacPrefixEdit',
-               required: true,
-               renderer: function(value) {
-                   if (!value) {
-                       return Proxmox.Utils.noneText;
-                   }
-                   return value;
-               }
-           }
-       };
-
-       var sm = Ext.create('Ext.selection.RowModel', {});
-
-       var run_editor = function() {
-           var rec = sm.getSelection()[0];
-           if (!rec) {
-               return;
-           }
-
-           var rowdef = rows[rec.data.key];
-           if (!rowdef.editor) {
-               return;
-           }
-           
-           var win = Ext.create(rowdef.editor, {
-               url: "/api2/extjs/cluster/options",
-               confid: rec.data.key
-           });
-           win.show();
-           win.on('destroy', reload);
-       };
-
-       var edit_btn = new Proxmox.button.Button({
-           text: gettext('Edit'),
-           disabled: true,
-           selModel: sm,
-           handler: run_editor
-       });
+       me.selModel = Ext.create('Ext.selection.RowModel', {});
 
        Ext.apply(me, {
+           tbar: [{
+               text: gettext('Edit'),
+               xtype: 'proxmoxButton',
+               disabled: true,
+               handler: function() { me.run_editor(); },
+               selModel: me.selModel
+           }],
            url: "/api2/json/cluster/options",
-           interval: 1000,
-           selModel: sm,
-           tbar: [ edit_btn ],
-           rows: rows,
+           editorConfig: {
+               url: "/api2/extjs/cluster/options"
+           },
+           interval: 5000,
+           cwidth1: 200,
            listeners: {
-               itemdblclick: run_editor,
-               activate: reload
+               itemdblclick: me.run_editor
            }
        });
 
        me.callParent();
+
+       me.on('activate', me.rstore.startUpdate);
+       me.on('destroy', me.rstore.stopUpdate);
+       me.on('deactivate', me.rstore.stopUpdate);
     }
 });