feat: support mermorycard view

This commit is contained in:
liufree 2025-10-15 00:59:11 +08:00
parent 09c4103a0b
commit 6da33cda7e

View file

@ -1,9 +1,10 @@
import {BasesView, MarkdownRenderer, QueryController, TFile,Component} from 'obsidian';
import {BasesView, MarkdownRenderer, QueryController, TFile, Component} from 'obsidian';
import React, {useEffect, useRef, useState} from 'react';
import {createRoot} from 'react-dom/client';
import {Button, Space, Card, Modal, notification} from 'antd';
import dayjs from 'dayjs';
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
dayjs.extend(isSameOrBefore);
export const MemoryCardViewType = 'dash-memory-card-view';
@ -24,19 +25,21 @@ export class DashMemoryCardView extends BasesView {
const allCards = this.data.data;
// 按 sr-due 升序排序
this.sortedCards = [...allCards]
.map(card => ({card, due: card.getValue('properties.sr-due')}))
.map(function (card) {
return {card, due: card.getValue('note.sr-due')};
})
.sort((a, b) => {
if (!a.due && !b.due) return 0;
if (!a.due) return 1;
if (!b.due) return -1;
return dayjs(a.due).valueOf() - dayjs(b.due).valueOf();
return dayjs(a.due).isSameOrBefore(b.due) ? -1 : 1;
})
.map(item => item.card);
// 找到 sr-due 最近的卡片
let idx = 0;
const now = dayjs();
for (let i = 0; i < this.sortedCards.length; i++) {
const due = this.sortedCards[i].getValue('properties.sr-due');
const due = this.sortedCards[i].getValue('note.sr-due');
if (due && dayjs(due).isSameOrBefore(now, 'day')) {
idx = i;
break;
@ -159,7 +162,17 @@ const updateSRFrontmatter = async (
return false;
};
const MemoryCard: React.FC<MemoryCardProps> = ({markdown, app, filePath, title, frontmatter, onPrev, onNext, isPrevDisabled, isNextDisabled}) => {
const MemoryCard: React.FC<MemoryCardProps> = ({
markdown,
app,
filePath,
title,
frontmatter,
onPrev,
onNext,
isPrevDisabled,
isNextDisabled
}) => {
const mdRef = useRef<HTMLDivElement>(null);
const [rendered, setRendered] = useState(false);
const [fm, setFM] = useState(frontmatter);