Quantcast

Sort on two sortTypes

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Sort on two sortTypes

prothero--- via use-livecode
Hi All,

I’m working an app to facilitate the development of student class schedules.

Right now there are three items for each course that I’d like to sort in various ways: CourseName, Time, Days. The information is placed in that order in a field for display.

It’s easy to sort on any one of the items. For example….
sort lines of field "FIRSTyear_FALL" by item 1 of each

sort lines of field "FIRSTyear_FALL" dateTime by item 2 of each

sort lines of field "FIRSTyear_FALL" by item 3 of each


But I can’t figure out how to sort first on item 3, Days and then by item 2, Time. My goal is sort by matching Days and then by time in ascending order. The courses meeting on the same day would be grouped together by time earliest to latest. A sort does take place, but it’s text. I’ve not figured out how/where to place the dateTime sortType when combining a sort on item 3 and item 2.

Here’s the basic line of script… where does “dateTime” go? I’ve tried placing it in all the points of the line that I can think of….
sort lines of field "FIRSTyear_FALL" by item 3 of each & item 2 of each

The dictionary under “Sort Container” suggests what I want to do is possible:
The sort container command is a stable sort. This means that if the sortKey for two items or lines is the same, sorting does not change their order, so you can do two successive sorts to create subcategories within the major sort categories.
Tip: To create a custom sort order, use the each keyword to pass each line or item to a custom function. The value returned by the function is used as the sort key for that line or item. It is not currently possible to debug custom sort functions, and doing so could make the IDE unstable. It is recommended to use logging messages instead.
The information in the “LiveCode Resource Center” doesn’t include an example of sorting on two criteria.

Thanks in advance for any thoughts you can share.

be well,
randy

Randy Hengst
www.classroomFocusedSoftware.com



_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Sort on two sortTypes

prothero--- via use-livecode
do 2 consecutive sorts..
First by item 3
then by item 2 datetime

Alternatively, you might be able to use a function sort to do it, but I'd
have to really think about how to accomplish it that way, and its too early.

Basically though, a sort using a function looks like the following example..
(if the lines contain an item like a hex code for example, 00 to ff, one
could use a function to convert the value to a decimal and then return the
decimal value as the numeric sort key)

sort lines of <container> ascending numeric by myFunction(each)

function myFunction pVar
   return baseconvert(item 3 of pvar,16,10)
end myFunction

This would return the decimal value of the hex and use the value as the
sort key.  Like I say, since you're using two data types for your sort, it
would require some pondering to figure out the best way to normalize the
data and generate the proper sort key, but it should be possible.  Still,
much easier to just do two consecutive sorts.


On Sat, Apr 8, 2017 at 11:45 AM, Randy Hengst via use-livecode <
[hidden email]> wrote:

> Hi All,
>
> I’m working an app to facilitate the development of student class
> schedules.
>
> Right now there are three items for each course that I’d like to sort in
> various ways: CourseName, Time, Days. The information is placed in that
> order in a field for display.
>
> It’s easy to sort on any one of the items. For example….
> sort lines of field "FIRSTyear_FALL" by item 1 of each
>
> sort lines of field "FIRSTyear_FALL" dateTime by item 2 of each
>
> sort lines of field "FIRSTyear_FALL" by item 3 of each
>
>
> But I can’t figure out how to sort first on item 3, Days and then by item
> 2, Time. My goal is sort by matching Days and then by time in ascending
> order. The courses meeting on the same day would be grouped together by
> time earliest to latest. A sort does take place, but it’s text. I’ve not
> figured out how/where to place the dateTime sortType when combining a sort
> on item 3 and item 2.
>
> Here’s the basic line of script… where does “dateTime” go? I’ve tried
> placing it in all the points of the line that I can think of….
> sort lines of field "FIRSTyear_FALL" by item 3 of each & item 2 of each
>
> The dictionary under “Sort Container” suggests what I want to do is
> possible:
> The sort container command is a stable sort. This means that if the
> sortKey for two items or lines is the same, sorting does not change their
> order, so you can do two successive sorts to create subcategories within
> the major sort categories.
> Tip: To create a custom sort order, use the each keyword to pass each line
> or item to a custom function. The value returned by the function is used as
> the sort key for that line or item. It is not currently possible to debug
> custom sort functions, and doing so could make the IDE unstable. It is
> recommended to use logging messages instead.
> The information in the “LiveCode Resource Center” doesn’t include an
> example of sorting on two criteria.
>
> Thanks in advance for any thoughts you can share.
>
> be well,
> randy
>
> Randy Hengst
> www.classroomFocusedSoftware.com
>
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Sort on two sortTypes

