WebClient: fix sorting by size

Fixes #1313

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino 2023-06-04 21:45:31 +02:00
parent 9ccdc3a597
commit f938af5a61
No known key found for this signature in database
GPG key ID: 935D2952DEC4EECF
5 changed files with 37 additions and 10 deletions

View file

@ -15242,7 +15242,7 @@ func TestWebGetFiles(t *testing.T) {
setJWTCookieForReq(req, webToken)
rr = executeRequest(req)
checkResponseCode(t, http.StatusOK, rr)
var dirContents []map[string]string
var dirContents []map[string]any
err = json.Unmarshal(rr.Body.Bytes(), &dirContents)
assert.NoError(t, err)
assert.Len(t, dirContents, 1)

View file

@ -759,18 +759,18 @@ func (s *httpdServer) handleShareGetDirContents(w http.ResponseWriter, r *http.R
sendAPIResponse(w, r, err, "Unable to get directory contents", getMappedStatusCode(err))
return
}
results := make([]map[string]string, 0, len(contents))
results := make([]map[string]any, 0, len(contents))
for _, info := range contents {
if !info.Mode().IsDir() && !info.Mode().IsRegular() {
continue
}
res := make(map[string]string)
res := make(map[string]any)
if info.IsDir() {
res["type"] = "1"
res["size"] = ""
} else {
res["type"] = "2"
res["size"] = util.ByteCountIEC(info.Size())
res["size"] = info.Size()
}
res["meta"] = fmt.Sprintf("%v_%v", res["type"], info.Name())
res["name"] = info.Name()
@ -882,9 +882,9 @@ func (s *httpdServer) handleClientGetDirContents(w http.ResponseWriter, r *http.
return
}
results := make([]map[string]string, 0, len(contents))
results := make([]map[string]any, 0, len(contents))
for _, info := range contents {
res := make(map[string]string)
res := make(map[string]any)
res["url"] = getFileObjectURL(name, info.Name(), webClientFilesPath)
if info.IsDir() {
res["type"] = "1"
@ -894,9 +894,9 @@ func (s *httpdServer) handleClientGetDirContents(w http.ResponseWriter, r *http.
if info.Mode()&os.ModeSymlink != 0 {
res["size"] = ""
} else {
res["size"] = util.ByteCountIEC(info.Size())
res["size"] = info.Size()
if info.Size() < httpdMaxEditFileSize {
res["edit_url"] = strings.Replace(res["url"], webClientFilesPath, webClientEditFilePath, 1)
res["edit_url"] = strings.Replace(res["url"].(string), webClientFilesPath, webClientEditFilePath, 1)
}
if len(s.binding.WebClientIntegrations) > 0 {
extension := path.Ext(info.Name())

View file

@ -258,6 +258,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
function UnicodeDecodeB64(str) {
return decodeURIComponent(atob(str));
}
function fileSizeIEC(a,b,c,d,e){
return (b=Math,c=b.log,d=1024,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(1)
+' '+(e?'KMGTPEZY'[--e]+'iB':'Bytes')
}
</script>
<!-- Page level plugins -->

View file

@ -1191,7 +1191,18 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
return data;
}
},
{ "data": "size" },
{
"data": "size",
"render": function (data, type, row) {
if (type === 'display') {
if (data){
return fileSizeIEC(data);
}
return "";
}
return data;
}
},
{ "data": "last_modified" },
{ "data": "edit_url",
"render": function (data, type, row) {

View file

@ -494,7 +494,18 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
return data;
}
},
{ "data": "size" },
{
"data": "size",
"render": function (data, type, row) {
if (type === 'display') {
if (data){
return fileSizeIEC(data);
}
return "";
}
return data;
}
},
{ "data": "last_modified" }
],
"buttons": [],