|
|
| Строка 291: |
Строка 291: |
| return iframe; | | return iframe; |
| } | | } |
|
| |
| // Функция для увеличения яркости цвета
| |
| function brightenColor(color, factor) {
| |
| // Функция для вычисления яркости цвета (использует стандартное восприятие цвета)
| |
| function getBrightness(r, g, b) {
| |
| return 0.2126 * r + 0.7152 * g + 0.0722 * b;
| |
| }
| |
|
| |
| var r, g, b;
| |
|
| |
| // Если цвет в формате rgba, преобразуем его в rgb
| |
| if (color.indexOf('rgba') === 0) {
| |
| var rgbaValues = color.match(/\d+/g);
| |
| if (rgbaValues && rgbaValues.length >= 3) {
| |
| r = parseInt(rgbaValues[0], 10);
| |
| g = parseInt(rgbaValues[1], 10);
| |
| b = parseInt(rgbaValues[2], 10);
| |
| } else {
| |
| return color; // Возвращаем оригинальный цвет, если не удалось разобрать
| |
| }
| |
| } else if (color.indexOf('rgb') === 0) {
| |
| var rgbValues = color.match(/\d+/g);
| |
| if (rgbValues && rgbValues.length >= 3) {
| |
| r = parseInt(rgbValues[0], 10);
| |
| g = parseInt(rgbValues[1], 10);
| |
| b = parseInt(rgbValues[2], 10);
| |
| } else {
| |
| return color; // Возвращаем оригинальный цвет, если не удалось разобрать
| |
| }
| |
| } else {
| |
| return color; // Возвращаем оригинальный цвет, если формат не поддерживается
| |
| }
| |
|
| |
| var brightness = getBrightness(r, g, b);
| |
|
| |
| // Устанавливаем порог для определения тёмного цвета
| |
| var darkThreshold = 90; // Более универсальный порог для разделения тёмных и светлых цветов
| |
| var brightnessFactor = brightness < darkThreshold ? factor + 0.04 : factor; // Увеличиваем фактор для тёмных цветов
| |
|
| |
| // Увеличиваем яркость
| |
| r = Math.min(255, Math.floor(r * brightnessFactor));
| |
| g = Math.min(255, Math.floor(g * brightnessFactor));
| |
| b = Math.min(255, Math.floor(b * brightnessFactor));
| |
|
| |
| return 'rgb(' + r + ', ' + g + ', ' + b + ')';
| |
| }
| |
|
| |
| // Функция для подсветки ячеек в таблице при наведении
| |
| function applyHighlighting() {
| |
| var tables = document.querySelectorAll('.wikitable:not(.no-highlight-table)');
| |
| Array.prototype.forEach.call(tables, function(table) {
| |
| var tbody = table.querySelector('tbody');
| |
| var thead = table.querySelector('thead');
| |
| var rows = Array.prototype.slice.call(tbody.querySelectorAll('tr')).filter(function(row) {
| |
| return !row.querySelector('table');
| |
| });
| |
| var topLevelRows = thead ? rows : rows.slice(1);
| |
|
| |
| var hasInvalidRowspan = false;
| |
| var hasTooManyRowspan = false;
| |
|
| |
| topLevelRows.forEach(function(row) {
| |
| var cells = Array.prototype.slice.call(row.querySelectorAll('td, th'));
| |
|
| |
| var rowspanCount = cells.filter(function(cell) {
| |
| return cell.hasAttribute('rowspan') && cell.getAttribute('rowspan') !== '1';
| |
| }).length;
| |
|
| |
| if (rowspanCount > 2) {
| |
| hasTooManyRowspan = true;
| |
| return;
| |
| }
| |
|
| |
| var hasValidRowspanEdge = cells.some(function(cell, index) {
| |
| return cell.hasAttribute('rowspan') && cell.getAttribute('rowspan') !== '1' && (index === 0 || index === cells.length - 1);
| |
| });
| |
|
| |
| if (!hasValidRowspanEdge && cells.some(function(cell, index) {
| |
| return cell.hasAttribute('rowspan') && cell.getAttribute('rowspan') !== '1' && index > 0 && index < cells.length - 1;
| |
| })) {
| |
| hasInvalidRowspan = true;
| |
| }
| |
| });
| |
|
| |
| if (hasTooManyRowspan || hasInvalidRowspan) return;
| |
|
| |
| topLevelRows.forEach(function(row) {
| |
| var cells = Array.prototype.slice.call(row.querySelectorAll('td, th'));
| |
| var originalStyles = cells.map(function(cell) {
| |
| return {
| |
| backgroundColor: getComputedStyle(cell).backgroundColor,
| |
| color: getComputedStyle(cell).color
| |
| };
| |
| });
| |
|
| |
| cells.forEach(function(cell, index) {
| |
| if (cell.hasAttribute('rowspan') && cell.getAttribute('rowspan') !== '1') return;
| |
|
| |
| cell.addEventListener('mouseover', function() {
| |
| cells.forEach(function(innerCell, innerIndex) {
| |
| if (!innerCell.hasAttribute('rowspan') || innerCell.getAttribute('rowspan') === '1') {
| |
| innerCell.style.backgroundColor = brightenColor(originalStyles[innerIndex].backgroundColor, 1.035);
| |
| innerCell.style.color = brightenColor(originalStyles[innerIndex].color, 1.035);
| |
| }
| |
| });
| |
| });
| |
|
| |
| cell.addEventListener('mouseout', function() {
| |
| cells.forEach(function(innerCell, innerIndex) {
| |
| if (!innerCell.hasAttribute('rowspan') || innerCell.getAttribute('rowspan') === '1') {
| |
| innerCell.style.backgroundColor = originalStyles[innerIndex].backgroundColor;
| |
| innerCell.style.color = originalStyles[innerIndex].color;
| |
| }
| |
| });
| |
| });
| |
| });
| |
| });
| |
| });
| |
| }
| |
|
| |
| $(document).ready(function() { | | $(document).ready(function() { |
| var serversStatus = document.querySelectorAll('.serversStatus'); | | var serversStatus = document.querySelectorAll('.serversStatus'); |
| Строка 444: |
Строка 324: |
| } | | } |
| } | | } |
| }
| |
| if (document.querySelector('.wikitable')) {
| |
| applyHighlighting();
| |
| } | | } |
| }); | | }); |