prothero--- via use-livecode
In reply to this post by prothero--- via use-livecode
Bernd’s modTableField will let you do a custom sort. A sort function using something like your example:
> by (item 3 of each & item 2 of each)
should do the trick. It uses LC’s sort container function so the dictionary does apply.
On the other hand, if you sort by one item at a time, sort by the least significant item first, as in sort by the time item and then by the day item.
.Jerry

> On Apr 8, 2017, at 10:45 AM, Randy Hengst via use-livecode <[hidden email]> wrote:
>
> Hi All,
>
> I’m working an app to facilitate the development of student class schedules.
>
> Right now there are three items for each course that I’d like to sort in various ways: CourseName, Time, Days. The information is placed in that order in a field for display.
>
> It’s easy to sort on any one of the items. For example….
> sort lines of field "FIRSTyear_FALL" by item 1 of each
>
> sort lines of field "FIRSTyear_FALL" dateTime by item 2 of each
>
> sort lines of field "FIRSTyear_FALL" by item 3 of each
>
>
> But I can’t figure out how to sort first on item 3, Days and then by item 2, Time. My goal is sort by matching Days and then by time in ascending order. The courses meeting on the same day would be grouped together by time earliest to latest. A sort does take place, but it’s text. I’ve not figured out how/where to place the dateTime sortType when combining a sort on item 3 and item 2.
>
> Here’s the basic line of script… where does “dateTime” go? I’ve tried placing it in all the points of the line that I can think of….
> sort lines of field "FIRSTyear_FALL" by item 3 of each & item 2 of each
>
> The dictionary under “Sort Container” suggests what I want to do is possible:
> The sort container command is a stable sort. This means that if the sortKey for two items or lines is the same, sorting does not change their order, so you can do two successive sorts to create subcategories within the major sort categories.
> Tip: To create a custom sort order, use the each keyword to pass each line or item to a custom function. The value returned by the function is used as the sort key for that line or item. It is not currently possible to debug custom sort functions, and doing so could make the IDE unstable. It is recommended to use logging messages instead.
> The information in the “LiveCode Resource Center” doesn’t include an example of sorting on two criteria.
>
> Thanks in advance for any thoughts you can share.
>
> be well,
> randy
>
> Randy Hengst
> www.classroomFocusedSoftware.com
>
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Sort on two sortTypes

prothero--- via use-livecode
In reply to this post by prothero--- via use-livecode
Mike, thank you. I didn’t try the function you mentioned… to be honest, it would take me a bit to get my head around it.

be well,
randy

Randy Hengst
www.classroomFocusedSoftware.com



