parent
80f016dddf
commit
f6ebb16552
@ -0,0 +1,100 @@ |
|||||||
|
body { |
||||||
|
font-family: 'Courier New', monospace; |
||||||
|
} |
||||||
|
|
||||||
|
#titlebarContainer { |
||||||
|
z-index: 99; |
||||||
|
position: absolute; |
||||||
|
width: 100%; |
||||||
|
height: 200px; |
||||||
|
} |
||||||
|
|
||||||
|
#titlebar { |
||||||
|
z-index: 98; |
||||||
|
text-align: center; |
||||||
|
border-radius: 4px; |
||||||
|
position: relative; |
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2); |
||||||
|
transform: translate(-50%, -50%); |
||||||
|
background-color: rgba(256, 256, 256, 1); |
||||||
|
left: 50%; |
||||||
|
width: 80%; |
||||||
|
height: 40px; |
||||||
|
margin-top: 30px; |
||||||
|
} |
||||||
|
|
||||||
|
#titlebarText { |
||||||
|
margin: 10px; |
||||||
|
float: left; |
||||||
|
color: black; |
||||||
|
} |
||||||
|
|
||||||
|
.titlebarButton { |
||||||
|
background-color: rgba(0, 0, 0, 0); |
||||||
|
float: right; |
||||||
|
border: none; |
||||||
|
height: 40px; |
||||||
|
width: 40px; |
||||||
|
} |
||||||
|
|
||||||
|
#backButton { |
||||||
|
float: left; |
||||||
|
} |
||||||
|
|
||||||
|
.titlebarIcon { |
||||||
|
width: 20px; |
||||||
|
height: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
.imageView { |
||||||
|
position: absolute; |
||||||
|
margin: auto; |
||||||
|
bottom: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
top: 0; |
||||||
|
z-index: 95; |
||||||
|
} |
||||||
|
|
||||||
|
.imageLeft { |
||||||
|
position: absolute; |
||||||
|
width: 50%; |
||||||
|
height: auto; |
||||||
|
top : 0; |
||||||
|
right: 50%; |
||||||
|
z-index: 96; |
||||||
|
} |
||||||
|
|
||||||
|
.imageRight { |
||||||
|
position: absolute; |
||||||
|
width: 50%; |
||||||
|
height: auto; |
||||||
|
margin-top: 20px; |
||||||
|
top: 0; |
||||||
|
left: 50%; |
||||||
|
z-index: 96; |
||||||
|
} |
||||||
|
|
||||||
|
#pageLeft { |
||||||
|
position: absolute; |
||||||
|
height: 100%; |
||||||
|
width: 50%; |
||||||
|
left: 0%; |
||||||
|
z-index: 97; |
||||||
|
} |
||||||
|
|
||||||
|
#pageRight { |
||||||
|
position: absolute; |
||||||
|
height: 100%; |
||||||
|
width: 50%; |
||||||
|
left:50%; |
||||||
|
z-index: 97; |
||||||
|
} |
||||||
|
|
||||||
|
#pageFooter { |
||||||
|
z-index: 98; |
||||||
|
position: fixed; |
||||||
|
bottom: 0; |
||||||
|
left: 50%; |
||||||
|
transform: translate(-50%, -50%); |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
[ |
||||||
|
{ |
||||||
|
"id" : "0", "title" : "Boku no Kokoro no Yabai Yatsu", "cid" : "bafybeihnoou2av5w2bzmwkl6hi25scyzz6sjwdfqp4cwq2ikf6dfmev3ta", |
||||||
|
"chapters" : [ |
||||||
|
{ "pages" : "18" } |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"id" : "1", "title" : "Otoyomegatari", "cid" : "bafybeigfivshobq4h5x5qwmttgqimaufmcjl6hpjcrsedj7wxxduphp7g4", |
||||||
|
"chapters" : [ |
||||||
|
{ "pages" : "39" } |
||||||
|
] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"id" : "2", "title" : "Spy X Family", "cid" : "bafybeibgnpbredeofwp364qomqpth55a6ui3oiy2ucm35fo3eimquoeob4", |
||||||
|
"chapters" : [ |
||||||
|
{ "pages" : "71" } |
||||||
|
] |
||||||
|
} |
||||||
|
] |
||||||
|
|
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.5 KiB |
@ -0,0 +1,231 @@ |
|||||||
|
var layoutCurrent; |
||||||
|
var pageNo = 0; |
||||||
|
var pageCurrent = 1; |
||||||
|
var title; |
||||||
|
var cid; |
||||||
|
var content_url; |
||||||
|
var fitCurrent; |
||||||
|
var url = new URL(window.location.href); |
||||||
|
var manga = 0; |
||||||
|
var chapter = 0; |
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// Functions
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
function loadPage() { |
||||||
|
console.log("loading page", pageCurrent, "out of", pageNo); |
||||||
|
if(pageCurrent <= pageNo && pageCurrent > 0){ |
||||||
|
for(let i = 1; i <= pageNo; i++){ |
||||||
|
console.log(i); |
||||||
|
document.getElementById(`image${i}`).style.visibility = "hidden"; |
||||||
|
} |
||||||
|
if(layoutCurrent == "double"){ |
||||||
|
if(pageCurrent%2==0){ |
||||||
|
pageCurrent--; |
||||||
|
} |
||||||
|
let pagePair = pageCurrent+1; |
||||||
|
document.getElementById(`image${pagePair}`).style.visibility = "visible"; |
||||||
|
} |
||||||
|
document.getElementById("pageCounter").textContent = `${pageCurrent}/${pageNo}`; |
||||||
|
document.getElementById(`image${pageCurrent}`).style.visibility = "visible"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function nextPage() { |
||||||
|
if(layoutCurrent == "double"){ |
||||||
|
if(pageCurrent+2 <= pageNo){ |
||||||
|
pageCurrent += 2; |
||||||
|
} |
||||||
|
} |
||||||
|
else{ |
||||||
|
if(pageCurrent+1 <= pageNo){ |
||||||
|
pageCurrent++; |
||||||
|
} |
||||||
|
} |
||||||
|
loadPage(); |
||||||
|
} |
||||||
|
|
||||||
|
function previousPage() { |
||||||
|
if(layoutCurrent == "double"){ |
||||||
|
if(pageCurrent-2 >= 1){ |
||||||
|
pageCurrent -= 2; |
||||||
|
} |
||||||
|
} |
||||||
|
else{ |
||||||
|
if(pageCurrent-1 >= 1){ |
||||||
|
pageCurrent--; |
||||||
|
} |
||||||
|
} |
||||||
|
loadPage(); |
||||||
|
} |
||||||
|
|
||||||
|
function layoutSingle(){ |
||||||
|
layoutCurrent = "single"; |
||||||
|
fitHeight(); |
||||||
|
for (let i = 1; i <= pageNo; i++) { |
||||||
|
console.log(`image${i}`); |
||||||
|
document.getElementById(`image${i}`).className = "imageView"; |
||||||
|
} |
||||||
|
document.getElementById("layoutIcon").src = "img/single.png"; |
||||||
|
} |
||||||
|
|
||||||
|
function layoutDouble(){ |
||||||
|
fitHeight(); |
||||||
|
layoutCurrent = "double"; |
||||||
|
for (let i = 1; i <= pageNo; i++) { |
||||||
|
let side = "Right"; |
||||||
|
if(i%2==0){ |
||||||
|
side = "Left"; |
||||||
|
} |
||||||
|
document.getElementById(`image${i}`).className = `image${side}`; |
||||||
|
} |
||||||
|
document.getElementById("layoutIcon").src = "img/double.png"; |
||||||
|
} |
||||||
|
|
||||||
|
function fitWidth(){ |
||||||
|
if(layoutCurrent == "single"){ |
||||||
|
fitCurrent = "width"; |
||||||
|
var items = document.getElementsByClassName("imageView"); |
||||||
|
for(var i = 0; i < items.length; i++){ |
||||||
|
items.item(i).style.width = "100%"; |
||||||
|
items.item(i).style.height = "auto"; |
||||||
|
} |
||||||
|
document.getElementById("fitIcon").src = "img/width.png"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function fitHeight(){ |
||||||
|
if(layoutCurrent == "single"){ |
||||||
|
fitCurrent = "height"; |
||||||
|
var items = document.getElementsByClassName("imageView"); |
||||||
|
for(var i = 0; i < items.length; i++){ |
||||||
|
items.item(i).style.width = "auto"; |
||||||
|
items.item(i).style.height = "100%"; |
||||||
|
} |
||||||
|
document.getElementById("fitIcon").src = "img/height.png"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// Event handlers
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
document.addEventListener("keydown", function (e) { |
||||||
|
console.log("key press"); |
||||||
|
e = e || window.event; |
||||||
|
switch (e.keyCode) { |
||||||
|
case 39: |
||||||
|
case 76: |
||||||
|
console.log("right"); |
||||||
|
previousPage(); |
||||||
|
break; |
||||||
|
case 37: |
||||||
|
case 72: |
||||||
|
console.log("left"); |
||||||
|
nextPage(); |
||||||
|
break; |
||||||
|
default: return; |
||||||
|
} |
||||||
|
e.preventDefault(); |
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("pageLeft").addEventListener("click", function (e) { |
||||||
|
nextPage(); |
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("pageRight").addEventListener("click", function (e) { |
||||||
|
previousPage(); |
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("downloadButton").addEventListener("click", function (e) { |
||||||
|
//document.getElementById("downloadButton").style.background-color = "rgb(0, 0, 0, 0.2)";
|
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("layoutButton").addEventListener("click", function (e) { |
||||||
|
if(layoutCurrent == "single"){ |
||||||
|
layoutDouble(); |
||||||
|
} |
||||||
|
else{ |
||||||
|
layoutSingle(); |
||||||
|
} |
||||||
|
loadPage(); |
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("fitButton").addEventListener("click", function (e) { |
||||||
|
if(fitCurrent == "height"){ |
||||||
|
fitWidth(); |
||||||
|
} |
||||||
|
else{ |
||||||
|
fitHeight(); |
||||||
|
|
||||||
|
} |
||||||
|
loadPage(); |
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("titlebarContainer").addEventListener("mouseenter", function () { |
||||||
|
document.getElementById("titlebar").style.visibility = "visible"; |
||||||
|
}); |
||||||
|
|
||||||
|
document.getElementById("titlebarContainer").addEventListener("mouseleave", function () { |
||||||
|
document.getElementById("titlebar").style.visibility = "hidden"; |
||||||
|
}); |
||||||
|
|
||||||
|
if(url.searchParams.has("manga")){ |
||||||
|
manga = url.searchParams.get("manga"); |
||||||
|
} |
||||||
|
if(url.searchParams.has("chapter")){ |
||||||
|
chapter = url.searchParams.get("chapter"); |
||||||
|
} |
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// parse json data
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
var xmlhttp = new XMLHttpRequest(); |
||||||
|
xmlhttp.onreadystatechange = function () { |
||||||
|
if(this.readyState == 4 && this.status == 200){ |
||||||
|
var res = JSON.parse(this.responseText); |
||||||
|
console.log("parsing json", this.responseText); |
||||||
|
pageNo = res[manga].chapters[chapter].pages; |
||||||
|
// "https://ipfs.io/api/v0/ls/"+res[manga][chapter]["cid"];
|
||||||
|
title = res[manga].title; |
||||||
|
cid = res[manga].cid; |
||||||
|
console.log(pageNo, title, cid); |
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// Initialize
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
document.getElementById("titlebar").style.visibility = "hidden"; |
||||||
|
|
||||||
|
document.getElementById("pageCounter").innerHtml = `${pageCurrent}/${pageNo}`; |
||||||
|
document.getElementById("titlebarText").innerHtml = `${title}`; |
||||||
|
document.title = `${title}`; |
||||||
|
document.getElementById("pageView").innerHtml = ""; |
||||||
|
|
||||||
|
for (let i = 1; i <= pageNo; i++) { |
||||||
|
var img = document.createElement("img"); |
||||||
|
img.setAttribute("draggable", "false"); |
||||||
|
img.setAttribute("src", `https://ipfs.io/ipfs/${cid}/${i}.jpg`); |
||||||
|
img.id = `image${i}`; |
||||||
|
img.style.visibility = "hidden"; |
||||||
|
document.getElementById("pageView").appendChild(img); |
||||||
|
} |
||||||
|
|
||||||
|
console.log(document.getElementById("pageView").innerHtml); |
||||||
|
|
||||||
|
if(pageNo > 0){ |
||||||
|
layoutSingle(); |
||||||
|
fitHeight(); |
||||||
|
loadPage(); |
||||||
|
} |
||||||
|
else{ |
||||||
|
console.log("no pages to load"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
xmlhttp.open("GET", "https://amangathing.ddns.net/db.json", true); |
||||||
|
xmlhttp.send(); |
||||||
|
|
||||||
|
|
@ -0,0 +1,43 @@ |
|||||||
|
<html> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8"/> |
||||||
|
<title></title> |
||||||
|
|
||||||
|
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"/> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="css/reader.css"></link> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
|
||||||
|
<div id="titlebarContainer"> |
||||||
|
<div id="titlebar"> |
||||||
|
<button class="titlebarButton" id="backButton" onclick="history.back()"> |
||||||
|
<img class="titlebarIcon" style="width:15px;height:15px" src="img/back.png"/> |
||||||
|
</button> |
||||||
|
|
||||||
|
<span id="titlebarText"></span> |
||||||
|
|
||||||
|
<button class="titlebarButton" id="downloadButton"> |
||||||
|
<img class="titlebarIcon" src="img/download.png"/> |
||||||
|
</button> |
||||||
|
<button class="titlebarButton" id="layoutButton"> |
||||||
|
<img class="titlebarIcon" id="layoutIcon" src="img/single.png"/> |
||||||
|
</button> |
||||||
|
<button class="titlebarButton" id="fitButton"> |
||||||
|
<img class="titlebarIcon" id="fitIcon" src="img/height.png"/> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div id="pageLeft"></div> |
||||||
|
<div id="pageRight"></div> |
||||||
|
|
||||||
|
<div id="pageView"></div> |
||||||
|
|
||||||
|
<div id="pageFooter"> |
||||||
|
<span id="pageCounter">0/?</span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="js/reader.js"></script> |
||||||
|
</body> |
||||||
|
</html> |
@ -1,5 +0,0 @@ |
|||||||
[ |
|
||||||
{ "id" : "0", "title" : "Boku no Kokoro no Yabai Yatsu", "cid" : "bafybeihnoou2av5w2bzmwkl6hi25scyzz6sjwdfqp4cwq2ikf6dfmev3ta"}, |
|
||||||
{ "id" : "1", "title" : "Otoyomegatari", "cid" : "bafybeigfivshobq4h5x5qwmttgqimaufmcjl6hpjcrsedj7wxxduphp7g4"}, |
|
||||||
{ "id" : "2", "title" : "Spy X Family", "cid" : "bafybeibgnpbredeofwp364qomqpth55a6ui3oiy2ucm35fo3eimquoeob4"} |
|
||||||
] |
|
Loading…
Reference in new issue