<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script> <style> .zc-body { background: #f9f9f9; } .chart--container { height: 100%; width: 100%; min-height: 950px; } .zc-ref { display: none; } </style> </head> <body class="zc-body"> <!-- CHART CONTAINER --> <div id="myChart" class="chart--container"> <a class="zc-ref" href="https://www.zingchart.com/">Powered by ZingChart</a> </div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // DEFINE ALL CLASSES // Level 1 class User { constructor(username, email) { this.username = username; this.email = email; } login() { console.log(`${this.username} logged in.`); } } // Level 2 class Admin extends User { constructor(username, email) { super(username, email); } manageUsers() { console.log(`${this.username} is managing users.`); } } class Member extends User { constructor(username, email) { super(username, email); } accessContent() { console.log(`${this.username} is accessing content.`); } } // Level 3 class SuperAdmin extends Admin { constructor(username, email) { super(username, email); } manageSystem() { console.log(`${this.username} is managing the entire system.`); } } class Moderator extends Admin { constructor(username, email) { super(username, email); } moderateContent() { console.log(`${this.username} is moderating content.`); } } class RegularMember extends Member { constructor(username, email) { super(username, email); } comment() { console.log(`${this.username} is commenting on content.`); } } class PremiumMember extends Member { constructor(username, email) { super(username, email); } accessPremiumContent() { console.log(`${this.username} is accessing premium content.`); } } // Level 4 class GlobalSuperAdmin extends SuperAdmin { constructor(username, email) { super(username, email); } manageGlobalSystem() { console.log(`${this.username} is managing the global system.`); } } class ContentModerator extends Moderator { constructor(username, email) { super(username, email); } reviewReports() { console.log(`${this.username} is reviewing reports.`); } } class BasicMember extends RegularMember { constructor(username, email) { super(username, email); } viewContent() { console.log(`${this.username} is viewing content.`); } } class VIPMember extends PremiumMember { constructor(username, email) { super(username, email); } accessExclusiveContent() { console.log(`${this.username} is accessing exclusive content.`); } } // Get a list of all of the classes const classList = new Set(); classList.add(User); classList.add(Admin); classList.add(Member); classList.add(SuperAdmin); classList.add(Moderator); classList.add(RegularMember); classList.add(PremiumMember); classList.add(GlobalSuperAdmin); classList.add(ContentModerator); classList.add(BasicMember); classList.add(VIPMember); // Loop over the classes and define their parent relationships const chartData = Array.from(classList).map((className) => { return { type: 'node', id: className.name, name: className.name, parent: Object.getPrototypeOf(className).name }; }); let chartConfig = { type: 'tree', backgroundColor: '#f9f9f9', options: { aspect: 'tree-down', orgChart: true, packingFactor: 2, node: { height: '80px', width: '150px', borderColor: '#333333', borderWidth: '1px', shadow: true, shadowAlpha: 0.5, shadowDistance: '2px', label: { color: 'black', fontSize: '14px', }, hoverState: { visible: false, }, tooltip: { text: '<b>%text</b><br>%data-title', }, }, }, plotarea: { margin: '30px 40x 20x 40px', }, series: chartData, }; zingchart.render({ id: 'myChart', data: chartConfig, height: '100%', width: '100%', }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingSoft Demo</title> <script src="https://cdn.zingchart.com/zingchart.min.js"></script> </head> <body class="zc-body"> <!-- CHART CONTAINER --> <div id="myChart" class="chart--container"> <a class="zc-ref" href="https://www.zingchart.com/">Powered by ZingChart</a> </div> </body> </html>
.zc-body { background: #f9f9f9; } .chart--container { height: 100%; width: 100%; min-height: 950px; } .zc-ref { display: none; }
// DEFINE ALL CLASSES // Level 1 class User { constructor(username, email) { this.username = username; this.email = email; } login() { console.log(`${this.username} logged in.`); } } // Level 2 class Admin extends User { constructor(username, email) { super(username, email); } manageUsers() { console.log(`${this.username} is managing users.`); } } class Member extends User { constructor(username, email) { super(username, email); } accessContent() { console.log(`${this.username} is accessing content.`); } } // Level 3 class SuperAdmin extends Admin { constructor(username, email) { super(username, email); } manageSystem() { console.log(`${this.username} is managing the entire system.`); } } class Moderator extends Admin { constructor(username, email) { super(username, email); } moderateContent() { console.log(`${this.username} is moderating content.`); } } class RegularMember extends Member { constructor(username, email) { super(username, email); } comment() { console.log(`${this.username} is commenting on content.`); } } class PremiumMember extends Member { constructor(username, email) { super(username, email); } accessPremiumContent() { console.log(`${this.username} is accessing premium content.`); } } // Level 4 class GlobalSuperAdmin extends SuperAdmin { constructor(username, email) { super(username, email); } manageGlobalSystem() { console.log(`${this.username} is managing the global system.`); } } class ContentModerator extends Moderator { constructor(username, email) { super(username, email); } reviewReports() { console.log(`${this.username} is reviewing reports.`); } } class BasicMember extends RegularMember { constructor(username, email) { super(username, email); } viewContent() { console.log(`${this.username} is viewing content.`); } } class VIPMember extends PremiumMember { constructor(username, email) { super(username, email); } accessExclusiveContent() { console.log(`${this.username} is accessing exclusive content.`); } } // Get a list of all of the classes const classList = new Set(); classList.add(User); classList.add(Admin); classList.add(Member); classList.add(SuperAdmin); classList.add(Moderator); classList.add(RegularMember); classList.add(PremiumMember); classList.add(GlobalSuperAdmin); classList.add(ContentModerator); classList.add(BasicMember); classList.add(VIPMember); // Loop over the classes and define their parent relationships const chartData = Array.from(classList).map((className) => { return { type: 'node', id: className.name, name: className.name, parent: Object.getPrototypeOf(className).name }; }); let chartConfig = { type: 'tree', backgroundColor: '#f9f9f9', options: { aspect: 'tree-down', orgChart: true, packingFactor: 2, node: { height: '80px', width: '150px', borderColor: '#333333', borderWidth: '1px', shadow: true, shadowAlpha: 0.5, shadowDistance: '2px', label: { color: 'black', fontSize: '14px', }, hoverState: { visible: false, }, tooltip: { text: '<b>%text</b><br>%data-title', }, }, }, plotarea: { margin: '30px 40x 20x 40px', }, series: chartData, }; zingchart.render({ id: 'myChart', data: chartConfig, height: '100%', width: '100%', });