const Koa = require("koa");
const Router = require("koa-router");
const static = require("koa-static");
const views = require("koa-views");
const koaBody = require("koa-body");
const md5 = require("md5");
let musicData = require("./data/music.json");
let app = new Koa();
let router = new Router();
app.use(koaBody());
app.use(static(__dirname + "/static"));
app.use(views(__dirname + "/views", {
extension: "pug"
}));
router.get("/", ctx => {
ctx.redirect("/login");
});
router.get("/login", async ctx => {
let cookiesInfo = ctx.cookies.get("isLogin");
if (cookiesInfo) {
let serverInfo = md5("张三" + "123");
if (cookiesInfo == serverInfo) {
ctx.redirect("/list");
};
};
await ctx.render("login");
});
router.post("/checkUser", async ctx => {
if (ctx.request.body.username == "张三" && ctx.request.body.pwd == "123") {
if (ctx.request.body.rememberMe) {
let loginStatus = md5("张三" + "123");
ctx.cookies.set("isLogin", loginStatus, {
maxAge: 3600 * 1000 * 24 * 7
});
}
ctx.redirect("/list")
} else {
ctx.redirect("/error");
}
});
router.get("/list", async ctx => {
await ctx.render("list",{
musicData
});
});
router.get("/error", async ctx => {
await ctx.render("error");
});
router.get("/detail",async ctx=>{
await ctx.render("detail");
});
app.use(router.routes());
app.listen(8080);
localStorage.setItem("isOpen",true);
window.addEventListener("beforeunload",function(){
localStorage.removeItem("isOpen");
});
window.addEventListener("storage",function(){
updateView();
});
window.onload = function(){
updateView();
document.querySelector(".deleteAll").onclick = function(){
console.log(1)
localStorage.removeItem("musicData");
updateView();
};
document.querySelector(".deleteItem").onclick = function(){
let inputs = document.querySelectorAll(".exchange input");
let musicData = JSON.parse(localStorage.getItem("musicData"));
inputs.forEach((v,k)=>{
if(v.checked){
musicData.splice(k,1);
}
});
localStorage.setItem("musicData",JSON.stringify(musicData));
updateView();
}
}
function updateView(){
let musicData = localStorage.getItem("musicData");
if(musicData){
musicData = JSON.parse(musicData);
let innerContent = "";
musicData.forEach(v=>{
let str = `<ul class="myul">
<input type="checkbox" />
<li>${v.songName}</li>
<li>${v.singer}</li>
<li>${v.time}</li>
</ul>`;
innerContent += str;
});
document.querySelector(".exchange").innerHTML = innerContent;
}else{
document.querySelector(".exchange").innerHTML = "";
}
}
window.onload = function () {
let uls = document.querySelectorAll(".listContainer");
let spans = document.querySelectorAll(".btnController");
uls.forEach((v, k) => {
v.onmouseover = function () {
spans.forEach((val, key) => {
if ((key + 1) == k) {
spans[key].style.display = "block";
} else {
spans[key].style.display = "none";
}
})
}
})
let colorArr = ["white", "rgb(204,232,207)", "rgb(200,200,169)", "rgb(114,111,128)"];
let key = 0;
if (localStorage.getItem("key")) {
key = localStorage.getItem("key");
}
document.body.style.backgroundColor = colorArr[key];
document.querySelector(".changeSkin").onclick = function () {
key++;
key = key > 3 ? 0 : key;
localStorage.setItem("key", key)
document.body.style.backgroundColor = colorArr[key];
}
function setCookie(name, value, options = { "Max-Age": 3600 * 24 * 7 }) {
let cookieData = `${name}=${value};`;
for (let key in options) {
let str = `${key}=${options[key]};`;
cookieData += str;
}
document.cookie = cookieData;
}
function getCookie(name) {
let arr = document.cookie.split("; ");
for (let i = 0; i < arr.length; i++) {
let arr2 = arr[i].split("=");
if (arr2[0] == name) {
return arr2[1];
}
}
}
}
function showDetail(musicData) {
if(localStorage.getItem("musicData")){
let localData = JSON.parse(localStorage.getItem("musicData"));
if(!localData.find(v=>v.id==musicData.id)){
localData.push(musicData);
localStorage.setItem("musicData",JSON.stringify(localData));
}
} else {
localStorage.setItem("musicData",JSON.stringify([musicData]));
}
if (!localStorage.getItem("isOpen")) {
window.open("/detail");
};
}