[FIXED] [V0.7] Multiple Generic Plugins in PagingToolbar
*NEW - Coolite Toolkit Version 0.7 now available for DOWNLOAD. See also Examples Explorer.
 

Coolite Forums

Welcome Guest ( Login | Register )
 
[FIXED] [V0.7] Multiple Generic Plugins in...
Subscribe
Last Login: Today @ 8:04:11 AM
Posts: 33,
Posted 11/20/2008 2:56:38 PM

Group: Coolite Premium Member & Early Adopter
Hello,

I try to add multiple plugins to the Paging Toolbar, but I receive some JavaScript errors. The errors are gone when I include only one of the plugins (both of them work fine when used alone), so I wonder, if this is possible to have more than one plugin, e.g.:


<ext:GridPanel>

<!-- .... -->

<BottomBar>
       <ext:PagingToolBar ID="toolbar" runat="server" PageSize="100"
            StoreID="mystore">
            <Plugins>
                <ext:GenericPlugin ID="plugin1" InstanceOf="My.Plugin1" runat="server">
                </ext:GenericPlugin>
                <ext:GenericPlugin ID="plugin2" InstanceOf="My.Plugin2" runat="server">
                </ext:GenericPlugin>
            </Plugins>
        </ext:PagingToolBar>
    </BottomBar>
</ext:GridPanel>


The plugin class can be as simple as that:


My.Plugin= function(config)
{
    Ext.apply(this, config);
};

Ext.extend(My.Plugin, Ext.Component,
{

   
    init: function(pagingToolbar)
    {
    },

    onRender: function()
    {
    }
})




Tadeusz
Last Login: Today @ 3:28:10 PM
Posts: 1,652,
Posted 11/20/2008 3:14:31 PM

Group: Core Development Team
Hi Tadeusz,

hmmm. This shouldn't be a problem. The <Plugins> property is setup to render multiple plugins into an array. I'll dig into the source and get to the bottom of the problem. 

--
Geoffrey McGill
Coolite Inc.
Development Team
Coolite Examples | Coolite API Docs | ExtJS API Docs
twitter [coolite | personal]
Last Login: Today @ 8:04:11 AM
Posts: 33,
Posted 11/27/2008 6:17:09 AM

Group: Coolite Premium Member & Early Adopter
 Hello,

I finally got the time to replicate this within your example (GridPanel -> DataSource Controls -> Paging & Sorting).  When you replace the code of the Default.aspx with the code provided below, you will notice, that the plugins array is rendered like this: plugins:[,] and a JavaScript error occurs.


<%@ Page Language="C#" %>

<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Coolite Toolkit - GridPanel with ObjectDataSource</title>
    <link href="../../../../resources/css/examples.css" rel="stylesheet" type="text/css" />
    <ext:ScriptContainer runat="server" />

    <script runat="server">
        protected void Store1_RefreshData( object sender, StoreRefreshDataEventArgs e )
        {
            ObjectDataSource1.SelectParameters["start"].DefaultValue = e.Start.ToString();
            ObjectDataSource1.SelectParameters["limit"].DefaultValue = e.Limit.ToString();
            ObjectDataSource1.SelectParameters["sort"].DefaultValue = e.Sort;
            ObjectDataSource1.SelectParameters["dir"].DefaultValue = e.Dir.ToString();

            Store1.DataBind();
        }

        protected void ObjectDataSource1_Selected( object sender, ObjectDataSourceStatusEventArgs e )
        {
            ( this.Store1.Proxy[0] as DataSourceProxy ).TotalCount = (int) e.OutputParameters["count"];
        }
    </script>

    <style type="text/css">
        .x-grid3-td-fullName .x-grid3-cell-inner
        {
            font-family: tahoma, verdana;
            display: block;
            font-weight: normal;
            font-style: normal;
            color: #385F95;
            white-space: normal;
        }
        .x-grid3-row-body p
        {
            margin: 5px 5px 10px 5px !important;
            width: 99%;
            color: Gray;
        }
    </style>

    <script type="text/javascript">
        var fullName = function(value, metadata, record, rowIndex, colIndex, store)
        {
            return '<b>' + record.data.LastName + ' ' + record.data.FirstName + '</b>';
        };

        Ext.namespace('My');

        My.Plugin1 = function(config)
        {
            Ext.apply(this, config);
        };

        Ext.extend(My.Plugin1, Ext.Component,
        {
            init: function(pagingToolbar)
            {
                this.pagingToolbar = pagingToolbar;
                this.pagingToolbar.on('render', this.onRender, this);
            },

            onRender: function()
            {
                this.pagingToolbar.add('-', new Ext.Toolbar.Button({
                    text: 'plugin1'
                }));
            }
        });

        My.Plugin2 = function(config)
        {
            Ext.apply(this, config);
        };

        Ext.extend(My.Plugin2, Ext.Component,
        {
            init: function(pagingToolbar)
            {
                this.pagingToolbar = pagingToolbar;
                this.pagingToolbar.on('render', this.onRender, this);
            },

            onRender: function()
            {
                this.pagingToolbar.add('-', new Ext.Toolbar.Button({
                    text: 'plugin2'
                }));
            }
        });
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <ext:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OnSelected="ObjectDataSource1_Selected"
        SelectMethod="GetEmployeesFilter" TypeName="Coolite.Examples.Code.Northwind.Employee">
        <SelectParameters>
            <asp:Parameter Name="start" Type="Int32" />
            <asp:Parameter Name="limit" Type="Int32" />
            <asp:Parameter Name="sort" />
            <asp:Parameter Name="dir" />
            <asp:Parameter Name="count" Direction="Output" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
    <ext:Store ID="Store1" runat="server" AutoLoad="true" RemoteSort="true" DataSourceID="ObjectDataSource1"
        OnRefreshData="Store1_RefreshData">
        <AutoLoadParams>
            <ext:Parameter Name="start" Value="={0}" />
            <ext:Parameter Name="limit" Value="={3}" />
        </AutoLoadParams>
        <Proxy>
            <ext:DataSourceProxy />
        </Proxy>
        <Reader>
            <ext:JsonReader ReaderID="EmployeeID">
                <Fields>
                    <ext:RecordField Name="FirstName" />
                    <ext:RecordField Name="LastName" />
                    <ext:RecordField Name="Title" />
                    <ext:RecordField Name="TitleOfCourtesy" />
                    <ext:RecordField Name="BirthDate" Type="Date" />
                    <ext:RecordField Name="HireDate" Type="Date" />
                    <ext:RecordField Name="Address" />
                    <ext:RecordField Name="City" />
                    <ext:RecordField Name="Region" />
                    <ext:RecordField Name="PostalCode" />
                    <ext:RecordField Name="Country" />
                    <ext:RecordField Name="HomePhone" />
                    <ext:RecordField Name="Extension" />
                    <ext:RecordField Name="Notes" />
                </Fields>
            </ext:JsonReader>
        </Reader>
    </ext:Store>
    <ext:GridPanel runat="server" ID="GridPanel1" Title="Employees" Frame="true" StoreID="Store1"
        Height="300">
        <ColumnModel runat="server">
            <Columns>
                <ext:Column ColumnID="fullName" Header="Full Name" Width="150" DataIndex="LastName">
                    <Renderer Fn="fullName" />
                </ext:Column>
                <ext:Column DataIndex="Title" Header="Title" Width="150" />
                <ext:Column DataIndex="TitleOfCourtesy" Header="Title Of Courtesy" Width="150" />
                <ext:Column DataIndex="BirthDate" Header="BirthDate" Width="110">
                    <Renderer Fn="Ext.util.Format.dateRenderer('Y-m-d')" />
                </ext:Column>
                <ext:Column DataIndex="HireDate" Header="HireDate" Width="110">
                    <Renderer Fn="Ext.util.Format.dateRenderer('Y-m-d')" />
                </ext:Column>
                <ext:Column DataIndex="Address" Header="Address" Width="150" />
                <ext:Column DataIndex="City" Header="City" Width="100" />
                <ext:Column DataIndex="Region" Header="Region" Width="100" />
                <ext:Column DataIndex="PostalCode" Header="PostalCode" Width="100" />
                <ext:Column DataIndex="Country" Header="Country" Width="100" />
                <ext:Column DataIndex="HomePhone" Header="HomePhone" Width="150" />
                <ext:Column DataIndex="Extension" Header="Extension" Width="100" />
            </Columns>
        </ColumnModel>
        <View>
            <ext:GridView runat="server" EnableRowBody="true">
                <GetRowClass Handler="rowParams.body = '<p>'+record.data.Notes+'</p>'; return 'x-grid3-row-expanded';" />
            </ext:GridView>
        </View>
        <SelectionModel>
            <ext:RowSelectionModel runat="server" />
        </SelectionModel>
        <BottomBar>
            <ext:PagingToolBar ID="PagingToolBar1" runat="server" PageSize="3" StoreID="Store1"
                DisplayInfo="true" DisplayMsg="Displaying employees {0} - {1} of {2}" EmptyMsg="No employees to display">
                <Plugins>
                    <ext:GenericPlugin ID="plugin1" InstanceOf="My.Plugin1" runat="server">
                    </ext:GenericPlugin>
                    <ext:GenericPlugin ID="plugin2" InstanceOf="My.Plugin2" runat="server">
                    </ext:GenericPlugin>
                </Plugins>
            </ext:PagingToolBar>
        </BottomBar>
        <LoadMask ShowMask="true" />
    </ext:GridPanel>
    </form>
</body>
</html>



Each of the plugins is rendered correctly when used alone.

Regards,
Tadeusz

Last Login: Today @ 3:28:10 PM
Posts: 1,652,
Posted 11/27/2008 6:41:52 AM

Group: Core Development Team
Hi tdracz,

Thanks! for the code sample demonstrating the problem.

I tracked down the issue and have fixed.

The new code has been committed to SVN. When you get a chace, please svn update and re-test.

--
Geoffrey McGill
Coolite Inc.
Development Team
Coolite Examples | Coolite API Docs | ExtJS API Docs
twitter [coolite | personal]
Last Login: Today @ 8:04:11 AM
Posts: 33,
Posted 11/27/2008 7:17:51 AM

Group: Coolite Premium Member & Early Adopter
Hi,

It is working fine now, thanks!

Tadeusz
« Prev Topic | Next Topic »
Reading This Topic
Active Users: 0 ( 0 guests, 0 members, 0 anonymous members )
No members currently viewing this topic.
All times are GMT -8:00, Time now is 6:32pm