Jump to content

MediaWiki:Common.js: Difference between revisions

From Once Human Guide
No edit summary
No edit summary
Line 2: Line 2:
   $(function () {
   $(function () {


     /* ================= TAB SYSTEM ================= */
     const data = {
 
    document.querySelectorAll('.mw-tab-buttons').forEach(group => {
      const buttons = group.querySelectorAll('.mw-tab-btn');
 
      buttons.forEach(btn => {
        btn.onclick = function () {
          const tabId = this.dataset.tab;
 
          let container =
            this.closest('.mw-tabs') ||
            this.closest('.mw-tab-content') ||
            document;
 
          container.querySelectorAll('.mw-tab-content').forEach(c => {
            c.style.display = 'none';
          });
 
          container.querySelectorAll('.mw-tab-btn').forEach(b => {
            b.classList.remove('active');
          });
 
          this.classList.add('active');
 
          const target = container.querySelector('#' + tabId);
          if (target) target.style.display = 'block';
        };
      });
 
      if (buttons.length) buttons[0].click();
    });
 
    /* ================= SAFE DROPDOWN SYSTEM ================= */
 
    document.querySelectorAll('.mw-dropdown-ui').forEach(container => {
 
      try {
        const label = container.dataset.label || "Select";
        const raw = container.getAttribute("data-options");
 
        // 🔥 FIX: CLEAN BROKEN JSON BEFORE PARSE
        let clean = raw
          .replace(/[\n\r]/g, "")        // remove line breaks
          .replace(/,\s*}/g, "}")      // remove trailing commas
          .replace(/,\s*]/g, "]");      // remove trailing commas in arrays
 
        let options = {};
 
        try {
          options = JSON.parse(clean);
        } catch (e) {
          console.error("JSON still broken:", clean);
          container.innerHTML = "<div style='color:red'>Dropdown failed to load (bad data)</div>";
          return;
        }
 
        // 🔥 SORT
        const sortedKeys = Object.keys(options).sort((a, b) =>
          options[a].label.localeCompare(options[b].label)
        );
 
        const wrapper = document.createElement('div');
        wrapper.style.position = "relative";
 
        const button = document.createElement('button');
        button.textContent = label;
        button.style.width = "100%";
        button.style.padding = "10px";
        button.style.background = "#111";
        button.style.color = "#fff";
        button.style.border = "1px solid #444";
        button.style.borderRadius = "6px";
        button.style.cursor = "pointer";
        button.style.textAlign = "left";
 
        const list = document.createElement('div');
        list.style.display = "none";
        list.style.position = "absolute";
        list.style.width = "100%";
        list.style.background = "#1a1a1a";
        list.style.border = "1px solid #444";
        list.style.borderRadius = "6px";
        list.style.zIndex = "9999";
        list.style.maxHeight = "250px";
        list.style.overflowY = "auto";
 
        const output = document.createElement('div');
        output.style.marginTop = "10px";
        output.style.padding = "10px";
        output.style.border = "1px solid #444";
        output.style.display = "none";
 
        sortedKeys.forEach(key => {
          const item = document.createElement('div');
          item.textContent = options[key].label;
          item.style.padding = "8px";
          item.style.cursor = "pointer";
          item.style.color = "#ccc";
 
          item.onmouseenter = () => {
            item.style.background = "#00bfff";
            item.style.color = "#000";
          };
 
          item.onmouseleave = () => {
            item.style.background = "";
            item.style.color = "#ccc";
          };
 
          item.onclick = function () {
            button.textContent = options[key].label;
            output.innerHTML = options[key].content;
            output.style.display = "block";
            list.style.display = "none";
          };
 
          list.appendChild(item);
        });
 
        button.onclick = function () {
          list.style.display = list.style.display === "block" ? "none" : "block";
        };
 
        wrapper.appendChild(button);
        wrapper.appendChild(list);
 
        container.innerHTML = "";
        container.appendChild(wrapper);
        container.appendChild(output);
 
      } catch (err) {
        console.error("Dropdown crash:", err);
      }
 
    });
 
  });
});
mw.loader.using('mediawiki.util').then(function () {
  $(function () {


    const data = {
       slot1: `<table class="wikitable">
       slot1: `<table class="wikitable"><tr><th>Trait</th><th>Effect</th></tr>
      <tr><th>Trait</th><th>Effect</th></tr>
       <tr><td>Cheer Up</td><td>Max Mood +30–50%</td></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>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>`,
       </table>`,


       slot1_dev: `<table class="wikitable"><tr><th>Trait</th><th>Effect</th><th>Deviant</th></tr>
       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>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>`,
       </table>`,


       slot2: `<table class="wikitable"><tr><th>Trait</th><th>Effect</th></tr>
       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>
       <tr><td>Workaholic</td><td>+10% duration</td></tr>
       </table>`,
       </table>`,


       slot2_dev: `<table class="wikitable"><tr><th>Trait</th><th>Effect</th><th>Deviant</th></tr>
       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>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>`,
       </table>`,


       slot3: `<table class="wikitable"><tr><th>Trait</th><th>Effect</th></tr>
       slot3: `<table class="wikitable">
       <tr><td>Brute Force Rules</td><td>Double output chance</td></tr>
      <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>`
       </table>`
     };
     };
Line 168: Line 78:
     $(document).on("change", "#traitDropdown", function () {
     $(document).on("change", "#traitDropdown", function () {
       const value = $(this).val();
       const value = $(this).val();
       $("#traitContent").html(data[value] || "Provide Trait information here");
       $("#traitContent").html(data[value] || "<b>Provide Trait information here</b>");
     });
     });


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

Revision as of 20:49, 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>");
    });

  });
});