Skip to content

Commit a2a4b7f

Browse files
committed
Improve spaced repetition interface
fix #10331
1 parent 0b43b46 commit a2a4b7f

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

app/src/card/newCardTab.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Tab} from "../layout/Tab";
22
import {Custom} from "../layout/dock/Custom";
3-
import {bindCardEvent, genCardHTML} from "./openCard";
3+
import {bindCardEvent, genCardHTML, initCardComponent} from "./openCard";
44
import {fetchPost} from "../util/fetch";
55
import {Protyle} from "../protyle";
66
import {setPanelFocus} from "../layout/util";
@@ -37,23 +37,30 @@ export const newCardModel = (options: {
3737
});
3838
};
3939

40-
const renderCardsAndBindEvents = async (element: HTMLElement, data: any, cardsData: ICardData, index?: number) => {
40+
const renderCardsAndBindEvents = async (element: HTMLElement, data: any, cardsData: ICardData, index?: number, isUpdate?: boolean) => {
4141
element.innerHTML = genCardHTML({
4242
id: data.id,
4343
cardType: data.cardType,
4444
cardsData,
4545
isTab: true,
4646
});
4747

48-
editor = await bindCardEvent({
48+
const cardOptions = {
4949
app: options.app,
5050
element: element,
5151
id: data.id,
5252
title: data.title,
5353
cardType: data.cardType,
5454
cardsData,
5555
index,
56-
});
56+
};
57+
58+
if (isUpdate) {
59+
const initResult = await initCardComponent(cardOptions);
60+
editor = initResult.editor;
61+
} else {
62+
editor = await bindCardEvent(cardOptions);
63+
}
5764

5865
customObj.editors.push(editor);
5966
};
@@ -91,7 +98,7 @@ export const newCardModel = (options: {
9198
},
9299
async update() {
93100
const cardsData = await fetchCardsData();
94-
await renderCardsAndBindEvents(this.element, this.data, cardsData);
101+
await renderCardsAndBindEvents(this.element, this.data, cardsData ,undefined, true);
95102
}
96103
});
97104
customObj.element.addEventListener("click", () => {

app/src/card/openCard.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ const getEditor = (id: string, protyle: IProtyle, element: Element, currentCard:
227227

228228
};
229229

230-
export const bindCardEvent = async (options: {
230+
export const initCardComponent = async (options: {
231231
app: App,
232232
element: Element,
233233
title?: string,
@@ -303,6 +303,33 @@ export const bindCardEvent = async (options: {
303303
};
304304

305305
countElement.innerHTML = genCardCount(options.cardsData, index);
306+
307+
return {
308+
editor,
309+
index,
310+
actionElements,
311+
countElement,
312+
filterElement,
313+
fetchNewRound
314+
};
315+
};
316+
317+
export const bindCardEvent = async (options: {
318+
app: App,
319+
element: Element,
320+
title?: string,
321+
cardsData: ICardData
322+
cardType: TCardType,
323+
id?: string,
324+
dialog?: Dialog,
325+
index?: number
326+
}) => {
327+
// 初始化卡片组件
328+
const initResult = await initCardComponent(options);
329+
const { editor, actionElements, countElement, filterElement, fetchNewRound } = initResult;
330+
let index = initResult.index;
331+
332+
// 绑定点击事件
306333
options.element.addEventListener("click", (event: MouseEvent) => {
307334
const target = event.target as HTMLElement;
308335
let type = "";

0 commit comments

Comments
 (0)