#3 Added support for boxed mode

This commit is contained in:
Serraniel 2020-09-27 12:47:55 +02:00
parent 378389863a
commit 1f7a9e164a
Signed by: Serraniel
GPG key ID: 3690B4E7364525D3

View file

@ -10,20 +10,17 @@ export function init() {
}, "^/anime/[0-9]*$"); }, "^/anime/[0-9]*$");
} }
const langPrefix = 'ep.lang.';
const dubSuffix = 'dub';
const subSuffix = 'sub';
const dubIcon = 'volume_up';
const subIcon = 'closed_caption';
const zeroWidthSpace = ''; // ​
function updateLanguageDisplay(node) { function updateLanguageDisplay(node) {
const listNodeName = 'MD-LIST-ITEM'; const listNodeName = 'MD-LIST-ITEM';
const boxNodeName = 'DIV';
const boxClassName = 'card-margin';
if (node.nodeName === listNodeName) { if (node.nodeName === listNodeName) {
updateLanguageDisplayListMode(node); updateLanguageDisplayListMode(node);
} }
else if (node.nodeName === boxNodeName && node.classList.contains(boxClassName)) {
updateLanguageDisplayBoxMode(node);
}
} }
function updateLanguageDisplayListMode(node) { function updateLanguageDisplayListMode(node) {
@ -34,24 +31,54 @@ function updateLanguageDisplayListMode(node) {
return; return;
} }
dopUpdateLanguageDisplay(col, false);
}
function updateLanguageDisplayBoxMode(node) {
// last column with flags
let col = node.querySelector('div.layout-align-end-start');
console.log(col)
if (typeof col === 'undefined' || col.eaManipulated) {
return;
}
dopUpdateLanguageDisplay(col, true);
}
function dopUpdateLanguageDisplay(parent, isBoxedModed) {
const listLangPrefix = 'ep.lang.';
const boxLangPrefix = 'episodeObject.lang.';
// aniwatch uses different prefixes in list und box mode :/
let realLangPrefix = isBoxedModed ? boxLangPrefix : listLangPrefix;
const dubSuffix = 'dub';
const subSuffix = 'sub';
const dubIcon = 'volume_up';
const subIcon = 'closed_caption';
const zeroWidthSpace = ''; // ​
let subs = []; let subs = [];
let dubs = []; let dubs = [];
// find subs // find subs
let subCols = col.querySelectorAll('[ng-hide*="sub"]'); let subCols = parent.querySelectorAll('[ng-hide*="sub"]');
subCols.forEach(element => { subCols.forEach(element => {
let langAttr = element.attributes['ng-hide'].value; let langAttr = element.attributes['ng-hide'].value;
let lang = langAttr.substring(langAttr.indexOf(langPrefix) + langPrefix.length, langAttr.indexOf(subSuffix)); let lang = langAttr.substring(langAttr.indexOf(realLangPrefix) + realLangPrefix.length, langAttr.indexOf(subSuffix));
if (element.attributes['aria-hidden'].value == 'false') { if (element.attributes['aria-hidden'].value == 'false') {
subs.push(lang); subs.push(lang);
} }
}); });
// find dubs // find dubs
let dubCols = col.querySelectorAll('[ng-hide*="dub"]'); let dubCols = parent.querySelectorAll('[ng-hide*="dub"]');
dubCols.forEach(element => { dubCols.forEach(element => {
let langAttr = element.attributes['ng-hide'].value; let langAttr = element.attributes['ng-hide'].value;
let lang = langAttr.substring(langAttr.indexOf(langPrefix) + langPrefix.length, langAttr.indexOf(dubSuffix)); let lang = langAttr.substring(langAttr.indexOf(realLangPrefix) + realLangPrefix.length, langAttr.indexOf(dubSuffix));
if (element.attributes['aria-hidden'].value == 'false') { if (element.attributes['aria-hidden'].value == 'false') {
dubs.push(lang); dubs.push(lang);
} }
@ -181,19 +208,19 @@ function updateLanguageDisplayListMode(node) {
}); });
} }
col.innerHTML = ''; parent.innerHTML = '';
cols.forEach(div => { cols.forEach(div => {
col.appendChild(div); parent.appendChild(div);
}); });
node.querySelectorAll('.layout-column:not(:last-child)').forEach(div => { parent.querySelectorAll('.layout-column:not(:last-child)').forEach(div => {
div.style.borderRight = '1px solid rgba(155,155,155, 0.2)'; div.style.borderRight = '1px solid rgba(155,155,155, 0.2)';
}) })
node.querySelectorAll('.layout-column').forEach(div => { parent.querySelectorAll('.layout-column').forEach(div => {
div.style.paddingLeft = '2px'; div.style.paddingLeft = '2px';
div.style.paddingRight = '2px'; div.style.paddingRight = '2px';
}) })
col.eaManipulated = true; parent.eaManipulated = true;
} }