1. #21
    Ext User Ytorres's Avatar
    Join Date
    Jun 2007
    Location
    Rennes, France
    Posts
    285
    Vote Rating
    0
    Ytorres is on a distinguished road

      0  

    Default


    I haven't the utility for now but, nice work MindPatterns !

    Have you setting up a live Demo ?
    "Software is like sex: it's better when it's free" - Linus Torvald
    https://edit.php.net - A tool written with ExtJs for translated Php documentation

  2. #22
    Sencha - Community Support Team mystix's Avatar
    Join Date
    Mar 2007
    Location
    Singapore
    Posts
    6,236
    Vote Rating
    5
    mystix will become famous soon enough

      0  

    Default


    Quote Originally Posted by MindPatterns View Post
    Good morning!



    do you have a screenshot?

    Any first guess if this might be a bug in Ext or do you think this is related to the position of the menu button within the dom?
    scratch that "tr-tl" fix. there appears to be an unreported bug (imo) in Ext.menu.Menu's show() method -- the menu never attempts to constrain itself to its container.

    i've updated the override in post #13 with the new init() method (i've also removed the incorrect override i posted for the initElements() method -- the final call to
    Code:
    this.menuBtn.dom.style.height = (this._view.mainHd.dom.offsetHeight - 1) + 'px';
    is required in order to correctly display the plugin's icon when the grid is initially rendered)



    here's a test case demonstrating the problem (try it with and without the call to the colMenu.override()):
    Code:
    Ext.onReady(function() {
        window.resizeTo(400, 300);
    
        new Ext.Viewport({
            layout: 'fit',
            items: {
                xtype: 'grid',
                monitorResize: true,
                store: new Ext.data.SimpleStore({
                    fields: [
                       {name: 'company'},
                       {name: 'price', type: 'float'},
                       {name: 'change', type: 'float'},
                       {name: 'pctChange', type: 'float'},
                       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
                    ],
                    data: [
                        ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
                        ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
                        ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],
                        ['American Express Company',52.55,0.01,0.02,'9/1 12:00am'],
                        ['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am'],
                        ['AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am'],
                        ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],
                        ['Caterpillar Inc.',67.27,0.92,1.39,'9/1 12:00am'],
                        ['Citigroup, Inc.',49.37,0.02,0.04,'9/1 12:00am'],
                        ['E.I. du Pont de Nemours and Company',40.48,0.51,1.28,'9/1 12:00am'],
                        ['Exxon Mobil Corp',68.1,-0.43,-0.64,'9/1 12:00am'],
                        ['General Electric Company',34.14,-0.08,-0.23,'9/1 12:00am'],
                        ['General Motors Corporation',30.27,1.09,3.74,'9/1 12:00am'],
                        ['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am'],
                        ['Honeywell Intl Inc',38.77,0.05,0.13,'9/1 12:00am'],
                        ['Intel Corporation',19.88,0.31,1.58,'9/1 12:00am'],
                        ['International Business Machines',81.41,0.44,0.54,'9/1 12:00am'],
                        ['Johnson & Johnson',64.72,0.06,0.09,'9/1 12:00am'],
                        ['JP Morgan & Chase & Co',45.73,0.07,0.15,'9/1 12:00am'],
                        ['McDonald\'s Corporation',36.76,0.86,2.40,'9/1 12:00am'],
                        ['Merck & Co., Inc.',40.96,0.41,1.01,'9/1 12:00am'],
                        ['Microsoft Corporation',25.84,0.14,0.54,'9/1 12:00am'],
                        ['Pfizer Inc',27.96,0.4,1.45,'9/1 12:00am'],
                        ['The Coca-Cola Company',45.07,0.26,0.58,'9/1 12:00am'],
                        ['The Home Depot, Inc.',34.64,0.35,1.02,'9/1 12:00am'],
                        ['The Procter & Gamble Company',61.91,0.01,0.02,'9/1 12:00am'],
                        ['United Technologies Corporation',63.26,0.55,0.88,'9/1 12:00am'],
                        ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'],
                        ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']
                    ]
                }),
                enableHdMenu: false,
                plugins: [new Ext.ux.grid.GridViewMenuPlugin()],
                columns: [
                    {id:'company',header: "Company", width: 160, sortable: true, dataIndex: 'company'},
                    {header: "Price", width: 75, sortable: true, renderer: 'usMoney', dataIndex: 'price'},
                    {header: "Change", width: 75, sortable: true, dataIndex: 'change', renderer: function(val){
                        if(val > 0){
                            return '<span style="color:green;">' + val + '</span>';
                        }else if(val < 0){
                            return '<span style="color:red;">' + val + '</span>';
                        }
                        return val;
                    }},
                    {header: "% Change", width: 75, sortable: true, dataIndex: 'pctChange', renderer: function(val){
                        if(val > 0){
                            return '<span style="color:green;">' + val + '%</span>';
                        }else if(val < 0){
                            return '<span style="color:red;">' + val + '%</span>';
                        }
                        return val;
                    }},
                    {header: "Last Updated", width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
                ],
                stripeRows: true,
                autoExpandColumn: 'company',
                height: 350,
                width: 600,
                title: 'Array Grid'
            }
        });
    });

  3. #23
    Sencha User ThorstenSuckow's Avatar
    Join Date
    Sep 2007
    Location
    Aachen, Germany
    Posts
    597
    Vote Rating
    2
    ThorstenSuckow is on a distinguished road

      0  

    Default


    Mystix, thanks, the next release will definitely be named after you.

    However, do you think it makes sense to add the "show" override for the colMenu? If it's a current bug with Ext JS, I might consider waiting for the official fix instead of adding it to the trunk.

  4. #24
    Sencha - Community Support Team mystix's Avatar
    Join Date
    Mar 2007
    Location
    Singapore
    Posts
    6,236
    Vote Rating
    5
    mystix will become famous soon enough

      0  

    Default


    Quote Originally Posted by MindPatterns View Post
    However, do you think it makes sense to add the "show" override for the colMenu? If it's a current bug with Ext JS, I might consider waiting for the official fix instead of adding it to the trunk.
    it'd probably be good to leave the override in there for now until there's some form of acknowledgement that it really is a bug, then remove it when it's no longer needed (your plugin is in SVN after all ). anyhow, the colMenu.override also addresses a strange 1 to 2 pixel offset issue (on FF / Safari) which i haven't had time to look at.

    [edit 1]
    bug report posted here: http://extjs.com/forum/showthread.php?t=52475
    in the event you choose to exclude the colMenu.override, here's an override which directly fixes Ext.menu.Menu:
    Code:
    Ext.override(Ext.menu.Menu, {
        // new custom config which fixes minor pixel offset issue when menus are displayed
        defaultOffsets: [Ext.isSafari? 2 : 1, 0],
    
        // bugfix for Ext.menu.Menu not constrained to viewport
        show: function(el, pos, parentMenu){
            this.parentMenu = parentMenu;
            if(!this.el){
                this.render();
            }
            this.fireEvent("beforeshow", this);
    
            // show menu and constrain to viewport if necessary
            // ( + minor offset adjustments for pixel perfection)
            this.showAt(
                this.el.getAlignToXY(el, pos || this.defaultAlign, this.defaultOffsets),
                parentMenu,
                true // true to constrain
            );
        }
    });
    [edit 2]
    updated the override in post #13 with a _beforeColMenuShow() tweak that adds a menu title. enjoy
    Last edited by mystix; 12 Nov 2008 at 5:05 AM. Reason: update

  5. #25
    Sencha User chalu's Avatar
    Join Date
    Feb 2008
    Location
    Benin City, Nigeria
    Posts
    480
    Vote Rating
    1
    chalu is on a distinguished road

      0  

    Default what about grouping

    what about grouping


    Has anyone used this with grouping I tried testing it with the example at examples/grid/grouping.html I edited grouping.js to use the plugin. We no longer have the usual grouping behaviour on grid columns.

  6. #26
    Sencha User ThorstenSuckow's Avatar
    Join Date
    Sep 2007
    Location
    Aachen, Germany
    Posts
    597
    Vote Rating
    2
    ThorstenSuckow is on a distinguished road

      0  

    Default


    Quote Originally Posted by chalu View Post
    Has anyone used this with grouping I tried testing it with the example at examples/grid/grouping.html I edited grouping.js to use the plugin. We no longer have the usual grouping behaviour on grid columns.
    Hi Chalu,

    the plugin is only for showing/hiding columns, as it utilizes existing functionality from Ext.grid.GridView, _not_ from Ext.grid.GroupingView.

    HTH

    Thorsten

  7. #27
    Sencha - Community Support Team mystix's Avatar
    Join Date
    Mar 2007
    Location
    Singapore
    Posts
    6,236
    Vote Rating
    5
    mystix will become famous soon enough

      0  

    Default


    noticed something new today: if the grid is initially rendered without any rows, then the gridviewmenuplugin fails to appear.

    the plugin is there, and it's rendered, but it doesn't appear until the first row is added to the grid / a column is sorted. to resolve this, the menu button should simply hook into the gridview's onLayout() method and resize itself accordingly.

    i've updated the above patch to handle this (updated patch also handles auto-configured grids correctly).

    [edit]
    one final thing i haven't managed to resolve -- if no vertical scrollbar is present when the plugin is initially rendered, and there are more columns than can fit into the grid, then the last column's header will be partially hidden behind the menu button. the appearance of a vertical scrollbar later on (i.e. when there are more rows than can fit) resolves this issue. i've temporarily worked around this by giving all grids using this plugin the following viewConfig
    Code:
    viewConfig: {
        forceFit: true
    }
    Last edited by mystix; 14 Nov 2008 at 1:51 AM. Reason: edit

  8. #28
    Sencha - Community Support Team Condor's Avatar
    Join Date
    Mar 2007
    Location
    The Netherlands
    Posts
    24,246
    Vote Rating
    86
    Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of Condor has much to be proud of

      0  

    Default


    Your code fails if the handleHdMenuClick or beforeColMenuShow handler needs the view in scope (example: see here).

    I suggest using this override:
    Code:
    Ext.override(Ext.ux.grid.GridViewMenuPlugin, {
    	_handleHdMenuClick : function() {
    		return this._view.handleHdMenuClick.apply(this._view, arguments);
    	},
    	_beforeColMenuShow : function() {
    		var _colMenu = this._view.colMenu;
    		this._view.colMenu = this.colMenu;
    		this._view.beforeColMenuShow.apply(this._view, arguments);
    		this._view.colMenu = _colMenu;
    	}
    });
    Secondly, why do you completely disallow enableHdMenu:true? I think you should only disallow enableColumnHide:true.

  9. #29
    Sencha User ThorstenSuckow's Avatar
    Join Date
    Sep 2007
    Location
    Aachen, Germany
    Posts
    597
    Vote Rating
    2
    ThorstenSuckow is on a distinguished road

      0  

    Default


    Quote Originally Posted by Condor View Post
    Your code fails if the handleHdMenuClick or beforeColMenuShow handler needs the view in scope .
    I know, it's by design: I wanted to write as less code ass possible to reuse existing code. That's why I bend the scope to the amount JS allows me to.


    Quote Originally Posted by Condor View Post
    Secondly, why do you completely disallow enableHdMenu:true? I think you should only disallow enableColumnHide:true.
    Again, it's by design. As stated above, there is only either/or: Use the default hdMenu, or use the plugin to use the original-hdmenu in the upper right of the grid.

  10. #30
    Sencha - Community Support Team mystix's Avatar
    Join Date
    Mar 2007
    Location
    Singapore
    Posts
    6,236
    Vote Rating
    5
    mystix will become famous soon enough

      0  

    Default


    Quote Originally Posted by MindPatterns View Post
    I know, it's by design: I wanted to write as less code ass possible to reuse existing code. That's why I bend the scope to the amount JS allows me to.
    might be a good idea to include an example of additional scope "bending" then?
    (as in condor's code override for the protected _beforeColMenuShow() method)


    on 2nd thought, @condors _beforeColMenuShow() override should be used as the default behaviour imho -- your code will then convey the correct message that some non-trivial scope manipulation is taking place.

Turkiyenin en sevilen filmlerinin yer aldigi xnxx internet sitemiz olan ve porn sex tarzi bir site olan mobil porno izle sitemiz gercekten dillere destan bir durumda herkesin sevdigi bir site olarak tarihe gececege benziyor. Sitenin en belirgin ozelliklerinden birisi de Turkiyede gercekten kaliteli ve muntazam, duzenli porno izle siteleri olmamasidir. Bu yuzden iste. Ayrica en net goruntu kalitesine sahip adresinde yayinlanmaktadir. Mesela diğer sitelerimizden bahsedecek olursak, en iyi hd porno video arşivine sahip bir siteyiz. "The Best anal porn videos and slut anus, big asses movies set..." hd porno faketaxi