import * as React from 'react'; import * as ReactDOM from 'react-dom'; import { Workspace, WorkspaceProps, DemoDataProvider, ToolbarProps } from '../src/ontodia/index'; import { onPageLoad, tryLoadLayoutFromLocalStorage, saveLayoutToLocalStorage } from './common'; const CLASSES = require('./resources/classes.json'); const LINK_TYPES = require('./resources/linkTypes.json'); const ELEMENTS = require('./resources/elements.json'); const LINKS = require('./resources/links.json'); export interface Props extends ToolbarProps { onExampleClick?: () => void; } const CLASS_NAME = 'ontodia-toolbar'; export class Toolbar extends React.Component { render() { return (
); } } function onWorkspaceMounted(workspace: Workspace) { if (!workspace) { return; } const model = workspace.getModel(); const diagram = tryLoadLayoutFromLocalStorage(); model.importLayout({ dataProvider: new DemoDataProvider(CLASSES, LINK_TYPES, ELEMENTS, LINKS), diagram, validateLinks: true, }); } const props: WorkspaceProps & React.ClassAttributes = { ref: onWorkspaceMounted, onSaveDiagram: workspace => { const diagram = workspace.getModel().exportLayout(); window.location.hash = saveLayoutToLocalStorage(diagram); window.location.reload(); }, toolbar: { alert('Example button have been pressed!'); }}/>, }; onPageLoad(container => ReactDOM.render(React.createElement(Workspace, props), container));