I figured it out. I simply had to include grid.locale-en.js *before* jquery.jqGrid.min.js. Again, thanks for the help.<br><br>Kyle<br><br clear="all"><a href="http://www.kylehall.info">http://www.kylehall.info</a><br>Mill Run Technology Solutions ( <a href="http://millruntech.com">http://millruntech.com</a> )<br>
Crawford County Federated Library System ( <a href="http://www.ccfls.org">http://www.ccfls.org</a> )<br>Meadville Public Library ( <a href="http://www.meadvillelibrary.org">http://www.meadvillelibrary.org</a> )<br><br>
<br><br><div class="gmail_quote">On Thu, Jul 8, 2010 at 1:08 PM, Kyle Hall <span dir="ltr"><<a href="mailto:kyle.m.hall@gmail.com">kyle.m.hall@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Thanks for the help! It seems very obvious in retrospect. I guess I was just expecting a to get warns instead of errors. It's working well now. Thanks again.<br><br>Now on to the next problem:<br><br>I'm trying to load a jqGrid from json data made via a REST call. But my
grid is just a blank rectangle on the page. Here is my code:<br><br><pre><code><span><body></span><span><br><br></span><span><div</span><span> </span><span>id</span><span>=</span><span>"tabs"</span><span>></span><span><br>
</span><span><ul></span><span><br> </span><span><li><a</span><span> </span><span>href</span><span>=</span><span>"#panel-users"</span><span>></span><span>Users</span><span></a></li></span><span><br>
</span><span><li><a</span><span> </span><span>href</span><span>=</span><span>"#panel-clients"</span><span>></span><span>Clients</span><span></a></li></span><span><br>
<br> </span><span></ul></span><span><br> </span><span><div</span><span> </span><span>id</span><span>=</span><span>"panel-users"</span><span>></span><span><br>
</span><span><table</span><span> </span><span>id</span><span>=</span><span>"list"</span><span>></table></span><span> <br>
</span><span><div</span><span> </span><span>id</span><span>=</span><span>"pager"</span><span>></div></span><span> <br>
</span><span></div></span><span><br> </span><span><div</span><span> </span><span>id</span><span>=</span><span>"panel-clients"</span><span>></span><span><br>
<br> </span><span></div></span><span><br></span><span></div></span><span><br><br></span><span><script</span><span> </span><span>type</span><span>=</span><span>"text/javascript"</span><span>></span><span><br>
$</span><span>(</span><span>function</span><span>()</span><span> </span><span>{</span><span><br> $</span><span>(</span><span>"#tabs"</span><span>).</span><span>tabs</span><span>();</span><span><br>
</span><span>});</span><span><br></span><span></script></span><span><br><br></span><span><script</span><span> </span><span>type</span><span>=</span><span>"text/javascript"</span><span>></span><span><br>
jQuery</span><span>(</span><span>document</span><span>).</span><span>ready</span><span>(</span><span>function</span><span>(){</span><span> <br>
jQuery</span><span>(</span><span>"#list"</span><span>).</span><span>jqGrid</span><span>({</span><span><br> url</span><span>:</span><span>'<a href="http://192.168.20.155:3000/admin/rest/users" target="_blank">http://192.168.20.155:3000/admin/rest/users</a>'</span><span>,</span><span><br>
dataType</span><span>:</span><span> </span><span>'json'</span><span>,</span><span><br> mtype</span><span>:</span><span> </span><span>'GET'</span><span>,</span><span><br>
colNames</span><span>:[</span><span>'Id'</span><span>,</span><span>'Username'</span><span>,</span><span> </span><span>'Minutes'</span><span>,</span><span>'Status'</span><span>,</span><span>'Message'</span><span>,</span><span>'Notes'</span><span>,</span><span>'Troublemaker'</span><span>],</span><span><br>
colModel </span><span>:[</span><span> <br> </span><span>{</span><span>name</span><span>:</span><span>'id'</span><span>,</span><span> index</span><span>:</span><span>'id'</span><span>,</span><span> width</span><span>:</span><span>11</span><span>},</span><span> <br>
</span><span>{</span><span>name</span><span>:</span><span>'username'</span><span>,</span><span> index</span><span>:</span><span>'username'</span><span>,</span><span> width</span><span>:</span><span>90</span><span>},</span><span> <br>
</span><span>{</span><span>name</span><span>:</span><span>'minutes'</span><span>,</span><span> index</span><span>:</span><span>'minutes'</span><span>,</span><span> width</span><span>:</span><span>3</span><span>,</span><span> align</span><span>:</span><span>'right'</span><span>},</span><span> <br>
</span><span>{</span><span>name</span><span>:</span><span>'status'</span><span>,</span><span> index</span><span>:</span><span>'status'</span><span>,</span><span> width</span><span>:</span><span>80</span><span>,</span><span> align</span><span>:</span><span>'right'</span><span>},</span><span> <br>
</span><span>{</span><span>name</span><span>:</span><span>'message'</span><span>,</span><span> index</span><span>:</span><span>'message'</span><span>,</span><span> width</span><span>:</span><span>80</span><span>,</span><span> align</span><span>:</span><span>'right'</span><span>,</span><span> sortable</span><span>:</span><span>false</span><span>},</span><span> <br>
</span><span>{</span><span>name</span><span>:</span><span>'note'</span><span>,</span><span> index</span><span>:</span><span>'note'</span><span>,</span><span> width</span><span>:</span><span>150</span><span>,</span><span> sortable</span><span>:</span><span>false</span><span>},</span><span><br>
</span><span>{</span><span>name</span><span>:</span><span>"troublemaker"</span><span>,</span><span> index</span><span>:</span><span>'troublemaker'</span><span>,</span><span> width</span><span>:</span><span>1</span><span>}</span><span><br>
</span><span>],</span><span><br> pager</span><span>:</span><span> </span><span>'#pager'</span><span>,</span><span><br> rowNum</span><span>:</span><span>10</span><span>,</span><span><br>
rowList</span><span>:[</span><span>10</span><span>,</span><span>20</span><span>,</span><span>30</span><span>],</span><span><br>
sortname</span><span>:</span><span> </span><span>'username'</span><span>,</span><span><br> sortorder</span><span>:</span><span> </span><span>'desc'</span><span>,</span><span><br>
viewrecords</span><span>:</span><span> </span><span>true</span><span>,</span><span><br> caption</span><span>:</span><span> </span><span>'My test grid'</span><span>,</span><span><br>
jsonReader </span><span>:</span><span> </span><span>{</span><span><br> root</span><span>:</span><span> </span><span>"rows"</span><span>,</span><span><br>
page</span><span>:</span><span> </span><span>"page"</span><span>,</span><span><br> total</span><span>:</span><span> </span><span>"total"</span><span>,</span><span><br>
records</span><span>:</span><span> </span><span>"records"</span><span>,</span><span><br> repeatitems</span><span>:</span><span> </span><span>true</span><span>,</span><span><br>
cell</span><span>:</span><span> </span><span>"cell"</span><span>,</span><span><br> id</span><span>:</span><span> </span><span>"id"</span><span>,</span><span><br>
userdata</span><span>:</span><span> </span><span>"userdata"</span><span><br> </span><span>}</span><span><br> </span><span>});</span><span> <br>
</span><span>});</span><span> <br></span><span></script></span><span><br></span></code></pre><br><p>And here is the JSON data that the url returns:</p><p>{"page":0,"records":"3","total":1,"rows":[{"cell":["1","admin","30","enabled",null,null,"0"]},{"cell":["2","test1","30","enabled",null,null,"0"]},{"cell":["3","test2","30","enabled",null,null,"0"]}]}</p>
<blockquote>
</blockquote>
<p>I know this isn't specifically a Catalyst question, but I thought someone here may have experienced this before. I'm using Controller::REST and Catalyst::TraitFor::Controller::jQuery::jqGrid. Any help would be greatly appreciated.</p>
Here is the REST controller for posterity:<br>package LibkiServer::Controller::Admin::REST;<br>use Moose;<br>use namespace::autoclean;<br><br>with 'Catalyst::TraitFor::Controller::jQuery::jqGrid';<br><br>BEGIN {extends 'Catalyst::Controller::REST'; }<br>
<br>=head1 NAME<br><br>LibkiServer::Controller::Admin::REST - Catalyst REST Controller<br><br>=head1 DESCRIPTION<br><br>Catalyst REST Controller for Administration.<br><br>=head1 METHODS<br><br>=cut<br><br><br>=head2 index<br>
<br>=cut<br><br>sub users : Local : ActionClass('REST') { }<br><br>sub users_GET {<br> my ( $self, $c ) = @_;<br><br> my $user_rs = $c->model('DB::User')->search( {}, { prefetch => { session => 'client' } } );<br>
$user_rs = $self->jqgrid_page( $c, $user_rs );<br><br> my $row = 0; <br> my @row_data;<br> <br> while ( my $user = $user_rs->next() ) {<br> my $user_id = $user->id;<br> <br> my @cell;<br>
push( @cell, $user->id );<br> push( @cell, $user->username );<br> push( @cell, $user->minutes );<br> push( @cell, $user->status ); <br> push( @cell, $user->message );<br>
push( @cell, $user->notes );<br> push( @cell, $user->is_troublemaker );<br> push( @cell, defined( $user->session ) ? $user->session->status : undef );<br> push( @cell, defined( $user->session ) ? $user->session->client->id : undef );<br>
push( @cell, defined( $user->session ) ? $user->session->client->clientname : undef );<br> my $single_row = {<br> cell => \@cell<br> };<br> push( @row_data, $single_row );<br>
<br> }<br><br> $self->status_ok(<br> $c,<br> entity => { <br> page => $c->stash->{json_data}->{page},<br> total => $c->stash->{json_data}->{total},<br>
records => $c->stash->{json_data}->{records},<br> rows => \@row_data<br> }<br> );<br>}<br><br><br clear="all"><a href="http://www.kylehall.info" target="_blank">http://www.kylehall.info</a><br>
Mill Run Technology Solutions ( <a href="http://millruntech.com" target="_blank">http://millruntech.com</a> )<br>Crawford County Federated Library System ( <a href="http://www.ccfls.org" target="_blank">http://www.ccfls.org</a> )<br>
Meadville Public Library ( <a href="http://www.meadvillelibrary.org" target="_blank">http://www.meadvillelibrary.org</a> )<br>
<br>
<br><br><div class="gmail_quote">On Thu, Jul 8, 2010 at 12:02 PM, Jeff Albert <span dir="ltr"><<a href="mailto:jralbert@uvic.ca" target="_blank">jralbert@uvic.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri","serif"; color: rgb(31, 73, 125);">Some of your users have sessions, and thus will have a row or
rows in the related ‘session’ resultset – but some don’t. When you attempt to
access $user->session->client->clientname, you’re assuming that $user->session
is defined – but in the case of a user row with no related session row,
$user->session won’t be defined, and you’ll raise the error you described
when you attempt to access the methods of that resultset. Do a quick defined()
test on $user->session before you try to use its methods, and you’ll be good
to go. Hope that helps!</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri","serif"; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri","serif"; color: rgb(31, 73, 125);">Cheers,</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri","serif"; color: rgb(31, 73, 125);">Jeff Albert</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "Calibri","serif"; color: rgb(31, 73, 125);"> </span></p>
<div style="border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0in 0in;">
<p class="MsoNormal" style="margin-left: 0.5in;"><b><span style="font-size: 10pt;">From:</span></b><span style="font-size: 10pt;"> Kyle Hall [mailto:<a href="mailto:kyle.m.hall@gmail.com" target="_blank">kyle.m.hall@gmail.com</a>] <br>
<b>Sent:</b> Thursday, July 08, 2010 7:57 AM<br>
<b>To:</b> <a href="mailto:catalyst@lists.scsys.co.uk" target="_blank">catalyst@lists.scsys.co.uk</a><br>
<b>Subject:</b> [Catalyst] Nonsensical Problem with DBIx ResultSet</span></p>
</div><div><div></div><div>
<p class="MsoNormal" style="margin-left: 0.5in;"> </p>
<p class="MsoNormal" style="margin-right: 0in; margin-bottom: 12pt; margin-left: 0.5in;">Hello all,<br>
I'm the developer of a FOSS kiosk management system, Libki. I'm in the
early stages of a complete rewrite using Catalyst for the web-based
administration interface. This is my first time using Catalyst, but I'm very
excited by the possibilities! I'm having a very strange issue with my
resultsets. For example, I have three tables, a users table, a clients table,
and a sessions table that connects the user to a client.<br>
<br>
I grab my users from the database, with any session/client data if the user is
currently logged in to a client kiosk. I am prefetching the session and client
table data.<br>
<br>
my $user_rs = $c->model('DB::User')->search( {}, { prefetch => {
session => 'client' } } );<br>
<br>
Now I want to loop through it.<br>
<br>
my $row = 0;<br>
my @row_data;<br>
<br>
while ( my $user = $user_rs->next() ) {<br>
my $user_id = $user->id;<br>
<br>
warn
$user->session->client->clientname;<br>
<br>
my $single_row = {<br>
cell => [<br>
$user->id,<br>
$user->username,<br>
$user->minutes, <br>
$user->status, <br>
$user->is_troublemaker,<br>
$user->session->client->clientname;<br>
]<br>
}; <br>
push( @row_data, $single_row );<br>
}<br>
<br>
<br>
Now, if I try to access any of the other tables, I get an error:<br>
[error] Caught exception in LibkiServer::Controller::Admin::REST->users
"Can't call method "client" on an undefined value at
/home/libki/LibkiServer/script/../lib/LibkiServer/Controller/Admin/REST.pm line
40."<br>
<br>
I don't know why I get this error, but the really crazy part is *the warn still
works*:<br>
Client Name: testclient1 at
/home/libki/LibkiServer/script/../lib/LibkiServer/Controller/Admin/REST.pm line
40.<br>
<br>
If anyone can help me out, I'd be eternally grateful.<br>
<br>
Thanks,<br>
Kyle<br>
<br clear="all">
<a href="http://www.kylehall.info" target="_blank">http://www.kylehall.info</a><br>
Mill Run Technology Solutions ( <a href="http://millruntech.com" target="_blank">http://millruntech.com</a>
)<br>
Crawford County Federated Library System ( <a href="http://www.ccfls.org" target="_blank">http://www.ccfls.org</a>
)<br>
Meadville Public Library ( <a href="http://www.meadvillelibrary.org" target="_blank">http://www.meadvillelibrary.org</a>
)</p>
</div></div></div>
</div>
<br>_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk" target="_blank">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
<br></blockquote></div><br>
</blockquote></div><br>