Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions src/assets/js/reprodb-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -257,31 +257,34 @@
} else if (d.paper_url) {
links.push('<a href="' + escHtml(normalizeUrl(d.paper_url)) + '" target="_blank" rel="noopener">📄 Paper</a>');
}
// Artifact URLs (unified list)
if (d.appendix_url) links.push('<a href="' + escHtml(normalizeUrl(d.appendix_url)) + '" target="_blank" rel="noopener">📋 Appendix</a>');
// Artifact URLs from scraped sources first, then ArtiFinder-discovered URLs.
var artUrlList = artUrls;
if (artUrlList.length === 1) {
var isGH = artUrlList[0].indexOf('github.com') !== -1;
var lbl = isGH ? '💻 GitHub' : '📦 Artifact';
var isZenodo = artUrlList[0].indexOf('zenodo.org') !== -1;
var lbl = isGH ? '💻 GitHub' : (isZenodo ? '📦 Zenodo' : '📦 Artifact');
var avail1 = availabilityTag(artUrlList[0]);
links.push('<a href="' + escHtml(artUrlList[0]) + '" target="_blank" rel="noopener">' + lbl + '</a>' + avail1);
} else {
artUrlList.forEach(function(u, i) {
if (u) {
var isGH = u.indexOf('github.com') !== -1;
var lbl = isGH ? '💻 GitHub' : '📦 Artifact';
var isZenodo = u.indexOf('zenodo.org') !== -1;
var lbl = isGH ? '💻 GitHub' : (isZenodo ? '📦 Zenodo' : '📦 Artifact');
if (artUrlList.length > 1) lbl += ' #' + (i+1);
var availN = availabilityTag(u);
links.push('<a href="' + escHtml(u) + '" target="_blank" rel="noopener">' + lbl + '</a>' + availN);
}
});
}
if (d.appendix_url) links.push('<a href="' + escHtml(normalizeUrl(d.appendix_url)) + '" target="_blank" rel="noopener">📋 Appendix</a>');
// ArtiFinder-discovered links: not manually verified, no badges.
var afUrls = (d.artifinder_urls || []).map(normalizeUrl);
afUrls.forEach(function(u) {
if (!u) return;
var isGH = u.indexOf('github.com') !== -1;
var lbl = isGH ? '💻 GitHub' : '📦 Artifact';
var isZenodo = u.indexOf('zenodo.org') !== -1;
var lbl = isGH ? '💻 GitHub' : (isZenodo ? '📦 Zenodo' : '📦 Artifact');
links.push('<a class="artifinder-link" href="' + escHtml(u) + '" target="_blank" rel="noopener">' + lbl + '</a>' + artifinderTag());
});
var linksLine = links.length > 0 ? links.join(' &middot; ') : '';
Expand Down
11 changes: 11 additions & 0 deletions src/methodology/search-keywords.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,15 @@ The [search bar]({{ '/' | relative_url }}) supports special `#` keywords that fi

Keywords also work alongside the year, venue, and area dropdown filters.

## Result Link Order

In each search result card, links are displayed in this order:

1. Paper
2. Appendix
3. Artifact links from scraped sources (for example, Zenodo or GitHub)
4. Artifact links discovered by ArtiFinder

When multiple artifact links are present, scraped links are shown before ArtiFinder links.

**Note on `#unavailable`:** Availability is determined by automated URL checks that run as part of the monthly pipeline. A URL marked as unavailable may be temporarily down, rate-limited, or require authentication. The hover tooltip on each flagged artifact shows when the check was last performed.