feat(web): add sorting sasa and tanzaku

This commit is contained in:
Masahiko AMANO 2023-02-12 15:35:52 +03:00
parent e72d371ff1
commit e8e32c70f0
3 changed files with 96 additions and 10 deletions

View File

@ -26,10 +26,10 @@ if (shoppyou_mts != null) {
shoppyou_mts = parseInt(shoppyou_mts); shoppyou_mts = parseInt(shoppyou_mts);
} }
if (sort_files == null) { if (sort_files == null) {
sort_files = "id"; localStorage["sort_files"] = sort_files = "id";
} }
if (sort_tags == null) { if (sort_tags == null) {
sort_tags = "id"; localStorage["sort_tags"] = sort_tags = "id";
} }
function tdb_query(trdb, trc, trb) { function tdb_query(trdb, trc, trb) {
@ -70,10 +70,13 @@ function sasahyou_load() {
throw new Error("Failed to get sasahyou"); throw new Error("Failed to get sasahyou");
} }
sasahyou = resp.data; 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"] = JSON.stringify(sasahyou);
localStorage["sasahyou_mts"] = sasahyou_mts; if (sort_files[0] !== '!') {
sort_files = '!' + sort_files;
}
} }
sasahyou_sort();
} }
function sappyou_load() { function sappyou_load() {
@ -89,10 +92,13 @@ function sappyou_load() {
throw new Error("Failed to get sappyou"); throw new Error("Failed to get sappyou");
} }
sappyou = resp.data; 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"] = JSON.stringify(sappyou);
localStorage["sappyou_mts"] = sappyou_mts; if (sort_tags[0] !== '!') {
sort_tags = '!' + sort_tags;
}
} }
sappyou_sort();
} }
function shoppyou_load() { function shoppyou_load() {
@ -108,8 +114,80 @@ function shoppyou_load() {
throw new Error("Failed to get shoppyou"); throw new Error("Failed to get shoppyou");
} }
shoppyou = resp.data; 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"] = 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;
});
}

View File

@ -55,5 +55,13 @@ $(document).on("submit", "#settings", function (e) {
return; 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!"); alert("Successfully updated settings!");
}); });

View File

@ -74,8 +74,8 @@
<label for="tags-by-name">By name</label> <label for="tags-by-name">By name</label>
</div> </div>
<div class="form-check"> <div class="form-check">
<input type="radio" name="sort-tags" id="tags-by-nfiles"> <input type="radio" name="sort-tags" id="tags-by-nkazari">
<label for="tags-by-nfiles">By kazari count</label> <label for="tags-by-nkazari">By kazari count</label>
</div> </div>
</fieldset> </fieldset>
</td> </td>