]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - grid/ObjectGrid.js
cleanly separate sources from package build, move to own folder
[proxmox-widget-toolkit.git] / grid / ObjectGrid.js
diff --git a/grid/ObjectGrid.js b/grid/ObjectGrid.js
deleted file mode 100644 (file)
index 541cf1d..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-/* Renders a list of key values objets
-
-mandatory config parameters:
-rows: an object container where each propery is a key-value object we want to render
-       let rows = {
-           keyboard: {
-               header: gettext('Keyboard Layout'),
-               editor: 'Your.KeyboardEdit',
-               required: true
-           },
-
-optional:
-disabled: setting this parameter to true will disable selection and focus on the
-proxmoxObjectGrid as well as greying out input elements.
-Useful for a readonly tabular display
-
-*/
-
-Ext.define('Proxmox.grid.ObjectGrid', {
-    extend: 'Ext.grid.GridPanel',
-    alias: ['widget.proxmoxObjectGrid'],
-    disabled: false,
-    hideHeaders: true,
-
-    monStoreErrors: false,
-
-    add_combobox_row: function(name, text, opts) {
-       let me = this;
-
-       opts = opts || {};
-       me.rows = me.rows || {};
-
-       me.rows[name] = {
-           required: true,
-           defaultValue: opts.defaultValue,
-           header: text,
-           renderer: opts.renderer,
-           editor: {
-               xtype: 'proxmoxWindowEdit',
-               subject: text,
-               onlineHelp: opts.onlineHelp,
-               fieldDefaults: {
-                   labelWidth: opts.labelWidth || 100,
-               },
-               items: {
-                   xtype: 'proxmoxKVComboBox',
-                   name: name,
-                   comboItems: opts.comboItems,
-                   value: opts.defaultValue,
-                   deleteEmpty: !!opts.deleteEmpty,
-                   emptyText: opts.defaultValue,
-                   labelWidth: Proxmox.Utils.compute_min_label_width(
-                       text, opts.labelWidth),
-                   fieldLabel: text,
-               },
-           },
-       };
-    },
-
-    add_text_row: function(name, text, opts) {
-       let me = this;
-
-       opts = opts || {};
-       me.rows = me.rows || {};
-
-       me.rows[name] = {
-           required: true,
-           defaultValue: opts.defaultValue,
-           header: text,
-           renderer: opts.renderer,
-           editor: {
-               xtype: 'proxmoxWindowEdit',
-               subject: text,
-               onlineHelp: opts.onlineHelp,
-               fieldDefaults: {
-                   labelWidth: opts.labelWidth || 100,
-               },
-               items: {
-                   xtype: 'proxmoxtextfield',
-                   name: name,
-                   deleteEmpty: !!opts.deleteEmpty,
-                   emptyText: opts.defaultValue,
-                   labelWidth: Proxmox.Utils.compute_min_label_width(
-                       text, opts.labelWidth),
-                   vtype: opts.vtype,
-                   fieldLabel: text,
-               },
-           },
-       };
-    },
-
-    add_boolean_row: function(name, text, opts) {
-       let me = this;
-
-       opts = opts || {};
-       me.rows = me.rows || {};
-
-       me.rows[name] = {
-           required: true,
-           defaultValue: opts.defaultValue || 0,
-           header: text,
-           renderer: opts.renderer || Proxmox.Utils.format_boolean,
-           editor: {
-               xtype: 'proxmoxWindowEdit',
-               subject: text,
-               onlineHelp: opts.onlineHelp,
-               fieldDefaults: {
-                   labelWidth: opts.labelWidth || 100,
-               },
-               items: {
-                   xtype: 'proxmoxcheckbox',
-                   name: name,
-                   uncheckedValue: 0,
-                   defaultValue: opts.defaultValue || 0,
-                   checked: !!opts.defaultValue,
-                   deleteDefaultValue: !!opts.deleteDefaultValue,
-                   labelWidth: Proxmox.Utils.compute_min_label_width(
-                       text, opts.labelWidth),
-                   fieldLabel: text,
-               },
-           },
-       };
-    },
-
-    add_integer_row: function(name, text, opts) {
-       let me = this;
-
-       opts = opts || {};
-       me.rows = me.rows || {};
-
-       me.rows[name] = {
-           required: true,
-           defaultValue: opts.defaultValue,
-           header: text,
-           renderer: opts.renderer,
-           editor: {
-               xtype: 'proxmoxWindowEdit',
-               subject: text,
-               onlineHelp: opts.onlineHelp,
-               fieldDefaults: {
-                   labelWidth: opts.labelWidth || 100,
-               },
-               items: {
-                   xtype: 'proxmoxintegerfield',
-                   name: name,
-                   minValue: opts.minValue,
-                   maxValue: opts.maxValue,
-                   emptyText: gettext('Default'),
-                   deleteEmpty: !!opts.deleteEmpty,
-                   value: opts.defaultValue,
-                   labelWidth: Proxmox.Utils.compute_min_label_width(
-                       text, opts.labelWidth),
-                   fieldLabel: text,
-               },
-           },
-       };
-    },
-
-    editorConfig: {}, // default config passed to editor
-
-    run_editor: function() {
-       let me = this;
-
-       let sm = me.getSelectionModel();
-       let rec = sm.getSelection()[0];
-       if (!rec) {
-           return;
-       }
-
-       let rows = me.rows;
-       let rowdef = rows[rec.data.key];
-       if (!rowdef.editor) {
-           return;
-       }
-
-       let win;
-       let config;
-       if (Ext.isString(rowdef.editor)) {
-           config = Ext.apply({
-               confid: rec.data.key,
-           }, me.editorConfig);
-           win = Ext.create(rowdef.editor, config);
-       } else {
-           config = Ext.apply({
-               confid: rec.data.key,
-           }, me.editorConfig);
-           Ext.apply(config, rowdef.editor);
-           win = Ext.createWidget(rowdef.editor.xtype, config);
-           win.load();
-       }
-
-       win.show();
-       win.on('destroy', me.reload, me);
-    },
-
-    reload: function() {
-       let me = this;
-       me.rstore.load();
-    },
-
-    getObjectValue: function(key, defaultValue) {
-       let me = this;
-       let rec = me.store.getById(key);
-       if (rec) {
-           return rec.data.value;
-       }
-       return defaultValue;
-    },
-
-    renderKey: function(key, metaData, record, rowIndex, colIndex, store) {
-       let me = this;
-       let rows = me.rows;
-       let rowdef = rows && rows[key] ? rows[key] : {};
-       return rowdef.header || key;
-    },
-
-    renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
-       let me = this;
-       let rows = me.rows;
-       let key = record.data.key;
-       let rowdef = rows && rows[key] ? rows[key] : {};
-
-       let renderer = rowdef.renderer;
-       if (renderer) {
-           return renderer(value, metaData, record, rowIndex, colIndex, store);
-       }
-
-       return value;
-    },
-
-    listeners: {
-       itemkeydown: function(view, record, item, index, e) {
-           if (e.getKey() === e.ENTER) {
-               this.pressedIndex = index;
-           }
-       },
-       itemkeyup: function(view, record, item, index, e) {
-           if (e.getKey() === e.ENTER && index === this.pressedIndex) {
-               this.run_editor();
-           }
-
-           this.pressedIndex = undefined;
-       },
-    },
-
-    initComponent: function() {
-       let me = this;
-
-       let rows = me.rows;
-
-       if (!me.rstore) {
-           if (!me.url) {
-               throw "no url specified";
-           }
-
-           me.rstore = Ext.create('Proxmox.data.ObjectStore', {
-               url: me.url,
-               interval: me.interval,
-               extraParams: me.extraParams,
-               rows: me.rows,
-           });
-       }
-
-       let rstore = me.rstore;
-       let store = Ext.create('Proxmox.data.DiffStore', {
-           rstore: rstore,
-           sorters: [],
-           filters: [],
-       });
-
-       if (rows) {
-           Ext.Object.each(rows, function(key, rowdef) {
-               if (Ext.isDefined(rowdef.defaultValue)) {
-                   store.add({ key: key, value: rowdef.defaultValue });
-               } else if (rowdef.required) {
-                   store.add({ key: key, value: undefined });
-               }
-           });
-       }
-
-       if (me.sorterFn) {
-           store.sorters.add(Ext.create('Ext.util.Sorter', {
-               sorterFn: me.sorterFn,
-           }));
-       }
-
-       store.filters.add(Ext.create('Ext.util.Filter', {
-           filterFn: function(item) {
-               if (rows) {
-                   let rowdef = rows[item.data.key];
-                   if (!rowdef || rowdef.visible === false) {
-                       return false;
-                   }
-               }
-               return true;
-           },
-       }));
-
-       Proxmox.Utils.monStoreErrors(me, rstore);
-
-       Ext.applyIf(me, {
-           store: store,
-           stateful: false,
-           columns: [
-               {
-                   header: gettext('Name'),
-                   width: me.cwidth1 || 200,
-                   dataIndex: 'key',
-                   renderer: me.renderKey,
-               },
-               {
-                   flex: 1,
-                   header: gettext('Value'),
-                   dataIndex: 'value',
-                   renderer: me.renderValue,
-               },
-           ],
-       });
-
-       me.callParent();
-
-       if (me.monStoreErrors) {
-           Proxmox.Utils.monStoreErrors(me, me.store);
-       }
-   },
-});