X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/25ef3491bd9ae007ff1fc2b0d7943e6eaaccf775..2e847cf21b8ab9d15fa167b315ca5b2fa92638fc:/examples/ux/RowEditor.js diff --git a/examples/ux/RowEditor.js b/examples/ux/RowEditor.js index 5a8eb5e2..9076f414 100644 --- a/examples/ux/RowEditor.js +++ b/examples/ux/RowEditor.js @@ -1,6 +1,6 @@ /*! - * Ext JS Library 3.0.3 - * Copyright(c) 2006-2009 Ext JS, LLC + * Ext JS Library 3.1.1 + * Copyright(c) 2006-2010 Ext JS, LLC * licensing@extjs.com * http://www.extjs.com/license */ @@ -8,11 +8,11 @@ Ext.ns('Ext.ux.grid'); /** * @class Ext.ux.grid.RowEditor - * @extends Ext.Panel + * @extends Ext.Panel * Plugin (ptype = 'roweditor') that adds the ability to rapidly edit full rows in a grid. * A validation mode may be enabled which uses AnchorTips to notify the user of all * validation errors at once. - * + * * @ptype roweditor */ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { @@ -29,7 +29,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { monitorValid: true, focusDelay: 250, errorSummary: true, - + saveText: 'Save', cancelText: 'Cancel', commitChangesText: 'You need to commit or cancel your changes', @@ -54,7 +54,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { * @event canceledit * Fired when the editor is cancelled. * @param {Ext.ux.grid.RowEditor} roweditor This object - * @param {Boolean} forced True if the cancel button is pressed, false is the editor was invalid. + * @param {Boolean} forced True if the cancel button is pressed, false is the editor was invalid. */ 'canceledit', /** @@ -149,7 +149,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { var g = this.grid, view = g.getView(), row = view.getRow(rowIndex), record = g.store.getAt(rowIndex); - + this.record = record; this.rowIndex = rowIndex; this.values = {}; @@ -193,10 +193,10 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { this.fireEvent('canceledit', this, saveChanges === false); return; } - var changes = {}, - r = this.record, + var changes = {}, + r = this.record, hasChange = false, - cm = this.grid.colModel, + cm = this.grid.colModel, fields = this.items.items; for(var i = 0, len = cm.getColumnCount(); i < len; i++){ if(!cm.isHidden(i)){ @@ -225,7 +225,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { verifyLayout: function(force){ if(this.el && (this.isVisible() || force === true)){ var row = this.grid.getView().getRow(this.rowIndex); - this.setSize(Ext.fly(row).getWidth(), Ext.fly(row).getHeight() + 9); + this.setSize(Ext.fly(row).getWidth(), Ext.isIE ? Ext.fly(row).getHeight() + 9 : undefined); var cm = this.grid.colModel, fields = this.items.items; for(var i = 0, len = cm.getColumnCount(); i < len; i++){ if(!cm.isHidden(i)){ @@ -258,6 +258,8 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { ed = c.getEditor(); if(!ed){ ed = c.displayEditor || new Ext.form.DisplayField(); + }else{ + ed = ed.field; } if(i == 0){ ed.margins = pm('0 1 2 1'); @@ -373,7 +375,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { scroll = view.scroller.dom.scrollLeft, bw = this.btns.getWidth(), width = Math.min(g.getWidth(), g.getColumnModel().getTotalWidth()); - + this.btns.el.shift({left: (width/2)-(bw/2)+scroll, top: h - 2, stopFx: true, duration:0.2}); } }, @@ -393,14 +395,16 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { if(this.isVisible()){ var index = 0, cm = this.grid.getColumnModel(), - c; + c, + ed; if(pt){ index = this.getTargetColumnIndex(pt); } for(var i = index||0, len = cm.getColumnCount(); i < len; i++){ c = cm.getColumnAt(i); - if(!c.hidden && c.getEditor()){ - c.getEditor().focus(); + ed = c.getEditor(); + if(!c.hidden && ed){ + ed.field.focus(); break; } } @@ -408,11 +412,11 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { }, getTargetColumnIndex: function(pt){ - var grid = this.grid, + var grid = this.grid, v = grid.view, x = pt.left, cms = grid.colModel.config, - i = 0, + i = 0, match = false; for(var len = cms.length, c; c = cms[i]; i++){ if(!c.hidden){ @@ -485,7 +489,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { top = parseInt(this.el.dom.style.top, 10), scroll = v.scroller.dom.scrollTop, h = this.el.getHeight(); - + if(top + h >= scroll){ t.initTarget(this.items.last().getEl()); if(!t.rendered){ @@ -493,7 +497,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { t.hide(); } t.body.update(msg); - t.doAutoWidth(); + t.doAutoWidth(20); t.show(); }else if(t.rendered){ t.hide(); @@ -504,7 +508,7 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { var data = [''); @@ -512,43 +516,3 @@ Ext.ux.grid.RowEditor = Ext.extend(Ext.Panel, { } }); Ext.preg('roweditor', Ext.ux.grid.RowEditor); - -Ext.override(Ext.form.Field, { - markInvalid : function(msg){ - if(!this.rendered || this.preventMark){ // not rendered - return; - } - msg = msg || this.invalidText; - - var mt = this.getMessageHandler(); - if(mt){ - mt.mark(this, msg); - }else if(this.msgTarget){ - this.el.addClass(this.invalidClass); - var t = Ext.getDom(this.msgTarget); - if(t){ - t.innerHTML = msg; - t.style.display = this.msgDisplay; - } - } - this.activeError = msg; - this.fireEvent('invalid', this, msg); - } -}); - -Ext.override(Ext.ToolTip, { - doAutoWidth : function(){ - var bw = this.body.getTextWidth(); - if(this.title){ - bw = Math.max(bw, this.header.child('span').getTextWidth(this.title)); - } - bw += this.getFrameWidth() + (this.closable ? 20 : 0) + this.body.getPadding("lr") + 20; - this.setWidth(bw.constrain(this.minWidth, this.maxWidth)); - - // IE7 repaint bug on initial show - if(Ext.isIE7 && !this.repainted){ - this.el.repaint(); - this.repainted = true; - } - } -});