Ловите пятиминутку ненависти. Ну, в смысле -- критики. Вот прям конкретно распишу.))
Первые два пункта лулзов ради, остальное всерьез.)
1) Код всяко лучше админского, ей-ей, но не шибко. Иначе говоря, вы б прекрасно вписались в админский коллектив.)
2) Если уж не гнушаетесь самоиронии, то приписку
"#говнокод" стоило поместить в самое начало.)
3) ES6 совершенно не годится для конечных скриптов в браузере юзера. Многие до сих пор используют старые браузеры, на секундочку. Вот сложно было через компилятор код пропустить? Понты, блин.)
4) В первых строках, в инфо-блоке для TM, читаем:
"https{0,1}" вместо адекватного "https?". И тут же на конце: ".+". Зачем движок лишней проверкой нагружать? Словом, первые строки -- первый звоночек.)
5) Далее: выход из функции при наличии "cgame" в адресе. Следует добавить еще проверку на страницу выполнения квеста и на главную страницу (heroeswm.ru/).
6) "settings['isDarkTheme']". Скажите, а чем вас так смущает обычная точечная нотация, тем паче учитывая, что в отношении встроенных объектов вы используете именно ее? Непоследовательность, отсутствие стремления к порядку -- звоночек номер два.
7) Во всем коде, в однотипных, подчеркиваю, конструкциях, используется то один вид кавычек, то другой. Примерно то же можно сказать о завершающей ";": она то есть, то ее нет. Вот как бы сущая мелочь на самом-то деле, но явно же отсылает к предыдущему пункту.
- 7.1) Алсо: элементы с ID ищутся то через функцию "$", то через обычный "document.querySelector" (почему не "getElementById"? Ай-яй, о производительности не думаем). Ну и про "$" отдельно. Сразу видно, что вы ее у всяких хочух позаимствовали: иначе б расширили под любые селекторы.)
8) "classList.value". Вы это серьезно? Нет, в самом деле?))
9) "outerHTML.toString()". Данное свойство как бы и так строку возвращает.
10) "let timeCount = isPremium ? 60 : 60". Вы сделали мой день.))
11) "let destinationOffset = +3". Унарный плюс для тех, кто в бронетанке?))
12) По части стилей: вы, как и админ, напихали везде ненужных флексов. И даже банальный строчный контент, причем в блоках с ФИКСИРОВАННОЙ высотой, тоже выравниваете флексами. Ad absurdum.
13) Раз уж типа переделываете с нуля, то, Христа ради, сделайте все субменюшки частью самой шапки, удалите лишние обработчики и отображайте через CSS. Админу за это прям по голове настучать хочется.
14) Зачем, добавляя таблицу стилей, отдельным элементам вы все же прописываете стили в атрибут? Режим админа включен, называется.) Можно подумать, над кодом целый табор поработал.
15) Ну и самое главное, пожалуй: таймеры. Работа с таймерами здесь самое слабое место. Вот примеры для наглядности:
- 15.1) "let timePlace = $('hwm_time')". Почему переменная не закеширована? Вы понимаете, что каждую секунду почем зря делаете запросы к DOM? Каждую секунду, круг за кругом. Ума не приложу, где такому учат сегодня.))
- 15.2) "new Date().getTime()". Опять же: учитывая бесконечную рекурсию, это не гуд. Ведь есть же добрый производительный "Date.now()".
- 15.3) Функция "hwmDateToHuman" для ведущего нуля излишне громоздка. Оптимальное решение задачи такое: "('0' + нужное_значение).slice(-2)", безо всяких ненужных проверок.
- 15.4) Все таймеры продолжают тикать даже при нулях на счетчиках.
П.С. Я, конечно, выделываюсь, ага, но критика лишней не бывает.) Я вам явно даю понять, почему никогда не стал бы юзать подобные скрипты. Если работу админа оценивать на кол, то ваша работа -- на двоечку.