MediaWiki:BloodTest.js — различия между версиями
Материал из Guild Wars 2 wiki
Blood (обсуждение | вклад) |
Blood (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
(function() { | (function() { | ||
− | var buttonsContainer = document.getElementById("gmvbuttons"), | + | var buttonsContainer = document.getElementById("gmvbuttons"), //Контейнер для кнопок |
− | buttons, button, pveIcon, pvpIcon, wvwIcon, regexp, splitter, i; | + | buttons, button, pveIcon, pvpIcon, wvwIcon, regexp, splitter, id, i; |
//Если контейнера для кнопок на странице нет, то ничего не делаем | //Если контейнера для кнопок на странице нет, то ничего не делаем | ||
Строка 36: | Строка 36: | ||
} | } | ||
− | //Скрываем всю разделяемую на режимы информацию, кроме | + | |
− | document.querySelectorAll(".gamemode.wvw:not(.pve)").forEach(hide); | + | |
− | document.querySelectorAll(".gamemode.pvp:not(.pve)").forEach(hide); | + | |
+ | //Скрываем всю разделяемую на режимы информацию, кроме той, что соответствует текущей выделенной кнопке (первой в списке) !!!WIP!!! | ||
+ | id = buttonsContainer.querySelector(".gmvbutton.active").id; | ||
+ | switch (id) { | ||
+ | case "pve": | ||
+ | document.querySelectorAll(".gamemode:not(." + id + ")").forEach(hide); | ||
+ | break; | ||
+ | case "pvp": | ||
+ | document.querySelectorAll(".gamemode:not(." + id + ")").forEach(hide); | ||
+ | break; | ||
+ | case "wvw": | ||
+ | document.querySelectorAll(".gamemode:not(." + id + ")").forEach(hide); | ||
+ | break; | ||
+ | case "pve wvw": | ||
+ | document.querySelectorAll(".gamemode.pvp").forEach(hide); | ||
+ | break; | ||
+ | case "pve pvp": | ||
+ | document.querySelectorAll(".gamemode.wvw").forEach(hide); | ||
+ | break; | ||
+ | case "wvw pvp": | ||
+ | document.querySelectorAll(".gamemode.pve").forEach(hide); | ||
+ | break; | ||
+ | } | ||
+ | //document.querySelectorAll(".gamemode:not(." + id.replace(regexp, ".") + ")").forEach(hide); | ||
+ | //document.querySelectorAll(".gamemode.wvw:not(.pve)").forEach(hide); | ||
+ | //document.querySelectorAll(".gamemode.pvp:not(.pve)").forEach(hide); | ||
+ | |||
+ | |||
//Обработчик щелчков левой кнопкой мыши | //Обработчик щелчков левой кнопкой мыши |
Версия 01:36, 21 мая 2018
/* Для тестирования разной фигни. * Подгружается через MediaWiki:Common.js */ (function() { var buttonsContainer = document.getElementById("gmvbuttons"), //Контейнер для кнопок buttons, button, pveIcon, pvpIcon, wvwIcon, regexp, splitter, id, i; //Если контейнера для кнопок на странице нет, то ничего не делаем if (!buttonsContainer) return; pveIcon = "<img alt='Game mode version' " + "src='https://wiki.guildwars2.com/images/thumb/c/cc/Hero_panel_Menu_Bar_icon.png/16px-Hero_panel_Menu_Bar_icon.png' width='16' height='16' " + "srcset='https://wiki.guildwars2.com/images/thumb/c/cc/Hero_panel_Menu_Bar_icon.png/24px-Hero_panel_Menu_Bar_icon.png 1.5x, " + "https://wiki.guildwars2.com/images/c/cc/Hero_panel_Menu_Bar_icon.png 2x'> "; pvpIcon = "<img alt='Game mode version' " + "src='https://wiki.guildwars2.com/images/thumb/2/23/PvP_Menu_Bar_icon.png/16px-PvP_Menu_Bar_icon.png' width='16' height='16' " + "srcset='https://wiki.guildwars2.com/images/thumb/2/23/PvP_Menu_Bar_icon.png/24px-PvP_Menu_Bar_icon.png 1.5x, " + "https://wiki.guildwars2.com/images/2/23/PvP_Menu_Bar_icon.png 2x'> "; wvwIcon = "<img alt='Game mode version' " + "src='https://wiki.guildwars2.com/images/thumb/1/1b/WvW_Menu_Bar_icon.png/16px-WvW_Menu_Bar_icon.png' width='16' height='16' " + "srcset='https://wiki.guildwars2.com/images/thumb/1/1b/WvW_Menu_Bar_icon.png/24px-WvW_Menu_Bar_icon.png 1.5x, " + "https://wiki.guildwars2.com/images/1/1b/WvW_Menu_Bar_icon.png 2x'> "; regexp = /\s+/i; splitter = " / "; buttonsContainer.onclick = mouseClickHandler; buttons = buttonsContainer.getAttribute("data-gmvbuttons").split(","); //Создаем кнопки и вставляем их в контейнер for (i = 0; i < buttons.length; i++) { button = document.createElement("button"); button.setAttribute("id", buttons[i]); button.setAttribute("class", (!i) ? "gmvbutton active" : "gmvbutton"); button.innerHTML = "<b>" + getButtonBody(buttons[i]) + "</b>"; buttonsContainer.appendChild(button); } //Скрываем всю разделяемую на режимы информацию, кроме той, что соответствует текущей выделенной кнопке (первой в списке) !!!WIP!!! id = buttonsContainer.querySelector(".gmvbutton.active").id; switch (id) { case "pve": document.querySelectorAll(".gamemode:not(." + id + ")").forEach(hide); break; case "pvp": document.querySelectorAll(".gamemode:not(." + id + ")").forEach(hide); break; case "wvw": document.querySelectorAll(".gamemode:not(." + id + ")").forEach(hide); break; case "pve wvw": document.querySelectorAll(".gamemode.pvp").forEach(hide); break; case "pve pvp": document.querySelectorAll(".gamemode.wvw").forEach(hide); break; case "wvw pvp": document.querySelectorAll(".gamemode.pve").forEach(hide); break; } //document.querySelectorAll(".gamemode:not(." + id.replace(regexp, ".") + ")").forEach(hide); //document.querySelectorAll(".gamemode.wvw:not(.pve)").forEach(hide); //document.querySelectorAll(".gamemode.pvp:not(.pve)").forEach(hide); //Обработчик щелчков левой кнопкой мыши function mouseClickHandler(event) { var target = event.target, button = target.closest(".gmvbutton"); //Если щелчок не по кнопке или по уже выбранной кнопке, то ничего не делаем if (!button || ~button.className.indexOf("active")) return; //Сбрасываем выделение прошлой кнопки, выделяем текущую кнопку и скрываем всю разделяемую на режимы информацию buttonsContainer.querySelector(".active").setAttribute("class", "gmvbutton"); button.setAttribute("class", "gmvbutton active"); document.querySelectorAll(".gamemode").forEach(hide); //Показываем информацию для режима, соответствующего текущей выделенной кнопке switch (button.id) { case "pve": document.querySelectorAll(".gamemode.pve").forEach(show); break; case "pvp": document.querySelectorAll(".gamemode.pvp").forEach(show); break; case "wvw": document.querySelectorAll(".gamemode.wvw").forEach(show); break; case "pve wvw": document.querySelectorAll(".gamemode.pve").forEach(show); document.querySelectorAll(".gamemode.wvw").forEach(show); break; case "pve pvp": document.querySelectorAll(".gamemode.pve").forEach(show); document.querySelectorAll(".gamemode.pvp").forEach(show); break; case "wvw pvp": document.querySelectorAll(".gamemode.wvw").forEach(show); document.querySelectorAll(".gamemode.pvp").forEach(show); break; } } //Создание тела кнопки function getButtonBody(text) { switch (text) { case "pve": return pveIcon + text.toUpperCase(); case "pvp": return pvpIcon + text.toUpperCase(); case "wvw": return wvwIcon + text.toUpperCase(); case "pve wvw": return pveIcon + text.replace(regexp, splitter).toUpperCase() + " " + wvwIcon; case "pve pvp": return pveIcon + text.replace(regexp, splitter).toUpperCase() + " " + pvpIcon; case "wvw pvp": return wvwIcon + text.replace(regexp, splitter).toUpperCase() + " " + pvpIcon; } } //Показ элемента function show(elem) { elem.setAttribute("style", elem.getAttribute("data-style")); } //Скрытие элемента function hide(elem) { if (!elem.hasAttribute("data-style")) elem.setAttribute("data-style", elem.getAttribute("style")); elem.style.display = "none"; } })();