(article)
| 857 | } |
| 858 | |
| 859 | function renderCard(article) { |
| 860 | var item = article.item; |
| 861 | |
| 862 | if (item.classList.contains('article-card-item')) { |
| 863 | return; |
| 864 | } |
| 865 | |
| 866 | var card = document.createElement('a'); |
| 867 | var media = document.createElement('span'); |
| 868 | var body = document.createElement('span'); |
| 869 | var date = document.createElement('span'); |
| 870 | var title = document.createElement('span'); |
| 871 | |
| 872 | item.className = 'article-card-item'; |
| 873 | card.className = 'article-card'; |
| 874 | card.href = article.href; |
| 875 | media.className = 'article-card-media is-loading'; |
| 876 | media.innerHTML = '<span>AI</span>'; |
| 877 | body.className = 'article-card-body'; |
| 878 | date.className = 'article-card-date'; |
| 879 | title.className = 'article-card-title'; |
| 880 | date.textContent = article.date || 'AI Article'; |
| 881 | title.textContent = article.title; |
| 882 | |
| 883 | body.appendChild(date); |
| 884 | body.appendChild(title); |
| 885 | card.appendChild(media); |
| 886 | card.appendChild(body); |
| 887 | item.textContent = ''; |
| 888 | item.appendChild(card); |
| 889 | |
| 890 | getCover(article.markdownPath).then(function (cover) { |
| 891 | media.classList.remove('is-loading'); |
| 892 | |
| 893 | var image = document.createElement('img'); |
| 894 | image.alt = article.title; |
| 895 | image.loading = 'lazy'; |
| 896 | image.src = cover || createGeneratedCover(article.title); |
| 897 | media.textContent = ''; |
| 898 | media.appendChild(image); |
| 899 | }); |
| 900 | } |
| 901 | |
| 902 | function getCover(markdownPath) { |
| 903 | if (coverCache.has(markdownPath)) { |
no test coverage detected