<!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%',
});