Перейти к содержанию

MediaWiki:Common.js: различия между версиями

Материал из Horny Jail WIKI
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
// Переключение вкладок уровней хаоса
mw.hook('wikipage.content').add(function ($content) {
mw.hook('wikipage.content').add(function ($content) {
    var $buttons = $content.find('.hj-chaos-tab-button');
  var $buttons = $content.find('.hj-chaos-tab-button');
    var $blocks  = $content.find('.hj-chaos-block');
  var $blocks  = $content.find('.hj-chaos-block');
  var root    = $content.closest('.hj-chaos-container')[0];


    if (!$buttons.length || !$blocks.length) return;
  if (!$buttons.length || !$blocks.length) return;


     $buttons.off('click.hjChaos').on('click.hjChaos', function () {
  function darken(rgb, k){
        var $btn = $(this);
     var m = rgb.match(/\d+/g) || [17,17,17];
        var key  = $btn.data('chaos'); // overview / calm / medium / high
    var r = Math.round(m[0]*(1-k)), g = Math.round(m[1]*(1-k)), b = Math.round(m[2]*(1-k));
    return 'rgb('+r+', '+g+', '+b+')';
  }


        // Кнопки
  function applyPanelFrom($btn){
        $buttons.removeClass('active');
    var c = getComputedStyle($btn[0]).backgroundColor;
        $btn.addClass('active');
    root.style.setProperty('--panel-bg', c);
    root.style.setProperty('--card-bg', darken(c, 0.18));
  }


        // Блоки
  var $active = $buttons.filter('.active');
        $blocks.removeClass('active');
  if ($active.length) applyPanelFrom($active);
        var $block = $blocks.filter('[data-chaos="' + key + '"]').addClass('active');


        // Копируем цвет фона с кнопки
  $buttons.off('click.hjChaos').on('click.hjChaos', function () {
        var bgColor = $btn.css('background-color');
    var $btn = $(this);
        $block.css('background-color', bgColor);
    var key  = $btn.data('chaos');
     });
 
    $buttons.removeClass('active');
    $btn.addClass('active');
 
    $blocks.removeClass('active');
    $blocks.filter('[data-chaos="' + key + '"]').addClass('active');
 
     applyPanelFrom($btn);
  });
});
});

Версия от 09:41, 12 ноября 2025

mw.hook('wikipage.content').add(function ($content) {
  var $buttons = $content.find('.hj-chaos-tab-button');
  var $blocks  = $content.find('.hj-chaos-block');
  var root     = $content.closest('.hj-chaos-container')[0];

  if (!$buttons.length || !$blocks.length) return;

  function darken(rgb, k){
    var m = rgb.match(/\d+/g) || [17,17,17];
    var r = Math.round(m[0]*(1-k)), g = Math.round(m[1]*(1-k)), b = Math.round(m[2]*(1-k));
    return 'rgb('+r+', '+g+', '+b+')';
  }

  function applyPanelFrom($btn){
    var c = getComputedStyle($btn[0]).backgroundColor;
    root.style.setProperty('--panel-bg', c);
    root.style.setProperty('--card-bg', darken(c, 0.18));
  }

  var $active = $buttons.filter('.active');
  if ($active.length) applyPanelFrom($active);

  $buttons.off('click.hjChaos').on('click.hjChaos', function () {
    var $btn = $(this);
    var key  = $btn.data('chaos');

    $buttons.removeClass('active');
    $btn.addClass('active');

    $blocks.removeClass('active');
    $blocks.filter('[data-chaos="' + key + '"]').addClass('active');

    applyPanelFrom($btn);
  });
});