Dc12d13: Diferență între versiuni

[versiune verificată][versiune verificată]
m
m
Linia 1: Linia 1:
<div style="display: flex; border: 1px solid #8B4513; padding: 5px; width: 100%; background-color: #26211D; color: white;">
+
(function () {
     <!-- Column for Monsters -->
+
     document.addEventListener('DOMContentLoaded', function () {
    <div style="flex: 1; border-right: 1px solid #8B4513; padding: 5px;">
+
         function showLoot(monster) {
         <div style="height: 200px; overflow-y: scroll;">
+
             var lootList = document.getElementById('loot-list');
             <ul id="monster-list" style="list-style-type: none; padding-left: 0;">
+
            lootList.innerHTML = ''; // Clear existing content
                <li data-monster="Câine_Sălbatic">Câine Sălbatic</li>
 
                <li data-monster="Lup">Lup</li>
 
                <li data-monster="Lup_Alpha">Lup Alpha</li>
 
                <!-- Add more items as needed -->
 
            </ul>
 
        </div>
 
    </div>
 
  
    <!-- Column for Possible Loot -->
+
            var apiUrl = mw.util.wikiScript('api') + '?action=parse&page=' + encodeURIComponent(monster) + '&prop=wikitext&format=json&origin=*';
    <div style="flex: 1; padding: 5px;">
+
 
        <div style="height: 200px; overflow-y: scroll;">
+
            fetch(apiUrl)
            <ul id="loot-list" style="list-style-type: none; padding-left: 0;">
+
                .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) {
 +
                    var wikitext = data.parse.wikitext['*'];
 +
                    console.log(wikitext);
 +
 
 +
                    // Handle redirects
 +
                    if (wikitext.startsWith('#Redirect')) {
 +
                        var targetPageMatch = wikitext.match(/\[\[([^\]]+)\]\]/);
 +
                        if (targetPageMatch) {
 +
                            var targetPage = targetPageMatch[1];
 +
                            var redirectUrl = mw.util.wikiScript('api') + '?action=parse&page=' + encodeURIComponent(targetPage) + '&prop=wikitext&format=json&origin=*';
 +
                            return fetch(redirectUrl)
 +
                                .then(function (response) {
 +
                                    if (!response.ok) {
 +
                                        throw new Error('Redirect Network response was not ok: ' + response.statusText);
 +
                                    }
 +
                                    return response.json();
 +
                                });
 +
                        }
 +
                    }
 +
                    return data;
 +
                })
 +
                .then(function (data) {
 +
                    var wikitext = data.parse.wikitext['*'];
 +
                    var weapondropsMatch = wikitext.match(/\|Weapondrops\s*=\s*([^\n|]*)/);
 +
                    if (weapondropsMatch) {
 +
                        var weapondrops = weapondropsMatch[1].trim();
 +
                        var lootItems = weapondrops.split('::');
 +
 
 +
                        lootItems.forEach(function (item) {
 +
                            if (item.trim()) {
 +
                                var li = document.createElement('li');
 +
                                li.textContent = item.trim();
 +
                                lootList.appendChild(li);
 +
                            }
 +
                        });
 +
                    } else {
 +
                        var li = document.createElement('li');
 +
                        li.textContent = 'No weapon drops found';
 +
                        lootList.appendChild(li);
 +
                    }
 +
                })
 +
                .catch(function (error) {
 +
                    var lootList = document.getElementById('loot-list');
 +
                    if (lootList) {
 +
                        var li = document.createElement('li');
 +
                        li.textContent = 'Error fetching loot: ' + error.message;
 +
                        lootList.appendChild(li);
 +
                    } else {
 +
                        console.error('Element with ID "loot-list" not found.');
 +
                    }
 +
                    console.error('Error:', error);
 +
                });
 +
        }
 +
 
 +
        var items = document.querySelectorAll('#monster-list li');
 +
        items.forEach(function (item) {
 +
            item.addEventListener('click', function () {
 +
                 showLoot(item.getAttribute('data-monster'));
 +
             });
 +
         });
 +
     });
 +
})();

Versiunea de la data 22 august 2024 11:35

(function () {

   document.addEventListener('DOMContentLoaded', function () {
       function showLoot(monster) {
           var lootList = document.getElementById('loot-list');
           lootList.innerHTML = ; // Clear existing content
           var apiUrl = mw.util.wikiScript('api') + '?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) {
                   var wikitext = data.parse.wikitext['*'];
                   console.log(wikitext);
                   // Handle redirects
                   if (wikitext.startsWith('#Redirect')) {
                       var targetPageMatch = wikitext.match(/\[\[([^\]]+)\]\]/);
                       if (targetPageMatch) {
                           var targetPage = targetPageMatch[1];
                           var redirectUrl = mw.util.wikiScript('api') + '?action=parse&page=' + encodeURIComponent(targetPage) + '&prop=wikitext&format=json&origin=*';
                           return fetch(redirectUrl)
                               .then(function (response) {
                                   if (!response.ok) {
                                       throw new Error('Redirect Network response was not ok: ' + response.statusText);
                                   }
                                   return response.json();
                               });
                       }
                   }
                   return data;
               })
               .then(function (data) {
                   var wikitext = data.parse.wikitext['*'];
                   var weapondropsMatch = wikitext.match(/\|Weapondrops\s*=\s*([^\n|]*)/);
                   if (weapondropsMatch) {
                       var weapondrops = weapondropsMatch[1].trim();
                       var lootItems = weapondrops.split('::');
                       lootItems.forEach(function (item) {
                           if (item.trim()) {
                               var li = document.createElement('li');
                               li.textContent = item.trim();
                               lootList.appendChild(li);
                           }
                       });
                   } else {
                       var li = document.createElement('li');
                       li.textContent = 'No weapon drops found';
                       lootList.appendChild(li);
                   }
               })
               .catch(function (error) {
                   var lootList = document.getElementById('loot-list');
                   if (lootList) {
                       var li = document.createElement('li');
                       li.textContent = 'Error fetching loot: ' + error.message;
                       lootList.appendChild(li);
                   } else {
                       console.error('Element with ID "loot-list" not found.');
                   }
                   console.error('Error:', error);
               });
       }
       var items = document.querySelectorAll('#monster-list li');
       items.forEach(function (item) {
           item.addEventListener('click', function () {
               showLoot(item.getAttribute('data-monster'));
           });
       });
   });

})();