From 856f6af722b3ce5587ab879b38ede2de6ba9ff23 Mon Sep 17 00:00:00 2001 From: Frostime Date: Sun, 22 Sep 2024 16:04:23 +0800 Subject: [PATCH] :art: Data snapshots support pagination navigation --- app/appearance/langs/en_US.json | 2 ++ app/appearance/langs/es_ES.json | 2 ++ app/appearance/langs/fr_FR.json | 2 ++ app/appearance/langs/ja_JP.json | 2 ++ app/appearance/langs/zh_CHT.json | 2 ++ app/appearance/langs/zh_CN.json | 2 ++ app/src/history/history.ts | 46 +++++++++++++++++++++++++++----- 7 files changed, 51 insertions(+), 7 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 6f2eb5c1f..5ebecf490 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,6 @@ { + "historyRepoJumpPage": "Jump to the specified page: 1 ~ ${x}", + "historyRepoTitle": "Total 1 pages, 1 snapshots", "visitCommunityShare": "Visit community share", "clearContextSucc": "The context has been cleared", "emptyMobilePlaceholder": "Record something", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 933603eb6..1ee46f784 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,6 @@ { + "historyRepoJumpPage": "Saltar a la página especificada: 1 ~ ${x}", + "historyRepoTitle": "Total 1 páginas, 1 instantáneas", "visitCommunityShare": "Visitar la comunidad compartida", "clearContextSucc": "Se ha borrado el contexto", "emptyMobilePlaceholder": "Grabar algo", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index e45a9d7f3..2a3ff7c2a 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,6 @@ { + "historyRepoJumpPage": "Aller à la page spécifiée : 1 ~ ${x}", + "historyRepoTitle": "Total de 1 pages, 1 instantanés", "visitCommunityShare": "Visiter le partage communautaire", "clearContextSucc": "Le contexte a été effacé", "emptyMobilePlaceholder": "Enregistrer quelque chose", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 1a7c4346d..2f74b62cd 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1,4 +1,6 @@ { + "historyRepoJumpPage": "指定されたページにジャンプ: 1 ~ ${x}", + "historyRepoTitle": "合計1ページ、1スナップショット", "visitCommunityShare": "コミュニティシェアを訪問", "clearContextSucc": "コンテキストがクリアされました", "emptyMobilePlaceholder": "何かを記録する", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 33074864e..03a011709 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,6 @@ { + "historyRepoJumpPage": "跳轉到指定頁: 1 ~ ${x}", + "historyRepoTitle": "共1頁, 1個快照", "visitCommunityShare": "訪問社區分享", "clearContextSucc": "上下文已清空", "emptyMobilePlaceholder": "記錄點什麼", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 1f523e809..846d1cb85 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,6 @@ { + "historyRepoJumpPage": "跳转到指定页: 1 ~ ${x}", + "historyRepoTitle": "共1页, 1个快照", "visitCommunityShare": "访问社区分享", "clearContextSucc": "上下文已清空", "emptyMobilePlaceholder": "记录点什么", diff --git a/app/src/history/history.ts b/app/src/history/history.ts index 92716f25c..3a89372fb 100644 --- a/app/src/history/history.ts +++ b/app/src/history/history.ts @@ -241,9 +241,14 @@ ${actionHTML} const renderRepo = (element: Element, currentPage: number) => { const selectValue = (element.querySelector(".b3-select") as HTMLSelectElement).value; element.lastElementChild.innerHTML = '
  • '; + const pageCount = element.querySelector(".history-repo__title span.count-page"); + const snapCount = element.querySelector(".history-repo__title span.count-snap"); + const pageBtn = element.querySelector('button[data-type="jumpPage"]'); + pageBtn.textContent = `${currentPage}`; + const previousElement = element.querySelector('[data-type="previous"]'); const nextElement = element.querySelector('[data-type="next"]'); - const pageElement = nextElement.nextElementSibling.nextElementSibling; + // const pageElement = nextElement.nextElementSibling.nextElementSibling; element.setAttribute("data-init", "true"); if (selectValue === "getRepoTagSnapshots" || selectValue === "getCloudRepoTagSnapshots") { fetchPost(`/api/repo/${selectValue}`, {}, (response) => { @@ -251,11 +256,15 @@ const renderRepo = (element: Element, currentPage: number) => { }); previousElement.classList.add("fn__none"); nextElement.classList.add("fn__none"); - pageElement.classList.add("fn__none"); + // pageElement.classList.add("fn__none"); + pageBtn.classList.add("fn__none"); + pageCount.parentElement?.classList.add("fn__none"); } else { previousElement.classList.remove("fn__none"); nextElement.classList.remove("fn__none"); - pageElement.classList.remove("fn__none"); + // pageElement.classList.remove("fn__none"); + pageBtn.classList.remove("fn__none"); + pageCount.parentElement?.classList.remove("fn__none"); element.setAttribute("data-page", currentPage.toString()); if (currentPage > 1) { previousElement.removeAttribute("disabled"); @@ -269,7 +278,9 @@ const renderRepo = (element: Element, currentPage: number) => { } else { nextElement.setAttribute("disabled", "disabled"); } - pageElement.textContent = `${currentPage}/${response.data.pageCount || 1}`; + // pageElement.textContent = `${currentPage}/${response.data.pageCount || 1}`; + pageCount.textContent = `${response.data.pageCount}`; + snapCount.textContent = `${response.data.totalCount}`; renderRepoItem(response, element, selectValue); }); } @@ -392,12 +403,14 @@ export const openHistory = (app: App) => {
    +
    + ${window.siyuan.languages.historyRepoTitle} +
    + - + - 1/1 -
    `, + (dialog: Dialog) => { + const inputElement = dialog.element.querySelector(".b3-text-field") as HTMLInputElement; + if (inputElement.value === "") { + return; + } + let page = parseInt(inputElement.value); + page = Math.max(1, Math.min(page, totalPage)); + renderRepo(repoElement, page); + } + ); } else if ((type === "docprevious" || type === "docnext") && target.getAttribute("disabled") !== "disabled") { const currentPage = parseInt(firstPanelElement.getAttribute("data-page")); renderDoc(firstPanelElement, type === "docprevious" ? currentPage - 1 : currentPage + 1);