Atom feed for our EEG site

wip

Changed files
+47 -35
+47 -35
index.html
···
.filter-container {
display: flex;
align-items: center;
-
margin-bottom: 15px;
-
padding: 10px 15px;
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: 4px;
}
.filter-title {
font-family: 'JetBrains Mono', monospace;
color: var(--accent-color);
-
font-size: 0.9rem;
-
margin-right: 15px;
}
.filter-options {
display: flex;
-
gap: 15px;
}
.filter-option {
···
.checkbox-custom {
position: relative;
display: inline-block;
-
width: 16px;
-
height: 16px;
background-color: rgba(77, 250, 123, 0.05);
border: 1px solid var(--accent-alt);
border-radius: 3px;
-
margin-right: 8px;
transition: all 0.2s ease;
}
.filter-checkbox:checked + .checkbox-custom::after {
content: '';
position: absolute;
-
top: 2px;
-
left: 5px;
-
width: 5px;
-
height: 8px;
border: solid var(--accent-color);
border-width: 0 2px 2px 0;
transform: rotate(45deg);
···
}
.filter-label {
-
font-size: 0.85rem;
color: var(--text-color);
}
···
background-color: rgba(77, 250, 123, 0.1);
border-color: var(--accent-color);
}
@media (max-width: 600px) {
.feed-item-author {
···
</div>
<div id="feed-items" class="tab-content active feed-container" data-tab="posts"></div>
<div class="tab-content" data-tab="links">
-
<div class="filter-container">
-
<div class="filter-title">Filter:</div>
-
<div class="filter-options">
-
<label class="filter-option">
-
<input type="checkbox" id="filter-papers" class="filter-checkbox" data-filter="academic">
-
<span class="checkbox-custom"></span>
-
<span class="filter-label">Papers</span>
-
</label>
-
<label class="filter-option">
-
<input type="checkbox" id="filter-videos" class="filter-checkbox" data-filter="youtube">
-
<span class="checkbox-custom"></span>
-
<span class="filter-label">Videos</span>
-
</label>
</div>
</div>
<div id="link-items" class="feed-container"></div>
···
// Try to extract arXiv ID
const arxivIdMatch = url.pathname.match(/\d+\.\d+/);
if (arxivIdMatch) {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> ${arxivIdMatch[0]}`;
} else {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
}
} else if (url.hostname.includes('nature.com')) {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
} else if (url.hostname.includes('science.org')) {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
} else if (url.hostname.includes('mdpi.com')) {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
} else if (link.url.toLowerCase().endsWith('.pdf')) {
// For direct PDF links, try to get a meaningful filename
const pathParts = url.pathname.split('/');
const filename = pathParts[pathParts.length - 1];
if (filename) {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> ${decodeURIComponent(filename)}`;
} else {
-
displayText = `<img src="free-icons/svgs/regular-file-pdf.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Document`;
}
}
}
···
url.hostname.includes('mdpi.com') ||
url.hostname.includes('doi.org')
) {
-
iconPath = 'free-icons/svgs/regular-file-pdf.svg';
// Set display text based on source
if (url.hostname.includes('arxiv.org')) {
···
// Papers filter - check for PDF icon
if (activeFilters.includes('academic')) {
const hasPdfIcon = linkUrl && (
-
linkUrl.innerHTML.includes('regular-file-pdf.svg') ||
(linkUrl.getAttribute('data-link-type') === 'academic')
);
if (hasPdfIcon) shouldShow = true;
···
.filter-container {
display: flex;
align-items: center;
+
margin-bottom: 10px;
+
padding: 5px 10px;
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: 4px;
+
align-self: flex-end;
+
width: auto;
+
margin-left: auto;
}
.filter-title {
font-family: 'JetBrains Mono', monospace;
color: var(--accent-color);
+
font-size: 0.8rem;
+
margin-right: 10px;
}
.filter-options {
display: flex;
+
gap: 10px;
}
.filter-option {
···
.checkbox-custom {
position: relative;
display: inline-block;
+
width: 14px;
+
height: 14px;
background-color: rgba(77, 250, 123, 0.05);
border: 1px solid var(--accent-alt);
border-radius: 3px;
+
margin-right: 6px;
transition: all 0.2s ease;
}
.filter-checkbox:checked + .checkbox-custom::after {
content: '';
position: absolute;
+
top: 1px;
+
left: 4px;
+
width: 4px;
+
height: 7px;
border: solid var(--accent-color);
border-width: 0 2px 2px 0;
transform: rotate(45deg);
···
}
.filter-label {
+
font-size: 0.8rem;
color: var(--text-color);
}
···
background-color: rgba(77, 250, 123, 0.1);
border-color: var(--accent-color);
}
+
+
.links-header {
+
display: flex;
+
justify-content: flex-end;
+
margin-bottom: 10px;
+
width: 100%;
+
}
@media (max-width: 600px) {
.feed-item-author {
···
</div>
<div id="feed-items" class="tab-content active feed-container" data-tab="posts"></div>
<div class="tab-content" data-tab="links">
+
<div class="links-header">
+
<div class="filter-container">
+
<div class="filter-title">Filter:</div>
+
<div class="filter-options">
+
<label class="filter-option">
+
<input type="checkbox" id="filter-papers" class="filter-checkbox" data-filter="academic">
+
<span class="checkbox-custom"></span>
+
<span class="filter-label">Papers</span>
+
</label>
+
<label class="filter-option">
+
<input type="checkbox" id="filter-videos" class="filter-checkbox" data-filter="youtube">
+
<span class="checkbox-custom"></span>
+
<span class="filter-label">Videos</span>
+
</label>
+
</div>
</div>
</div>
<div id="link-items" class="feed-container"></div>
···
// Try to extract arXiv ID
const arxivIdMatch = url.pathname.match(/\d+\.\d+/);
if (arxivIdMatch) {
+
displayText = `<img src="solid-book-open.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> ${arxivIdMatch[0]}`;
} else {
+
displayText = `<img src="solid-book-open.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
}
} else if (url.hostname.includes('nature.com')) {
+
displayText = `<img src="solid-book-open.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
} else if (url.hostname.includes('science.org')) {
+
displayText = `<img src="solid-book-open.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
} else if (url.hostname.includes('mdpi.com')) {
+
displayText = `<img src="solid-book-open.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Paper`;
} else if (link.url.toLowerCase().endsWith('.pdf')) {
// For direct PDF links, try to get a meaningful filename
const pathParts = url.pathname.split('/');
const filename = pathParts[pathParts.length - 1];
if (filename) {
+
displayText = `<img src="solid-book-open.svg" width="13https://www.blogger.com/feeds/19062127/posts/default" height="14" style="vertical-align: middle; margin-right: 4px;"> ${decodeURIComponent(filename)}`;
} else {
+
displayText = `<img src="solid-book-open.svg" width="14" height="14" style="vertical-align: middle; margin-right: 4px;"> Document`;
}
}
}
···
url.hostname.includes('mdpi.com') ||
url.hostname.includes('doi.org')
) {
+
iconPath = 'solid-book-open.svg';
// Set display text based on source
if (url.hostname.includes('arxiv.org')) {
···
// Papers filter - check for PDF icon
if (activeFilters.includes('academic')) {
const hasPdfIcon = linkUrl && (
+
linkUrl.innerHTML.includes('solid-book-open.svg') ||
(linkUrl.getAttribute('data-link-type') === 'academic')
);
if (hasPdfIcon) shouldShow = true;