Vanessa 2025-03-06 11:30:54 +08:00
parent 8b69979fba
commit a742bd49a6
2 changed files with 12 additions and 6 deletions

View File

@ -32,16 +32,20 @@ export const chartRender = (element: Element, cdn = Constants.PROTYLE_CDN) => {
} }
const renderElement = e.firstElementChild.nextElementSibling as HTMLElement; const renderElement = e.firstElementChild.nextElementSibling as HTMLElement;
try { try {
window.echarts.dispose(renderElement); const chartInstance = window.echarts.getInstanceById(renderElement.getAttribute("_echarts_instance_"))
const option = await looseJsonParse(Lute.UnEscapeHTMLStr(e.getAttribute("data-content")));
if (chartInstance && chartInstance.getOption().series[0]?.type !== option.series[0]?.type) {
chartInstance.clear();
}
renderElement.classList.remove("ft__error"); renderElement.classList.remove("ft__error");
renderElement.style.height = e.style.height; renderElement.style.height = e.style.height;
const option = await looseJsonParse(Lute.UnEscapeHTMLStr(e.getAttribute("data-content")));
window.echarts.init(renderElement, window.siyuan.config.appearance.mode === 1 ? "dark" : undefined, {width}).setOption(option); window.echarts.init(renderElement, window.siyuan.config.appearance.mode === 1 ? "dark" : undefined, {width}).setOption(option);
e.setAttribute("data-render", "true"); e.setAttribute("data-render", "true");
if (!renderElement.textContent.endsWith(Constants.ZWSP)) { if (!renderElement.textContent.endsWith(Constants.ZWSP)) {
renderElement.firstElementChild.insertAdjacentText("beforeend", Constants.ZWSP); renderElement.firstElementChild.insertAdjacentText("beforeend", Constants.ZWSP);
} }
} catch (error) { } catch (error) {
window.echarts.dispose(renderElement);
renderElement.classList.add("ft__error"); renderElement.classList.add("ft__error");
renderElement.innerHTML = `echarts render error: <br>${error}`; renderElement.innerHTML = `echarts render error: <br>${error}`;
} }

View File

@ -138,6 +138,8 @@ interface Window {
dispose(element: Element): void; dispose(element: Element): void;
getInstanceById(id: string): { getInstanceById(id: string): {
resize: () => void resize: () => void
clear: () => void
getOption: () => { series: { type: string }[] }
}; };
} }
ABCJS: { ABCJS: {
@ -180,10 +182,10 @@ interface Window {
siyuan: ISiyuan siyuan: ISiyuan
webkit: { webkit: {
messageHandlers: { messageHandlers: {
openLink:{postMessage: (url: string) => void} openLink: { postMessage: (url: string) => void }
startKernelFast:{postMessage: (url: string) => void} startKernelFast: { postMessage: (url: string) => void }
changeStatusBar:{postMessage: (url: string) => void} changeStatusBar: { postMessage: (url: string) => void }
setClipboard:{postMessage: (url: string) => void} setClipboard: { postMessage: (url: string) => void }
} }
} }
html2canvas: (element: Element, opitons: { html2canvas: (element: Element, opitons: {