Hansard Structured Content
by holf
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/tundra/tundra.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/resources/dojo.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojox/widget/SortList/SortList.css">
<div id="container">
<div id="treeOne"></div>
</div>
CSS
#container {
padding: 20px;
}
JavaScript
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.Tree");
dojo.require("dijit.Menu");
dojo.require("dijit.MenuItem");
function prepare() {
var store = new dojo.data.ItemFileReadStore({
data: {
identifier: 'id',
label: 'label',
items: rawdata
}
});
var treeControl = new dijit.Tree({
store: store,
showRoot: false,
persist: false,
autoExpand: false,
_createTreeNode: function (
/*Object*/
args) {
var tnode = new dijit._TreeNode(args);
tnode.labelNode.innerHTML = args.label;
return tnode;
},
openOnDblClick: true
}, "treeOne");
var menu = new dijit.Menu();
menu.bindDomNode(treeControl.domNode);
menu.addChild(new dijit.MenuItem({
label: "Simple menu item"
}));
dojo.connect(treeControl, "onClick", treeControl, function (item, nodeWidget, e) {
console.log("is expandable?: ", nodeWidget.isExpandable, e.target);
if (nodeWidget.isExpandable) {
this._onExpandoClick({
node: nodeWidget
});
}
console.log("item : ", item);
});
dojo.connect(menu, "_openMyself", this, function (e) {
var tn = dijit.getEnclosingWidget(e.target);
// prepare the menu
dojo.forEach(menu.getChildren(), function (child) {
menu.removeChild(child);
menu.addChild(new dijit.MenuItem({
label: "dynamic " + store.getLabel(tn.item)
}));
}, this);
});
menu.startup();
}
dojo.ready(prepare);
var rawdata = [{
label: 'Oral Answers To Questions',
id: 'glump',
children: [{
label: 'Health',
id: 'HilarityBoots',
children: [{
label: 'PFI Debt (NHS Hospitals)',
id: 'boonclock',
children: [{
label: '<b>1. Stephen Barclay</b>: \'The...