Return friendly and expanded orderby column separately.
Previously, the UI had to un-transform the expanded column back into the friendly name, which was silly and cumbersome.
This commit is contained in:
		
							parent
							
								
									79327de0f0
								
							
						
					
					
						commit
						2c29c196a7
					
				
					 3 changed files with 30 additions and 23 deletions
				
			
		|  | @ -776,12 +776,14 @@ class PDBPhotoMixin: | ||||||
|         else: |         else: | ||||||
|             filename_tree = None |             filename_tree = None | ||||||
| 
 | 
 | ||||||
|  |         if orderby: | ||||||
|             giveback_orderby = [ |             giveback_orderby = [ | ||||||
|             '%s-%s' % (column.replace('RANDOM()', 'random'), direction) |                 f'{friendly}-{direction}' | ||||||
|             for (column, direction) in orderby |                 for (friendly, expanded, direction) in orderby | ||||||
|             ] |             ] | ||||||
| 
 |             orderby = [(expanded, direction) for (friendly, expanded, direction) in orderby] | ||||||
|         if not orderby: |         else: | ||||||
|  |             giveback_orderby = None | ||||||
|             orderby = [('created', 'desc')] |             orderby = [('created', 'desc')] | ||||||
| 
 | 
 | ||||||
|         if give_back_parameters: |         if give_back_parameters: | ||||||
|  | @ -807,7 +809,7 @@ class PDBPhotoMixin: | ||||||
|                 'within_directory': within_directory or None, |                 'within_directory': within_directory or None, | ||||||
|                 'limit': limit, |                 'limit': limit, | ||||||
|                 'offset': offset or None, |                 'offset': offset or None, | ||||||
|                 'orderby': giveback_orderby or None, |                 'orderby': giveback_orderby, | ||||||
|                 'yield_albums': yield_albums, |                 'yield_albums': yield_albums, | ||||||
|                 'yield_photos': yield_photos, |                 'yield_photos': yield_photos, | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  | @ -290,7 +290,10 @@ def normalize_orderby(orderby, warning_bag=None): | ||||||
| 
 | 
 | ||||||
|     With no direction, direction is implied desc. |     With no direction, direction is implied desc. | ||||||
| 
 | 
 | ||||||
|     Returns: A list of tuples of (column, direction) |     Returns: A list of tuples of (column_friendly, column_expanded, direction) | ||||||
|  |     where friendly is the name as the user would see it and expanded is the | ||||||
|  |     expression to be used in the SQL query. This is important for columns like | ||||||
|  |     "area" which is expanded into width*height. | ||||||
|     ''' |     ''' | ||||||
|     if orderby is None: |     if orderby is None: | ||||||
|         orderby = [] |         orderby = [] | ||||||
|  | @ -344,23 +347,25 @@ def normalize_orderby(orderby, warning_bag=None): | ||||||
|             else: |             else: | ||||||
|                 raise exc |                 raise exc | ||||||
| 
 | 
 | ||||||
|         if column == 'random': |         column_friendly = column | ||||||
|             column = 'RANDOM()' |         column_expanded = column | ||||||
| 
 | 
 | ||||||
|         elif column == 'area': |         if column_expanded == 'random': | ||||||
|             column = '(width * height)' |             column_expanded = 'RANDOM()' | ||||||
| 
 | 
 | ||||||
|         elif column == 'basename': |         elif column_expanded == 'area': | ||||||
|             column = 'COALESCE(override_filename, basename)' |             column_expanded = '(width * height)' | ||||||
| 
 | 
 | ||||||
|         elif column == 'bitrate': |         elif column_expanded == 'basename': | ||||||
|             column = '((bytes / 128) / duration)' |             column_expanded = 'COALESCE(override_filename, basename)' | ||||||
| 
 | 
 | ||||||
|         elif column == 'ratio': |         elif column_expanded == 'bitrate': | ||||||
|             column = '(width / height)' |             column_expanded = '((bytes / 128) / duration)' | ||||||
| 
 | 
 | ||||||
|         requested_order = (column, direction) |         elif column_expanded == 'ratio': | ||||||
|         final_orderby.append(requested_order) |             column_expanded = '(width / height)' | ||||||
|  | 
 | ||||||
|  |         final_orderby.append( (column_friendly, column_expanded, direction) ) | ||||||
| 
 | 
 | ||||||
|     return final_orderby |     return final_orderby | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -168,13 +168,13 @@ | ||||||
| <li class="search_builder_orderby_li"> | <li class="search_builder_orderby_li"> | ||||||
|     <select onchange="return orderby_hide_direction_hook(event);"> |     <select onchange="return orderby_hide_direction_hook(event);"> | ||||||
|         <option value="created" {{"selected" if selected_column=="created" else ""}}>Creation date</option> |         <option value="created" {{"selected" if selected_column=="created" else ""}}>Creation date</option> | ||||||
|         <option value="area" {{"selected" if selected_column=="(width * height)" else ""}}>Area</option> |         <option value="area" {{"selected" if selected_column=="area" else ""}}>Area</option> | ||||||
|         <option value="width" {{"selected" if selected_column=="width" else ""}}>Width</option> |         <option value="width" {{"selected" if selected_column=="width" else ""}}>Width</option> | ||||||
|         <option value="height" {{"selected" if selected_column=="height" else ""}}>Height</option> |         <option value="height" {{"selected" if selected_column=="height" else ""}}>Height</option> | ||||||
|         <option value="ratio" {{"selected" if selected_column=="(width / height)" else ""}}>Aspect Ratio</option> |         <option value="ratio" {{"selected" if selected_column=="ratio" else ""}}>Aspect Ratio</option> | ||||||
|         <option value="bytes" {{"selected" if selected_column=="bytes" else ""}}>File size</option> |         <option value="bytes" {{"selected" if selected_column=="bytes" else ""}}>File size</option> | ||||||
|         <option value="duration" {{"selected" if selected_column=="duration" else ""}}>Duration</option> |         <option value="duration" {{"selected" if selected_column=="duration" else ""}}>Duration</option> | ||||||
|         <option value="bitrate" {{"selected" if selected_column=="((bytes / 128) / duration)" else ""}}>Bitrate</option> |         <option value="bitrate" {{"selected" if selected_column=="bitrate" else ""}}>Bitrate</option> | ||||||
|         <option value="tagged_at" {{"selected" if selected_column=="tagged_at" else ""}}>Recently tagged</option> |         <option value="tagged_at" {{"selected" if selected_column=="tagged_at" else ""}}>Recently tagged</option> | ||||||
|         <option value="random" {{"selected" if selected_column=="random" else ""}}>Random</option> |         <option value="random" {{"selected" if selected_column=="random" else ""}}>Random</option> | ||||||
|     </select> |     </select> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue