Dc12d13: Diferență între versiuni

[versiune verificată][versiune verificată]
m
m
Linia 1: Linia 1:
<div class="encyclopedia-container">
+
(function () {
     <div class="encyclopedia-title">Enciclopedia Monștrilor</div>
+
     mw.hook('wikipage.content').add(function() {
   
+
        var selectedMonster = null;
    <!-- Column for Monsters -->
+
         var selectedCategory = 'Weapondrops';
    <div class="encyclopedia-column">
 
         <div class="encyclopedia-list-container">
 
            <ul class="encyclopedia-list" id="monster-list">
 
                <li data-monster="Câine_Sălbatic">Câine Sălbatic</li>
 
                <li data-monster="Câine_Sălbatic_Flămând">Câine Sălbatic Flămând</li>
 
                <li data-monster="Lup">Lup</li>
 
                <li data-monster="Lup_Alpha">Lup Alpha</li>
 
                <li data-monster="Lup_Albastru">Lup Albastru</li>
 
                <li data-monster="Lup_Alpha_Albastru">Lup Alpha Albastru</li>
 
                <li data-monster="Lup_Gri">Lup Gri</li>
 
                <li data-monster="Lup_Alpha_Gri">Lup Alpha Gri</li>
 
                <li data-monster="Mistret_Salbatic">Mistreț Sălbatic</li>
 
                <li data-monster="Mistreț_Sălbatic_Roșu">Mistreț Sălbatic Roșu</li>
 
            </ul>
 
        </div>
 
    </div>
 
  
    <!-- Column for Categories -->
+
         function showLoot(monster, category) {
    <div class="encyclopedia-column">
+
             var lootList = document.getElementById('loot-list');
         <div class="encyclopedia-list-container">
+
            if (!lootList) return;
             <ul class="encyclopedia-list" id="category-list">
+
            lootList.innerHTML = '';
                <li data-category="Weapondrops">Arme</li>
 
                <li data-category="Armordrops">Armuri</li>
 
                <li data-category="Otherdrops">Drop General</li>
 
            </ul>
 
        </div>
 
    </div>
 
  
    <!-- Column for Possible Loot -->
+
            var apiUrl = 'https://ro-wiki.metin2.gameforge.com/api.php?action=parse&page=' + encodeURIComponent(monster) + '&prop=wikitext&format=json&origin=*';
    <div class="encyclopedia-column">
+
 
         <div class="encyclopedia-list-container">
+
            fetch(apiUrl)
             <ul class="encyclopedia-list" id="loot-list">
+
                .then(function(response) {
                 <li>Selectează un monstru pentru a vedea prada</li>
+
                    if (!response.ok) {
             </ul>
+
                        throw new Error('Network response was not ok: ' + response.statusText);
         </div>
+
                    }
     </div>
+
                    return response.json();
</div>
+
                })
 +
                .then(function(data) {
 +
                    if (data.parse && data.parse.wikitext) {
 +
                        var wikitext = data.parse.wikitext['*'];
 +
                        var drops = {
 +
                            Weapondrops: [],
 +
                            Armordrops: [],
 +
                            Otherdrops: []
 +
                        };
 +
 
 +
                        ['Weapondrops', 'Armordrops', 'Otherdrops'].forEach(function(dropType) {
 +
                            var regex = new RegExp('\\|' + dropType + '\\s*=([\\s\\S]*?)(?=(\\n\\|\\w+\\s*=|$))', 'i');
 +
                            var match = wikitext.match(regex);
 +
                            if (match && match[1].trim()) {
 +
                                var items = match[1].trim().split(/\n\s*[:*]\s*/);
 +
                                drops[dropType] = items.map(function(item) {
 +
                                    var textMatch = item.match(/\{\{Ti\|[^}]+\}\}/);
 +
                                    if (textMatch) {
 +
                                        var linkTextMatch = textMatch[0].match(/\|\s*([^|}]+)\s*\}\}/);
 +
                                        if (linkTextMatch) {
 +
                                            return linkTextMatch[1].trim();
 +
                                        }
 +
                                    }
 +
                                    return null;
 +
                                }).filter(Boolean);
 +
                            }
 +
                        });
 +
 
 +
                        var itemsToDisplay = drops[category] || [];
 +
 
 +
                        itemsToDisplay.forEach(function(item) {
 +
                            var li = document.createElement('li');
 +
                            li.classList.add('loot-list-item');
 +
                            var link = document.createElement('a');
 +
                            link.textContent = item;
 +
                            link.href = 'https://ro-wiki.metin2.gameforge.com/index.php/' + encodeURIComponent(item);
 +
                            link.target = '_blank';
 +
                            link.style.color = 'white';
 +
 
 +
                            li.appendChild(link);
 +
                            lootList.appendChild(li);
 +
                        });
 +
 
 +
                        if (lootList.children.length === 0) {
 +
                            var li = document.createElement('li');
 +
                            li.textContent = 'Nu am gasit nimic pentru aceasta categorie.';
 +
                            li.classList.add('loot-list-item');
 +
                            lootList.appendChild(li);
 +
                        }
 +
                    } else {
 +
                        console.error('Unexpected data format:', data);
 +
                    }
 +
                })
 +
        }
 +
 
 +
         function updateHighlighting() {
 +
            var monsterItems = document.querySelectorAll('#monster-list li');
 +
            monsterItems.forEach(function(item) {
 +
                item.classList.remove('highlighted');
 +
                if (item.getAttribute('data-monster') === selectedMonster) {
 +
                    item.classList.add('highlighted');
 +
                }
 +
            });
 +
 
 +
             var categoryItems = document.querySelectorAll('#category-list li');
 +
            categoryItems.forEach(function(item) {
 +
                item.classList.remove('highlighted');
 +
                if (item.getAttribute('data-category') === selectedCategory) {
 +
                    item.classList.add('highlighted');
 +
                }
 +
            });
 +
        }
 +
 
 +
        var monsterItems = document.querySelectorAll('#monster-list li');
 +
        monsterItems.forEach(function(item) {
 +
            item.addEventListener('click', function() {
 +
                selectedMonster = item.getAttribute('data-monster');
 +
                selectedCategory = 'Weapondrops';
 +
                showLoot(selectedMonster, selectedCategory);
 +
                 updateHighlighting();
 +
            });
 +
        });
 +
 
 +
        var categoryItems = document.querySelectorAll('#category-list li');
 +
        categoryItems.forEach(function(item) {
 +
            item.addEventListener('click', function() {
 +
                selectedCategory = item.getAttribute('data-category');
 +
 
 +
                categoryItems.forEach(function(catItem) {
 +
                    catItem.classList.remove('highlighted');
 +
                });
 +
 
 +
                item.classList.add('highlighted');
 +
               
 +
                if (selectedMonster) {
 +
                    showLoot(selectedMonster, selectedCategory);
 +
                }
 +
                updateHighlighting();
 +
            });
 +
        });
 +
 
 +
        if (monsterItems.length > 0) {
 +
            selectedMonster = monsterItems[0].getAttribute('data-monster');
 +
            showLoot(selectedMonster, selectedCategory);
 +
             updateHighlighting();
 +
         }
 +
     });
 +
})();

