View Issue Details

IDProjectCategoryView StatusLast Update
0000102MMW v4Main Panel/Toolbars/Menuspublic2007-06-13 04:22
Reporterrusty Assigned To 
PriorityurgentSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Fixed in Version3.0 
Summary0000102: Improve Filter functionality usability
DescriptionThe current 'filter' functionality which is available in the Gold version of the app, only works on the Artist node and could use a bit of thought about how to improve the feature/whether it is useful, etc.

Also, there's currently a 'Filter' entry in the View menu (it exists only in MM standard). I'd suggest moving this to the 'Edit' menu, just above 'Search', or alternatively removing it from these menus--it's just clutter in that location, and it's unclear what it actually does!

Deferring for now...
Additional Informationhttp://www.songs-db.com/forum/viewtopic.php?t=1656

More about playlist usecase that should be satisfied by the filter functionality (i.e. user should be able to set a filter of any playlist/autoplaylist): http://www.songs-db.com/forum/viewtopic.php?t=1587
TagsNo tags attached.
Fixed in build1037

Relationships

parent of 0003057 closedLudek Implement filtering functionality for synchronization, burning, auto-dj 
parent of 0003110 closedpetr Filter queries include some tracks that don't match the query 
parent of 0003123 closedpetr Filters: don't work for tree nodes 
has duplicate 0001153 closedrusty Move 'Filter' to to Edit menu in toolbar 
related to 0001313 closedpetr Track Browser: make it easy to browse collection like in iTunes/Winamp 
related to 0002825 closedpetr Vista-style hierarchy browser 
related to 0002547 closedpetr New 'Unorganized tracks' node / Library Automation 

Activities

jiri

2003-02-19 12:35

administrator   ~0000228

It works for Album node too and is quite useful, especially for this node. It is based on user request and the main idea is to allow users filter out albums, which actually are not albums (contain just one song for example).

rusty

2003-08-17 17:43

administrator   ~0002171

See suggestions in http://www.songs-db.com/forum/viewtopic.php?t=475.

Note: it occurs to me that it may also be useful to integrate filtering functionality with the new and improved search functionality (i.e. limit the scope of a search by adding in addition to ( ) Entire Library ( ) Current View, other possibilities such as ( ) Previews ( ) Virtual CD, etc.).

jiri

2003-09-06 11:14

administrator   ~0002264

I think that filtering is quite distinct from search as it is used for tree nodes only. New, improved search functionality is in my opinion a different topic.

What can in my opinion improve filtering a lot is when we add support for multiple sub-libraries (music, video, audio books, ...).

rusty

2003-10-28 14:14

administrator   ~0002676

Last edited: 2003-10-28 15:38

See: http://www.songs-db.com/forum/viewtopic.php?t=623&view=previous

edited on: 10-28-03 10:38

rusty

2003-11-27 14:58

administrator   ~0002770

Some other ideas that have come up:
-exclude previews (global setting)
-show 'all' nodes in tree
-in My Computer, show All files, vs. show Media Files only

rusty

2004-05-10 02:41

administrator   ~0004039

Last edited: 2004-05-11 14:29

As discussed, much of the functionality in Files to Edit could also be done via the Filter node. e.g. it would be so much better if 'Unsynchronized Tracks' was a filter.

Another very useful filter would be Playlists / Playlist X. This would be used to allow the user to see what tracks are part of any particular playlist (incidentally, this is much more useful, I think, than a tab for each track that describes what songs a playlist is part of).

This also implies that filters should be configurable to 'Show only' tracks that match the define criteria, or 'highlight' in some manner the tracks that match the defined criteria.

edited on: 05-11-04 10:29

rusty

2004-05-10 13:22

administrator   ~0004044

Last edited: 2004-05-11 14:35

I just had another though about how to implement this: The current Advanced search functionality would be used to generate a filter. The only addition would be that the user would be given the ability to give each filter a name.

So a filter toolbar would look like this:

Filter: _________^ (Dropdown list contains pre-made filters + entry at the bottom called 'New Filter'.

Selecting 'New Filter'--> Modified Advanced search dialog that allows the user to:
- choose a 'Name' for the filter, that gets saved to the filter toolbar
- include by default all tracks or not (for cases where the user wants to use the filter to highlight specific tracks)
- allow the user to view tracks that match specific filters in different colors/backgrounds.

edited on: 05-11-04 10:35

rusty

2007-02-14 17:23

administrator   ~0008582

Here's a revised proposal based on discussions to-date:

High Level Needs:
5) User should be able to display a subset of their Audio library using filters such as: All Audio, Contemporary Music, Classical Music, Audiobooks, Podcasts, Hebrew Music, Kids Music, etc. (In the future, we could support a higher level of abstraction: Audio, Video, Images -- but this is at a higher level than what is currently being defined)
6) User should be able to easily add/delete/configure filters
7) User should be able to easily perform operations on filtered portions of the library (e.g. burn, sync)
8) User should not notice performance degradation caused by filtering

