From 12f20e74c21fb02d92c73286d73c58ae0b5d5fe0 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Tue, 31 Oct 2023 20:03:42 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/9561 --- app/src/card/newCardTab.ts | 40 ++++++++++++++++++++++++++++---------- app/src/card/openCard.ts | 9 ++++++++- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/app/src/card/newCardTab.ts b/app/src/card/newCardTab.ts index 135dfaeb7..0bbddec9a 100644 --- a/app/src/card/newCardTab.ts +++ b/app/src/card/newCardTab.ts @@ -22,16 +22,11 @@ export const newCardModel = (options: { tab: options.tab, data: options.data, init() { - fetchPost(this.data.cardType === "all" ? "/api/riff/getRiffDueCards" : - (this.data.cardType === "doc" ? "/api/riff/getTreeRiffDueCards" : "/api/riff/getNotebookRiffDueCards"), { - rootID: this.data.id, - deckID: this.data.id, - notebook: this.data.id, - }, (response) => { + if (options.data.blocks) { this.element.innerHTML = genCardHTML({ id: this.data.id, cardType: this.data.cardType, - blocks: response.data.cards, + blocks: options.data.blocks, isTab: true, }); @@ -41,10 +36,35 @@ export const newCardModel = (options: { id: this.data.id, title: this.data.title, cardType: this.data.cardType, - blocks: response.data.cards, + blocks: options.data.blocks, + index: options.data.index, }); - customObj.data.editor = editor; - }); + this.data.editor = editor; + } else { + fetchPost(this.data.cardType === "all" ? "/api/riff/getRiffDueCards" : + (this.data.cardType === "doc" ? "/api/riff/getTreeRiffDueCards" : "/api/riff/getNotebookRiffDueCards"), { + rootID: this.data.id, + deckID: this.data.id, + notebook: this.data.id, + }, (response) => { + this.element.innerHTML = genCardHTML({ + id: this.data.id, + cardType: this.data.cardType, + blocks: response.data.cards, + isTab: true, + }); + + editor = bindCardEvent({ + app: options.app, + element: this.element, + id: this.data.id, + title: this.data.title, + cardType: this.data.cardType, + blocks: response.data.cards, + }); + customObj.data.editor = editor; + }); + } }, destroy() { if (editor) { diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts index acad48c4d..9e328e365 100644 --- a/app/src/card/openCard.ts +++ b/app/src/card/openCard.ts @@ -123,12 +123,16 @@ export const bindCardEvent = (options: { cardType: TCardType, id?: string, dialog?: Dialog, + index?: number }) => { if (window.siyuan.storage[Constants.LOCAL_FLASHCARD].fullscreen) { fullscreen(options.element.querySelector(".card__main"), options.element.querySelector('[data-type="fullscreen"]')); } let index = 0; + if (typeof options.index === "number") { + index = options.index + } const editor = new Protyle(options.app, options.element.querySelector("[data-type='render']") as HTMLElement, { blockId: "", action: [Constants.CB_GET_ALL], @@ -158,6 +162,7 @@ export const bindCardEvent = (options: { } options.element.setAttribute("data-key", window.siyuan.config.keymap.general.riffCard.custom); const countElement = options.element.querySelector('[data-type="count"]'); + countElement.innerHTML = `${options.index + 1}/${options.blocks.length}`; const actionElements = options.element.querySelectorAll(".card__action"); const filterElement = options.element.querySelector('[data-type="filter"]'); const fetchNewRound = () => { @@ -210,7 +215,7 @@ export const bindCardEvent = (options: { options.element.querySelector('[data-type="fullscreen"]')); resize(editor.protyle); window.siyuan.storage[Constants.LOCAL_FLASHCARD].fullscreen = !window.siyuan.storage[Constants.LOCAL_FLASHCARD].fullscreen; - setStorageVal(Constants.LOCAL_FLASHCARD, window.siyuan.storage[Constants.LOCAL_FLASHCARD]); + setStorageVal(Constants.LOCAL_FLASHCARD, window.siyuan.storage[Constants.LOCAL_FLASHCARD]); event.stopPropagation(); event.preventDefault(); return; @@ -225,6 +230,8 @@ export const bindCardEvent = (options: { icon: "iconRiffCard", title: window.siyuan.languages.spaceRepetition, data: { + blocks: options.blocks, + index, cardType: filterElement.getAttribute("data-cardtype") as TCardType, id: filterElement.getAttribute("data-id"), title: options.title