Versiunea de la data 22 august 2024 19:34

(function () {

   mw.hook('wikipage.content').add(function() {
       var selectedMonster = null;
       var selectedCategory = 'Weapondrops'; 
       function showLoot(monster, category) {
           var lootList = document.getElementById('loot-list');
           if (!lootList) return; 
           lootList.innerHTML = ;
           var apiUrl = 'https://ro-wiki.metin2.gameforge.com/api.php?action=parse&page=' + encodeURIComponent(monster) + '&prop=wikitext&format=json&origin=*';
           fetch(apiUrl)
               .then(function(response) {
                   if (!response.ok) {
                       throw new Error('Network response was not ok: ' + response.statusText);
                   }
                   return response.json();
               })
               .then(function(data) {
                   if (data.parse && data.parse.wikitext) {
                       var wikitext = data.parse.wikitext['*'];
                       var drops = {
                           Weapondrops: [],
                           Armordrops: [],
                           Otherdrops: []
                       };
                       ['Weapondrops', 'Armordrops', 'Otherdrops'].forEach(function(dropType) {
                           var regex = new RegExp('\\|' + dropType + '\\s*=([\\s\\S]*?)(?=(\\n\\|\\w+\\s*=|$))', 'i');
                           var match = wikitext.match(regex);
                           if (match && match[1].trim()) {
                               var items = match[1].trim().split(/\n\s*[:*]\s*/);
                               drops[dropType] = items.map(function(item) {
                                   var textMatch = item.match(/\{\{Ti\|[^}]+\}\}/);
                                   if (textMatch) {
                                       var linkTextMatch = textMatch[0].match(/\|\s*([^|}]+)\s*\}\}/);
                                       if (linkTextMatch) {
                                           return linkTextMatch[1].trim();
                                       }
                                   }
                                   return null;
                               }).filter(Boolean);
                           }
                       });
                       var itemsToDisplay = drops[category] || [];
                       itemsToDisplay.forEach(function(item) {
                           var li = document.createElement('li');
                           li.classList.add('loot-list-item');
                           var link = document.createElement('a');
                           link.textContent = item;
                           link.href = 'https://ro-wiki.metin2.gameforge.com/index.php/' + encodeURIComponent(item);
                           link.target = '_blank'; 
                           link.style.color = 'white';
                           li.appendChild(link);
                           lootList.appendChild(li);
                       });
                       if (lootList.children.length === 0) {
                           var li = document.createElement('li');
                           li.textContent = 'Nu am gasit nimic pentru aceasta categorie.';
                           li.classList.add('loot-list-item');
                           lootList.appendChild(li);
                       }
                   } else {
                       console.error('Unexpected data format:', data);
                   }
               })
       }
       function updateHighlighting() {
           var monsterItems = document.querySelectorAll('#monster-list li');
           monsterItems.forEach(function(item) {
               item.classList.remove('highlighted');
               if (item.getAttribute('data-monster') === selectedMonster) {
                   item.classList.add('highlighted');
               }
           });
           var categoryItems = document.querySelectorAll('#category-list li');
           categoryItems.forEach(function(item) {
               item.classList.remove('highlighted');
               if (item.getAttribute('data-category') === selectedCategory) {
                   item.classList.add('highlighted');
               }
           });
       }
       var monsterItems = document.querySelectorAll('#monster-list li');
       monsterItems.forEach(function(item) {
           item.addEventListener('click', function() {
               selectedMonster = item.getAttribute('data-monster');
               selectedCategory = 'Weapondrops'; 
               showLoot(selectedMonster, selectedCategory);
               updateHighlighting();
           });
       });
       var categoryItems = document.querySelectorAll('#category-list li');
       categoryItems.forEach(function(item) {
           item.addEventListener('click', function() {
               selectedCategory = item.getAttribute('data-category');
               categoryItems.forEach(function(catItem) {
                   catItem.classList.remove('highlighted');
               });
               item.classList.add('highlighted'); 
               
               if (selectedMonster) {
                   showLoot(selectedMonster, selectedCategory);
               }
               updateHighlighting();
           });
       });
       if (monsterItems.length > 0) {
           selectedMonster = monsterItems[0].getAttribute('data-monster');
           showLoot(selectedMonster, selectedCategory);
           updateHighlighting();
       }
   });

})();