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({