feat: 增加 ECharts 渲染与预览交互增强
- 新增可复用的 markdown-echarts 工作区,支持安全的 YAML 围栏、默认值、语义校验、错误占位和 SVG 渲染 - 将 ECharts 接入统一 Markdown、快速预览、精确预览与 PDF 链路,并复用 Mermaid 的不可跨页和超高图单页适配策略 - 默认示例加入 ECharts,增加源文本折叠、顶部文档状态、页码输入跳转与滚动同步 - 快速预览改用外层容器滚动,使滚动条与精确预览统一贴在预览区域右侧,并兼容显示缩放 - 完善 Docker 工作区复制、可配置 Compose 镜像、测试覆盖和进度文档
This commit is contained in:
@@ -369,6 +369,7 @@ describe("PDF API", () => {
|
||||
const generate = vi.fn(async () => ({
|
||||
pdf: Buffer.from("%PDF-test"),
|
||||
pageCount: 3,
|
||||
echartsErrors: ["图表 2"],
|
||||
mermaidErrors: ["图表 1"],
|
||||
timings: {
|
||||
queueMs: 0,
|
||||
@@ -377,6 +378,8 @@ describe("PDF API", () => {
|
||||
navigationMs: 3,
|
||||
documentRenderMs: 4,
|
||||
runtimeSetupMs: 0.1,
|
||||
echartsMs: 0.15,
|
||||
echartsFitMs: 0.18,
|
||||
mermaidMs: 0.2,
|
||||
mermaidFitMs: 0.3,
|
||||
mermaidConversionMs: 0.35,
|
||||
@@ -415,6 +418,7 @@ describe("PDF API", () => {
|
||||
"filename*=UTF-8''%E6%B5%8B%E8%AF%95%E6%96%87%E6%A1%A3.pdf"
|
||||
);
|
||||
expect(response.headers["x-pdf-page-count"]).toBe("3");
|
||||
expect(response.headers["x-echarts-error-count"]).toBe("1");
|
||||
expect(response.headers["x-mermaid-error-count"]).toBe("1");
|
||||
expect(response.headers["server-timing"]).toContain(
|
||||
"document-render;dur=4.0"
|
||||
@@ -422,6 +426,9 @@ describe("PDF API", () => {
|
||||
expect(response.headers["server-timing"]).toContain(
|
||||
"pdf-print;dur=5.0"
|
||||
);
|
||||
expect(response.headers["server-timing"]).toContain(
|
||||
"echarts;dur=0.1"
|
||||
);
|
||||
expect(response.headers["server-timing"]).toContain(
|
||||
"mermaid;dur=0.2"
|
||||
);
|
||||
|
||||
@@ -47,9 +47,12 @@ function fakeBrowser(
|
||||
waitForFunction: vi.fn(async () => undefined),
|
||||
evaluate: vi.fn(async () => ({
|
||||
pageCount: 2,
|
||||
echartsErrors: [],
|
||||
mermaidErrors: [],
|
||||
timings: {
|
||||
setupMs: 1,
|
||||
echartsMs: 1.5,
|
||||
echartsFitMs: 1.75,
|
||||
mermaidMs: 2,
|
||||
mermaidFitMs: 3,
|
||||
mermaidConversionMs: 3.5,
|
||||
@@ -191,6 +194,8 @@ describe("Playwright PDF 生成器", () => {
|
||||
navigationMs: expect.any(Number),
|
||||
documentRenderMs: expect.any(Number),
|
||||
runtimeSetupMs: 1,
|
||||
echartsMs: 1.5,
|
||||
echartsFitMs: 1.75,
|
||||
mermaidMs: 2,
|
||||
mermaidFitMs: 3,
|
||||
mermaidConversionMs: 3.5,
|
||||
|
||||
Reference in New Issue
Block a user