> On Apr 8, 2017, at 1:17 PM, Mike Bonner via use-livecode <[hidden email]> wrote:
>
> do 2 consecutive sorts..
> First by item 3
> then by item 2 datetime
>
> Alternatively, you might be able to use a function sort to do it, but I'd
> have to really think about how to accomplish it that way, and its too early.
>
> Basically though, a sort using a function looks like the following example..
> (if the lines contain an item like a hex code for example, 00 to ff, one
> could use a function to convert the value to a decimal and then return the
> decimal value as the numeric sort key)
>
> sort lines of <container> ascending numeric by myFunction(each)
>
> function myFunction pVar
>   return baseconvert(item 3 of pvar,16,10)
> end myFunction
>
> This would return the decimal value of the hex and use the value as the
> sort key.  Like I say, since you're using two data types for your sort, it
> would require some pondering to figure out the best way to normalize the
> data and generate the proper sort key, but it should be possible.  Still,
> much easier to just do two consecutive sorts.
>
>
> On Sat, Apr 8, 2017 at 11:45 AM, Randy Hengst via use-livecode <
> [hidden email]> wrote:
>
>> Hi All,
>>
>> I’m working an app to facilitate the development of student class
>> schedules.
>>
>> Right now there are three items for each course that I’d like to sort in
>> various ways: CourseName, Time, Days. The information is placed in that
>> order in a field for display.
>>
>> It’s easy to sort on any one of the items. For example….
>> sort lines of field "FIRSTyear_FALL" by item 1 of each
>>
>> sort lines of field "FIRSTyear_FALL" dateTime by item 2 of each
>>
>> sort lines of field "FIRSTyear_FALL" by item 3 of each
>>
>>
>> But I can’t figure out how to sort first on item 3, Days and then by item
>> 2, Time. My goal is sort by matching Days and then by time in ascending
>> order. The courses meeting on the same day would be grouped together by
>> time earliest to latest. A sort does take place, but it’s text. I’ve not
>> figured out how/where to place the dateTime sortType when combining a sort
>> on item 3 and item 2.
>>
>> Here’s the basic line of script… where does “dateTime” go? I’ve tried
>> placing it in all the points of the line that I can think of….
>> sort lines of field "FIRSTyear_FALL" by item 3 of each & item 2 of each
>>
>> The dictionary under “Sort Container” suggests what I want to do is
>> possible:
>> The sort container command is a stable sort. This means that if the
>> sortKey for two items or lines is the same, sorting does not change their
>> order, so you can do two successive sorts to create subcategories within
>> the major sort categories.
>> Tip: To create a custom sort order, use the each keyword to pass each line
>> or item to a custom function. The value returned by the function is used as
>> the sort key for that line or item. It is not currently possible to debug
>> custom sort functions, and doing so could make the IDE unstable. It is
>> recommended to use logging messages instead.
>> The information in the “LiveCode Resource Center” doesn’t include an
>> example of sorting on two criteria.
>>
>> Thanks in advance for any thoughts you can share.
>>
>> be well,
>> randy
>>
>> Randy Hengst
>> www.classroomFocusedSoftware.com
>>
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Sort on two sortTypes

dunbarx
Since HC days, you have been able to:

sort yourData by sortKey1 & sortKey2 & ....

sort yourData by item 1 of each & item 2 of each

Craig Newman
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Sort on two sortTypes

prothero--- via use-livecode
Hi Craig,

Yes, I was able to sort in the way you described… the problem I ran into was... where to place the dateTime sortType when using a multiple sort when one sortKey was date time and the other text.



be well,
randy

Randy Hengst
www.classroomFocusedSoftware.com


> On Apr 10, 2017, at 8:23 AM, dunbarx via use-livecode <[hidden email]> wrote:
>
> Since HC days, you have been able to:
>
> sort yourData by sortKey1 & sortKey2 & ....
>
> sort yourData by item 1 of each & item 2 of each
>
> Craig Newman
>
>
>
> --
> View this message in context: http://runtime-revolution.278305.n4.nabble.com/Sort-on-two-sortTypes-tp4713821p4713855.html
> Sent from the Revolution - User mailing list archive at Nabble.com.
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Sort on two sortTypes

dunbarx
Ah.

Then you will have to do what, I think, Jacque suggested and sort by two functions:

sort yourData by functionA() & functionB().

This because once you set the sortStyle (sort numeric, sort dateTime,...) that must hold through the entirety of the "multiSortKey" method.

This may be more unnecessarily complicated that simply sorting twice.

Craig
Loading...