Jump to content

MediaWiki:Common.js: Difference between revisions

From Once Human Guide
No edit summary
Tag: Manual revert
No edit summary
Line 1: Line 1:
mw.loader.using(['mediawiki.util']).then(function () {
mw.loader.using('mediawiki.util').then(function () {
   $(function () {
   $(function () {


     /* ================= TAB SYSTEM ================= */
     const data = {


    document.querySelectorAll('.mw-tab-buttons').forEach(group => {
      slot1: `<table class="wikitable">
       const buttons = group.querySelectorAll('.mw-tab-btn');
      <tr><th>Trait</th><th>Effect</th></tr>
      <tr><td>Cheer Up</td><td>Max Mood +30–50%; Power recovery -5%</td></tr>
      <tr><td>Covert Energy</td><td>Max Power +10–35%</td></tr>
      <tr><td>Feeling Blue</td><td>Max Mood -5–10%</td></tr>
      <tr><td>Growing Pains</td><td>Max Power +30–50%; Mood recovery -5%</td></tr>
      <tr><td>Optimist</td><td>Max Mood +15–35%</td></tr>
      <tr><td>Power Rewind</td><td>Power recovery +5–10%</td></tr>
      <tr><td>Rise and Shine</td><td>Mood recovery +5–25%</td></tr>
      <tr><td>Stable Energy</td><td>Max Power +30</td></tr>
      <tr><td>Stable Vitality</td><td>Max Mood +30</td></tr>
      <tr><td>Upper Hand</td><td>Convert Mood → Power at 0</td></tr>
       <tr><td>Worn-out</td><td>Max Power -5–10%</td></tr>
      </table>`,


       buttons.forEach(btn => {
       slot1_dev: `<table class="wikitable">
        btn.addEventListener('click', function () {
      <tr><th>Trait</th><th>Effect</th><th>Deviant</th></tr>
          const tabId = this.getAttribute('data-tab');
      <tr><td>Pumpkin Lantern</td><td>+10% Power</td><td>Buzzy Bee</td></tr>
      <tr><td>Gold Lightning</td><td>+15% Power Recovery</td><td>Electric Eel</td></tr>
      <tr><td>Optimism – Good Fortune</td><td>+40% Mood</td><td>Extradimensional Cat</td></tr>
      <tr><td>Aquarius</td><td>+30% Mood Recovery</td><td>Fetch-A-Lot</td></tr>
      <tr><td>Golden Toad</td><td>+20% Mood Recovery</td><td>Flame Essence</td></tr>
      <tr><td>Shadow Shroom</td><td>+40% Energy</td><td>Growshroom</td></tr>
      <tr><td>Prototype</td><td>+10% Power Recovery</td><td>H37</td></tr>
      <tr><td>Evergreen</td><td>2% chance to bring Bait</td><td>Hydronaut Fish</td></tr>
      <tr><td>Feisty Vitality</td><td>+30% Mood Recovery</td><td>Nutcracker</td></tr>
      <tr><td>Witch's Beloved</td><td>+20% Mood Recovery</td><td>Paper Doll</td></tr>
      <tr><td>Childlike Whimsy</td><td>+30% Power Recovery</td><td>Rain Man</td></tr>
      <tr><td>Radiance</td><td>+40% Power</td><td>Tar Pudding</td></tr>
      <tr><td>Emerald</td><td>+10% Power Recovery</td><td>The Digby Boy</td></tr>
      </table>`,


          // remove active from siblings
      slot2: `<table class="wikitable">
          buttons.forEach(b => b.classList.remove('active'));
      <tr><th>Trait</th><th>Effect</th></tr>
      <tr><td>A World of Charm</td><td>10% give +20 Mood</td></tr>
      <tr><td>Anti-Burnout</td><td>20% give +5 Power</td></tr>
      <tr><td>Devoted Laborer</td><td>+20% duration</td></tr>
      <tr><td>Dream Wild</td><td>10% give +10 Power</td></tr>
      <tr><td>Hydrophilic</td><td>+30% recovery near water</td></tr>
      <tr><td>Lazy Bones</td><td>-5% speed</td></tr>
      <tr><td>Living Map</td><td>-5% interval</td></tr>
      <tr><td>OnePlus</td><td>Rare crystals chance</td></tr>
      <tr><td>Panovision</td><td>-10% speed</td></tr>
      <tr><td>Slacking Off</td><td>+5% consumption</td></tr>
      <tr><td>Stardust Affinity</td><td>20% no Mood cost</td></tr>
      <tr><td>Sweet Talk</td><td>20% give Mood</td></tr>
      <tr><td>Voluntary Overtime</td><td>10% no Mood cost</td></tr>
      <tr><td>Workaholic</td><td>+10% duration</td></tr>
      </table>`,


          // activate clicked
      slot2_dev: `<table class="wikitable">
          this.classList.add('active');
      <tr><th>Trait</th><th>Effect</th><th>Deviant</th></tr>
      <tr><td>Lunar Oracle</td><td>+20% duration</td><td>Electric Eel</td></tr>
      <tr><td>Daydreaming</td><td>Restore Power</td><td>Extradimensional Cat</td></tr>
      <tr><td>Toxicologist – Green Touch</td><td>25% no Power cost</td><td>Growshroom</td></tr>
      <tr><td>Admiral</td><td>3% no Power cost</td><td>Nutcracker</td></tr>
      <tr><td>Diamond Duke</td><td>5% no cost</td><td>Nutcracker</td></tr>
      <tr><td>Workaholic – Lights</td><td>+20% duration</td><td>Nutcracker</td></tr>
      <tr><td>Gold Speaker</td><td>Extra ores</td><td>The Digby Boy</td></tr>
      </table>`,


          // find ALL tab content on page
      slot3: `<table class="wikitable">
          document.querySelectorAll('.mw-tab-content').forEach(tab => {
      <tr><th>Trait</th><th>Effect</th></tr>
            tab.classList.remove('active');
      <tr><td>Brute Force Rules</td><td>10% double output</td></tr>
          });
      <tr><td>Clean and Hygienic</td><td>Sanity floor 20%</td></tr>
      <tr><td>Extra Load</td><td>+15% storage</td></tr>
      <tr><td>Feline Creatures</td><td>Extra item chance</td></tr>
      <tr><td>Moonlight Assault</td><td>+15% recovery at night</td></tr>
      <tr><td>Top Grunt</td><td>Mood → Energy conversion</td></tr>
      </table>`
    };


          // activate target
    $(document).on("change", "#traitDropdown", function () {
          const target = document.getElementById(tabId);
       const value = $(this).val();
          if (target) target.classList.add('active');
       $("#traitContent").html(data[value] || "<b>Provide Trait information here</b>");
        });
      });
 
      // AUTO ACTIVATE FIRST TAB IN EACH GROUP
      const first = buttons[0];
      if (first) first.click();
    });
 
    /* ================= MOD SYSTEM ================= */
 
    document.querySelectorAll('.mod-system').forEach(container => {
      const modType = container.getAttribute('data-mod');
      const db = document.querySelector(`#mod-database [data-mod="${modType}"]`);
 
      if (!db) return;
 
       const leftData = JSON.parse(db.querySelector('[data-left]').getAttribute('data-left'));
       const rightData = JSON.parse(db.querySelector('[data-right]').getAttribute('data-right'));
 
      const wrapper = document.createElement('div');
      wrapper.className = 'mod-dropdown';
 
      const leftBtn = document.createElement('div');
      leftBtn.className = 'mod-dropdown-btn';
      leftBtn.textContent = 'Select Mod Type';
 
      const leftList = document.createElement('div');
      leftList.className = 'mod-dropdown-list';
 
      const rightBtn = document.createElement('div');
      rightBtn.className = 'mod-dropdown-btn';
      rightBtn.textContent = 'Select Stat';
 
      const rightList = document.createElement('div');
      rightList.className = 'mod-dropdown-list';
 
      const output = document.createElement('div');
      output.className = 'mw-dropdown-output';
 
      let selectedLeft = null;
      let selectedRight = null;
 
      // Populate LEFT dropdown
      Object.entries(leftData).forEach(([key, label]) => {
        const item = document.createElement('div');
        item.className = 'mod-dropdown-item';
        item.textContent = label;
 
        item.onclick = () => {
          selectedLeft = key;
          leftBtn.textContent = label;
          leftList.style.display = 'none';
          updateOutput();
        };
 
        leftList.appendChild(item);
      });
 
      // Populate RIGHT dropdown
      Object.entries(rightData).forEach(([key, label]) => {
        const item = document.createElement('div');
        item.className = 'mod-dropdown-item';
        item.textContent = label;
 
        item.onclick = () => {
          selectedRight = key;
          rightBtn.textContent = label;
          rightList.style.display = 'none';
          updateOutput();
        };
 
        rightList.appendChild(item);
      });
 
      // Toggle lists
      leftBtn.onclick = () => {
        leftList.style.display = leftList.style.display === 'block' ? 'none' : 'block';
      };
 
      rightBtn.onclick = () => {
        rightList.style.display = rightList.style.display === 'block' ? 'none' : 'block';
      };
 
      function updateOutput() {
        if (!selectedLeft || !selectedRight) return;
 
        const key = `${selectedLeft}__${selectedRight}`;
        const match = db.querySelector(`[data-key="${key}"]`);
 
        output.innerHTML = match ? match.innerHTML : "No data found";
      }
 
      wrapper.appendChild(leftBtn);
      wrapper.appendChild(leftList);
      wrapper.appendChild(rightBtn);
      wrapper.appendChild(rightList);
      wrapper.appendChild(output);
 
      container.appendChild(wrapper);
     });
     });


   });
   });
});
});

