No subject


Thu Mar 12 02:34:41 EDT 2009


* vFolders?
   (Pavel) piman: By the way, here is a feature idea: have a menu that
           controls which songs are displayed on the list. E.g. "don't
           display any songs that don't have steps with difficulty less
           than 6", or something like that.

   A good way to do this would be something like Evolution's vFolders
   that let you search for arbitrary criteria. It would also fit okay
   into the pydance UI ("New Folder", "Add Criteria"...) and current
   song selector.

   This would require arbitrary nesting of subfolders, maybe.

   (Pavel) piman: Makes sense... So an interesting possibility might be
           to have folders nested to a depth of 3 or so, with top-level
           folders being what "S" key does right now.


Virtual Folders

A virtual folder is basically a query that is run against a collection of items to select a subset of these items. The exact physical storage structure of the original items is unimportant and it and its item inventories remain unchanged (with the exception of deletions).

---------------------------------------
Examples of possible queries:
Find all dances without jumps with three or more different step rates at or above bpm, sorted by difficulty, level and grade.
Find all dances of difficulty "TRICK" or more difficult, sorted by difficulty and level.
Find all songs by artist "X", sorted by title.
Find all dances not produced by "Dancing Monkeys", sorted by grade.
-- this list should be extended --

Finding and sorting should be separate, they could even have separate interfaces.
Additions using AND, OR and NOT should be possible.
Sorting should always be indicated, finds can be empty though.
----------------------------------------

Queries may be quite complicated. It is questionable whether the interface options should guide the basic query structure. On the other hand, the query language should not be so complicated that its options will never be used. 

I implemented a complicated search algoritm in java once. Although primitive in language terms, I think it qualified as a language (queries were parsed, an "executable" was built from basic blocks, and the structure was handed an item and told to execute and hand back whether the item complied.) Python is luckily a lot more flexible than Java, so hopefully we have better "implementation" options. I do feel though that we should approach especially the finding in language terms, at least to start with. To keep future options open we may have to do something similar (but easier) for sort options too.

Defined (or named) queries should be stored for future reference. All current queries should be reinstated at next startup of the program.

Virtual Subfolders

Virtual folders may contain virtual subfolders. In short this means some sort of nested queries. It is probably best to limit virtual folders to either containing other virtual folders (not itself) or items. Nesting queries is especially interesting if queries can be named, and these names can be used elsewhere. A major drawback in nested folders is the higherclikelyhood of folders containing only a few (or no) dances.
   The main difference between an ordinary and a subfolder query is that subfolder queries use multiple related queries the results of which are represented by subfolders.

In nested vfolders, what should the folder names be? How are the names established? Should there be a minimum folder size for either the parent or its siblings? How is the sorting defined? How does one group rational number info like bpm in vfolders, but for arbitrary parameters? And how for and/or/not guided subqueries?
These questions are hard to answer at present, especially as little is known about actual dances. Perhaps we should scetch a theoretical (and very vague) framework, so we can keep it in mind in the implementation of leaf vfolders. Later on when we know what dance parameters to offer to the user, we can make better judged decisions.

Parameters

Both finding and sorting depend completely on available parameters. Parameters in the current version:
title, artist, mix, bpm, level, difficulty, grade, subtitle.
Dances, however, contain hidden in their steps a lot of other parameters, which when combined in a clever, but as yet unknown, way, could give information on the difficulty of the dance.
---------------------------------


More information about the pyddr-devel mailing list