Steve, Without testing it, looks like you gave me what I was looking for!
I may come back to this depending on how DHTMLX handles larger selections. Thanks! David -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Steve Alex Sent: Tuesday, December 28, 2010 4:24 PM To: [email protected] Subject: Re: [Active4d-dev] map suggestions for DHTMLX json? On Dec 28, 2010, at 9:52 AM, David Ringsmuth wrote: > I'd prefer to create a map and use Active4D's addRowSet or addSelection > macros. But these don't seem offer the required way to format the json. Part > of my requirement includes a call-back option and a relate-one feature. > > It would be perfect (Aparajita) if I could map into an array: > $map{"id"} := ->[employee]id > $map{"data"} := ->[employee]dob + >[employee]firstname + > ->[employee]lastname Seem that the below (which is just some test code pulled from a qry_select_many and index script), is a way of doing it with rowsets. Although rolling your own may be easier. <% all records([instructor]) reduce selection([instructor]; 30) $map := """ id: [instructor]id; data: `$data_array` """ $callback := """ array text($data_array;0) $data_array{} := [instructor]fullname $data_array{} := [instructor]employer $data_array{} := [instructor]status $data_array{} := [instructor]city """ $qryinstructors := RowSet.newFromSelection(->[instructor]; $map;0; $callback) $json := a4d.json.new array longint($rows;0) $row := $qryinstructors->getRow while ($qryinstructors->next) $rows{} := new collection("id";$row{"id"};"data";$row{"data"}) end while $json->addArray("rows";$rows) $json->write %> You might have to modify a4d.json addArray method case statement for numerics to: (I submitted a feature request to allow arrays of objects/collections) :($type >= 14) & ($type <= 16) // numeric for each ($inArray; $val) if ($type = 16) & is a collection($val) text to blob(encodeCollection($val) + ","; $self{"_rep"}; text without length; *) else text to blob(string($val) + ","; $self{"_rep"}; text without length; *) end if end for each Steve Alex "rows": [ { "data": [ "Jones, Vickie", "", "Active", "" ], "id":819 }, { "data": [ "Glover, Alicia", "", "Active", "" ], "id":820 }, { "data": [ "Peters, James \"Chief\"", "", "Active", "Montgomery" ], "id":36 } ] _______________________________________________ Active4D-dev mailing list [email protected] http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/
