diff --git a/web/public/js/tdbms.js b/web/public/js/tdbms.js index ffdb8b1..c930f6c 100644 --- a/web/public/js/tdbms.js +++ b/web/public/js/tdbms.js @@ -26,10 +26,10 @@ if (shoppyou_mts != null) { shoppyou_mts = parseInt(shoppyou_mts); } if (sort_files == null) { - sort_files = "id"; + localStorage["sort_files"] = sort_files = "id"; } if (sort_tags == null) { - sort_tags = "id"; + localStorage["sort_tags"] = sort_tags = "id"; } function tdb_query(trdb, trc, trb) { @@ -70,10 +70,13 @@ function sasahyou_load() { throw new Error("Failed to get sasahyou"); } sasahyou = resp.data; - sasahyou_mts = db_info.data[0].sasahyou.mts; + localStorage["sasahyou_mts"] = sasahyou_mts = db_info.data[0].sasahyou.mts; localStorage["sasahyou"] = JSON.stringify(sasahyou); - localStorage["sasahyou_mts"] = sasahyou_mts; + if (sort_files[0] !== '!') { + sort_files = '!' + sort_files; + } } + sasahyou_sort(); } function sappyou_load() { @@ -89,10 +92,13 @@ function sappyou_load() { throw new Error("Failed to get sappyou"); } sappyou = resp.data; - sappyou_mts = db_info.data[0].sappyou.mts; + localStorage["sappyou_mts"] = sappyou_mts = db_info.data[0].sappyou.mts; localStorage["sappyou"] = JSON.stringify(sappyou); - localStorage["sappyou_mts"] = sappyou_mts; + if (sort_tags[0] !== '!') { + sort_tags = '!' + sort_tags; + } } + sappyou_sort(); } function shoppyou_load() { @@ -108,8 +114,80 @@ function shoppyou_load() { throw new Error("Failed to get shoppyou"); } shoppyou = resp.data; - shoppyou_mts = db_info.data[0].shoppyou.mts; + localStorage["shoppyou_mts"] = shoppyou_mts = db_info.data[0].shoppyou.mts; localStorage["shoppyou"] = JSON.stringify(shoppyou); - localStorage["shoppyou_mts"] = shoppyou_mts; } } + +function sasahyou_sort() { + if (sort_files[0] !== '!') { + return; + } + let sort = localStorage["sort_files"] = sort_files = sort_files.slice(1); + let order = 1; + if (sort[0] === '-') { + order = -1; + sort = sort.slice(1); + } + sasahyou.sort((lhs, rhs) => { + let l = lhs[sort], r = rhs[sort]; + if (l > r) { + return order; + } + if (l < r) { + return -order; + } + return 0; + }); +} + +function sappyou_sort() { + if (sort_tags[0] !== '!') { + return; + } + let sort = localStorage["sort_tags"] = sort_tags = sort_tags.slice(1); + let order = 1; + if (sort[0] === '-') { + order = -1; + sort = sort.slice(1); + } + if (sort === "nkazari") { + shoppyou_load(); + shoppyou.every(kazari => { + sappyou.every((tanzaku, index) => { + if (tanzaku.id === kazari.tanzaku_id) { + if (tanzaku.nkazari == null) { + sappyou[index].nkazari = 1; + } else { + sappyou[index].nkazari++; + } + return false; + } + return true; + }); + return true; + }); + sappyou.every((tanzaku, index) => { + if (tanzaku.nkazari == null) { + sappyou[index].nkazari = 0; + } + return true; + }); + } + sappyou.sort((lhs, rhs) => { + if (lhs.id === 0) { + return -1; + } + if (rhs.id === 0) { + return 1; + } + let l = lhs[sort], r = rhs[sort]; + if (l > r) { + return order; + } + if (l < r) { + return -order; + } + return 0; + }); +} diff --git a/web/public/js/tfm-settings.js b/web/public/js/tfm-settings.js index 18b5751..818e3a2 100644 --- a/web/public/js/tfm-settings.js +++ b/web/public/js/tfm-settings.js @@ -55,5 +55,13 @@ $(document).on("submit", "#settings", function (e) { return; } } + let sort_f = ($("#files-reverse")[0].checked ? '-' : '') + $("input[type=radio][name=sort-files]:checked").attr("id").slice(9); + let sort_t = ($("#tags-reverse")[0].checked ? '-' : '') + $("input[type=radio][name=sort-tags]:checked").attr("id").slice(8); + if (sort_f !== sort_files && '!' + sort_f !== sort_files) { + localStorage["sort_files"] = sort_files = '!' + sort_f; + } + if (sort_t !== sort_tags && '!' + sort_t !== sort_tags) { + localStorage["sort_tags"] = sort_tags = '!' + sort_t; + } alert("Successfully updated settings!"); }); diff --git a/web/public/tfm/settings.html b/web/public/tfm/settings.html index 6fb3297..78b6b69 100644 --- a/web/public/tfm/settings.html +++ b/web/public/tfm/settings.html @@ -74,8 +74,8 @@
- - + +