// ==UserScript== // @author Zaso // @name Pocket Portal Details // @category Portal Info // @version 0.0.6.20200723.154151 // @description Append a pocket box containing some restricted details of the selected portal. // @id pocket-portal-details@Zaso // @namespace https://github.com/IITC-CE/ingress-intel-total-conversion // @downloadURL https://raw.githubusercontent.com/IITC-CE/Community-plugins/master/dist/Zaso/pocket-portal-details.user.js // @updateURL https://raw.githubusercontent.com/IITC-CE/Community-plugins/master/dist/Zaso/pocket-portal-details.meta.js // @match https://intel.ingress.com/* // @grant none // ==/UserScript== function wrapper(plugin_info) { // ensure plugin framework is there, even if iitc is not yet loaded if(typeof window.plugin !== 'function') window.plugin = function() {}; //PLUGIN AUTHORS: writing a plugin outside of the IITC build environment? if so, delete these lines!! //(leaving them in place might break the 'About IITC' page or break update checks) plugin_info.buildName = 'ZasoItems'; plugin_info.dateTimeVersion = '2020-07-23-154151'; plugin_info.pluginId = 'pocket-portal-details'; //END PLUGIN AUTHORS NOTE // PLUGIN START //////////////////////////////////////////////////////// // History // 0.0.6 fixing Aegis and escapeHTML (by Loskir) // 0.0.5 Headers changed. Ready for IITC-CE // 0.0.4 Original sript // use own namespace for plugin window.plugin.pocketPortalDetails = function(){}; window.plugin.pocketPortalDetails.obj = {}; window.plugin.pocketPortalDetails.data = {}; window.plugin.pocketPortalDetails.storage = {}; window.plugin.pocketPortalDetails.util = {}; window.plugin.pocketPortalDetails.obj = {status:true, position:'bottom-right'}; // ----------------------------------------------------------------- window.plugin.pocketPortalDetails.storage.NAME = 'plugin-pocketPortalDetails'; window.plugin.pocketPortalDetails.storage.save = function(){ window.localStorage[window.plugin.pocketPortalDetails.storage.NAME] = JSON.stringify(window.plugin.pocketPortalDetails.obj); } window.plugin.pocketPortalDetails.storage.load = function(){ window.plugin.pocketPortalDetails.obj = JSON.parse(window.localStorage[window.plugin.pocketPortalDetails.storage.NAME]); } window.plugin.pocketPortalDetails.storage.check = function(){ if(!window.localStorage[window.plugin.pocketPortalDetails.storage.NAME]){ window.plugin.pocketPortalDetails.storage.save(); }else{ window.plugin.pocketPortalDetails.storage.load(); } } // ----------------------------------------------------------------- window.plugin.pocketPortalDetails.util.getPortalColorTeam = function(data){ var d = data.portalDetails; var colorTeam; switch(window.TEAM_TO_CSS[window.getTeam(d)]){ case('enl'): colorTeam = window.COLORS[2]; break; case('res'): colorTeam = window.COLORS[1]; break; default: colorTeam = '#888'; break; } return colorTeam; }; window.plugin.pocketPortalDetails.util.escapeHTML = function(text){ return text .replace(/"/g, '"') .replace(//g, '>') .replace(/&/g, '&') }; window.plugin.pocketPortalDetails.util.getPortalColorLevel = function(data){ var lvl = window.plugin.pocketPortalDetails.util.getPortalLevel(data); var colorLevel = ''; if(lvl !== 0){ colorLevel = ' style="background-color:'+window.COLORS_LVL[lvl]+';"'; } return colorLevel; } window.plugin.pocketPortalDetails.util.getPortalLevel = function(data){ return Math.floor(getPortalLevel(data.portalDetails)); } window.plugin.pocketPortalDetails.util.getPortalLevelFloat = function(data){ return getPortalLevel(data.portalDetails); } window.plugin.pocketPortalDetails.util.getPortalEnergyPerc = function(data){ var d = data.portalDetails; var percentage = 0; var totalEnergy = getTotalPortalEnergy(d); if(getTotalPortalEnergy(d) > 0){ percentage = Math.floor((getCurrentPortalEnergy(d)/getTotalPortalEnergy(d) * 100)); } return percentage+'%'; } window.plugin.pocketPortalDetails.util.getPortalFaction = function(data){ var d = data.portalDetails; return window.TEAM_TO_CSS[window.getTeam(d)]; } window.plugin.pocketPortalDetails.util.getPortalOwner = function(data){ var d = data.portalDetails; var owner = '-'; if(d.owner){ owner = d.owner; } return owner; } window.plugin.pocketPortalDetails.util.getPortalTitle = function(data){ var d = data.portalDetails; var title = ''; if(d.title){ title = d.title; } return title; } window.plugin.pocketPortalDetails.util.generateHTMLTableTips = function(obj){ var titleTips = ''; var html = ''; for(key in obj){ html += ''+key+''+obj[key]+''; } if(html !== ''){ titleTips = ''+html+'
'; } return titleTips; } // ----------------------------------------------------------------- // GET HTML DATA // ----------------------------------------------------------------- window.plugin.pocketPortalDetails.getHTMLMods = function(data){ var d = data.portalDetails; var html = ''; for(var i in d.mods){ var modRarity = ''; var modName = ''; var modColor = '#888'; var modShortName = ''; if(d.mods[i] !== null){ modRarity = d.mods[i].rarity; modName = d.mods[i].name; modColor = window.COLORS_MOD[modRarity]; modShortName = '-'; } switch(modName){ case 'Portal Shield': modShortName = 'S'; break; case 'Aegis Shield': modShortName = 'AS'; break; case 'Heat Sink': modShortName = 'HS'; break; case 'Multi-hack': modShortName = 'MH'; break; case 'Link Amp': modShortName = 'LA'; break; case 'SoftBank Ultra Link': modShortName = 'SB'; break; case 'Force Amp': modShortName = 'FA'; break; case 'Turret': modShortName = 'T'; break; } var modHTML = '
'+modShortName+'
'; html += modHTML; } return '
'+html+'
'; } window.plugin.pocketPortalDetails.getHTMLInfo = function(data){ var d = data.portalDetails; var html = ''; var linksGuid = getPortalLinks(selectedPortal); var linkCount = linksGuid.in.length + linksGuid.out.length; var fieldCount = getPortalFieldsCount(selectedPortal); var range = getPortalRange(d); var isLink = range.isLinkable ? '✓' : '✗' var mitig = window.getMitigationText(d, linkCount); var hack = window.getHackDetailsText(d); var apGain = getAttackApGainText(d,fieldCount, linkCount); apGain[1] = apGain[1].replace(/tt/g,'span'); html += 'Shielding: '+mitig[1]+''; html += 'Hacks: '+hack[1]+''; html += 'Links/Fields: '+linksGuid.in.length+'+'+linksGuid.out.length+'/'+fieldCount+''; html += 'AP Gain: '+apGain[1]+''; html += 'Range: '+(parseInt(range.range*0.10)/100)+'km '+isLink+''; return html; } window.plugin.pocketPortalDetails.getHTMLResonators = function(data){ var d = data.portalDetails; var html = ''; var l,v,max,perc; var colorTeam = window.plugin.pocketPortalDetails.util.getPortalColorTeam(data); html += '
'; for(var i=0;i<8;i++){ var reso = d.resonators[i]; var colorRes = colorTeam; if(reso){ l = parseInt(reso.level); lvl = 'L'+l; v = parseInt(reso.energy); o = reso.owner; max = window.RESO_NRG[l]; perc = Math.round((v/max * 100))+'%'; } else { colorRes = '#888'; o = ' - '; l = 0; lvl = ''; v = 0; max = 0; perc = ''; } var titleTag = ''; var resoDet = ''+lvl+''; if(window.plugin.resoEnergyPctInPortalDetail){ resoDet = ''+lvl+''+perc+''; } html += '
'; html += '
'; html += '
'+resoDet+'
'; html += '
' } html += '
'; html += '
'; return html; } window.plugin.pocketPortalDetails.getHTMLDetails = function(data){ var d = data.portalDetails; var lvl = window.plugin.pocketPortalDetails.util.getPortalLevel(data); var lvlFloat = window.plugin.pocketPortalDetails.util.getPortalLevelFloat(data); var colorLevel = window.plugin.pocketPortalDetails.util.getPortalColorLevel(data); var owner = window.plugin.pocketPortalDetails.util.getPortalOwner(data); var title = window.plugin.pocketPortalDetails.util.getPortalTitle(data); var colorTeam = window.plugin.pocketPortalDetails.util.getPortalColorTeam(data); var factionClass = window.plugin.pocketPortalDetails.util.getPortalFaction(data); var cl = ' onclick="window.plugin.pocketPortalDetails.toggleBoxStatus(); return false;"'; var linksGuid = getPortalLinks(selectedPortal); var linkCount = linksGuid.in.length + linksGuid.out.length; var fieldCount = getPortalFieldsCount(selectedPortal); var range = getPortalRange(d); var mitig = window.getMitigationText(d, linkCount); // var img = 'style="background-image:url(\''+d.image+'\')"'; // $('.pocketPortalDetails').css('background-image', 'url(\''+d.image+'\')'); // -------------------------- // HTML TOOLTIP // -------------------------- var tableObjPortal = { 'Title': window.plugin.pocketPortalDetails.util.escapeHTML(title), 'Owner': ''+owner+'', 'Level': 'L'+lvl+' ('+lvlFloat+')' }; var tableObjResonators = {}; for(var i in d.resonators){ var rColorLVL = window.COLORS_LVL[d.resonators[i].level]; var rLVL = d.resonators[i].level; var rStyle = 'background-color:'+rColorLVL+';padding:0 2px;color:#fff;'; var cPlayer = 'color:'+colorTeam; var rOwner = d.resonators[i].owner; var maxNrg = window.RESO_NRG[rLVL]; var fillGrade = d.resonators[i].energy/maxNrg*100; var rNrgPerc = Math.round(fillGrade); var key = ''+rNrgPerc+'%'; tableObjResonators[key] = 'L'+rLVL+' '+rOwner+''; } var tableObjMods = {}; for(var i in d.mods){ if(d.mods[i] !== null){ var mStyle = 'color:'+window.COLORS_MOD[d.mods[i].rarity]+';'; var mName = d.mods[i].name; var mOwner = d.mods[i].owner; var key = ''+mName+''; tableObjMods[key] = ''+mOwner+''; } } var titleTips = window.plugin.pocketPortalDetails.util.generateHTMLTableTips(tableObjPortal); titleTips += window.plugin.pocketPortalDetails.util.generateHTMLTableTips(tableObjResonators); titleTips += window.plugin.pocketPortalDetails.util.generateHTMLTableTips(tableObjMods); // -------------------------- // HTML CONTAINER // -------------------------- var t = ''; if(0 == 0){ t += '
'; t += '
'; t += ''; // t += ' '; t += 'L'+lvl+' '; t += ''+title+''; t += ''; t += ''; t += 'X'; t += '
'; t += '
'; t += '
'; t += '
'+window.plugin.pocketPortalDetails.getHTMLResonators(data)+'
'; t += '
'+window.plugin.pocketPortalDetails.getHTMLMods(data)+'
'; t += '
'; t += 'Links: '+linksGuid.in.length+' in / '+linksGuid.out.length+' out • '; t += 'Fields: '+fieldCount+' • '; t += 'Mitig: '+mitig[1]+''; t += '
'; t += '
'; t += '
'; } return t; } // ----------------------------------------------------------------- window.plugin.pocketPortalDetails.data.setBoxPosition = function(number_position){ switch(number_position){ case 1: pos = 'top-center'; break; default: pos = 'bottom-right'; break; } window.plugin.pocketPortalDetails.obj['position'] = pos; window.plugin.pocketPortalDetails.storage.save(); } window.plugin.pocketPortalDetails.data.setBoxStatus = function(boolean){ window.plugin.pocketPortalDetails.obj['status'] = boolean; window.plugin.pocketPortalDetails.storage.save(); } // ----------------------------------------------------------------- window.plugin.pocketPortalDetails.appendDetails = function(data){ var html = window.plugin.pocketPortalDetails.getHTMLDetails(data); $('.pocketPortalDetails').html(html); window.plugin.pocketPortalDetails.sidebarIsVisible(); } window.plugin.pocketPortalDetails.sidebarIsVisible = function(){ var sidebar = $('#scrollwrapper'); if(sidebar.is(':visible')){ $('.pocketPortalDetails').hide(); }else{ $('.pocketPortalDetails').show(); } } window.plugin.pocketPortalDetails.toggleBoxPosition = function(){ var box = $('.pocketPortalDetails'); var isBottomRight = $('#updatestatus .pocketPortalDetails'); var boxHTML = box.detach(); if(isBottomRight.length){ $('body').append(boxHTML); var pos = 1; }else{ $('#updatestatus').prepend(boxHTML); var pos = 0; } window.plugin.pocketPortalDetails.data.setBoxPosition(pos); } window.plugin.pocketPortalDetails.toggleBoxStatus = function(){ var status = true; var elem = $('.pocketPortalDetails'); elem.toggleClass('close'); if(elem.hasClass('close')){ status = false; } window.plugin.pocketPortalDetails.data.setBoxStatus(status); } window.plugin.pocketPortalDetails.boot = function(){ var opt = window.plugin.pocketPortalDetails.obj; if(opt.status === false){ window.plugin.pocketPortalDetails.toggleBoxStatus(); } if(opt.position === 'top-center'){ window.plugin.pocketPortalDetails.toggleBoxPosition(); } } // ----------------------------------------------------------------- // CSS // ----------------------------------------------------------------- window.plugin.pocketPortalDetails.setupCSS = function(){ $('