UNPKG

orgchart

Version:

Simple and direct organization chart(tree-like hierarchy) library based on pure DOM.

69 lines (65 loc) 2.62 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>OrgChart Pan and Zoom Demo</title> <link rel="icon" href="img/logo.png"> <link rel="stylesheet" href="css/orgchart.css"> <link rel="stylesheet" href="css/style.css"> <style type="text/css"> body { padding: 0.5rem; } .orgchart { background: white; } </style> </head> <body> <section class="demo-notes"> <h1>Pan and Zoom Demo</h1> <p>Mouse wheel zoom is anchored to the current mouse position inside the chart container, so the content under the pointer should stay under the pointer while zooming.</p> <p>Wheel input is ignored when the pointer is outside the chart container bounds. On touch devices, pinch zoom is anchored to the midpoint between the two fingers.</p> <p>Drag the chart to pan. Use mouse wheel or touch pinch to verify the zoom anchor behavior.</p> <p>If you want an overview navigator for the same interaction model, open <a href="minimap.html" target="_blank">the minimap demo</a> to move the main chart through the viewport rectangle in the lower-right corner.</p> </section> <div id="chart-container"></div> <script type="text/javascript" src="js/orgchart.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', () => { const datasource = { 'name': 'Lao Lao', 'title': 'general manager', 'children': [ { 'name': 'Bo Miao', 'title': 'department manager' }, { 'name': 'Su Miao', 'title': 'department manager', 'children': [ { 'name': 'Tie Hua', 'title': 'senior engineer' }, { 'name': 'Hei Hei', 'title': 'senior engineer', 'children': [ { 'name': 'Pang Pang', 'title': 'engineer' }, { 'name': 'Xiang Xiang', 'title': 'UE engineer' } ] } ] }, { 'name': 'Yu Jie', 'title': 'department manager' }, { 'name': 'Yu Li', 'title': 'department manager' }, { 'name': 'Hong Miao', 'title': 'department manager' }, { 'name': 'Yu Wei', 'title': 'department manager' }, { 'name': 'Chun Miao', 'title': 'department manager' }, { 'name': 'Yu Tie', 'title': 'department manager' } ] }; const oc = new OrgChart({ chartContainer: '#chart-container', 'data' : datasource, 'nodeContent': 'title', 'pan': true, 'zoom': true }); oc.chartContainer.addEventListener('touchmove', function(event) { event.preventDefault(); }, { passive: false }); }); </script> </body> </html>