UNPKG

orgchart

Version:

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

78 lines (75 loc) 2.54 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>OrgChart Ajax Datasource 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"> .spinner { line-height: 420px; } .spinner::before { width: 72px; height: 72px; border-radius: 36px; } </style> </head> <body> <section class="demo-notes"> <h1>Ajax Datasource Demo</h1> <p>This demo loads chart data asynchronously and initializes the org chart after the ajax-style request flow completes.</p> </section> <div id="chart-container"></div> <script type="text/javascript" src="js/orgchart.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', () => { const chartContainer = document.getElementById('chart-container'); const spinner = document.createElement('i'); const initData = { '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 requestInitData = () => new Promise((resolve) => { setTimeout(() => resolve(initData), 1000); }); spinner.className = 'oci oci-spinner spinner'; chartContainer.appendChild(spinner); requestInitData() .then((data) => { const oc = new OrgChart({ chartContainer: '#chart-container', 'data': data, 'nodeContent': 'title' }); return oc; }) .finally(() => { spinner.remove(); }); }); </script> </body> </html>