|
|
| Строка 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;
| |
| }
| |
|
| |
| // Если цвет в формате rgba, преобразуем его в rgb
| |
| if (color.indexOf('rgba') === 0) {
| |
| var rgbaValues = color.match(/\d+/g).slice(0, 3).map(Number);
| |
| var r = rgbaValues[0], g = rgbaValues[1], b = rgbaValues[2];
| |
| color = 'rgb(' + r + ',' + g + ',' + b + ')';
| |
| } else {
| |
| // Если цвет в формате rgb
| |
| var rgbValues = color.match(/\d+/g).map(Number);
| |
| var r = rgbValues[0], g = rgbValues[1], b = rgbValues[2];
| |
| }
| |
|
| |
| 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'); |
| Строка 431: |
Строка 325: |
| } | | } |
| } | | } |
| applyHighlighting;
| |
| }); | | }); |
| /*WikiEditor/Викификатор*/ | | /*WikiEditor/Викификатор*/ |