in public/assets/js/evm.js [116:149]
renderCards(filteredResources) {
let clone;
this.listingNode.replaceChildren();
filteredResources.forEach(resource => {
clone = this.templateNode.content.cloneNode(true);
// const mergeNodes = clone.querySelectorAll("*");
const merges = [...clone.querySelectorAll("*")]
.map(t => [...t.attributes])
.reduce((curr, value) => curr.concat(value))
.filter(({ name }) => name.startsWith("data-template"))
.map(attr => {
return {
operation: attr.name.split("data-template")[1].slice(1),
value: attr.value,
node: attr.ownerElement
};
});
merges.forEach(merge => {
const { operation, value, node } = merge;
if (value === "contentType") {
// We need to call the function with logic for displaying the
// "content type"
node.textContent = getContentType(resource.resourceType, resource.linkURL);
}
else if (operation === "") {
// Special case, no "suffix", means change the text content
node.textContent = resource[value];
} else {
node.setAttribute(operation, resource[value]);
}
});
this.listingNode.appendChild(clone);
});
}