//comic_archive.js was created by geno7
//Writing sections of the archive page involves 2 steps:
//first, use the writeArchive function in this .js file. set the parameters (the stuff inside the parenthesis, comma separated) to toggle options.
//then, to place that section of the archive on the html page, you'd make a div, and give that div a class name of whatever you've called that section of the archive in the first parameter.
//if you put anything in that div, the list of comics will get appended after it. i.e. you can put the title of that specific section as a header in that div.
writeArchive(
"chrono", //class of the div that you want this section of the archive to appear in. to have it be on your html page, make an empty div with this class.
1, //earliest page to list
maxpg, //latest page to list. setting to maxpg will make it automatically update with the latest page
-1, //if set to 0, list is displayed "latest first". if set to -1, list is displayed chronologically
true, //if set to true, each comic will have its own thumbnail image next to it. if a comic doesn't have its own thumbnail, it'll be set to the default thumbnail.
true //if set to true, each comic will have a display number
);
writeArchive("lastfirst", 1, maxpg, 0, true,true);
writeArchive("chapter1",1,3,-1,false,true) //writeArchive is for listing a RANGE of pages, take advantage of this by using headers to divide them into chapters or by month
writeArchive("chapter2", 4, 9, -1, false,false);
writeArchive("chapter3", 9, 12, -1, false,false);
writeArchive("chapter4", 13, 15, -1, false,false);
//below this point is stuff you don't really need to pay attention to if you're not super familiar with JS
function writeArchive(divClass, min, max, reverseOrder, useThumbs,useNums) {
//create a table to put the archive data
let archiveTable = document.createElement("TABLE");
archiveTable.setAttribute("class", "archiveTable"); //set class to archiveTable for css styling
let getDiv = document.getElementsByClassName(divClass)[0]; //get div class
getDiv.appendChild(archiveTable);
//make the table from the currently available comics
for (i = min; i <= max; i++) {
let row = archiveTable.insertRow(reverseOrder); //if reverseOrder is set to 0 it'll reverse the order, otherwise it'll display it in regular order
//insert table cells
let cellThumb = useThumbs ? row.insertCell() : 0; //only insert thumbs and number rows if useThumbs and useNums are toggled respectively
let cellNum = useNums ? row.insertCell() : 0;
let cellTitle = row.insertCell();
let cellDate = row.insertCell();
//default values when you don't have page data set
let pgTitle = "Page " + i;
let pgDate = "";
let pgNum = "";
//url of thumbnail
let pgThumb = thumbFolder + "/" + image + i + "." + thumbExt;
//url of default thumbnail
let pgThumbDefault = thumbFolder + "/" + thumbDefault + "." + thumbExt;
if (pgData.length >= i) {
//set values to the values indicated in the pgData object if available
if (pgData[i - 1].title) {
pgTitle = pgData[i - 1].title;
}
if (pgData[i - 1].date) {
pgDate = pgData[i - 1].date;
}
if (pgData[i - 1].date) {
pgDate = pgData[i - 1].date;
}
if (pgData[i - 1].pgNum) {
pgNum = pgData[i - 1].pgNum;
}
}
//make the whole row a clickable link to the corresponding comic
row.setAttribute("class", `archiveRow`);
let linkToComic = `${indexPage}?pg=${i + navScrollTo}`;
row.addEventListener("click", () => {
window.location.href = linkToComic;
});
if (useThumbs) {
//draw thumbnails if you have thumbnails toggled
cellThumb.innerHTML = ``;
cellThumb.setAttribute("class", "archiveCellThumb");
}
if (useNums) {
//same for numbers
cellNum.innerHTML = `${pgNum}`;
cellNum.setAttribute("class", "archiveCellNum");
}
//draw each row
cellTitle.innerHTML = `${pgTitle}`;
cellTitle.setAttribute("class", "archiveCellTitle");
cellDate.innerHTML = " " + pgDate + " ";
cellDate.setAttribute("class", "archiveCellDate");
console.log(i + `created row - ${pgTitle} - ${linkToComic}`);
//left align text if not using thumbnails
cellTitle.className += " leftAlignTableText";
}
}