Implementation Details
Conceptually, the feature will provide the user the ability to manage multiple 'Libraries'.

5a) Selection of the filter would cause only the relevant set of tree nodes to display (e.g. Image node would be hidden if Music filters are selected)
   -Nodes should determine the view that is displayed (and not the filter). i.e. Columns and view settings are node-specific.
   e.g. if the user selects Composer node, a slightly different set of columns might be displayed
   e.g. if the user selects the Album node, the view might be set to display Album Art (unlike another node which isn't)
5b)-Filters could be selected similarly to the manner in which the user chooses filters in the Vista-style hierarchy browser.
   -Selection of the filter would cause only the subset of the library that matches the filter to be considered active. Anything else would be ignored.
   -A corollary to this is that selection of a node would result in only tracks matching the node and the filter to be displayed
   -Another corollary is that activation of a search would only search the subset of tracks that match the filter and node selected.
     -To broaden the search the user would have to first select a higher level node and broader filter.
5c)-The new functionality should rationalize the current filtering functionality with the new implementation so as to avoid confusion. This means that there would be a slight decrease in functionality since filtering currently allows for slightly different settings for Album and Artist nodes:
    Current filters:
    [ ] Show just artists with at least: __ songs
    [ ] Show just artists with accessible track(s).
    [ ] Show just artists with tracks which [Set filter criteria]

    [ ] Show just albums with at least: __ songs
    [ ] Show just albums artists with accessible track(s).
    [ ] Show just albums with tracks which [Set filter criteria]
   -The current implementation would be completely removed. The new implementation would only allow for a single filter to be created, however, it would apply across all nodes. The exact filter criteria are defined below.
5d)-If we implement Vista-style hierarchy browser, then subnodes would display after the filter. e.g. Classical Music > Composer > ... This needs to be specced separately especially in relation to the shortcuts at the top of the tree.

6a)-Filters can be managed by clicking the Vista-style dropdown of available filters (or if we don't implement Vista-style folder hierarchy, it could just be at the top of the tree dialog. Dropdown might appear as:
   | All Audio
   | Contemporary Music
   | Classical Music
   | Audiobooks
   | Podcasts
   |--------------------
   | Manage Libraries
   |--------------------

Clicking the last entry 'Manage Libraries' would open the following:
   ------------------------------
   | Edit Libraries
   ------------------------------
   | All Audio
   | Contemporary Music
   | Classical Music
   | Audiobooks
   | Podcasts
   | <Add Library>
   | ----------------------------
   | [^] [v] [X]
   ------------------------------
   | [OK] [Cancel]
   ------------------------------

Add Library or Double-clicking to edit a library would cause one of the following to appear (depends on which approach we decide to take):

a) Simplest Approach
   --------------------------------------------------------------------
   | Edit Library
   --------------------------------------------------------------------
   | Name: New Library
   | File Type: ______________^ (Options: Audio, Video, Image)
   |-------------------------------------------------------------------
   | Genre equals: __________________^ (selectable list)
   --------------------------------------------------------------------
Note: with this approach, the selectable list would have to be greyed out for Genres that have already been assigned to other libraries. I think that this approach is very limited because:
   -It doesn't allow for Genre|= queries which are very important e.g. for 'Contemporary Music' which should include newly added Genres that the user may not have thought of when they configured the filter.
   -It doesn't allow tracks to be a member of more than a single library (e.g. a member of Contemporary and Kids Library)

b) Intermediate Approach
   --------------------------------------------------------------------
   | Edit Library
   --------------------------------------------------------------------
   | Name: New Library
   | File Type: ______________^ (Options: Audio, Video, Image)
   |-------------------------------------------------------------------
   | Search Criteria:
   | Property | Condition | Value
   | <Add Search criteria>
   |-------------------------------------------------------------------
   | [OK] [Cancel]
   --------------------------------------------------------------------

Note: with this approach, the user would be able to add only _Genre_based_criteria. It solves the limitations of the first approach, but doesn't give all the flexibility of the current filtering functionality.


c) Advanced Approach
   --------------------------------------------------------------------
   | Edit Library
   --------------------------------------------------------------------
   | Name: New Library
   | File Type: ______________^ (Options: Audio, Video, Image)
   |-------------------------------------------------------------------
   | Search Criteria:
   | Property | Condition | Value
   | <Add Search criteria>
   |-------------------------------------------------------------------
   | [OK] [Cancel]
   --------------------------------------------------------------------

