Journal Database #2

About the Database

Using the Database

Search Undergraduate Journals

Journal Name (Alphabetical) Scope (Alphabetical) Discipline (Alphabetical) Institution (Alphabetical)



Loading journals…
const sheetID = ‘1iFzIOyaHUEDqNrYYr57lKEt0zrVefoGNbIoO4fCNIHA’; const sheetName = ‘Sheet1’; const url = `https://opensheet.elk.sh/${sheetID}/${sheetName}`; let journalData = []; let currentSortField = “Journal Name”; function renderJournals(data) { const container = document.getElementById(‘journal-list’); container.innerHTML = data.map((entry, index) => { const activeStatus = entry[“Active”]?.trim().toLowerCase(); if (activeStatus === “no”) return “”; // Skip if Active is “No” const hasLink = entry[“Link”]?.trim(); const isMember = entry[“Member”]?.toLowerCase() === “yes”; const description = entry[“Description”] || “”; const fees = entry[“Fees”] || “N/A”; const acceptsExternal = entry[“Accepts External Submissions”] || “N/A”; return `
${hasLink ? `${entry[“Journal Name”]}` : entry[“Journal Name”]}
Institution: ${entry[“Institution”] || “N/A”}
Scope: ${entry[“Scope”] || “N/A”}
Discipline: ${entry[“Discipline”] || “N/A”}
Accepts External Submissions: ${acceptsExternal}
Fees: ${fees}
${isMember ? ` Member Description
${description}
` : “Not a Member”}
`; }).join(”); } function toggleDescription(index) { const desc = document.getElementById(`desc-${index}`); desc.style.display = (desc.style.display === “none” || desc.style.display === “”) ? “block” : “none”; } function sortAndRender(primaryField) { currentSortField = primaryField; const query = document.getElementById(‘search-box’).value; const filtered = filterJournals(query); const sorted = filtered.sort((a, b) => { const fields = [primaryField, “Journal Name”, “Institution”, “Scope”, “Discipline”]; for (let field of fields) { const valA = (a[field] || ”).toLowerCase(); const valB = (b[field] || ”).toLowerCase(); const comparison = valA.localeCompare(valB); if (comparison !== 0) return comparison; } return 0; }); renderJournals(sorted); } function filterJournals(query) { const lowerQuery = query.toLowerCase(); const externalToggle = document.getElementById(‘external-submissions-toggle’).checked; const noFeesToggle = document.getElementById(‘no-fees-toggle’).checked; return journalData.filter(entry => { const activeStatus = entry[“Active”]?.trim().toLowerCase(); if (activeStatus === “no”) return false; const matchesSearch = [“Journal Name”, “Institution”, “Scope”, “Discipline”].some(field => (entry[field] || “”).toLowerCase().includes(lowerQuery) ); const acceptsExternal = entry[“Accepts External Submissions”]?.toLowerCase() === “yes”; const hasNoFees = entry[“Fees”]?.toLowerCase() === “no”; const matchesExternal = !externalToggle || acceptsExternal; const matchesFees = !noFeesToggle || hasNoFees; return matchesSearch && matchesExternal && matchesFees; }); } fetch(url) .then(response => response.json()) .then(data => { journalData = data; sortAndRender(currentSortField); }) .catch(error => { document.getElementById(‘journal-list’).innerText = ‘Failed to load journal data.’; console.error(‘Error fetching data:’, error); }); document.getElementById(‘sort-menu’).addEventListener(‘change’, function () { sortAndRender(this.value); }); document.getElementById(‘search-box’).addEventListener(‘input’, function () { sortAndRender(currentSortField); }); document.getElementById(‘external-submissions-toggle’).addEventListener(‘change’, function () { sortAndRender(currentSortField); }); document.getElementById(‘no-fees-toggle’).addEventListener(‘change’, function () { sortAndRender(currentSortField); });
Scroll to Top