From 80d6588c73d3c8563c38a5c10f074863460f9cbc Mon Sep 17 00:00:00 2001 From: WayneFerdon Date: Sat, 14 Sep 2024 08:19:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chaucerling/bgm_tracking_improvement.user.js | 38 ++++++-------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/chaucerling/bgm_tracking_improvement.user.js b/chaucerling/bgm_tracking_improvement.user.js index 4f6ed33..71b59d9 100644 --- a/chaucerling/bgm_tracking_improvement.user.js +++ b/chaucerling/bgm_tracking_improvement.user.js @@ -445,35 +445,17 @@ function create_subject_cell(subject_id) { } function show_subjects(subject_type) { - console.log(`change_tab, subject_type: ${subject_type}`); - switch (subject_type) { - case "0": //all - $('.infoWrapper_tv').show(); - $('.infoWrapper_book').hide(); - $('.infoWrapper_tv > div').show(); - break; - case "1": //book - $('.infoWrapper_tv').hide(); - $('.infoWrapper_book').show(); - - $('.infoWrapper_book > div').hide(); - $('.infoWrapper_book > div[subject_type="1"]').show(); - break; - case "2": //anime - $('.infoWrapper_tv').show(); - $('.infoWrapper_book').hide(); - $('.infoWrapper_tv > div').hide(); - $('.infoWrapper_tv > div[subject_type="2"]').show(); - break; - case "6": //real - $('.infoWrapper_tv').show(); - $('.infoWrapper_book').hide(); - $('.infoWrapper_tv > div').hide(); - $('.infoWrapper_tv > div[subject_type="6"]').show(); - break; - default: - break; + if (subject_type == 0) { + $('div[subject_type="1"]').show(); + $('div[subject_type="2"]').show(); + $('div[subject_type="6"]').show(); + reset_odd_even(); + return; } + $('div[subject_type="1"]').hide(); + $('div[subject_type="2"]').hide(); + $('div[subject_type="6"]').hide(); + $(`div[subject_type="${subject_type}"]`).show(); reset_odd_even(); } From 619c561df28e8539ff5dfffd9c0698ceb9785c05 Mon Sep 17 00:00:00 2001 From: WayneFerdon Date: Sat, 14 Sep 2024 08:31:58 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=98=9F=E6=9C=9F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chaucerling/bgm_tracking_improvement.user.js | 207 ++++++++++++++++++- 1 file changed, 202 insertions(+), 5 deletions(-) diff --git a/chaucerling/bgm_tracking_improvement.user.js b/chaucerling/bgm_tracking_improvement.user.js index 71b59d9..bb81e1e 100644 --- a/chaucerling/bgm_tracking_improvement.user.js +++ b/chaucerling/bgm_tracking_improvement.user.js @@ -1,13 +1,10 @@ // ==UserScript== // @name bangumi tracking improvement // @namespace BTI.chaucerling.bangumi -// @version 0.4.2 +// @version 0.4.2.1 // @description tracking more than 50 subjects on bangumi index page // @author chaucerling -// @include http://bangumi.tv/ -// @include https://bgm.tv/ -// @include http://bgm.tv/ -// @include http://chii.in/ +// @include /https?:\/\/(bgm\.tv|bangumi\.tv|chii\.in)\/$/ // @grant none // ==/UserScript== @@ -62,6 +59,205 @@ function GM_addStyle(style) { $('head').append(``); } +//#region [超合金组件]首页按星期分组/排序(https://bangumi.tv/dev/app/1083/gadget/851) +function sortElements(childs, compareFunction) { + if (!childs.length) { + return; + } + var parent = childs[0].parentNode; + var sorting = []; + for (var i = childs.length - 1; i >= 0; --i) { + sorting.push(childs[i]); + parent.removeChild(childs[i]); + } + sorting.sort(compareFunction); + for (let child of sorting) { + parent.appendChild(child); + } +} + +Number.prototype.zeroPad = function (length) { + var s = (this || "0").toString(); + while (s.length < length) { + s = "0" + s; + } + return s; +}; + +String.prototype.trim = function () { + return this.replace(/^[ \t]+|[ \t]+$/g, ""); +}; + +String.prototype.extractDate = function () { + return (this.match(/(20\d\d-\d{1,2}-\d{1,2})/) || [])[1] || NaN; +}; + +String.prototype.getPrefix = function () { + return ((this.match(/^([^(:]*)/) || [])[1] || "").trim(); +}; + +function changeLayout() { + // wait for element to finish + var unsafeWindow = window.unsafeWindow || window; + if (!unsafeWindow.loadXML || !unsafeWindow.$ || !document.getElementById("subject_prg_content") || !document.getElementById("cluetip")) { + setTimeout(changeLayout, 1); + return; + } + var weekdayLabels = ['日', '一', '二', '三', '四', '五', '六', '??']; + console.log("Changing layout"); + var $ = unsafeWindow.$; + + var now = new Date(); + var oldDate = now.valueOf() - 365 * 24 * 60 * 60 * 1000; + do { + // let subjects = $("#cloumnSubjectInfo > div:first > div").toArray(); + let subjects = $("#cloumnSubjectInfo > div:last > div").toArray(); + if (!subjects.length) { + break; + } + + var container = subjects[0].parentNode; + for (let subject of subjects) { + container.removeChild(subject); + } + while (container.lastChild) { + container.removeChild(container.lastChild); + } + var days = []; + for (let i = 0; i < 8; ++i) { + let day = container.appendChild(document.createElement("div")); + day.className = "day"; + day.style.overflow = "auto"; + let caption = day.appendChild(document.createElement("div")); + caption.appendChild(document.createTextNode("周" + weekdayLabels[i])); + day.subjects = day.appendChild(document.createElement("div")); + day.subjects.style.cssText += "display:grid;grid-template-columns: 1fr 1fr;" + days.push(day); + } + let oldDay = days[7]; + let today = days[new Date().getDay()]; + + today.className += " today"; + for (let subject of subjects) { + let tips = (function () { + try { + for (let ep_info of $('.load-epinfo', subject).toArray()) { + if (!/epBtnDrop|epBtnWatched/.test(ep_info.className)) { + return $(".tip:first", $(ep_info.rel)); + } + } + let ep_info = $('.load-epinfo:last', subject); + return $(".tip:first", $(ep_info[0].rel)); + } catch (e) { + console.log(e, subject); + } + })(); + if (!tips) { + subject.sortId = 0; + oldDay.appendChild(subject); + continue; + } + + let date = new Date(tips.text().extractDate()); + let title = $("> a:last", subject)[0].title; + if (/*date.valueOf() <= oldDate ||*/ isNaN(date.valueOf())) { + subject.sortId = title.getPrefix() + "-" + date.getYear().zeroPad(3) + date.getMonth().zeroPad(2) + "-" + title; + if (isNaN(date.valueOf())) { + subject.appendChild(document.createTextNode("Missing On Air Date")); + } + oldDay.appendChild(subject); + } + else { + subject.sortId = title.getPrefix(); + days[date.getDay()].subjects.appendChild(subject); + } + } + for (let day of days) { + if (day == oldDay) { + continue; + } + let nodes = day.subjects.childNodes; + sortElements(nodes, function (a, b) { + return a.sortId.localeCompare(b.sortId); + }); + + for (var i = 0; i < nodes.length; ++i) { + var $obj = $(nodes[i]); + if (i % 2 === 0) { + $obj.removeClass('even'); + $obj.addClass('odd'); + } + else { + $obj.removeClass('odd'); + $obj.addClass('even'); + } + } + } + } while (0); + + { + let subjects = $("#prgSubjectList > li").toArray(); + for (let i in subjects) { + subjects[i].sortId = $('> a:last', subjects[i])[0].title; + } + sortElements(subjects, function localeCompare(a, b) { + return a.sortId.localeCompare(b.sortId); + }); + } + + var within_24hours = now.valueOf() - 60 * 60 * 24 * 1000; + var within_48hours = now.valueOf() - 60 * 60 * 48 * 1000; + $.each($(".epBtnAir"), function (i, o) { + var airDate = new Date($(".tip:first", $(o.rel)).text().extractDate()).valueOf(); + if (isNaN(airDate)) { + $(o).removeClass("epBtnAir"); + $(o).addClass("epBtnUnknown"); + } + else if (airDate >= within_48hours) { + $(o).addClass(airDate >= within_24hours ? "epBtnAirNewDay1" : "epBtnAirNewDay2"); + } + }); +} + +GM_addStyle(` +.day { + overflow: auto; +} +.today { + background: #ffffaa42; +} + +a.epBtnUnknown { + background: #ecceffb0 !important; + color: #9932cdfc !important; + border-color: #9932cd75 !important; +} + +a.epBtnAir { + background: #00ff007a !important; + color: #55ae55 !important; + border-color: #55ae55 !important; +} + +html[data-theme="dark"] a.epBtnAir { + color: lightgreen !important; +} + +html[data-theme="dark"] a.epBtnToday { + color: #229100 !important; +} + +a.epBtnAirNewDay1 { + border-color: #90ee90 !important; + outline: 1px solid #90ee90 !important; + color: #229100 !important; +} +a.epBtnAirNewDay2 { + outline: 1px solid #90ee90 !important; + color: #229100 !important; +}`) +//#endregion + GM_addStyle(` #ti-alert { display:none; @@ -392,6 +588,7 @@ function add_extra_subjects() { $('.infoWrapper_book').removeClass('disabled'); refresh = false; } + changeLayout(); } // 构造首页条目格子 From dfddc936542a0643b2f7d4c2d453883502f50e6f Mon Sep 17 00:00:00 2001 From: WayneFerdon Date: Sat, 14 Sep 2024 08:58:34 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8C=89=E6=98=9F?= =?UTF-8?q?=E6=9C=9F=E6=8E=92=E5=BA=8F=E6=8E=92=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chaucerling/bgm_tracking_improvement.user.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/chaucerling/bgm_tracking_improvement.user.js b/chaucerling/bgm_tracking_improvement.user.js index bb81e1e..1fee910 100644 --- a/chaucerling/bgm_tracking_improvement.user.js +++ b/chaucerling/bgm_tracking_improvement.user.js @@ -154,7 +154,7 @@ function changeLayout() { })(); if (!tips) { subject.sortId = 0; - oldDay.appendChild(subject); + oldDay.subjects.appendChild(subject); continue; } @@ -165,7 +165,7 @@ function changeLayout() { if (isNaN(date.valueOf())) { subject.appendChild(document.createTextNode("Missing On Air Date")); } - oldDay.appendChild(subject); + oldDay.subjects.appendChild(subject); } else { subject.sortId = title.getPrefix(); @@ -223,6 +223,10 @@ GM_addStyle(` .day { overflow: auto; } +day { + display: grid; + grid-template-columns: 1fr 1fr; +} .today { background: #ffffaa42; } From 29e20b07a204d813caf40b900d2c2ae874b6a060 Mon Sep 17 00:00:00 2001 From: WayneFerdon Date: Mon, 14 Oct 2024 22:46:09 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=95=B4=E5=90=88=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E6=B1=89=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chaucerling/bgm_tracking_improvement.user.js | 106 ++++++++++++++++++- 1 file changed, 102 insertions(+), 4 deletions(-) diff --git a/chaucerling/bgm_tracking_improvement.user.js b/chaucerling/bgm_tracking_improvement.user.js index 1fee910..72deea4 100644 --- a/chaucerling/bgm_tracking_improvement.user.js +++ b/chaucerling/bgm_tracking_improvement.user.js @@ -5,7 +5,9 @@ // @description tracking more than 50 subjects on bangumi index page // @author chaucerling // @include /https?:\/\/(bgm\.tv|bangumi\.tv|chii\.in)\/$/ -// @grant none +// @grant GM_deleteValue +// @grant GM_setValue +// @grant GM_getValue // ==/UserScript== /* jshint loopfunc:true */ @@ -59,6 +61,7 @@ function GM_addStyle(style) { $('head').append(``); } +const tasks = [changeLayout, i18n]; //#region [超合金组件]首页按星期分组/排序(https://bangumi.tv/dev/app/1083/gadget/851) function sortElements(childs, compareFunction) { if (!childs.length) { @@ -262,6 +265,98 @@ a.epBtnAirNewDay2 { }`) //#endregion +//#region +function i18n() { + function gE(ele, mode, parent) { // 获取元素 + if (typeof ele === 'object') { + return ele; + } if (mode === undefined && parent === undefined) { + return (isNaN(ele * 1)) ? document.querySelector(ele) : document.getElementById(ele); + } if (mode === 'all') { + return (parent === undefined) ? document.querySelectorAll(ele) : parent.querySelectorAll(ele); + } if (typeof mode === 'object' && parent === undefined) { + return mode.querySelector(ele); + } + } + + function post(href, func, parm, type) { // post + let xhr = new window.XMLHttpRequest(); + xhr.open(parm ? 'POST' : 'GET', href); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); + xhr.responseType = type || 'document'; + xhr.onerror = function () { + xhr = null; + post(href, func, parm, type); + }; + xhr.onload = function (e) { + if (e.target.status >= 200 && e.target.status < 400 && typeof func === 'function') { + const data = e.target.response; + if (xhr.responseType === 'document' && gE('#messagebox', data)) { + if (gE('#messagebox')) { + gE('#csp').replaceChild(gE('#messagebox', data), gE('#messagebox')); + } else { + gE('#csp').appendChild(gE('#messagebox', data)); + } + } + func(data, e); + } + xhr = null; + }; + xhr.send(parm); + } + + function setLocal(item, value) { + if (typeof GM_setValue === 'undefined') { + window.localStorage[`bgmTI-${item}`] = (typeof value === 'string') ? value : JSON.stringify(value); + } else { + GM_setValue(item, value); + } + } + function getLocal(item, toJSON) { + if (typeof GM_getValue === 'undefined' || !GM_getValue(item, null)) { + item = `bgmTI-${item}`; + return (item in window.localStorage) ? ((toJSON) ? JSON.parse(window.localStorage[item]) : window.localStorage[item]) : null; + } + return GM_getValue(item, null); + } + + function trySetText(header, id, text, isSetLocal) { + if (!text) { + return false; + } + header.innerText = text; + if (isSetLocal) setLocal(id, text); + return true + } + + console.log('Start i18n'); + const headers = document.querySelectorAll('.tinyHeader>a') + for (let i = 0; i < headers.length; i++) { + let header = headers[i]; + if ('javascript:void(0);' === header.href) { + continue; + } + let id = header.getAttribute('data-subject-id'); + if (trySetText(header, id, getLocal(id), true)) continue; + if (trySetText(header, id, header.getAttribute('data-subject-name-cn'), true)) continue; + const keys = ['中文名: ', '别名: ']; + post(`/subject/${id}`, data => { + for (let c of gE('#infobox', data).children) { + for (let key of keys) { + if (gE('span', c).innerText !== key) { + continue; + } + const text = c.innerText.replace(key, '').replace(/\n/g, ''); + trySetText(header, id, text, key === '中文名: '); + return; + } + } + }); + } + console.log('End i18n'); +} +//#endregion + GM_addStyle(` #ti-alert { display:none; @@ -592,7 +687,9 @@ function add_extra_subjects() { $('.infoWrapper_book').removeClass('disabled'); refresh = false; } - changeLayout(); + for (let i in tasks) { + tasks[i](); + } } // 构造首页条目格子 @@ -606,7 +703,7 @@ function create_subject_cell(subject_id) {
- ${subject.title} + ${subject.title} edit @@ -623,9 +720,10 @@ function create_subject_cell(subject_id) { +
- ${subject.title} + ${subject.title} edit From 369c3e434244e512f2fdb0b0bae0c3f13afdc537 Mon Sep 17 00:00:00 2001 From: WayneFerdon Date: Sun, 22 Dec 2024 20:14:23 +0800 Subject: [PATCH 5/5] Update bgm_tracking_improvement.user.js --- chaucerling/bgm_tracking_improvement.user.js | 282 ++++++++++--------- 1 file changed, 148 insertions(+), 134 deletions(-) diff --git a/chaucerling/bgm_tracking_improvement.user.js b/chaucerling/bgm_tracking_improvement.user.js index 72deea4..c572c49 100644 --- a/chaucerling/bgm_tracking_improvement.user.js +++ b/chaucerling/bgm_tracking_improvement.user.js @@ -13,7 +13,7 @@ /* jshint loopfunc:true */ /* jshint esversion:6 */ -// var $ = unsafeWindow.jQuery; // use to access 'chiiLib.home' and '$.cluetip' +var $ = unsafeWindow.jQuery; // use to access 'chiiLib.home' and '$.cluetip' var origin_tv_queue = []; // max size 50 var origin_book_queue = []; // max size 50 var extra_tv_queue = []; @@ -21,8 +21,8 @@ var extra_book_queue = []; var watching_subjects = {}; var extra_watching_subjects = {}; var animes_size = 0, - reals_size = 0, - books_size = 0; + reals_size = 0, + books_size = 0; var auto_refresh = false; // 进入首页自动刷新extra项目进度 var watching_list = []; @@ -99,114 +99,123 @@ String.prototype.getPrefix = function () { return ((this.match(/^([^(:]*)/) || [])[1] || "").trim(); }; -function changeLayout() { - // wait for element to finish - var unsafeWindow = window.unsafeWindow || window; - if (!unsafeWindow.loadXML || !unsafeWindow.$ || !document.getElementById("subject_prg_content") || !document.getElementById("cluetip")) { - setTimeout(changeLayout, 1); - return; +function sortByID (list) { + return sortElements(list, (a, b) => a.sortId.localeCompare(b.sortId)); +} + +function initDay (container,i){ + var weekdayLabels = ['日七', '月一', '火二', '水三', '木四', '金五', '土六', '未知']; + let day = container.appendChild(document.createElement("div")); + day.className = "day"; + day.style.overflow = "auto"; + let caption = day.appendChild(document.createElement("div")); + caption.appendChild(document.createTextNode(weekdayLabels[i%8])); + day.subjects = day.appendChild(document.createElement("div")); + day.subjects.style.cssText += "display:grid;grid-template-columns: 1fr 1fr;" + return day; +} + +function setDayLabels (container, now) { + var days = []; + const today = now.getDay(); + for (let i = 0; i < 7; ++i) { // 周 日 ~ 周 六 + days.push(initDay(container, (today+6+i)%7)); } - var weekdayLabels = ['日', '一', '二', '三', '四', '五', '六', '??']; - console.log("Changing layout"); - var $ = unsafeWindow.$; + days.push(initDay(container, 7)); // 未知 + days[1].className += " today"; + return days; +} - var now = new Date(); - var oldDate = now.valueOf() - 365 * 24 * 60 * 60 * 1000; - do { - // let subjects = $("#cloumnSubjectInfo > div:first > div").toArray(); - let subjects = $("#cloumnSubjectInfo > div:last > div").toArray(); - if (!subjects.length) { - break; +function getTips (subject) { + try { + for (let ep_info of $('.load-epinfo', subject).toArray()) { + if (!/epBtnDrop|epBtnWatched/.test(ep_info.className)) { + return $(".tip:first", $(ep_info.rel)); + } } + let ep_info = $('.load-epinfo:last', subject); + return $(".tip:first", $(ep_info[0].rel)); + } catch (e) { + console.log(e, subject); + } +} - var container = subjects[0].parentNode; - for (let subject of subjects) { - container.removeChild(subject); - } - while (container.lastChild) { - container.removeChild(container.lastChild); - } - var days = []; - for (let i = 0; i < 8; ++i) { - let day = container.appendChild(document.createElement("div")); - day.className = "day"; - day.style.overflow = "auto"; - let caption = day.appendChild(document.createElement("div")); - caption.appendChild(document.createTextNode("周" + weekdayLabels[i])); - day.subjects = day.appendChild(document.createElement("div")); - day.subjects.style.cssText += "display:grid;grid-template-columns: 1fr 1fr;" - days.push(day); - } - let oldDay = days[7]; - let today = days[new Date().getDay()]; - - today.className += " today"; - for (let subject of subjects) { - let tips = (function () { - try { - for (let ep_info of $('.load-epinfo', subject).toArray()) { - if (!/epBtnDrop|epBtnWatched/.test(ep_info.className)) { - return $(".tip:first", $(ep_info.rel)); - } - } - let ep_info = $('.load-epinfo:last', subject); - return $(".tip:first", $(ep_info[0].rel)); - } catch (e) { - console.log(e, subject); - } - })(); - if (!tips) { - subject.sortId = 0; - oldDay.subjects.appendChild(subject); - continue; - } +function setSubjects (days, now, subjects) { + // set subjects to days + const today = now.getDay(); + let oldDay = days[7]; + var lastYear = now.valueOf() - 365 * 24 * 60 * 60 * 1000; - let date = new Date(tips.text().extractDate()); - let title = $("> a:last", subject)[0].title; - if (/*date.valueOf() <= oldDate ||*/ isNaN(date.valueOf())) { - subject.sortId = title.getPrefix() + "-" + date.getYear().zeroPad(3) + date.getMonth().zeroPad(2) + "-" + title; - if (isNaN(date.valueOf())) { - subject.appendChild(document.createTextNode("Missing On Air Date")); - } - oldDay.subjects.appendChild(subject); - } - else { - subject.sortId = title.getPrefix(); - days[date.getDay()].subjects.appendChild(subject); - } + for (let subject of subjects) { + let tips = getTips(subject); + if (!tips) { + oldDay.subjects.appendChild(subject); + continue; } - for (let day of days) { - if (day == oldDay) { - continue; - } - let nodes = day.subjects.childNodes; - sortElements(nodes, function (a, b) { - return a.sortId.localeCompare(b.sortId); - }); - - for (var i = 0; i < nodes.length; ++i) { - var $obj = $(nodes[i]); - if (i % 2 === 0) { - $obj.removeClass('even'); - $obj.addClass('odd'); - } - else { - $obj.removeClass('odd'); - $obj.addClass('even'); - } + + let date = new Date(tips.text().extractDate()); + let title = $("> a:last", subject)[0].title; + if (date.valueOf() <= lastYear || isNaN(date.valueOf())) { + subject.sortId = title.getPrefix() + "-" + date.getYear().zeroPad(3) + date.getMonth().zeroPad(2) + "-" + title; + if (isNaN(date.valueOf())) { + subject.appendChild(document.createTextNode("Missing On Air Date")); } + oldDay.subjects.appendChild(subject); + continue; } - } while (0); + subject.sortId = title.getPrefix(); + days[(date.getDay()-today+8)%7].subjects.appendChild(subject); + } +} + +function loadDays(now) { + // get subjects and clear container + let subjects = $("#cloumnSubjectInfo > div:not(#ti-pages, #ti-alert) >div").toArray(); + if (!subjects.length) return; - { - let subjects = $("#prgSubjectList > li").toArray(); - for (let i in subjects) { - subjects[i].sortId = $('> a:last', subjects[i])[0].title; + var container = subjects[0].parentNode; + while (container.lastChild) { + container.removeChild(container.lastChild); + } + + // set day labels + const days = setDayLabels(container, now); + setSubjects(days, now, subjects); + + // sort subjects in day and reset odd/even + for (let day of days) { + if (day == days[7]) continue; + let nodes = day.subjects.childNodes; + sortByID(nodes); + + for (var i = 0; i < nodes.length; ++i) { + setOddEven($(nodes[i]), i); } - sortElements(subjects, function localeCompare(a, b) { - return a.sortId.localeCompare(b.sortId); - }); } +} + +function setOddEven(obj, n) { + const odd = n % 2; + obj.removeClass(!odd ? 'odd' : 'even'); + obj.addClass(odd ? 'odd' : 'even'); +} + +function changeLayout() { + // wait for element to finish + var unsafeWindow = window.unsafeWindow || window; + if (!unsafeWindow.loadXML || !unsafeWindow.$ || !document.getElementById("subject_prg_content") || !document.getElementById("cluetip")) { + setTimeout(changeLayout, 1); + return; + } + console.log("Changing layout"); + var now = new Date(); + loadDays(now); + + let subjects = $("#prgSubjectList > li").toArray(); + for (let i in subjects) { + subjects[i].sortId = $('> a:last', subjects[i])[0].title; + } + sortByID(subjects); var within_24hours = now.valueOf() - 60 * 60 * 24 * 1000; var within_48hours = now.valueOf() - 60 * 60 * 48 * 1000; @@ -445,36 +454,36 @@ function get_path_and_size_of_all_type() { reals_size = -1; books_size = -1; return [{ - value: 2, - path: $("#navMenuNeue > li:nth-child(1) > ul > li > a.nav")[5].getAttribute('href'), - size: function() { - return animes_size; - }, - set_size: function(value) { - animes_size = value; - } - }, - { - value: 6, - path: $("#navMenuNeue > li:nth-child(5) > ul > li > a.nav")[5].getAttribute('href'), - size: function() { - return reals_size; - }, - set_size: function(value) { - reals_size = value; - } + value: 2, + path: $("#navMenuNeue > li:nth-child(1) > ul > li > a.nav")[5].getAttribute('href'), + size: function() { + return animes_size; }, - { - value: 1, - path: $("#navMenuNeue > li:nth-child(2) > ul > li > a.nav")[4].getAttribute('href'), - size: function() { - return books_size; - }, - set_size: function(value) { - books_size = value; - } + set_size: function(value) { + animes_size = value; } - ]; + }, + { + value: 6, + path: $("#navMenuNeue > li:nth-child(5) > ul > li > a.nav")[5].getAttribute('href'), + size: function() { + return reals_size; + }, + set_size: function(value) { + reals_size = value; + } + }, + { + value: 1, + path: $("#navMenuNeue > li:nth-child(2) > ul > li > a.nav")[4].getAttribute('href'), + size: function() { + return books_size; + }, + set_size: function(value) { + books_size = value; + } + } + ]; } function in_origin_queue(subject_id){ @@ -518,7 +527,7 @@ function check_get_all_pages_finished() { if (typeof this.counter1 === "undefined") this.counter1 = 0; this.counter1++; if (animes_size === -1 || reals_size === -1 || books_size === -1 || - this.counter1 < parseInt(animes_size / 24) + parseInt(reals_size / 24) + parseInt(books_size / 24)) { + this.counter1 < parseInt(animes_size / 24) + parseInt(reals_size / 24) + parseInt(books_size / 24)) { console.log(`current_processing_watching_list_size: ${watching_list.length}`); return false; } @@ -669,8 +678,8 @@ function add_extra_subjects() { $('.prgBatchManagerForm a.input_plus').off('click').on('click', function(e) { var input = $(this).closest('div.prgText').find('input'), - count = parseInt(input.val()), - form = $(this).closest('form.prgBatchManagerForm'); + count = parseInt(input.val()), + form = $(this).closest('form.prgBatchManagerForm'); $(input).val(count + 1); form.submit(); }); @@ -687,9 +696,6 @@ function add_extra_subjects() { $('.infoWrapper_book').removeClass('disabled'); refresh = false; } - for (let i in tasks) { - tasks[i](); - } } // 构造首页条目格子 @@ -800,6 +806,12 @@ function book_subjects_size_on_index() { return $('.infoWrapper_book > div').length; } +function onAfterLoad() { + for (let i in tasks) { + tasks[i](); + } +} + // init $(document).ready(function() { if (location.pathname !== "/") return; @@ -816,6 +828,7 @@ $(document).ready(function() { $('#ti-alert').show(); $('#ti-alert').text(`Watching ${size1} animes, ${size2} reals, ${size3} books.(click to close)`); localStorage.removeItem(LS_SCOPE); + onAfterLoad(); return; } @@ -857,6 +870,7 @@ $(document).ready(function() { get_watching_list(); }, 10); } + onAfterLoad(); }); $('#prgManagerMain').on('click', '#ti-alert', function(e) {