INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Complex sorting question  (Read 6501 times)

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Complex sorting question
« on: January 16, 2013, 06:50:18 pm »

I've added a new view to my Theater View for music.   I am calling it Music Collections.  In this I will show stuff like Rolling Stone's top 100 albums of the 80's or Pitchfork's top 50 of 2010 etc.

I've added two new library fields to do this.  One is called "Music Collections" and it's a list (semicolon delimited) field with the edit type being list.  The other new field is "List #" and it's a integer style field.

As an example Radiohead's Kid A album is #1 on Pitchforks top 20 of 2000 list so it's tagged

Music Collections: Pitchfork Top 20 of 2000
List #: 1

Then in Theater View under Audio I setup a new view called Collections.  It's setup like this:



Then using this trick I learned rick.ca I setup this view to sort by the List # field.  This all works awesome.  Here is the result:



But I've run into a pretty serious problem.  When an album appears on multiple lists I get screwed.

For example The Strokes album "Is This It" is #2 on Rolling Stone's 100 Best of the 2000's but it's number 15 on Pitchforks Top 20 Albums of 2001.

Now I could easily make another new field similar to the List # field.  But then how do I deal with setting it up in Theater View?  Can you use expressions in the sort field?  Something like if the Music Collection field contains "Pitchfork" use "List #" or if it contains "Rolling Stone" use "List # 2"

Hopefully I am making myself clear.  Any one have any ideas about this?  I think there may be a solution using expressions but expressions are not my strong point and as much as I've tried I have not found a solution.

Any help would be greatly appreciated.




Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #1 on: January 16, 2013, 07:14:55 pm »

Sort fields cannot be expressions, but they can be fields and fields can be calculated fields.  So that's the easy part.

Suggestion - why not create fields that match your music lists: [Pitchfork Top 20 of 2000] and [Rolling Stone's 100 Best of 2000].  Add a ranking value for each track or album if the track is on one or more lists.  Then you don't have to correlate two different lists.

Then you view can just show tracks that have a non-empty value for the either or both fields.

Your view can switch on the lists, and you can have the ranking number shown beneath that.

In a compressive panes or files view, you can show the two (or later maybe more) fields side by side to see which tracks rank.

Here's a very "weighty" discussion about weighted averages for Top N lists:

   http://yabb.jriver.com/interact/index.php?topic=76611.0
Logged
The opinions I express represent my own folly.

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #2 on: January 16, 2013, 08:07:46 pm »

Thanks for the reply.  Unfortunately I don't think I am following you completely.

Quote
Sort fields cannot be expressions, but they can be fields and fields can be calculated fields.  So that's the easy part.

I was afraid that sort fields couldn't expressions.  If I am following you here I am using field to sort, I am using my newly created "List #" Field.  You lost me when you mentioned a calculated field and what has been made easy.

Quote
Suggestion - why not create fields that match your music lists: [Pitchfork Top 20 of 2000] and [Rolling Stone's 100 Best of 2000].  Add a ranking value for each track or album if the track is on one or more lists.  Then you don't have to correlate two different lists.

So you are saying to create new fields for each list, so a new fields called [Pitchfork Top 20 of 2001] and [Rolling Stone's 100 Best of 2000] and then in field enter the albums rank?  So using The Strokes album "Is This It" as an example in the newly created [Pitchfork Top 20 of 2001] field enter 15 and then in the [Rolling Stone's 100 Best of 2000] enter 2.  Or are you referring to something else when you say " Add a ranking value for each track or album if the track is on one or more lists."

Quote
Then you view can just show tracks that have a non-empty value for the either or both fields.
You lost me here.  I understand what you're saying (I think) but I don't know how I'd set that up in Theater View.

Quote
Your view can switch on the lists, and you can have the ranking number shown beneath that.
How would I pull this off?

Quote
Here's a very "weighty" discussion about weighted averages for Top N lists:

   http://yabb.jriver.com/interact/index.php?topic=76611.0

That all seems very cool, but it's way, way beyond what I am trying to achieve here.  I just want to be able to display things in different order in Theater View dependent on the list that I am looking at.
Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #3 on: January 16, 2013, 08:49:32 pm »

Re: sorting and expressions.  There is no UI to enter an expression directly into a sort area.  Instead, create a user defined field, of type Calculated data, and enter the expression you want to use as the sort.  Then, use this field as the sort field.  Thus, you get what you want, but its one step indirect.  In some areas, you have to first define a Preset that uses this field - then it becomes available throughout MC.

Re: the new fields - you have it correct.  Create one field per list you want to track.

Re: displaying tracks with non-empty values.  You might want to group your tracks in a view as:

  Unranked   [Pitchfork Top 20 of 200]    [Rolling Stone's 100 Best of 2000]

where under Unranked, you list only the tracks that are not ranked in either.  The rule for this would be that a file has no value for either of the two other fields.

Under the Pitchfork list, you might list only tracks that have a ranking.  Likewise the Rolling Stone's list.  This is just one method.  If this were a panes view, you could also add Album and Artist columns, and select the list you were interested in, and see the order list of albums (or tracks).  In a Categories or Theater View, you'd drill down to see the contents.

Switching on the lists would be an expression such as:

   ifelse(!isempty([Rolling Stone's 100 Best of 2000,0]), Rolling Stone's 100 Best of 2000);/
   ifelse(!isempty([Pitchfork Top 20 of 2001,0]), Pitchfork Top 20 of 2001)&datatype=[list]

which you can enter in any view as a category of type expression.  See the screenshot example.

Logged
The opinions I express represent my own folly.

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #4 on: January 16, 2013, 10:20:02 pm »

Quote
Re: sorting and expressions.  There is no UI to enter an expression directly into a sort area.  Instead, create a user defined field, of type Calculated data, and enter the expression you want to use as the sort.  Then, use this field as the sort field.  Thus, you get what you want, but its one step indirect.  In some areas, you have to first define a Preset that uses this field - then it becomes available throughout MC.

Oh boy, another new feature of MC I've never used before.  Calculated data fields.   I've been using this program for ~9 years and I am still finding new and cool things. 

I think I am understand what you're saying here, just still trying to wrap my head around it.  I have quite a few lists, more than just the two I have used an example so I could see this expression getting long and complicated.

Quote
Re: the new fields - you have it correct.  Create one field per list you want to track.
Easy enough and sounds logical.

Quote
Re: displaying tracks with non-empty values.  You might want to group your tracks in a view as:

  Unranked   [Pitchfork Top 20 of 200]    [Rolling Stone's 100 Best of 2000]

where under Unranked, you list only the tracks that are not ranked in either.  The rule for this would be that a file has no value for either of the two other fields.

Starting to lose me here.  Why would I want to display tracks that are unranked? 

Quote
Under the Pitchfork list, you might list only tracks that have a ranking.  Likewise the Rolling Stone's list.  This is just one method.  If this were a panes view, you could also add Album and Artist columns, and select the list you were interested in, and see the order list of albums (or tracks).  In a Categories or Theater View, you'd drill down to see the contents.

Again, you're confusing me here. you said "you might list only tracks that have a ranking" I will always only want to list the tracks that are ranked.  The whole point is to make a list of albums that are ranked.  Maybe I am not understanding what you are trying to say here.

Quote
Switching on the lists would be an expression such as:

   ifelse(!isempty([Rolling Stone's 100 Best of 2000,0]), Rolling Stone's 100 Best of 2000);/
   ifelse(!isempty([Pitchfork Top 20 of 2001,0]), Pitchfork Top 20 of 2001)&datatype=

    which you can enter in any view as a category of type expression.  See the screenshot example.

What do you mean by switching on the lists?  I did some quick fooling around with the expression you supplied but I couldn't make it work in anyway that was meaningful.  I still want to fool around with it some more to see if I can make sense of it, but as of right now it's doing strange things.

This is a screen shot of the lists that I have created, so far, in Theater View



Now it sounds like the best course of action would be to make a new field with a name that corresponds to the name of the music collection.  So if I have a collection called "Pitchfork Top 50 of 2005" I should make a new field called "Pitchfork Top 50 of 2005" make this new field an integer field and enter the corresponding ranking number for that album into this field.  Do the same thing for every music collection.

Then I will want to make a new user defined field, of the type Calculated data.  The expression for this field would then say something to the effect of

if music collection = Pitchfork Top 50 of 2005 then sort by Pitchfork Top 50 of 2005
if music collection = Pitchfork Top 50 of 2006 then sort by Pitchfork Top 50 of 2006
if music collection = Pitchfork Top 50 of 2007 then sort by Pitchfork Top 50 of 2007

etc. etc.

Am I barking up the right tree here?

Thanks for the help so far MrC  :)



Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #5 on: January 16, 2013, 10:37:27 pm »

Quote
Starting to lose me here.  Why would I want to display tracks that are unranked?  

This is useful when you are in a view and actually want to tag the files.  If you don't want to see the unrated files, by all means, you can have MC not show those unlisted files.  I generally like to have my views show all files, categorized in some way, so that I don't have to leave a view to get to a track I might want use.  Whatever works for you is best.

You see in the screenshot you can select any list, and see its contents (that's what I mean by "switching" - in a panes view, you just select the list you want to see; in a categories or Theater View, you drill down the list).  Or you can select the Unassigned list for all unranked tracks.  And if you select none of the choices in the panes view, you can see all the tracks in the file list, so that you can see how a track ranks across lists.

Please re-copy/re-paste the expression - I allowed the forum software to screw it up.  I've corrected it.

Think of each of your tracks as having "attributes", some being that a track may belong to one or more lists at a certain ranking.  And from your collection of tracks, you can produce what you are calling "Collections".  This way of thinking inverts how you are thinking about solving the problem, and it works better because that's the way MC works.

Let's ignore the sorting for now.  We'll get to that when you have your view built.

It seems you are ranking Albums and not Tracks.  In that case, make your fields be of type Relational (one per Album).  This allows you to set the value in just one track and all in the album use the same value.
Logged
The opinions I express represent my own folly.

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #6 on: January 16, 2013, 10:45:01 pm »

Here's an example of how to add more components to the expression:

   ifelse(!isempty([Rolling Stone's 100 Best of 2000,0]), Rolling Stone's 100 Best of 2000);/
   ifelse(!isempty([Rolling Stone's 100 Best of 2001,0]), Rolling Stone's 100 Best of 2001);/
   ifelse(!isempty([Rolling Stone's 100 Best of 2002,0]), Rolling Stone's 100 Best of 2002);/
   ifelse(!isempty([Pitchfork Top 20 of 2001,0]), Pitchfork Top 20 of 2001);/
   ifelse(!isempty([Pitchfork Top 20 of 2002,0]), Pitchfork Top 20 of 2002);/
   ifelse(!isempty([Pitchfork Top 20 of 2003,0]), Pitchfork Top 20 of 2003)&datatype=[list]

Just take note of the trailing ;/ on the first n-1 lines, and the datatype cast on the last one.
Logged
The opinions I express represent my own folly.

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #7 on: January 17, 2013, 12:36:31 am »

Ok, I think I've done what you want me to do.  This is what it looks like now.



or




I haven't gone in a re-tagged everything to the newly created fields (the ones named after the collection).  But I've done a few and it seems to be working.  I get all of my music, I can click (under Expression in the panes) Pitchfork Top 20 of 2000 and it will show me the top 20 from 2000 in order, etc.  So I think I've got it working as expected. 

Now I am just not sure how to transfer this over to Theater View :)

Thank you MrC.  You've been a huge help.

Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #8 on: January 17, 2013, 01:41:57 am »

Its looking good.

Name the Expression column something like Music Collections.

We can make that column hierarchical if you want too, for example:

   Pitchfork Top 20
       2000
       2001
       ...
       2012
   Rolling Stones 100 Best of
       2000's
       ...

This allows the sub-lists to be collapsed for in-column drill-down.

For Theater View -- and you were wise to ignore that configuration for now, since prototyping in Std. View is much faster -- you can just take the expression column and use that as the first category in your Audio > Collections view.  Probably you'll want Album as the second category, perhaps prefixed by the rank.  The following expression creates this for you:

listbuild(1, ;,
    Delimit([Rolling Stone's 100 Best of 2000],
      / - [Album], Rolling Stone's 100 Best of 2000\),
   Delimit([Pitchfork Top 20 of 2001],
     / - [Album], Pitchfork Top 20 of 2001\),
)&datatype=[list]

Add additional Delimit() clauses, replacing the values appropriate to reflect the list.  (I'm using Delimit here to combine a test and add a prefix and suffix).

In your Audio > Music Collection theater view configuration, under Set rules for file display: add a rule using the Import/Export button that looks like:

   [Media Type]=[Audio] [=isempty([Pitchfork Top 20 of 2001][Rolling Stone's 100 Best of 2000,0])]=0

adding additional lists.  This rule ensures that only tracks that have at least one value in any list are shown (this is done by combining the list fields into a big string - if the string is empty, that track obviously doesn't belong to any list).
Logged
The opinions I express represent my own folly.

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #9 on: January 17, 2013, 11:48:05 am »

We seem to be getting close but we aren't quite there.

This is how I have it setup so far.



Here is the expression:

Code: [Select]
ifelse(!isempty([Rolling Stone 100 Greatest Albums of the 2000s,0]), Rolling Stone 100 Greatest Albums of the 2000s);/
ifelse(!isempty([Pitchfork Top 20 of 2000,0]), Pitchfork Top 20 of 2000);/
ifelse(!isempty([Pitchfork Top 20 of 2001,0]), Pitchfork Top 20 of 2001)&datatype=[list]

Which results in



Which is close to perfect, I would prefer it to not have the "Unassigned" group in there.

But when I choose a list it just sorts them alphabetically and not by the number.



I did try to prefix by rank.  If I understand what this is supposed to do it will add the number before the album name so it would look like "1 - Kid A" This was the expression that I used:

Code: [Select]
listbuild(1, ;,
    Delimit([Rolling Stone 100 Greatest Albums of the 2000s],
      / - [Album], Rolling Stone 100 Greatest Albums of the 2000s\),
   Delimit([Pitchfork Top 20 of 2000],
     / - [Album], Pitchfork Top 20 of 2000\),
   Delimit([Pitchfork Top 20 of 2001],
     / - [Album], Pitchfork Top 20 of 2001\),
)&datatype=[list]

There is something off with this though.  When I use this code I get some very funky results. 



As you can see it's not adding the number and I am getting strange Delimit(1, Delimit(2, and the Rolling Stone list at the end.

I think we are getting close though.  And by we I really mean you :)  Thanks again MrC.
Logged

vagskal

  • Citizen of the Universe
  • *****
  • Posts: 1227
Re: Complex sorting question
« Reply #10 on: January 17, 2013, 12:43:05 pm »

I could not resolve the issue you are seeing, but hopefully MrC can somehow.

I can just tell you what I did instead:

In the Collections view Set rules for file display to all your lists with OR rules and just an Album category sorted by date, i.e. a view where you can see all albums that made any of your lists sorted by release date. (I have a smartlist that contains all albums that ever made any of my lists and set the Set rules for file display to only show albums that are in that playlist. That is handy for me since I use it in other views as well.)

Add a Library item to your Collections view, i.e. a sub level view, for all your individual lists and add for each sub level view one category with the expression [Your Field with the List # for That Particular List] - [Album] and have it sort ascending (the default). Set the Set rules for file display for each sub level view to include only files that have a value for the appropriate list.

You should then get a view looking something like the screen shot (the thumbnail text is different with more info that comes from a custom field) and when you enter the sub views you would get your albums sorted by list #.
Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #11 on: January 17, 2013, 05:45:16 pm »

As you can see it's not adding the number and I am getting strange Delimit(1, Delimit(2, and the Rolling Stone list at the end..

The expression you posted should works here.  I wonder if one of your Album names might contain a semicolon or comma or parenthesis?

It appears from the data that the expression is getting botched during interpretation.

Can you post the same thing, but change the view to a Panes view.  Add an Album column after the expression column.
Logged
The opinions I express represent my own folly.

vagskal

  • Citizen of the Universe
  • *****
  • Posts: 1227
Re: Complex sorting question
« Reply #12 on: January 17, 2013, 06:06:14 pm »

MrC, I think that the issue is that the level after the first one is not sorted correctly for the OP. How can you, in theatre view, make a secondary view that is sorted based on what you have selected in the primary view?
Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #13 on: January 17, 2013, 06:13:45 pm »

I'm not sure which expression we're talking about - the first one I posted with ifelse(), or the second one with Delimit()?

By constructing a hierarchical tree, defined at level 1, we're able to effectively force the sort by preceding the album name with the numeric rank  I defined it at level 1, because as you know, at level 2, we won't know which field to look at for rank values.

But the OPs view does not show any rank numbers added so the sorting clearly can't work in that case.   The second level should look like the following (w/fictitious values):

   3 - Fig. 5     6 - Mwng    10 - Believo!   ....
Logged
The opinions I express represent my own folly.

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #14 on: January 17, 2013, 06:14:50 pm »

Here is a screenshot with that expression added to a panes view with and Album column after it.



As you can see it's still throwing in the weird, Delimit(, Delimit(2, and the Rolling Stone list.

Here is the expression once again:

Code: [Select]
listbuild(1, ;,
    Delimit([Rolling Stone 100 Greatest Albums of the 2000s],
      / - [Album], Rolling Stone 100 Greatest Albums of the 2000s\),
   Delimit([Pitchfork Top 20 of 2000],
     / - [Album], Pitchfork Top 20 of 2000\),
   Delimit([Pitchfork Top 20 of 2001],
     / - [Album], Pitchfork Top 20 of 2001\),
)&datatype=[list]

Is the purpose of this delimit code purely to just change the caption under the thumbnail?  If that is the case, that isn't a big deal to me at all.  I'd just be happy if they showed up in the correct ranked numerical order in Theater View.
Logged

vagskal

  • Citizen of the Universe
  • *****
  • Posts: 1227
Re: Complex sorting question
« Reply #15 on: January 17, 2013, 06:22:45 pm »

You are obviously deep into this, MrC, as always.

Please disregard my suggestion for a simplified theatre view approach.

I will just look an learn.
Logged

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #16 on: January 17, 2013, 06:24:51 pm »

I appreciate the help vagskal, I just want to focus on one thing at a time here :)  Don't want to get confuse matters trying two different things at the same time.
Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #17 on: January 17, 2013, 06:30:10 pm »

I partially answer the question about Delimit() above, just now, and last night.

I'm using Delimit to construct the hierarchical tree, so that we can in that single category, include both the rank value and the album name.  This is required for your sorting by rank.  If we try to do this at a subsequent category level, we don't know which list to include (once you drill down into a category, the current category has no idea what was selected to get there and the expression language can't tell us).  So we define it all in one shot - you can see that each Delimit() statement includes both the list and the album name.  The Delimt() function nicely adds a prefix string and a suffix string IFF the value is not empty. This is exactly the same as:

   ifelse(!isempty([field]), field\[field] - [album])

Where the red part is the prefix string and the green part is the suffix string.

So, back to your data.  Set the view's Advanced > Filter in both directions.  This will eliminate all non-valid items when you make a selection.  Show the same screenshot with that setting.

I don't see any problems with the Album names.

Can you also paste the Customize View dialog and the edit contents of the Delimit Expression column?
Logged
The opinions I express represent my own folly.

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #18 on: January 17, 2013, 06:31:40 pm »

It should be noted that vagskal is the Master as managing Top N lists and view, etc. that use them.
Logged
The opinions I express represent my own folly.

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #19 on: January 17, 2013, 06:52:32 pm »

Ah, ok.  So the Delimit bit isn't just making things pretty, it's integral to making this work.  Gotcha.

Here is a screenshot with Filter in both directions activated.  I included the customize view dialog in the same screenshot just to have one less picture.


*click for bigger*

I forgot to say this earlier.  I do have some album names that do contain comma and parenthesis.  But as you can see in the selected list in the screenshot, that list does not contain any albums that do.

Here is a screenshot of the edit contents for the Delimit Expression column.  I also included the edit contents window for the Collections expression just in case.


*click for bigger*

Hope that helps.  Once again, thank you!
Logged

MrC

  • Citizen of the Universe
  • *****
  • Posts: 10462
  • Your life is short. Give me your money.
Re: Complex sorting question
« Reply #20 on: January 17, 2013, 08:06:48 pm »

Doh!!!!  I'm so sorry I cost you so much time.  You're on MC17.  Delimit() was implemented in MC18 !

So we'll use the alternate ifelse() approach instead (or you can upgrade to help JRiver pay for more steak):

listbuild(1, ;,
  ifelse(!isempty([Rolling Stone 100 Greatest Albums of the 2000s]),
      Rolling Stone 100 Greatest Albums of the 2000s\[Rolling Stone 100 Greatest Albums of the 2000s] - [Album]),
  ifelse(!isempty([Pitchfork Top 20 of 2000]),
     Pitchfork Top 20 of 2000\[Pitchfork Top 20 of 2000] - [Album]),
  ifelse(!isempty([Pitchfork Top 20 of 2001]),
      Pitchfork Top 20 of 2001\[Pitchfork Top 20 of 2001] - [Album])
)&datatype=[list]
Logged
The opinions I express represent my own folly.

milehigh

  • Regular Member
  • World Citizen
  • ***
  • Posts: 109
  • nothing more to say...
Re: Complex sorting question
« Reply #21 on: January 17, 2013, 11:28:34 pm »

nothing to do with the sorting issue - but would you be willing to share these lists or their locations?  I would be interested in looking at them.  It would be great if you had it as an excel file.   Please let me know.

Thanks.
Logged

Moe

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 717
  • Hi
Re: Complex sorting question
« Reply #22 on: January 18, 2013, 10:20:17 am »

TA-DA!!!



MrC, I cannot thank you enough, it is working perfectly now and I never would have been able to figure that out on my own.  Thank you.

milehigh I'd be happy to share the lists.  I don't have them in excel format though.  I just found them on the net.

Here are the Pitchfork lists http://pitchfork.com/features/staff-lists/5816-top-20-albums-of-2000/ that is the list for 2000 and on the sidebar on that page you can find links for all the other years.

Rolling Stone lists
http://www.rocklistmusic.co.uk/rstone.html

Source Magazine 5 Mic Reviews
http://en.wikipedia.org/wiki/The_Source_%28magazine%29#The_Source.27s_Five-Mic_albums

Logged

milehigh

  • Regular Member
  • World Citizen
  • ***
  • Posts: 109
  • nothing more to say...
Re: Complex sorting question
« Reply #23 on: January 19, 2013, 10:59:13 am »

Thanks for the links.

Logged
Pages: [1]   Go Up