Q版头像1.png

本WIKI由远方丶和诗申请于2021年08月18日创建
欢迎各位冒险者加入我们一起完善本WIKI,我们致力于为各位玩家提供方块方舟的游戏技巧、攻略、图签、活动等内容,搭建可互动的游戏社区,欢迎大家收藏

全站通知:

活动日历JS

阅读

    

2021-08-21更新

    

最新编辑:远方丶和诗

阅读:

  

更新日期:2021-08-21

  

最新编辑:远方丶和诗

来自方块方舟(PixARK)WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
远方丶和诗

/** 活动日历


      • * 版本
      • ** JS程序版本:1.3.0
      • ** HTML&WIKI文本版本:1.0
      • ** 数据结构版本:1.0

      • 最后更新日期:2021.08.15
      • 制作者:丩卩夂忄
  • /

ECMeta={ "data":{ "event":[ /*["活动名","开始日期y/m/d","结束日期y/m/d","title"],*/ ], "birthday":{ /*"生日m/d":"XXXX的生日",开始年份,如无填false,"title",*/ }, }, "DOM":document.getElementById("EC"), "today":new Date(new Date().getTime()+new Date().getTimezoneOffset()*60000+8*3600000), } ECFun={ "initialize":function(){ ECMeta.displayYM=[ECMeta.today.getFullYear(),ECMeta.today.getMonth()+1] document.getElementById("ECYM").onclick=function(){ ECMeta.displayYM[0]-- ECFun.run() } document.getElementById("ECYP").onclick=function(){ ECMeta.displayYM[0]++ ECFun.run() } document.getElementById("ECMM").onclick=function(){ ECMeta.displayYM=ECFun.lastMonth(...ECMeta.displayYM) ECFun.run() } document.getElementById("ECMP").onclick=function(){ ECMeta.displayYM=ECFun.nextMonth(...ECMeta.displayYM) ECFun.run() } document.getElementById("ECY").onclick=function(){ let newYear=prompt(this.dataset.notice||"想穿越去哪一年?",ECMeta.displayYM[0]) if(newYear&&!isNaN(parseInt(newYear))){ ECMeta.displayYM[0]=parseInt(newYear) ECFun.run() } } document.getElementById("ECM").onclick=function(){ ECMeta.displayYM=[ECMeta.today.getFullYear(),ECMeta.today.getMonth()+1] ECFun.run() } let dayDOM=ECMeta.DOM.getElementsByClassName("ECD") for(let i=0,ilen=dayDOM.length;i<ilen;i++){ dayDOM[i].onclick=function(){ ECFun.createAlert(this.dataset.date) } } this.addData() this.run() }, "run":function(){ let dayDOM=ECMeta.DOM.getElementsByClassName("ECD") for(let i=0,ilen=dayDOM.length;i<ilen;i++){ dayDOM[i].classList.remove("lastMonth","thisMonth","nextMonth","today","birthday","eventStart","eventEnd","eventGoing") } document.getElementById("ECY").innerHTML=(ECMeta.displayYM[0]+"年").replace("-","公元前") document.getElementById("ECM").innerHTML=ECMeta.displayYM[1]+"月" this.createTable() this.createClass() }, "createTable":function(){ let dayDOM=ECMeta.DOM.getElementsByClassName("ECD") let displayYM=ECMeta.displayYM let week=new Date(displayYM[0],displayYM[1]-1,1).getDay() let thisMonthDays=this.howManyDays(...displayYM) for(let i=week,ilen=dayDOM.length,date=1,className="thisMonth",creatingYM=displayYM;i<ilen;i++,date++){ if(date>thisMonthDays){ date=1 className="nextMonth" creatingYM=this.nextMonth(...displayYM) } dayDOM[i].classList.add(className) dayDOM[i].title=creatingYM[0]+"年"+creatingYM[1]+"月"+date+"日" if(ECMeta.today.getFullYear()==creatingYM[0]&&ECMeta.today.getMonth()+1==creatingYM[1]&&ECMeta.today.getDate()==date){ dayDOM[i].classList.add("today") dayDOM[i].title+="\n今天" } if(ECMeta.data.birthday.hasOwnProperty(creatingYM[1]+"/"+date)){ for(let j=0,jlen=ECMeta.data.birthday[creatingYM[1]+"/"+date].length;j<jlen;j++){ if(ECMeta.data.birthday[creatingYM[1]+"/"+date][j][1]!=false&&creatingYM[0]<ECMeta.data.birthday[creatingYM[1]+"/"+date][j][1]){ continue } dayDOM[i].classList.add("birthday") dayDOM[i].title+="\n生日 "+(ECMeta.data.birthday[creatingYM[1]+"/"+date][j][2]||"") } } dayDOM[i].dataset.date=creatingYM[0]+"/"+creatingYM[1]+"/"+date dayDOM[i].innerHTML=date

} let lastMonth=this.lastMonth(...displayYM) let lastMonthDays=this.howManyDays(...lastMonth) for(let i=week-1;i>=0;i--){ dayDOM[i].classList.add("lastMonth") dayDOM[i].title=lastMonth[0]+"年"+lastMonth[1]+"月"+lastMonthDays+"日" if(ECMeta.data.birthday.hasOwnProperty(lastMonth[1]+"/"+lastMonthDays)){ for(let j=0,jlen=ECMeta.data.birthday[lastMonth[1]+"/"+lastMonthDays].length;j<jlen;j++){ if(ECMeta.data.birthday[lastMonth[1]+"/"+lastMonthDays][j][1]!=false&&lastMonth[0]<ECMeta.data.birthday[lastMonth[1]+"/"+lastMonthDays][j][1]){ continue } dayDOM[i].classList.add("birthday") dayDOM[i].title+="\n生日 "+(ECMeta.data.birthday[lastMonth[1]+"/"+lastMonthDays][j][2]||"") } } if(ECMeta.today.getFullYear()==lastMonth[0]&&ECMeta.today.getMonth()+1==lastMonth[1]&&ECMeta.today.getDate()==lastMonthDays){ dayDOM[i].classList.add("today") dayDOM[i].title+="\n今天" } dayDOM[i].dataset.date=lastMonth[0]+"/"+lastMonth[1]+"/"+lastMonthDays dayDOM[i].innerHTML=lastMonthDays-- } }, "createClass":function(){ let dayDOM=ECMeta.DOM.getElementsByClassName("ECD") for(let i=0,ilen=dayDOM.length;i<ilen;i++){ for(let j=0,jlen=ECMeta.data.event.length;j<jlen;j++){ if(dayDOM[i].dataset.date==ECMeta.data.event[j][1]){ dayDOM[i].classList.add("eventStart") dayDOM[i].title+="\n开始 "+(ECMeta.data.event[j][3]||"活动") } if(dayDOM[i].dataset.date==ECMeta.data.event[j][2]){ dayDOM[i].classList.add("eventEnd") dayDOM[i].title+="\n结束 "+(ECMeta.data.event[j][3]||"活动") } if(new Date(dayDOM[i].dataset.date)>new Date(ECMeta.data.event[j][1])&&new Date(dayDOM[i].dataset.date)<new Date(ECMeta.data.event[j][2])){ dayDOM[i].classList.add("eventGoing") dayDOM[i].title+="\n进行 "+(ECMeta.data.event[j][3]||"活动") } } } }, "createAlert":function(date){ let blackDOM=document.createElement("div") blackDOM.style.position="fixed" blackDOM.style.zIndex=999 blackDOM.style.left=0 blackDOM.style.top=0 blackDOM.style.width="100%" blackDOM.style.height="100%" blackDOM.style.backgroundColor="black" blackDOM.style.opacity=0.5 let infoDOM=document.createElement("div") infoDOM.id="ECInfo" infoDOM.style.position="fixed" infoDOM.style.zIndex=1000 infoDOM.innerHTML=this.createInfo(date) document.body.appendChild(blackDOM) document.body.appendChild(infoDOM) blackDOM.onclick=function(){ document.body.removeChild(blackDOM) document.body.removeChild(infoDOM) } }, "createInfo":function(date){ let today=new Date(this.formatDate(ECMeta.today,"y/m/d")) let Odate=new Date(date) let info=""

info+="

" if(Odate.getTime()==today.getTime()){ info+="今天" } else{ if(Odate>today){ info+=(Odate-today)/1000/60/60/24+"天后" } else{ info+=(today-Odate)/1000/60/60/24+"天前" } } info+="是"+this.formatDate(Odate)+"

"

let isBirthday=false for(let key in ECMeta.data.birthday){ if(key==(Odate.getMonth()+1)+"/"+Odate.getDate()){ for(let i=0,ilen=ECMeta.data.birthday[key].length;i<ilen;i++){ if(ECMeta.data.birthday[key][i][1]!=false&&Odate.getFullYear()<ECMeta.data.birthday[key][i][1]){ continue } if(!isBirthday){ isBirthday=true

info+="

生日

"

} let birthdayInfo=ECMeta.data.birthday[key][i][0] if(ECMeta.data.birthday[key][i][1]!=false){ let AGE=Odate.getFullYear()-ECMeta.data.birthday[key][i][1] if(AGE==0){ AGE="出生了" } else{ AGE+="岁了" } birthdayInfo=birthdayInfo.replace(/\$AGE/,AGE) }

info+="

"+birthdayInfo+"

"

} } } let eventStart="" let eventGoing="" let eventEnd="" let isEvent=false for(let i=0,ilen=ECMeta.data.event.length;i<ilen;i++){ let eventInfo=ECMeta.data.event[i][0].replace(/\$START/,this.formatDate(ECMeta.data.event[i][1])).replace(/\$END/,this.formatDate(ECMeta.data.event[i][2])) if(date==ECMeta.data.event[i][1]){ isEvent=true if(eventStart.length==0){

eventStart+="

刚开始的活动

"

}

eventStart+="

"+eventInfo+"

"

} if(date==ECMeta.data.event[i][2]){ isEvent=true if(eventEnd.length==0){

eventEnd+="

刚结束的活动

"

}

eventEnd+="

"+eventInfo+"

"

} if(new Date(date)>new Date(ECMeta.data.event[i][1])&&new Date(date)<new Date(ECMeta.data.event[i][2])){ isEvent=true if(eventGoing.length==0){

eventGoing+="

进行中的活动

"

}

eventGoing+="

"+eventInfo+"

"

} } if(isEvent){

info+="

活动

"

} info+=eventStart+eventGoing+eventEnd return info }, "addData":function(){ let dataInPage=document.getElementsByClassName("ECData") for(let i=0,ilen=dataInPage.length;i<ilen;i++){ let dataset=dataInPage[i].dataset if(dataset.type=="birthday"){ this.addBirthday(dataset.date,dataInPage[i].innerHTML,dataset.startYear,dataset.title) } if(dataInPage[i].dataset.type=="event"){ this.addEvent(dataInPage[i].innerHTML,dataset.start,dataset.end,dataset.title) } } }, "addBirthday":function(date,info,startYear,title){ if(!ECMeta.data.birthday.hasOwnProperty(date)){ ECMeta.data.birthday[date]=[] } startYear=parseInt(startYear) if(isNaN(startYear)){ startYear=false } ECMeta.data.birthday[date].push([info,startYear,title]) }, "addEvent":function(info,start,end,title){ ECMeta.data.event.push([info,start,end,title]) }, "lastMonth":function(year,month){ if(month!=1){ return [year,month-1] } return [year-1,12] }, "nextMonth":function(year,month){ if(month!=12){ return [year,month+1] } return [year+1,1] }, "howManyDays":function(year,month){ switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31 case 4: case 6: case 9: case 11: return 30 case 2: if(year%4!=0){ return 28 } if(year%100!=0){ return 29 } if(year%400!=0){ return 28 } return 29 } }, "formatDate":function(time,format="y年m月d日"){ let date=new Date(time) return format.replace("y",date.getFullYear()).replace("m",date.getMonth()+1).replace("d",date.getDate()) }, } if(document.readyState=="complete"){ ECFun.initialize() } else{ window.addEventListener("load",function(){ ECFun.initialize() }) }