diff --git a/app/src/business/openRecentDocs.ts b/app/src/business/openRecentDocs.ts index 06d6ec81f..894ea04a5 100644 --- a/app/src/business/openRecentDocs.ts +++ b/app/src/business/openRecentDocs.ts @@ -10,17 +10,25 @@ import {focusByRange} from "../protyle/util/selection"; import {hasClosestByClassName} from "../protyle/util/hasClosest"; import {hideElements} from "../protyle/ui/hideElements"; -const getHTML = async (data: { rootID: string, icon: string, title: string, viewedAt?: number, closedAt?: number, openAt?: number, updated?: number }[], element: Element, key?: string, sortBy: "viewedAt" | "closedAt" | "openAt" | "updated" = "viewedAt") => { +const getHTML = async (data: { + rootID: string, + icon: string, + title: string, + viewedAt?: number, + closedAt?: number, + openAt?: number, + updated?: number +}[], element: Element, key?: string, sortBy: TRecentDocsSort = "viewedAt") => { let tabHtml = ""; let index = 0; - + // 根据排序字段对数据进行排序 const sortedData = [...data].sort((a, b) => { const aValue = a[sortBy] || 0; const bValue = b[sortBy] || 0; return bValue - aValue; // 降序排序 }); - + sortedData.forEach((item) => { if (!key || item.title.toLowerCase().includes(key.toLowerCase())) { tabHtml += `
  • @@ -99,12 +107,13 @@ export const openRecentDocs = () => { -
    - + + + +
    `, @@ -122,13 +131,13 @@ export const openRecentDocs = () => { const searchElement = dialog.element.querySelector("input"); searchElement.focus(); searchElement.addEventListener("compositionend", () => { - getHTML(response.data, dialog.element, searchElement.value, sortSelect.value as "viewedAt" | "closedAt" | "openAt" | "updated"); + getHTML(response.data, dialog.element, searchElement.value, sortSelect.value as TRecentDocsSort); }); searchElement.addEventListener("input", (event: InputEvent) => { if (event.isComposing) { return; } - getHTML(response.data, dialog.element, searchElement.value, sortSelect.value as "viewedAt" | "closedAt" | "openAt" | "updated"); + getHTML(response.data, dialog.element, searchElement.value, sortSelect.value as TRecentDocsSort); }); dialog.element.setAttribute("data-key", Constants.DIALOG_RECENTDOCS); dialog.element.addEventListener("click", (event) => { @@ -141,7 +150,7 @@ export const openRecentDocs = () => { event.preventDefault(); } }); - + // 添加排序下拉框事件监听 const sortSelect = dialog.element.querySelector("#recentDocsSort") as HTMLSelectElement; sortSelect.addEventListener("change", () => { @@ -165,7 +174,7 @@ export const openRecentDocs = () => { } return { rootID: block.id, - icon: icon, + icon, title: block.content, updated: block.updated }; @@ -175,11 +184,11 @@ export const openRecentDocs = () => { }); } else { fetchPost("/api/storage/getRecentDocs", {sortBy: sortSelect.value}, (newResponse) => { - getHTML(newResponse.data, dialog.element, searchElement.value, sortSelect.value as "viewedAt" | "closedAt" | "openAt"); + getHTML(newResponse.data, dialog.element, searchElement.value, sortSelect.value as TRecentDocsSort); }); } }); - + getHTML(response.data, dialog.element); }); }; diff --git a/app/src/layout/util.ts b/app/src/layout/util.ts index 06eccdbeb..bb2e169c1 100644 --- a/app/src/layout/util.ts +++ b/app/src/layout/util.ts @@ -723,6 +723,7 @@ export const resizeTopBar = () => { }); }; +// TODO: 需支持所有页签类型,避免其他类型页签没有使用到而加载 export const newModelByInitData = (app: App, tab: Tab, json: any) => { let model: Model; if (json.instance === "Custom") { diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 4b05128a1..873184b8c 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -126,6 +126,8 @@ type TAVFilterOperator = | "Is true" | "Is false" +type TRecentDocsSort = "viewedAt" | "closedAt" | "openAt" | "updated" + declare module "blueimp-md5" declare class Highlight {