mirror of
https://github.com/yuzu-emu/yuzu-emu.github.io.git
synced 2025-06-08 05:17:10 +00:00
site: add github style hovercards
This commit is contained in:
parent
51d29e7f68
commit
e02dafe98f
|
@ -79,3 +79,7 @@ section = [ "HTML" ]
|
|||
[markup.goldmark]
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
[security]
|
||||
[security.funcs]
|
||||
getenv = ['^HUGO_', 'TENANT']
|
||||
|
|
1
site/layouts/shortcodes/gh-hovercard.html
Normal file
1
site/layouts/shortcodes/gh-hovercard.html
Normal file
|
@ -0,0 +1 @@
|
|||
<a class="gh-hover" href="https://github.com/yuzu-emu/yuzu/pull/{{ .Get 0 }}" data-gh-pr="{{ .Get 0 }}">{{ .Get 1 | markdownify | safeHTML }}</a>
|
|
@ -1 +1 @@
|
|||
Subproject commit f978d34421a7246b6a5b997bf011f8ca8c75da44
|
||||
Subproject commit 56aea091ab4e1ac7dc2619218183b4bb9a336fbc
|
59
src/js/github.js
Normal file
59
src/js/github.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
function fetchPR(tenant, pr) {
|
||||
return fetch(`https://api.github.com/repos/${tenant}-emu/${tenant}/pulls/${pr}`, {
|
||||
headers: {
|
||||
Accept: 'application/vnd.github.v3+json',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
},
|
||||
method: 'GET',
|
||||
}).then(function (response) {
|
||||
return response.json();
|
||||
});
|
||||
}
|
||||
|
||||
function buildHovercard(data) {
|
||||
const elem = document.getElementById('gh-template');
|
||||
const title = elem.getElementsByClassName('gh-hover-title')[0];
|
||||
title.firstChild.innerText = data.title;
|
||||
title.href = data.html_url;
|
||||
const mergedAt = data.merged_at;
|
||||
let state = 'open';
|
||||
let mergedDate = '';
|
||||
if (mergedAt) {
|
||||
// eslint-disable-next-line no-undef
|
||||
let parsedDate = moment.utc(mergedAt);
|
||||
mergedDate = parsedDate.fromNow();
|
||||
state = 'merged';
|
||||
elem.getElementsByClassName('gh-hover-date')[0].innerText = `Merged ${mergedDate}.`;
|
||||
} else if (data.state === 'closed') {
|
||||
state = 'closed';
|
||||
}
|
||||
elem.getElementsByClassName('gh-hover-icon')[0].classList.add(state);
|
||||
elem.getElementsByClassName('gh-hover-number')[0].innerText = `#${data.number}`;
|
||||
return elem.innerHTML;
|
||||
}
|
||||
|
||||
function createHovercard(tenant, pr) {
|
||||
return fetchPR(tenant, pr).then(function (response) {
|
||||
return buildHovercard(response);
|
||||
});
|
||||
}
|
||||
|
||||
function showHovercard(instance, tenant) {
|
||||
if (instance._loading) return;
|
||||
if (instance._cached) {
|
||||
instance.setContent(instance._cached);
|
||||
return;
|
||||
}
|
||||
instance._loading = true;
|
||||
const pr_number = instance.reference.getAttribute('data-gh-pr');
|
||||
createHovercard(tenant, pr_number).then(function(content) {
|
||||
instance._cached = content;
|
||||
instance.setContent(content);
|
||||
instance._loading = false;
|
||||
}).catch(function(error) {
|
||||
instance.setContent('Error fetching data from GitHub: ' + error);
|
||||
instance._loading = false;
|
||||
});
|
||||
}
|
||||
|
||||
window.showHovercard = showHovercard;
|
Loading…
Reference in a new issue