You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.4 KiB
JavaScript
110 lines
3.4 KiB
JavaScript
const reference = document.getElementById("reference");
|
|
const contributionsList = document.getElementById("contributions");
|
|
const trackList = document.getElementById("trackList");
|
|
|
|
const pagedjs = document.createElement("script");
|
|
pagedjs.src = "https://unpkg.com/pagedjs/dist/paged.polyfill.js";
|
|
pagedjs.id = "printview";
|
|
|
|
const printLib = document.getElementById("btn-print");
|
|
|
|
window.addEventListener("load", () => {
|
|
fetchContents();
|
|
atlasLink();
|
|
});
|
|
|
|
printLib.addEventListener("click", () => {
|
|
document.getElementsByTagName("head")[0].appendChild(pagedjs);
|
|
|
|
// pardon for this is really stupid but it works
|
|
setTimeout(() => {
|
|
let sections = [".libretto", ".container", ".content", ".contribution", ".contributions"];
|
|
|
|
for (const section of sections) {
|
|
for (const el of document.querySelectorAll(section)) {
|
|
el.classList.add("full-height");
|
|
}
|
|
}
|
|
}, 1000);
|
|
});
|
|
|
|
function fetchContents() {
|
|
fetch("https://hub.xpub.nl/soupboat/atlas-api/contributions")
|
|
.then((response) => response.json())
|
|
.then((data) => populateContributions(data));
|
|
}
|
|
|
|
function populateContributions(contributions) {
|
|
contributions.sort((a, b) => a.order - b.order);
|
|
contributions.forEach((contribution) => {
|
|
contributionsList.appendChild(createSection(contribution));
|
|
createIndexSection(contribution);
|
|
});
|
|
}
|
|
|
|
function createSection(contribution) {
|
|
let section = reference.cloneNode(true);
|
|
section.id = contribution.moment;
|
|
section.querySelector(".moment").innerHTML = contribution.moment;
|
|
section.querySelector(".title").innerHTML = contribution.title;
|
|
section.querySelector(".author").innerHTML = contribution.author;
|
|
section.querySelector(".description").innerHTML = contribution.description;
|
|
section.querySelector(".content").innerHTML = contribution.content_html;
|
|
return section;
|
|
}
|
|
|
|
function atlasLink() {
|
|
let atlas = document.getElementById("atlas-map");
|
|
let groups = atlas.querySelectorAll("g");
|
|
for (const group of groups) {
|
|
let link = document.createElementNS("http://www.w3.org/2000/svg", "a");
|
|
link.setAttribute("href", "#" + group.id);
|
|
link.innerHTML = group.innerHTML;
|
|
group.innerHTML = "";
|
|
group.appendChild(link);
|
|
}
|
|
}
|
|
|
|
function createIndexSection(contribution) {
|
|
if (contribution.audio) {
|
|
let table = document.createElement("table");
|
|
let title = document.createElement("div");
|
|
title.classList.add("index-title");
|
|
title.innerHTML = contribution.title;
|
|
let tracks = contribution.audio;
|
|
tracks.forEach((track) => {
|
|
let row = document.createElement("tr");
|
|
let col1 = document.createElement("td");
|
|
let col2 = document.createElement("td");
|
|
col1.setAttribute("class", "symbol");
|
|
col2.setAttribute("class", "filename");
|
|
col2.innerHTML = track;
|
|
row.appendChild(col1);
|
|
row.appendChild(col2);
|
|
table.appendChild(row);
|
|
});
|
|
trackList.appendChild(title);
|
|
trackList.appendChild(table);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function printViewToggle() {
|
|
var printview = document.getElementById("printview");
|
|
if (!printview) {
|
|
document.getElementsByTagName("head")[0].appendChild(pagedjs);
|
|
//-----------------------
|
|
//sto provando sta porcata qui, ma non funzia uguale. quando la pagina si trasforma in pagedjs la variabile del btn non è più definita (????)
|
|
// var btnPrint = document.getElementById("btn-print");
|
|
// console.log(btnPrint);
|
|
//-------------------------
|
|
createBackToWebBtn();
|
|
} else {
|
|
//document.getElementsByTagName("head")[0].removeChild(printview);
|
|
pagedjs.remove();
|
|
console.log("aooooo che cazzo");
|
|
}
|
|
}
|
|
|