feat(org-chart): add core cards and fixed-layout integration
This commit is contained in:
1 parent
d18e3c3380
commit
61c6f8d1f1
161 files changed
+13044
-1
No files matched your search
@@ -0,0 +1,32 @@
|
||||
export function startDemo(api, inlineFixtures) {
|
||||
const { createOrgChart, JsonOrgChartDataSource } = api;
|
||||
const container = document.getElementById('chart-host');
|
||||
const status = document.getElementById('status');
|
||||
const stylesheetUrls = {
|
||||
engine: new URL('./assets/engine.css', location.href).href,
|
||||
core: new URL('./assets/style.css', location.href).href,
|
||||
};
|
||||
const source = () => new JsonOrgChartDataSource(inlineFixtures ? inlineFixtures.initial : './data-v1.json');
|
||||
let chart;
|
||||
function create() {
|
||||
chart?.destroy();
|
||||
chart = createOrgChart({ container, dataSource: source(), stylesheetUrls, onStateChange(state) {
|
||||
status.textContent = state.status === 'ready' ? `Ready · ${state.dataVersion}`
|
||||
: state.status === 'error' ? `Error · ${state.issues.map(issue => issue.code).join(', ')}` : state.status;
|
||||
} });
|
||||
return chart.mount();
|
||||
}
|
||||
async function update() {
|
||||
const data = inlineFixtures ? inlineFixtures.changed : await (await fetch('./data-v2.json')).json();
|
||||
await chart.update(data);
|
||||
}
|
||||
function destroy() { chart.destroy(); status.textContent = 'Destroyed · 새 인스턴스로 다시 생성할 수 있습니다.'; }
|
||||
const actions = { reload: () => chart.reload(), update, destroy, recreate: create };
|
||||
for (const [id, action] of Object.entries(actions)) document.getElementById(id).addEventListener('click', () => {
|
||||
Promise.resolve().then(action).catch(() => { status.textContent = 'Core 호출 순서를 확인하세요.'; });
|
||||
});
|
||||
window.addEventListener('pagehide', () => chart.destroy(), { once: true });
|
||||
// This example's inspection seam uses only public Core APIs, never engine internals.
|
||||
window.OrgChartDemo = { api, container, stylesheetUrls, source, create, update, destroy, get chart() { return chart; } };
|
||||
create().then(() => { window.orgChartReady = true; }).catch(() => { status.textContent = 'Mount failed'; });
|
||||
}
|
||||
Reference in new issue
Block a user