Skip to content

Instantly share code, notes, and snippets.

@peterhpchen
Last active January 3, 2018 04:25
Show Gist options
  • Save peterhpchen/3d261e4a36d24238e937748aa3217559 to your computer and use it in GitHub Desktop.
Save peterhpchen/3d261e4a36d24238e937748aa3217559 to your computer and use it in GitHub Desktop.
JS Bin// source https://jsbin.com/huhayuh
// Sample
var layers = [
{
name: "Project",
count: 1
},
{
name: "Node",
count: 1
},
{
name: "Port",
count: 1
},
{
name: "Device",
count: 256
}
];
/* get layer data
* return data structure:
* $nodes = [{name, children: $nodes}]
* the last layer have not childrean.
*/
function getDataSource(layers) {
var nextLayer = [];
var currentLayer = [];
var layer = 0,
i = 0;
for (layer = layers.length - 1; layer >= 0; layer--) {
var currentLayerInfo = layers[layer];
for (i = 0; i < currentLayerInfo.count; i++) {
if (!nextLayer.length) {
currentLayer.push({
name: currentLayerInfo.name + i
});
} else {
currentLayer.push({
name: currentLayerInfo.name + i,
children: nextLayer
});
}
}
nextLayer = currentLayer;
currentLayer = [];
}
var result = nextLayer;
return result;
}
getDataSource(layers);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment