diff --git a/app/src/card/makeCard.ts b/app/src/card/makeCard.ts index 84642a1af..d794c9038 100644 --- a/app/src/card/makeCard.ts +++ b/app/src/card/makeCard.ts @@ -33,23 +33,15 @@ export const genCardItem = (item: ICardPackage) => { `; }; -export const makeCard = (nodeElement: Element[]) => { +export const makeCard = (ids: string[]) => { window.siyuan.dialogs.find(item => { if (item.element.getAttribute("data-key") === "makeCard") { hideElements(["dialog"]); return true; } }); - const range = getEditorRange(nodeElement[0]); fetchPost("/api/riff/getRiffDecks", {}, (response) => { let html = ""; - const ids: string[] = []; - nodeElement.forEach(item => { - if (item.getAttribute("data-type") === "NodeThematicBreak") { - return; - } - ids.push(item.getAttribute("data-node-id")); - }); response.data.forEach((item: ICardPackage) => { html += genCardItem(item); }); @@ -69,9 +61,6 @@ export const makeCard = (nodeElement: Element[]) => {
`, - destroyCallback() { - focusByRange(range); - } }); dialog.element.setAttribute("data-key", "makeCard"); dialog.element.style.zIndex = "200"; diff --git a/app/src/card/openCard.ts b/app/src/card/openCard.ts index c21246183..a81edb677 100644 --- a/app/src/card/openCard.ts +++ b/app/src/card/openCard.ts @@ -4,8 +4,7 @@ import {isMobile} from "../util/functions"; import {Protyle} from "../protyle"; import {Constants} from "../constants"; import {disabledProtyle, onGet} from "../protyle/util/onGet"; -import {hasClosestByAttribute, hasClosestByClassName} from "../protyle/util/hasClosest"; -import {viewCards} from "./viewCards"; +import {hasClosestByClassName} from "../protyle/util/hasClosest"; import {hideElements} from "../protyle/ui/hideElements"; export const openCard = () => { @@ -35,10 +34,6 @@ export const openCardByData = (cardsData: ICard[], html = "") => { if (blocks.length > 0) { html += `
- - - -
1/${blocks.length}
`; } @@ -127,17 +122,6 @@ export const openCardByData = (cardsData: ICard[], html = "") => { const selectElement = dialog.element.querySelector("select"); const titleElement = countElement.previousElementSibling; dialog.element.addEventListener("click", (event) => { - const viewElement = hasClosestByAttribute(event.target as HTMLElement, "data-type", "view"); - if (viewElement) { - if (selectElement) { - viewCards(selectElement.value, selectElement.options[selectElement.selectedIndex].text); - } else { - viewCards(titleElement.getAttribute("data-id"), titleElement.textContent, undefined, true); - } - event.preventDefault(); - event.stopPropagation(); - return; - } let type = ""; if (typeof event.detail === "string") { if (event.detail === "1" || event.detail === "j") { @@ -204,9 +188,11 @@ export const openCardByData = (cardsData: ICard[], html = "") => { index++; editor.protyle.element.classList.add("card__block--hide"); if (index > blocks.length - 1) { - fetchPost(selectElement ? "/api/riff/getRiffDueCards" : "/api/riff/getTreeRiffDueCards", { + fetchPost(selectElement ? "/api/riff/getRiffDueCards" : + (titleElement.getAttribute("data-id") ? "/api/riff/getTreeRiffDueCards" : "/api/riff/getNotebookRiffDueCards"), { rootID: titleElement.getAttribute("data-id"), - deckID: selectElement?.value + deckID: selectElement?.value, + notebook: titleElement.getAttribute("data-notebookid"), }, (treeCards) => { index = 0; blocks = treeCards.data; diff --git a/app/src/menus/navigation.ts b/app/src/menus/navigation.ts index d95cd9cce..cb97f86df 100644 --- a/app/src/menus/navigation.ts +++ b/app/src/menus/navigation.ts @@ -28,6 +28,7 @@ import {Files} from "../layout/dock/Files"; import {openNewWindowById} from "../window/openNewWindow"; import {openCardByData} from "../card/openCard"; import {escapeHtml} from "../util/escape"; +import {makeCard} from "../card/makeCard"; const initMultiMenu = (selectItemElements: NodeListOf) => { const fileItemElement = Array.from(selectItemElements).find(item => { @@ -119,7 +120,7 @@ export const initNavigationMenu = (liElement: HTMLElement) => { iconHTML: '', click: () => { fetchPost("/api/riff/getNotebookRiffDueCards", {notebook: notebookId}, (response) => { - openCardByData(response.data, `${escapeHtml(name)}`); + openCardByData(response.data, `${escapeHtml(name)}`); }); } }).element); @@ -308,12 +309,21 @@ export const initFileMenu = (notebookId: string, pathString: string, liElement: }).element); window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.riffCard, - iconHTML: '', - click: () => { - fetchPost("/api/riff/getTreeRiffDueCards", {rootID: id}, (response) => { - openCardByData(response.data, `${escapeHtml(name)}`); - }); - } + type: "submenu", + icon: "iconRiffCard", + submenu: [{ + label: window.siyuan.languages.spaceRepetition, + click: () => { + fetchPost("/api/riff/getTreeRiffDueCards", {rootID: id}, (response) => { + openCardByData(response.data, `${escapeHtml(name)}`); + }); + } + }, { + label: window.siyuan.languages.addToDeck, + click: () => { + makeCard([id]); + } + }], }).element); /// #if !MOBILE window.siyuan.menus.menu.append(new MenuItem({ diff --git a/app/src/menus/workspace.ts b/app/src/menus/workspace.ts index 9fbfaa9fd..16a179dc9 100644 --- a/app/src/menus/workspace.ts +++ b/app/src/menus/workspace.ts @@ -135,8 +135,8 @@ export const workspaceMenu = (rect: DOMRect) => { }).element); } window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.riffCard, - iconHTML: '', + label: window.siyuan.languages.spaceRepetition, + icon: "iconRiffCard", accelerator: window.siyuan.config.keymap.general.riffCard.custom, click: () => { openCard(); diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index f60873df9..02075fbfb 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -677,7 +677,14 @@ export class Gutter { label: window.siyuan.languages.addToDeck, icon: "iconRiffCard", click() { - makeCard(selectsElement); + const ids: string[] = []; + selectsElement.forEach(item => { + if (item.getAttribute("data-type") === "NodeThematicBreak") { + return; + } + ids.push(item.getAttribute("data-node-id")); + }); + makeCard(ids); } }).element); return window.siyuan.menus.menu; @@ -1450,7 +1457,7 @@ export class Gutter { label: window.siyuan.languages.addToDeck, icon: "iconRiffCard", click() { - makeCard([nodeElement]); + makeCard([nodeElement.getAttribute("data-node-id")]); } }).element); window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); diff --git a/app/src/protyle/header/Title.ts b/app/src/protyle/header/Title.ts index 31751ecb0..1c26711e2 100644 --- a/app/src/protyle/header/Title.ts +++ b/app/src/protyle/header/Title.ts @@ -364,28 +364,30 @@ export class Title { }).element); window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.riffCard, - iconHTML: '', - click: () => { - fetchPost("/api/riff/getTreeRiffDueCards", {rootID: protyle.block.rootID}, (response) => { - openCardByData(response.data, `${escapeHtml(this.editElement.textContent)}`); - }); - } - }).element); - window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.quickMakeCard, - accelerator: window.siyuan.config.keymap.editor.general.quickMakeCard.custom, - iconHTML: '', + type: "submenu", icon: "iconRiffCard", - click: () => { - quickMakeCard([this.element]); - } - }).element); - window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.addToDeck, - icon: "iconRiffCard", - click: () => { - makeCard([this.element]); - } + submenu: [{ + iconHTML: Constants.ZWSP, + label: window.siyuan.languages.spaceRepetition, + click: () => { + fetchPost("/api/riff/getTreeRiffDueCards", {rootID: protyle.block.rootID}, (response) => { + openCardByData(response.data, `${escapeHtml(this.editElement.textContent)}`); + }); + } + }, { + iconHTML: Constants.ZWSP, + label: window.siyuan.languages.quickMakeCard, + accelerator: window.siyuan.config.keymap.editor.general.quickMakeCard.custom, + click: () => { + quickMakeCard([this.element]); + } + }, { + iconHTML: Constants.ZWSP, + label: window.siyuan.languages.addToDeck, + click: () => { + makeCard([protyle.block.rootID]); + } + }], }).element); window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({