Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* GW2 API query tool for items - note this is a hideously large query, be kind to the api servers and don't use this more than you have to! */
- // Function to convert an object variable into a table
- function makeTableHTML(data, itemstats) {
- var result = '<table class="table mech1" style="margin-bottom:0px;"><tr><th>ID</th><th>Name</th><th>Level</th><th>Rarity</th><th>Prefixes</th></tr>';
- $.each(data, function(index, val) {
- var id = val['id'];
- var name = val['name'];
- var level = val['level'];
- var rarity = val['rarity'];
- var details = {};
- var stats = [];
- var prefixnamesstring = '';
- if (val.hasOwnProperty('details')){
- details = val['details'];
- if (details.hasOwnProperty('stat_choices')){
- stats = details['stat_choices'];
- var prefixnames = [];
- $.each(stats, function(i,prefixid) {
- if (itemstats.hasOwnProperty(prefixid)) {
- prefixnames.push(itemstats[prefixid]['name']);
- } else {
- prefixnames.push('UNKOWNPREFIX'+prefixid);
- }
- });
- prefixnames.sort(function(a,b) {
- return a > b;
- });
- prefixnamesstring = prefixnames.join(', ');
- }
- }
- if (stats.length < 2) {
- return;
- } else {
- result += '<tr><td>'+id+'</td><td>'+name+'</td><td>'+level+'</td><td>'+rarity+'</td><td>'+JSON.stringify(stats)+'</td><td>'+prefixnamesstring+'</td></tr>';
- }
- });
- result += '</table>';
- return result;
- }
- // Fetch all the possible itemsIDs
- (function fetchAPIData() {
- $.getJSON('https://api.guildwars2.com/v2/itemstats?ids=all').done(function (itemstatstemp) {
- var itemstats = {};
- $.each(itemstatstemp, function(k,v) {
- // v.name = v.name.replace("'s","");
- itemstats[v.id] = v;
- });
- $.getJSON('https://api.guildwars2.com/v2/items').done(function (ids) {
- // var ids = [30704,30689];
- console.log('Number of items: ' + ids.length);
- // Query API until all the ids have been requested
- var promises = [], maxsize = 200;
- for (var i=0; i<ids.length; i+=maxsize) {
- var current_ids = ids.slice(i,i+maxsize).join(',');
- var promise = $.getJSON('https://api.guildwars2.com/v2/items?lang=en&ids='+current_ids);
- promises.push(promise);
- }
- // Wait until all the GET requests have finished
- $.when.apply($,promises).done(function() {
- // Ensure data is an object
- var newarguments = {};
- if ( promises.length > 1 ) {
- newarguments = arguments;
- } else {
- newarguments[0] = arguments;
- }
- // Concatenate data into data
- var data = {}
- $.each(newarguments, function(index, element){
- $.each(element[0], function(key, val){
- data[val['id']] = val;
- });
- });
- // Write to console
- // console.log(data);
- // Write to document
- $('#apidata').html(makeTableHTML(data, itemstats));
- });
- });
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement