[Catalyst] Jason Kohles' tutorial on ExtJs editable data gridsand Catalyst

jagdish eashwar jagdish.eashwar at gmail.com
Sat Apr 18 17:15:05 GMT 2009


Hi Craig,

Thanks a lot for taking the trouble to work through the tutorial. Since you
have been able to get it to save changes to the database, I think we will be
able to isolate where I'm going wrong.

Regarding whether to use  'Catalyst'  or  'c' as the context, when I created
the TT view with the Catalyst helper command
'script/adventajaxgrid_create.pl view TT TTSite', it automatically set the
CATALYST_VAR =3D> 'Catalyst'. I changed this to 'c', and the
'Catalyst.uri_for' to 'c.uri_for'. The Ext Grid behaves just like before. It
does everything except the Save.

Can you paste your root/static/advent.js and your View/JSON.pm ? I would
like to compare it with what I have done.

Jagdish

On Sat, Apr 18, 2009 at 1:46 AM, Craig McLaughlin <cpm at bitbucket.com> wrote:

>
>
> Howdy,
>
> So for grins and giggles I ran through the demo and brute forced it until
> it worked (this doesn't imply anything other than I'm not a rocket
> scientist with this stuff and that I'm really good at making dumb
> mistakes).
>
> I am running the following: ubuntu 8.04, Catalyst 5.71001, ExtJS 2.2.1.
>
> I had to change Catalyst.uri_for to c.uri_for in index.tt2 (I believe you
> can also get around this by setting
> CATALYST_VAR =3D 'Catalyst' in your config somewhere.  I chose to use 'c'=
 as
> that's my default these days.
>
> Other than that, I had a few issues making sure my js functions were in t=
he
> right place, but that was it (I am not a .js guy by nature).
>
> I was able to successfully add and edit people, and changes were reflected
> in the database [tested by command line:
>  'sqlite3 advent.db "select * from people"' ]
>
> If I were in your shoes, I'd probably take another look at getting your
> Catalyst / c situation figured out.
>
> Sorry this isn't a direct answer... here's hoping at least a 'here's what=
 I
> did and it worked' helps a bit.
>
> Cheers,
> --Craig
>
> On Fri, 17 Apr 2009 14:38:43 +0530, jagdish eashwar
> <jagdish.eashwar at gmail.com> wrote:
> > Hi Ian,
> >
> > I am using ubuntu 8.04 and firefox 2 and no firebug because on my ubuntu
> > installation firefox 3 hangs and I am unable to install a version of
> > firebug
> > that is compatible with firefox 2. In the absence of firebug, I looked
> for
> > the javascript errors in the firefox error log and there were none.
> > I am hoping that when ubuntu 9.04 is released a little later this month,
> I
> > will be able to start using firefox 3 and firebug.
> > I am working through Jason Kohle's tutorial on a single computer. It's a
> > good tutorial and all of it 'just worked' except for saving changes back
> > to
> > the database.
> > On Fri, Apr 17, 2009 at 12:27 PM, Ian Docherty
> > <catalyst at iandocherty.com>wrote:
> >
> >>
> >> jagdish eashwar wrote:
> >>
> >>> Hi,
> >>> No I don't get any javascript error in the error log when I hit
> > 'save',
> >>> and it doesn't save the changes in the database either. Just nothing
> >>> happens.
> >>>
> >> This might be obvious to you in which case I apologise, javascript
> > errors
> >> do not appear in the (server) error log file. You need to check for
> > errors
> >> client side.
> >>
> >> Are you using something like Firefox and FireBug to test your javascri=
pt
> > on
> >> your browser?
> >>
> >> Regards
> >> Ian
> >>
> >>>
> >>> On Thu, Apr 16, 2009 at 9:34 PM, W. Tyler Gee <geekout at gmail.com
> > <mailto:
> >>> geekout at gmail.com>> wrote:
> >>>
> >>>    Is there a javascript error when you hit save or is it getting to
> >>>    the server? Where is your actual problem?
> >>>
> >>>
> >>>    On Thu, Apr 16, 2009 at 5:30 AM, jagdish eashwar
> >>>     <jagdish.eashwar at gmail.com <mailto:jagdish.eashwar at gmail.com>>
> > wrote:
> >>>
> >>>        Hi Peter,
> >>>        Thanks for writing in. It is really not my code at all. I have
> >>>        taken it all from the tutorial. I thought that people will get
> >>>        a better perspective if I referred them to the tutorial.
> >>>        Nevertheless, I am pasting code from the advent.js file below.
> >>>        ( I have made a few inconsequential changes though, like the
> >>>        values in the drop down etc.)
> >>>
> >>>        /*
> >>>         * advent.js
> >>>         */
> >>>
> >>>        Ext.onReady(function() {
> >>>
> >>>         var col_model =3D new Ext.grid.ColumnModel([
> >>>                {
> >>>                    id:         'id',
> >>>                    header:     'ID',
> >>>                    dataIndex:  'id',
> >>>                    width:      40
> >>>                },
> >>>                {
> >>>                    id:         'name',
> >>>                    header:     'Name',
> >>>                    dataIndex:  'name',
> >>>                editor:     new Ext.form.TextField({
> >>>                        allowBlank:     false,
> >>>            })
> >>>                },
> >>>                {
> >>>                    id:         'occupation',
> >>>                    header:     'Occupation',
> >>>                    dataIndex:  'occupation',
> >>>                    width:      70,
> >>>                    editor:     new Ext.form.ComboBox({
> >>>                        typeAhead:      true,
> >>>                        triggerAction:  'all',
> >>>                        transform:      'occpopup',
> >>>                        lazyRender:     true,
> >>>                        listClass:      'x-combo-list-small'
> >>>                    })
> >>>                }
> >>>            ]);
> >>>
> >>>            col_model.defaultSortable =3D true;
> >>>
> >>>
> >>>            var People =3D Ext.data.Record.create([
> >>>                { name:    'id',        type: 'int'},
> >>>                { name: 'name',        type: 'string'},
> >>>                { name: 'occupation',    type: 'string'}
> >>>            ]);
> >>>
> >>>
> >>>            var store =3D new Ext.data.JsonStore({
> >>>                url: gridurl,
> >>>                root: 'people',
> >>>                fields: People
> >>>            });
> >>>
> >>>        var grid =3D new Ext.grid.EditorGridPanel({
> >>>                store:              store,
> >>>                cm:                 col_model,
> >>>                title:              'Edit Persons',
> >>>                width:              600,
> >>>                height:             300,
> >>>                frame:              true,
> >>>                autoExpandColumn:   'name',
> >>>                renderTo:           'datagrid',
> >>>                tbar:               [
> >>>                    {                                      text:
> >>> 'New Person',
> >>>                        handler:        function() {
> >>>                            var p =3D new People({
> >>>                                name:           'Unnamed New Person',
> >>>                                occupation:    'Unknown',
> >>>                            });
> >>>                            grid.stopEditing();
> >>>                            store.insert( 0, p );
> >>>                            grid.startEditing( 0, 1 );
> >>>                        },
> >>>                    },
> >>>                    {
> >>>                        text:           'Save Changes',
> >>>                        handler:        function() {
> >>>                            grid.stopEditing();
> >>>                            var changes =3D new Array();
> >>>                            var dirty =3D store.getModifiedRecords();
> >>>                            for ( var i =3D 0 ; i < dirty.length ; i++=
 ) {
> >>>                                var id =3D dirty[i].get( 'id' );
> >>>                                var fields =3D dirty[i].getChanges();
> >>>                                fields.id <http://fields.id> =3D
> >>>
> >>>        dirty[i].get( 'id' );
> >>>                                changes.push( fields );
> >>>                            }
> >>>                            console.log( changes );
> >>>                            submitChanges( changes );
> >>>                            store.commitChanges();
> >>>                        },
> >>>                    },
> >>>                    {
> >>>                        text:           'Discard Changes',
> >>>                        handler:        function() {
> >>>                            grid.stopEditing();
> >>>                            store.rejectChanges();
> >>>                        },
> >>>                    }
> >>>                ]
> >>>            });
> >>>
> >>>
> >>>            store.load();
> >>>
> >>>        function submitChanges( data ) {
> >>>                Ext.Ajax.request({
> >>>                    url:        posturl,
> >>>                    success:    function() { store.reload() },
> >>>                    params:     { changes: Ext.util.JSON.encode( data )
> > }
> >>>                });
> >>>            }
> >>>        });
> >>>
> >>>        gridurl and posturl are defined in index.tt2 pasted below. It
> >>>        also contains a link to advent.js.
> >>>
> >>>        [% META title =3D 'Advent AJAX Grid' %]
> >>>        <script type =3D "text/javascript">
> >>>            var posturl =3D '[% Catalyst.uri_for("/people_data_submit")
> > %]';
> >>>            var gridurl =3D '[% Catalyst.uri_for("/people_data") %]';
> >>>        </script>
> >>>        [% js_link (src =3D '/static/advent.js') %]
> >>>        <div id =3D "datagrid"></div>
> >>>        <select id=3D"occpopup" style=3D"display: none">
> >>>        <option value=3D"SBI">SBI</option>
> >>>        <option value=3D"IBS">IBS</option>
> >>>        <option value=3D"ICICI">ICICI</option>
> >>>        <option value=3D"SELF">SELF</option>
> >>>        </select>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>        On Thu, Apr 16, 2009 at 7:41 PM, Peter Karman
> >>>        <peter at peknet.com <mailto:peter at peknet.com>> wrote:
> >>>
> >>>            jagdish eashwar wrote on 04/16/2009 05:55 AM:
> >>>            > Hi,
> >>>            >
> >>>            > I have been able to work through all of Jason Kohles'
> >>>            tutorial except the
> >>>            > part about saving changes back in the database.  The
> >>>            'New Person' and
> >>>            > 'Discard Changes' in the tool bar are working, but the
> >>>            'Save Changes' is
> >>>            > not. I have checked several times for any typing
> >>>            mistakes that I might have
> >>>            > committed, but that part of the code is not working for
> >>>            me.  I wonder if the
> >>>            > argument ('data') in the submitChanges function is to be
> >>>            substituted with
> >>>            > something more explicit by the reader. I will be glad to
> >>>            receive some help
> >>>            > and guidance.
> >>>            >
> >>>            > I forgot to mention in my earlier post that the tutorial
> >>>            is available at
> >>>            > http://www.catalystframework.org/calendar/2007/9.
> >>>
> >>>            Tip: you won't get any useful help until you show us your
> >>>            code.
> >>>
> >>>
> >>>            --
> >>>            Peter Karman  .  peter at peknet.com
> >>>            <mailto:peter at peknet.com>  .  http://peknet.com/
> >>>
> >>>
> >>>            _______________________________________________
> >>>            List: Catalyst at lists.scsys.co.uk
> >>>            <mailto:Catalyst at lists.scsys.co.uk>
> >>>            Listinfo:
> >>>            http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> >>>            Searchable archive:
> >>>            http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> >>>            Dev site: http://dev.catalyst.perl.org/
> >>>
> >>>
> >>>
> >>>        _______________________________________________
> >>>        List: Catalyst at lists.scsys.co.uk
> >>>        <mailto:Catalyst at lists.scsys.co.uk>
> >>>        Listinfo:
> >>>        http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> >>>        Searchable archive:
> >>>        http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> >>>        Dev site: http://dev.catalyst.perl.org/
> >>>
> >>>
> >>>
> >>>        ~Tyler
> >>>
> >>>
> >>>    _______________________________________________
> >>>    List: Catalyst at lists.scsys.co.uk <mailto:Catalyst at lists.scsys.co.uk
> >
> >>>    Listinfo:
> http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> >>>    Searchable archive:
> >>>    http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> >>>    Dev site: http://dev.catalyst.perl.org/
> >>>
> >>>
> >>>
> > ------------------------------------------------------------------------
> >>>
> >>> _______________________________________________
> >>> List: Catalyst at lists.scsys.co.uk
> >>> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> >>> Searchable archive:
> >>> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> >>> Dev site: http://dev.catalyst.perl.org/
> >>>
> >>>
> >>
> >>
> >> _______________________________________________
> >> List: Catalyst at lists.scsys.co.uk
> >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> >> Searchable archive:
> >> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> >> Dev site: http://dev.catalyst.perl.org/
> >>
>
>
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090418/17e41=
563/attachment.htm


More information about the Catalyst mailing list