100 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/// PORTAL DETAIL //////////////////////////////////////
 | 
						|
// code to retrieve the new portal detail data from the servers
 | 
						|
 | 
						|
// NOTE: the API for portal detailed information is NOT FINAL
 | 
						|
// this is a temporary measure to get things working again after a major change to the intel map
 | 
						|
// API. expect things to change here
 | 
						|
 | 
						|
 | 
						|
// anonymous function wrapper for the code - any variables/functions not placed into 'window' will be private
 | 
						|
(function(){
 | 
						|
 | 
						|
var cache;
 | 
						|
var requestQueue = {};
 | 
						|
 | 
						|
window.portalDetail = function() {};
 | 
						|
 | 
						|
window.portalDetail.setup = function() {
 | 
						|
  cache = new DataCache();
 | 
						|
 | 
						|
  cache.startExpireInterval(20);
 | 
						|
}
 | 
						|
 | 
						|
window.portalDetail.get = function(guid) {
 | 
						|
  return cache.get(guid);
 | 
						|
}
 | 
						|
 | 
						|
window.portalDetail.isFresh = function(guid) {
 | 
						|
  return cache.isFresh(guid);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
var handleResponse = function(guid, data, success) {
 | 
						|
  delete requestQueue[guid];
 | 
						|
 | 
						|
  function parseMod(arr) {
 | 
						|
    if(arr == null) { return null; }
 | 
						|
    return {
 | 
						|
      owner: arr[0],
 | 
						|
      name: arr[1],
 | 
						|
      rarity: arr[2],
 | 
						|
      stats: arr[3],
 | 
						|
    };
 | 
						|
  }
 | 
						|
  function parseResonator(arr) {
 | 
						|
    if(arr == null) { return null; }
 | 
						|
    return {
 | 
						|
      owner: arr[0],
 | 
						|
      level: arr[1],
 | 
						|
      energy: arr[2],
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  var dict = {
 | 
						|
    raw:       data.result,
 | 
						|
    type:      data.result[0],
 | 
						|
    team:      data.result[1],
 | 
						|
    latE6:     data.result[2],
 | 
						|
    lngE6:     data.result[3],
 | 
						|
    level:     data.result[4],
 | 
						|
    health:    data.result[5],
 | 
						|
    resCount:  data.result[6],
 | 
						|
    image:     data.result[7],
 | 
						|
    title:     data.result[8],
 | 
						|
    ornaments: data.result[9],
 | 
						|
    mods:      data.result[10].map(parseMod),
 | 
						|
    resonators:data.result[11].map(parseResonator),
 | 
						|
    owner:     data.result[12],
 | 
						|
  };
 | 
						|
 | 
						|
  if (success) {
 | 
						|
    cache.store(guid,dict);
 | 
						|
 | 
						|
    //FIXME..? better way of handling sidebar refreshing...
 | 
						|
 | 
						|
    if (guid == selectedPortal) {
 | 
						|
      renderPortalDetails(guid);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  window.runHooks ('portalDetailLoaded', {guid:guid, success:success, details:dict});
 | 
						|
}
 | 
						|
 | 
						|
window.portalDetail.request = function(guid) {
 | 
						|
  if (!requestQueue[guid]) {
 | 
						|
    requestQueue[guid] = true;
 | 
						|
 | 
						|
    window.postAjax('getPortalDetails', {guid:guid},
 | 
						|
      function(data,textStatus,jqXHR) { handleResponse(guid, data, true); },
 | 
						|
      function() { handleResponse(guid, undefined, false); }
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
})(); // anonymous wrapper function end
 | 
						|
 | 
						|
 |