|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<meta charset="utf-8"/> |
|
<script |
|
src="https://code.jquery.com/jquery-3.2.1.min.js" |
|
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" |
|
crossorigin="anonymous"></script> |
|
<meta name="viewport" content="width=device-width, initial-scale=1" /> |
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> |
|
|
|
<!-- Latest compiled and minified JavaScript --> |
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> |
|
<script src="https://unpkg.com/vue/dist/vue.js"></script> |
|
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> |
|
<script src="https://unpkg.com/d3"></script> |
|
<script src="https://rawgit.com/d2bjs/d2b/master/build/d2b.js"></script> |
|
</head> |
|
<body style="background-color:white;"> |
|
<div id="app"> |
|
<nav class="navbar navbar-default"> |
|
<div class="container-fluid"> |
|
|
|
<div class="navbar-header"> |
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> |
|
<span class="sr-only">Toggle navigation</span> |
|
<span class="icon-bar"></span> |
|
<span class="icon-bar"></span> |
|
<span class="icon-bar"></span> |
|
</button> |
|
<a class="navbar-brand" href="#">Home</a> |
|
</div> |
|
|
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> |
|
<ul class="nav navbar-nav"> |
|
<li> |
|
<router-link to="/d2btree">d2b tree</router-link> |
|
</li> |
|
<li> |
|
<router-link to="/minimal">minimal tree</router-link> |
|
</li> |
|
</ul> |
|
</div> |
|
</div> |
|
</nav> |
|
<div> |
|
<router-view></router-view> |
|
</div> |
|
</div> |
|
<script>'use strict'; |
|
|
|
Vue.component('sunburst-chart', d2b.vueChartSunburst); |
|
|
|
// 1. Define route components. |
|
// These can be imported from other files |
|
var sunb = { |
|
template: '\n <div style=\'height:400px;\'>\n <sunburst-chart :data = \'sunburstChartData\'></sunburst-chart>\n </div>\n ', |
|
props: ['sunburstChartData'] |
|
}; |
|
|
|
var home = { |
|
template: '\n<div class=\'container\'>\n <h3>d2b Examples with vue-router and bootstrap</h3>\n <p>\n I have really enjoyed playing with Vue. Until now, though\n my examples have been small experimental bits and pieces\n and nothing like a real application. For my first more realistic\n application, I will use vue-router with bootstrap navbar to\n render d2b sunbursts based on the route.\n </p>\n <p>\n I could very easily be doing this incorrectly, but it seems\n I have the pattern nearly correct.\n </p>\n</div>\n ' |
|
}; |
|
|
|
var tree1 = { |
|
label: 'root', |
|
children: [{ |
|
label: 'child 1', |
|
children: [{ |
|
label: 'child 1-1', |
|
size: 10 |
|
}, { |
|
label: 'child 1-2', |
|
children: [{ |
|
label: 'child 1-2-1', |
|
size: 5 |
|
}, { |
|
label: 'child 1-3-1', |
|
size: 8 |
|
}] |
|
}, { |
|
label: 'child 1-3', |
|
children: [{ |
|
label: 'child 1-3-1', |
|
children: [{ |
|
label: 'child 1-3-1-1', |
|
size: 2 |
|
}, { |
|
label: 'child 1-3-1-2', |
|
size: 5 |
|
}] |
|
}, { |
|
label: 'child 1-3-2', |
|
size: 8 |
|
}] |
|
}] |
|
}, { |
|
label: 'child 2', |
|
size: 25 |
|
}] |
|
}; |
|
|
|
var tree2 = { |
|
label: 'root', |
|
children: [{ label: 'a', size: 10 }, { label: 'b', size: 20 }] |
|
}; |
|
|
|
var routes = [{ path: '/', component: home }, { path: '/d2btree', component: sunb, props: { sunburstChartData: tree1 } }, { path: '/minimal', component: sunb, props: { sunburstChartData: tree2 } }]; |
|
|
|
// 3. Create the router instance and pass the `routes` option |
|
// You can pass in additional options here, but let's |
|
// keep it simple for now. |
|
var router = new VueRouter({ |
|
routes: routes // short for routes: routes |
|
}); |
|
|
|
// 4. Create and mount the root instance. |
|
// Make sure to inject the router with the router option to make the |
|
// whole app router-aware. |
|
var app = new Vue({ |
|
router: router |
|
}).$mount('#app');</script> |
|
</body> |
|
</html> |