diff options
Diffstat (limited to 'public/assets/js/lib/views/stream')
| -rw-r--r-- | public/assets/js/lib/views/stream/hootstream.js | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/public/assets/js/lib/views/stream/hootstream.js b/public/assets/js/lib/views/stream/hootstream.js index d13ae0a..5718642 100644 --- a/public/assets/js/lib/views/stream/hootstream.js +++ b/public/assets/js/lib/views/stream/hootstream.js @@ -287,6 +287,7 @@ var HootStream = View.extend({ : filteredImages.slice(0, 6) ), this.renderFiles( + thread, isViewingThread || postedToday ? files : files.slice(0, 10) ), ...this.renderHoots({ @@ -339,15 +340,45 @@ var HootStream = View.extend({ return $table; }, - renderFiles: function (files) { + renderFiles: function (thread, files) { if (!files.length) { return null; } const $table = $("<div class='fileList'>"); - const sortedFiles = files - .map((file) => [file.filename.toLowerCase(), file]) - .sort((a, b) => a[0].localeCompare(b[0])) - .map(([, file]) => file); + let sortedFiles; + switch (thread.settings?.sort) { + case "name_asc": + sortedFiles = files + .map((file) => [file.filename.toLowerCase(), file]) + .sort((a, b) => a[0].localeCompare(b[0])) + .map(([, file]) => file); + break; + case "name_desc": + sortedFiles = files + .map((file) => [file.filename.toLowerCase(), file]) + .sort((a, b) => b[0].localeCompare(a[0])) + .map(([, file]) => file); + break; + case "date_asc": + sortedFiles = [...files].reverse(); + break; + default: + case "date_desc": + sortedFiles = files; + break; + case "size_asc": + sortedFiles = files + .map((file) => [file.size, file]) + .sort((a, b) => a[0] - b[0]) + .map(([, file]) => file); + break; + case "size_desc": + sortedFiles = files + .map((file) => [file.size, file]) + .sort((a, b) => b[0] - a[0]) + .map(([, file]) => file); + break; + } for (const file of sortedFiles) { const $el = this.renderFile(this.fileTemplate, file); $table.append($el); |