Revision as of 22:00, 21 April 2026

mw.loader.using('mediawiki.util').then(function () {
  $(function () {

    const data = {

      slot1: `<table class="wikitable">
      <tr><th>Trait</th><th>Effect</th></tr>
      <tr><td>Cheer Up</td><td>Max Mood +30–50%; Power recovery -5%</td></tr>
      <tr><td>Covert Energy</td><td>Max Power +10–35%</td></tr>
      <tr><td>Feeling Blue</td><td>Max Mood -5–10%</td></tr>
      <tr><td>Growing Pains</td><td>Max Power +30–50%; Mood recovery -5%</td></tr>
      <tr><td>Optimist</td><td>Max Mood +15–35%</td></tr>
      <tr><td>Power Rewind</td><td>Power recovery +5–10%</td></tr>
      <tr><td>Rise and Shine</td><td>Mood recovery +5–25%</td></tr>
      <tr><td>Stable Energy</td><td>Max Power +30</td></tr>
      <tr><td>Stable Vitality</td><td>Max Mood +30</td></tr>
      <tr><td>Upper Hand</td><td>Convert Mood → Power at 0</td></tr>
      <tr><td>Worn-out</td><td>Max Power -5–10%</td></tr>
      </table>`,

      slot1_dev: `<table class="wikitable">
      <tr><th>Trait</th><th>Effect</th><th>Deviant</th></tr>
      <tr><td>Pumpkin Lantern</td><td>+10% Power</td><td>Buzzy Bee</td></tr>
      <tr><td>Gold Lightning</td><td>+15% Power Recovery</td><td>Electric Eel</td></tr>
      <tr><td>Optimism – Good Fortune</td><td>+40% Mood</td><td>Extradimensional Cat</td></tr>
      <tr><td>Aquarius</td><td>+30% Mood Recovery</td><td>Fetch-A-Lot</td></tr>
      <tr><td>Golden Toad</td><td>+20% Mood Recovery</td><td>Flame Essence</td></tr>
      <tr><td>Shadow Shroom</td><td>+40% Energy</td><td>Growshroom</td></tr>
      <tr><td>Prototype</td><td>+10% Power Recovery</td><td>H37</td></tr>
      <tr><td>Evergreen</td><td>2% chance to bring Bait</td><td>Hydronaut Fish</td></tr>
      <tr><td>Feisty Vitality</td><td>+30% Mood Recovery</td><td>Nutcracker</td></tr>
      <tr><td>Witch's Beloved</td><td>+20% Mood Recovery</td><td>Paper Doll</td></tr>
      <tr><td>Childlike Whimsy</td><td>+30% Power Recovery</td><td>Rain Man</td></tr>
      <tr><td>Radiance</td><td>+40% Power</td><td>Tar Pudding</td></tr>
      <tr><td>Emerald</td><td>+10% Power Recovery</td><td>The Digby Boy</td></tr>
      </table>`,

      slot2: `<table class="wikitable">
      <tr><th>Trait</th><th>Effect</th></tr>
      <tr><td>A World of Charm</td><td>10% give +20 Mood</td></tr>
      <tr><td>Anti-Burnout</td><td>20% give +5 Power</td></tr>
      <tr><td>Devoted Laborer</td><td>+20% duration</td></tr>
      <tr><td>Dream Wild</td><td>10% give +10 Power</td></tr>
      <tr><td>Hydrophilic</td><td>+30% recovery near water</td></tr>
      <tr><td>Lazy Bones</td><td>-5% speed</td></tr>
      <tr><td>Living Map</td><td>-5% interval</td></tr>
      <tr><td>OnePlus</td><td>Rare crystals chance</td></tr>
      <tr><td>Panovision</td><td>-10% speed</td></tr>
      <tr><td>Slacking Off</td><td>+5% consumption</td></tr>
      <tr><td>Stardust Affinity</td><td>20% no Mood cost</td></tr>
      <tr><td>Sweet Talk</td><td>20% give Mood</td></tr>
      <tr><td>Voluntary Overtime</td><td>10% no Mood cost</td></tr>
      <tr><td>Workaholic</td><td>+10% duration</td></tr>
      </table>`,

      slot2_dev: `<table class="wikitable">
      <tr><th>Trait</th><th>Effect</th><th>Deviant</th></tr>
      <tr><td>Lunar Oracle</td><td>+20% duration</td><td>Electric Eel</td></tr>
      <tr><td>Daydreaming</td><td>Restore Power</td><td>Extradimensional Cat</td></tr>
      <tr><td>Toxicologist – Green Touch</td><td>25% no Power cost</td><td>Growshroom</td></tr>
      <tr><td>Admiral</td><td>3% no Power cost</td><td>Nutcracker</td></tr>
      <tr><td>Diamond Duke</td><td>5% no cost</td><td>Nutcracker</td></tr>
      <tr><td>Workaholic – Lights</td><td>+20% duration</td><td>Nutcracker</td></tr>
      <tr><td>Gold Speaker</td><td>Extra ores</td><td>The Digby Boy</td></tr>
      </table>`,

      slot3: `<table class="wikitable">
      <tr><th>Trait</th><th>Effect</th></tr>
      <tr><td>Brute Force Rules</td><td>10% double output</td></tr>
      <tr><td>Clean and Hygienic</td><td>Sanity floor 20%</td></tr>
      <tr><td>Extra Load</td><td>+15% storage</td></tr>
      <tr><td>Feline Creatures</td><td>Extra item chance</td></tr>
      <tr><td>Moonlight Assault</td><td>+15% recovery at night</td></tr>
      <tr><td>Top Grunt</td><td>Mood → Energy conversion</td></tr>
      </table>`
    };

    $(document).on("change", "#traitDropdown", function () {
      const value = $(this).val();
      $("#traitContent").html(data[value] || "<b>Provide Trait information here</b>");
    });

  });
});