Created
March 20, 2018 13:46
-
-
Save scriptype/bdc86e88dfeb8b643e63d0c626c06c82 to your computer and use it in GitHub Desktop.
Traverse deep categoryTree recursively
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function rootTemplate(categories) { | |
return ` | |
<div class="root-container"> | |
${ getCategoryMarkup(categories) } | |
</div> | |
` | |
} | |
function itemsTemplate(items, level) { | |
return ` | |
<div class="cat-items"> | |
${items.reduce((titles, item) => ` | |
${titles} | |
<h${level}>${item.title}</h${level}> | |
`, '')} | |
</div> | |
` | |
} | |
function categoryTemplate(category, title, level) { | |
return ` | |
<div class="cat cat--level-${level}"> | |
<h${level}>${title}</h${level}> | |
${ getCategoryMarkup(category, level + 1) } | |
</div> | |
` | |
} | |
function getCategoryMarkup(category, level = 1) { | |
return Object.keys(category).reduce((markup, key, index) => { | |
var node = category[key] | |
var newMarkup = key === 'items' ? | |
itemsTemplate(node, level) : | |
categoryTemplate(node, key, level) | |
return markup + newMarkup | |
}, '') | |
} | |
// For debugging | |
var el = document.createElement('div') | |
el.innerHTML = rootTemplate(categories) | |
el.firstElementChild |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment