renderCards()

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);
		});
	}