Note: with this approach, the user would be able to add any criteria. In addition, we would add support to the criteria in order to be able to support filters that are available via the current filtering functionality. i.e.
   Tracks by Artist >=/<= x
   Tracks on Album >=/<= x
   
  
7) It should be possible to use filters when burning CDs or synching music. For these functions, the simplest approach would be to modify the track selection dialog to include a Library selection dropdown at the top (default of 'All Audio'). Once we add this, it would probably also make sense to move the 'Show all'/'Show Selected' buttons from the bottom to a dropdown at the top.

jiri

2007-02-14 20:47

administrator   ~0008586

My notes to the proposal:

I) I like the idea of Vista-like (and WMP 11-like) hierarchy browser and think that it would be a great tool and would greatly integrate with this feature.
Ia) I think that filtering should be limited to Library content only (i.e. no My Computer, etc.) and so here are some examples of values that I think could appear in the hierarchy browser:
                Library > Artist > ABBA {there is no filter}
                Library (Classical) > Composer > xxx {an example of filter}
                My Computer > C: > My Music > {non-library content, non-filterable}
II) As I think about it, I more and more like the idea of advanced filtering (6c), particularly the fact that user could create filters like are the current filters in (MM 2.5), e.g. show only tracks that are on albums with at least 7 other tracks (great tool for removal of one hit wonders from view).


Technical details (mainly for Petr and Ludek):
A) How to technically handle the filtering in all the SQL queries? If we don’t find anything better, I think that a reasonable way would be to UPDATE (SQL command) a field ‚IsInfilter‘ for each track in database when user changes filter, so that we would know if the track belongs to the current filter. From this moment, we would only need to add a condition ‚AND IsInFilter=1‘ to some SQL queries. This way, switching between filters could take some moment for large libraries (hopefully not too much), but then browsing, searching, etc. would be very fast.
B) (Related to 7) below) Question is how should the logic work on Synchronization and Burning – if user e.g. selects a filter XXX and checks that artist AAA should synchronize to device, what if user switches to filter YYY? Should artist AAA be check or not? I’d say that the answer is no, in such case we should add a new field specifying filter used to tables like SynchArtist, SynchAlbum, SynchPodcast, etc.

jiri

2007-03-07 10:33

administrator   ~0008735

Assigning to Petr. It probably makes sense to implement after 0002825 is implemented.

jiri

2007-04-27 12:50

administrator   ~0009071

Some technical details:

1. Section 'How to get SQLite to use multiple indexes' in http://www.sqlite.org/cvstrac/wiki?p=PerformanceTuning describes some optimization that might be useful in our case.

2. Based on this the following query might be used in our filters:
SELECT * FROM Songs Where ID IN
  (SELECT ID FROM Songs WHERE **our std. query**
   INTERSECT SELECT ID from Songs WHERE IsInFilter1=1)

3. Or even better version with a separate table (one per PC using the database).
SELECT * FROM Songs Where ID IN
  (SELECT ID FROM Songs WHERE **our std. query**
    INTERSECT SELECT ID FROM Filtered)

rusty

2007-05-16 13:28

administrator   ~0009159

In general the filtering seems to work nicely. I would suggest the following changes to the currently implemented functionality:
a) Move the menu entry from View>Filter to File>Manage Filters
b) Manage Filters Dialog
 i) Add a header to the list, and use radio buttons to choose the filter.

 . . Active . . Filters
 . . .(o) . . . None (Show all Tracks)
 . . .( ) . . . Available Tracks
 . . . <Add Collection... >
[Up] [Down] [Delete]
 . . . . . . . . . . [OK] [Cancel]

 ii) Get rid of the [OK and Apply] button (The current 'OK and apply' is unclear) as shown above.

 iii) Add a couple of default filters
  - Available Tracks
  - Music (genre doesn't contain book, podcast)
  - Audiobooks (genre contains book)
 
c) When MM is closed, the filtered status doesn't persist. It should.

d) When the user right-clicks on Library, there should be an option 'Filter' > None, Filter A, Filter B, etc... That way the user can quickly switch filters.

Note: I'm creating a new bug for Ludek so that we can independently track issues for Petr/Ludek.

petr

2007-05-16 17:43

developer   ~0009164

Fixed a, b(i, ii), c, d

petr

2007-06-04 21:20

developer   ~0009243

Finished. Full functionality will be available in build 1037.

rusty

2007-06-13 04:22

administrator   ~0009352

Verified 1040.