forked from hummypkg/webif
Add sort by size
Implementing https://hummy.tv/forum/threads/webif-web-interface-1-4-x.7712/post-142116. The sort line is reorganised to allow for two more sort orders.
This commit is contained in:
parent
4b3efc2e72
commit
b824882eb2
@ -319,10 +319,39 @@ proc s_time {a b} {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
set files [readdir -nocomplain $dir]
|
set files [readdir -nocomplain $dir]
|
||||||
switch $order {
|
switch $order {
|
||||||
1 { set files [lsort -command s_time $files] }
|
1 { set files [lsort -command s_time $files] }
|
||||||
2 { set files [lreverse [lsort -command s_time $files]] }
|
2 { set files [lreverse [lsort -command s_time $files]] }
|
||||||
|
3 { set files [lsort -command s_size $files] }
|
||||||
|
4 { set files [lreverse [lsort -command s_size $files]] }
|
||||||
default { set files [lsort -nocase $files] }
|
default { set files [lsort -nocase $files] }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,19 +366,23 @@ Directories: $dircount, Files: $filecount
|
|||||||
|
|
||||||
# Sort icons
|
# Sort icons
|
||||||
puts "<div id=sortdiv>"
|
puts "<div id=sortdiv>"
|
||||||
set sortlist {{0 sort_name name} {1 sort_date date} {2 sort_date reverse-date}}
|
set sortlist {
|
||||||
|
{0 sort_name name}
|
||||||
|
{1 sort_date date} {2 sort_date reverse-date}
|
||||||
|
{3 sort_size size} {4 sort_size reverse-size}}
|
||||||
|
puts "
|
||||||
|
Sort by: "
|
||||||
foreach sl $sortlist {
|
foreach sl $sortlist {
|
||||||
lassign $sl index img descr
|
lassign $sl index img descr
|
||||||
|
|
||||||
if {$index} { puts " | " }
|
if {$index} { puts " | " }
|
||||||
|
|
||||||
set tag "Currently sorting"
|
set tag " (current)"
|
||||||
if {$order != $index} {
|
if {$order != $index} {
|
||||||
puts "
|
puts "<a href=\"$env(SCRIPT_NAME)?$env(QUERY_STRING)&order=$index\">"
|
||||||
<a href=\"$env(SCRIPT_NAME)?$env(QUERY_STRING)&order=$index\">"
|
set tag ""
|
||||||
set tag "Sort"
|
|
||||||
}
|
}
|
||||||
puts "<img class=va border=0 src=/img/$img.gif> $tag by $descr"
|
puts "<img class=va border=0 src=/img/$img.gif> $descr$tag"
|
||||||
if {$order != $index} {
|
if {$order != $index} {
|
||||||
puts "</a>"
|
puts "</a>"
|
||||||
}
|
}
|
||||||
@ -443,4 +476,3 @@ if {[llength $plugins(buttons)]} {
|
|||||||
puts "</div>"
|
puts "</div>"
|
||||||
|
|
||||||
footer
|
footer
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user