feat(admin): rebuild page display settings
This commit is contained in:
@@ -21,9 +21,8 @@
|
||||
var state = {
|
||||
filter_cat: "",
|
||||
filter_tag: "",
|
||||
sort: "latest",
|
||||
page: 1,
|
||||
cf: {}
|
||||
sort: "date",
|
||||
page: 1
|
||||
};
|
||||
|
||||
var activeCat = bar.querySelector("[data-filter-cat].is-active");
|
||||
@@ -31,12 +30,7 @@
|
||||
var activeTag = bar.querySelector("[data-filter-tag].is-active");
|
||||
if (activeTag) state.filter_tag = activeTag.dataset.filterTag || "";
|
||||
var activeSort = bar.querySelector("[data-filter-sort].is-active");
|
||||
if (activeSort) state.sort = activeSort.dataset.filterSort || "latest";
|
||||
bar.querySelectorAll("[data-filter-cf].is-active").forEach(function (el) {
|
||||
var dimKey = el.dataset.filterCf || "";
|
||||
var dimVal = el.dataset.filterCfVal || "";
|
||||
if (dimKey) state.cf[dimKey] = dimVal;
|
||||
});
|
||||
if (activeSort) state.sort = activeSort.dataset.filterSort || "date";
|
||||
|
||||
function buildUrl() {
|
||||
var params = new URLSearchParams();
|
||||
@@ -45,20 +39,8 @@
|
||||
if (state.filter_cat) params.set("filter_cat", state.filter_cat);
|
||||
if (state.filter_tag) params.set("filter_tag", state.filter_tag);
|
||||
|
||||
var sortMap = { oldest: { orderby: "date", order: "ASC" }, popular: { orderby: "comment_count", order: "DESC" } };
|
||||
var s = sortMap[state.sort];
|
||||
params.set("sort", s ? s.orderby : "date");
|
||||
params.set("order", s ? s.order : "DESC");
|
||||
params.set("sort", state.sort || "date");
|
||||
params.set("page", String(state.page));
|
||||
var cfActive = {};
|
||||
var hasCf = false;
|
||||
for (var cfK in state.cf) {
|
||||
if (state.cf[cfK]) {
|
||||
cfActive[cfK] = state.cf[cfK];
|
||||
hasCf = true;
|
||||
}
|
||||
}
|
||||
if (hasCf) params.set("custom_filters", JSON.stringify(cfActive));
|
||||
return REST_BASE + "?" + params.toString();
|
||||
}
|
||||
|
||||
@@ -70,13 +52,7 @@
|
||||
el.classList.toggle("is-active", (el.dataset.filterTag || "") === state.filter_tag);
|
||||
});
|
||||
bar.querySelectorAll("[data-filter-sort]").forEach(function (el) {
|
||||
el.classList.toggle("is-active", (el.dataset.filterSort || "latest") === state.sort);
|
||||
});
|
||||
bar.querySelectorAll("[data-filter-cf]").forEach(function (el) {
|
||||
var dimKey = el.dataset.filterCf || "";
|
||||
var dimVal = el.dataset.filterCfVal || "";
|
||||
var isActive = dimKey && (state.cf[dimKey] || "") === dimVal;
|
||||
el.classList.toggle("is-active", isActive);
|
||||
el.classList.toggle("is-active", (el.dataset.filterSort || "date") === state.sort);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -131,21 +107,9 @@
|
||||
url.searchParams.delete("paged");
|
||||
url.searchParams.delete("aksrt_filter_cat");
|
||||
url.searchParams.delete("aksrt_filter_tag");
|
||||
url.searchParams.forEach(function (v, k) {
|
||||
if (k.indexOf("aksrt_cf_") === 0) url.searchParams.delete(k);
|
||||
});
|
||||
if (state.filter_cat) url.searchParams.set("aksrt_filter_cat", state.filter_cat);
|
||||
if (state.filter_tag) url.searchParams.set("aksrt_filter_tag", state.filter_tag);
|
||||
for (var cfK2 in state.cf) {
|
||||
if (state.cf[cfK2]) url.searchParams.set("aksrt_cf_" + cfK2, state.cf[cfK2]);
|
||||
}
|
||||
if (state.sort === "oldest") {
|
||||
url.searchParams.set("orderby", "date");
|
||||
url.searchParams.set("order", "asc");
|
||||
} else if (state.sort === "popular") {
|
||||
url.searchParams.set("orderby", "comment_count");
|
||||
url.searchParams.set("order", "desc");
|
||||
}
|
||||
if (state.sort) url.searchParams.set("orderby", state.sort);
|
||||
if (state.page > 1) url.searchParams.set("paged", String(state.page));
|
||||
history.pushState({ aksrtArchive: true, state: Object.assign({}, state) }, "", url.toString());
|
||||
}
|
||||
@@ -156,7 +120,7 @@
|
||||
}
|
||||
|
||||
bar.addEventListener("click", function (e) {
|
||||
var chip = e.target.closest("[data-filter-cat], [data-filter-tag], [data-filter-sort], [data-filter-cf]");
|
||||
var chip = e.target.closest("[data-filter-cat], [data-filter-tag], [data-filter-sort]");
|
||||
if (!chip) return;
|
||||
e.preventDefault();
|
||||
|
||||
@@ -176,20 +140,12 @@
|
||||
}
|
||||
}
|
||||
if (chip.dataset.filterSort !== undefined) {
|
||||
var newSort = chip.dataset.filterSort || "latest";
|
||||
var newSort = chip.dataset.filterSort || "date";
|
||||
if (newSort !== state.sort) {
|
||||
state.sort = newSort;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
if (chip.dataset.filterCf !== undefined) {
|
||||
var cfKey = chip.dataset.filterCf;
|
||||
var cfVal = chip.dataset.filterCfVal || "";
|
||||
if ((state.cf[cfKey] || "") !== cfVal) {
|
||||
state.cf[cfKey] = cfVal;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
state.page = 1;
|
||||
|
||||
Reference in New Issue
Block a user