From 42cf8bf238f5408e82a07652f78ff29e661eb387 Mon Sep 17 00:00:00 2001 From: df Date: Tue, 16 Jun 2020 04:12:08 +0000 Subject: [PATCH] Add tooltips for sort orders Also generalise the file sort function to allow sorting by any quantity returned by `[file stat]` --- webif/html/browse/index.jim | 54 +++++++++++++------------------------ 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/webif/html/browse/index.jim b/webif/html/browse/index.jim index a1b60be3..d10aa01d 100755 --- a/webif/html/browse/index.jim +++ b/webif/html/browse/index.jim @@ -292,7 +292,7 @@ if {$parent ne ""} { " } -proc s_time {a b} { +proc s_file_stat {a b attr} { global dir set a "$dir/$a" @@ -310,40 +310,21 @@ proc s_time {a b} { } if {[catch {file stat $a l}]} { return 0} - set at $l(mtime) + set at $l($attr) if {[catch {file stat $b l}]} { return 0} - set bt $l(mtime) + set bt $l($attr) if {$at < $bt} { return -1 } if {$at > $bt} { return 1 } return 0 } +proc s_time {a b} { + tailcall s_file_stat $a $b mtime +} + proc s_size {a b} { - global dir - - set a "$dir/$a" - set b "$dir/$b" - - set ad [file isdirectory $a] - set bd [file isdirectory $b] - - if {$ad && !$bd} { return -1 } - if {$bd && !$ad} { return 1 } - if {$ad && $bd} { - if {$a < $b} { return -1 } - if {$a > $b} { return 1 } - return 0 - } - - if {[catch {file stat $a l}]} { return 0} - set as $l(size) - if {[catch {file stat $b l}]} { return 0} - set bs $l(size) - - if {$as < $bs} { return -1 } - if {$as > $bs} { return 1 } - return 0 + tailcall s_file_stat $a $b size } set files [readdir -nocomplain $dir] @@ -367,26 +348,27 @@ Directories: $dircount, Files: $filecount # Sort icons puts "
" set sortlist { - {0 sort_name name} - {1 sort_date date} {2 sort_date reverse-date} - {3 sort_size size} {4 sort_size reverse-size}} + {0 sort_name name {Alphabetical order A->Z}} + {1 sort_date date {Oldest first}} {2 sort_date reverse-date {Newest first}} + {3 sort_size size {Smallest first}} {4 sort_size reverse-size {Largest first}}} puts " Sort by: " foreach sl $sortlist { - lassign $sl index img descr + lassign $sl index img descr tt if {$index} { puts " | " } set tag " (current)" if {$order != $index} { set qs [regsub -all {&order=[[[:digit:]]+} $env(QUERY_STRING) ""] - puts "" + puts "" set tag "" + set ket "a" + } else { + puts "" + set ket "span" } - puts " $descr$tag" - if {$order != $index} { - puts "" - } + puts " $descr$tag" } puts "
"