Created
February 9, 2016 08:54
-
-
Save salaisuuxia/028c7ffaf5d504c88eeb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @id iitc-plugin-squad-op@SaphiraT | |
// @name IITC Plugin: SOP | |
// @category Multi | |
// @author Dennis Haupt | |
// @version 0.1.17.20150402.1 | |
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion | |
// @description Ingress OP Tool | |
// @updateURL https://sopenl.de/plugin/H7EH5SWTW5M9FJ_M9JIOC559UEW_R2EI8I3YENLZAJB5SZUTMG3A5NX0H3RKAANX/squadOP.meta.js | |
// @downloadURL https://sopenl.de/plugin/H7EH5SWTW5M9FJ_M9JIOC559UEW_R2EI8I3YENLZAJB5SZUTMG3A5NX0H3RKAANX/squadOP.user.js | |
// @include /^https://www.ingress.com/intel.*/ | |
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js | |
// @grant GM_xmlhttpRequest | |
// @grant GM_getValue | |
// @grant GM_setValue | |
// @grant GM_info | |
// ==/UserScript== | |
var SOP_SERVER_URL = "https://sopenl.de/connect"; | |
try { | |
if (typeof cloneInto != 'function') { | |
function cloneInto(val, scope){ | |
return val; | |
} | |
} | |
//in case of no debugger | |
if(typeof console == 'undefined') { | |
var console = {}; | |
console.debug = unsafeWindow.alert; | |
} | |
} | |
catch (e) { | |
alert("SOP compatibility error: " + e); | |
} | |
var MD5=function(e){function t(e,t){return e<<t|e>>>32-t}function n(e,t){var n,r,i,s,o;i=e&2147483648;s=t&2147483648;n=e&1073741824;r=t&1073741824;o=(e&1073741823)+(t&1073741823);if(n&r){return o^2147483648^i^s}if(n|r){if(o&1073741824){return o^3221225472^i^s}else{return o^1073741824^i^s}}else{return o^i^s}}function r(e,t,n){return e&t|~e&n}function i(e,t,n){return e&n|t&~n}function s(e,t,n){return e^t^n}function o(e,t,n){return t^(e|~n)}function u(e,i,s,o,u,a,f){e=n(e,n(n(r(i,s,o),u),f));return n(t(e,a),i)}function a(e,r,s,o,u,a,f){e=n(e,n(n(i(r,s,o),u),f));return n(t(e,a),r)}function f(e,r,i,o,u,a,f){e=n(e,n(n(s(r,i,o),u),f));return n(t(e,a),r)}function l(e,r,i,s,u,a,f){e=n(e,n(n(o(r,i,s),u),f));return n(t(e,a),r)}function c(e){var t;var n=e.length;var r=n+8;var i=(r-r%64)/64;var s=(i+1)*16;var o=Array(s-1);var u=0;var a=0;while(a<n){t=(a-a%4)/4;u=a%4*8;o[t]=o[t]|e.charCodeAt(a)<<u;a++}t=(a-a%4)/4;u=a%4*8;o[t]=o[t]|128<<u;o[s-2]=n<<3;o[s-1]=n>>>29;return o}function h(e){var t="",n="",r,i;for(i=0;i<=3;i++){r=e>>>i*8&255;n="0"+r.toString(16);t=t+n.substr(n.length-2,2)}return t}function p(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t}var d=Array();var v,m,g,y,b,w,E,S,x;var T=7,N=12,C=17,k=22;var L=5,A=9,O=14,M=20;var _=4,D=11,P=16,H=23;var B=6,j=10,F=15,I=21;e=p(e);d=c(e);w=1732584193;E=4023233417;S=2562383102;x=271733878;for(v=0;v<d.length;v+=16){m=w;g=E;y=S;b=x;w=u(w,E,S,x,d[v+0],T,3614090360);x=u(x,w,E,S,d[v+1],N,3905402710);S=u(S,x,w,E,d[v+2],C,606105819);E=u(E,S,x,w,d[v+3],k,3250441966);w=u(w,E,S,x,d[v+4],T,4118548399);x=u(x,w,E,S,d[v+5],N,1200080426);S=u(S,x,w,E,d[v+6],C,2821735955);E=u(E,S,x,w,d[v+7],k,4249261313);w=u(w,E,S,x,d[v+8],T,1770035416);x=u(x,w,E,S,d[v+9],N,2336552879);S=u(S,x,w,E,d[v+10],C,4294925233);E=u(E,S,x,w,d[v+11],k,2304563134);w=u(w,E,S,x,d[v+12],T,1804603682);x=u(x,w,E,S,d[v+13],N,4254626195);S=u(S,x,w,E,d[v+14],C,2792965006);E=u(E,S,x,w,d[v+15],k,1236535329);w=a(w,E,S,x,d[v+1],L,4129170786);x=a(x,w,E,S,d[v+6],A,3225465664);S=a(S,x,w,E,d[v+11],O,643717713);E=a(E,S,x,w,d[v+0],M,3921069994);w=a(w,E,S,x,d[v+5],L,3593408605);x=a(x,w,E,S,d[v+10],A,38016083);S=a(S,x,w,E,d[v+15],O,3634488961);E=a(E,S,x,w,d[v+4],M,3889429448);w=a(w,E,S,x,d[v+9],L,568446438);x=a(x,w,E,S,d[v+14],A,3275163606);S=a(S,x,w,E,d[v+3],O,4107603335);E=a(E,S,x,w,d[v+8],M,1163531501);w=a(w,E,S,x,d[v+13],L,2850285829);x=a(x,w,E,S,d[v+2],A,4243563512);S=a(S,x,w,E,d[v+7],O,1735328473);E=a(E,S,x,w,d[v+12],M,2368359562);w=f(w,E,S,x,d[v+5],_,4294588738);x=f(x,w,E,S,d[v+8],D,2272392833);S=f(S,x,w,E,d[v+11],P,1839030562);E=f(E,S,x,w,d[v+14],H,4259657740);w=f(w,E,S,x,d[v+1],_,2763975236);x=f(x,w,E,S,d[v+4],D,1272893353);S=f(S,x,w,E,d[v+7],P,4139469664);E=f(E,S,x,w,d[v+10],H,3200236656);w=f(w,E,S,x,d[v+13],_,681279174);x=f(x,w,E,S,d[v+0],D,3936430074);S=f(S,x,w,E,d[v+3],P,3572445317);E=f(E,S,x,w,d[v+6],H,76029189);w=f(w,E,S,x,d[v+9],_,3654602809);x=f(x,w,E,S,d[v+12],D,3873151461);S=f(S,x,w,E,d[v+15],P,530742520);E=f(E,S,x,w,d[v+2],H,3299628645);w=l(w,E,S,x,d[v+0],B,4096336452);x=l(x,w,E,S,d[v+7],j,1126891415);S=l(S,x,w,E,d[v+14],F,2878612391);E=l(E,S,x,w,d[v+5],I,4237533241);w=l(w,E,S,x,d[v+12],B,1700485571);x=l(x,w,E,S,d[v+3],j,2399980690);S=l(S,x,w,E,d[v+10],F,4293915773);E=l(E,S,x,w,d[v+1],I,2240044497);w=l(w,E,S,x,d[v+8],B,1873313359);x=l(x,w,E,S,d[v+15],j,4264355552);S=l(S,x,w,E,d[v+6],F,2734768916);E=l(E,S,x,w,d[v+13],I,1309151649);w=l(w,E,S,x,d[v+4],B,4149444226);x=l(x,w,E,S,d[v+11],j,3174756917);S=l(S,x,w,E,d[v+2],F,718787259);E=l(E,S,x,w,d[v+9],I,3951481745);w=n(w,m);E=n(E,g);S=n(S,y);x=n(x,b)}var q=h(w)+h(E)+h(S)+h(x);return q.toLowerCase()} | |
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 START //////////////////////////////////////////////////////// | |
window.SQUAD_OP_MAX_TIME = 3*60*60*1000; // in milliseconds | |
window.SQUAD_OP_MIN_ZOOM = 9; | |
window.SQUAD_OP_MIN_OPACITY = 0.3; | |
window.SQUAD_OP_LINE_COLOUR = '#FF00FD'; | |
//===[ file-save ]========================================================================================================================================== | |
function createDownloadLink(dataArray, contentType, fileName) { | |
var dllink = ""; | |
var data = (dataArray instanceof Array) ? dataArray.join('') : dataArray; | |
var makelink = function(url){ | |
dllink = '<a href="' + url + '" download="' + fileName + '" target="_blank">' + fileName + '</a>'; | |
}; | |
// using the old fashioned data-uri method | |
function fallbackToDataUri(errorObj) { | |
if(errorObj){ debugger; } | |
if(!window.btoa){ | |
//TODO: implement base64 encoder ... maybe | |
alert('This is for chrome or mozilla only!'); | |
return; | |
} | |
makelink('data:' + contentType + ';base64,' + window.btoa(unescape(encodeURIComponent(data)))); | |
} | |
// createObjectURL approach | |
if(window.URL && window.URL.createObjectURL){ | |
var b = new Blob([ '\ufeff', data ], { type: contentType }); | |
var u = window.URL.createObjectURL(b); | |
//window.open(u); | |
makelink(u); | |
//window.URL.revokeObjectURL(u); | |
} else { | |
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; | |
if (window.requestFileSystem) { | |
//Request FileSystemObject | |
window.requestFileSystem(window.TEMPORARY, 20 * 1024 * 1024, /* 20mb temporary storage*/ | |
function (fso) { | |
fso.root.getFile(fileName, { | |
create: true, | |
exclusive: false | |
}, function (fileEntry) { | |
fileEntry.createWriter(function (fileWriter) { | |
fileWriter.onwriteend = function (e) { | |
//window.open(fileEntry.toURL(), '_blank'); | |
makelink(fileEntry.toURL()); | |
}; | |
fileWriter.onerror = fallbackToDataUri; | |
var blob = new Blob([ '\ufeff', data ], { type: contentType }); | |
fileWriter.write(blob); | |
}, fallbackToDataUri); | |
}, fallbackToDataUri); | |
}, fallbackToDataUri); | |
} else { | |
fallbackToDataUri(); | |
} | |
} | |
data = null; | |
return dllink; | |
} | |
// use own namespace for plugin | |
window.plugin.squadOP = function() {}; | |
window.plugin.squadOP.setup = function() { | |
try { | |
var iconEnlImage = 'data:image/png;base64,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'; | |
var iconEnlRetImage = 'data:image/png;base64,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'; | |
var iconResImage = 'data:image/png;base64,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'; | |
var iconResRetImage = 'data:image/png;base64,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'; | |
var languageFile = soplng; | |
window.plugin.squadOP.statusList = new Array(languageFile.status0, languageFile.status1, languageFile.status2, languageFile.status3, languageFile.status4, languageFile.status5, languageFile.status6, languageFile.status7); | |
plugin.squadOP.iconEnl = L.Icon.Default.extend({options: { | |
iconUrl: iconEnlImage, | |
iconRetinaUrl: iconEnlRetImage | |
}}); | |
plugin.squadOP.iconRes = L.Icon.Default.extend({options: { | |
iconUrl: iconResImage, | |
iconRetinaUrl: iconResRetImage | |
}}); | |
plugin.squadOP.drawnTracesSquad = new L.LayerGroup(); | |
window.addLayerGroup('SOP', plugin.squadOP.drawnTracesSquad, true); | |
//plugin.squadOP.drawnLinkSim = new L.LayerGroup(); | |
//window.addLayerGroup('SOP Link Sim', plugin.squadOP.drawnLinkSim, true); | |
plugin.squadOP.drawnDirections = new L.LayerGroup(); | |
window.addLayerGroup('SOP Squad Directions', plugin.squadOP.drawnDirections, true); | |
var playerPopup = new L.Popup({offset: L.point([1,-34])}); | |
window.map.on('zoomend', function() { | |
//window.plugin.squadOP.zoomListener(); | |
}); | |
//window.plugin.squadOP.zoomListener(); | |
$('#sidebar').append('<div id="sop_sidebar"><div id="sop_out" class="privacy_inactive"><small><i>Squad OP is loading..</i></small> <a href="javascript:void(0)" onclick="window.plugin.squadOP.drawKeyInput()"><small>[enter new key]</small></a></div></div>'); | |
$("<style>") | |
.prop("type", "text/css") | |
.html("#sop_out {\ | |
font-size:13px;\ | |
color: "+defColor1+";\ | |
padding: 5px;\ | |
}\ | |
#sop_out .title, #sop_detail .title {\ | |
font-size:14px;\ | |
}\ | |
#sop_out a:active, #sop_detail a:active {\ | |
text-decoration:underline;\ | |
}\ | |
.enlIn {\ | |
color: #02BE02;\ | |
font-size: 12px;\ | |
}\ | |
.resIn {\ | |
color: #0094BF;\ | |
font-size: 12px;\ | |
}\ | |
#sop_out h2, #sop_detail h2 {\ | |
font-size: 15px;\ | |
padding-left: 0px;\ | |
}\ | |
#sop_detail {\ | |
padding: 5px;\ | |
color:"+defColor1+";\ | |
}\ | |
#sop_detail div {\ | |
font-size: 85%;\ | |
}\ | |
#sop_detail p {\ | |
margin: 0 0 5px 0;\ | |
}\ | |
.sop_squadBox1 div { color: white; }\ | |
.sop_squadBox1 div span { white-space:nowrap; display:block; text-align:center; background-color: #FFF; color: white; border-radius: 3px; border: 1px solid #0A3D4F; box-shadow:1px 1px rgba(0, 0, 0, 0.5); }\ | |
.sop_squadBox1 div span.sop_st0 { background-color: #1E4A66; }\ | |
.sop_squadBox1 div span.sop_st1 { background-color: #AB7017; }\ | |
.sop_squadBox1 div span.sop_st2 { background-color: #B9EE09; }\ | |
.sop_squadBox1 div span.sop_st3 { background-color: #CCCCCC; }\ | |
.sop_squadBox1 div span.sop_st2 a, .sop_squadBox1 div span.sop_st3 a { color: black; }\ | |
.sop_squadBox1 div span.sop_st4 { background-color: #000000; }\ | |
.sop_squadBox1 div span.sop_st5 { background-color: #FF0000; }\ | |
.sop_squadBox1 div span.sop_st6 { background-color: #000000; }\ | |
.sop_squadBox1 div span.sop_st7 { background-color: #AB1C20; }\ | |
.sop_squadBox1 div span.bike {border-style:dashed; border-width:2px;}\ | |
.sop_squadBox1 div span.car {border-style:dotted; border-width:3px;}\ | |
.sop_squadBox1 div a { display:block; font-weight:bold; color: white; text-decoration:none; text-align:center;font-size:11px;color:white;padding:1px 2px;line-height:13px; }\ | |
.sop_squadBox2 div { color: white; }\ | |
.sop_squadBox2 div span { white-space:nowrap; display:block; text-align:center; background-color: #FFF; color: white; border-radius: 3px; border: 1px solid #0A3D4F; box-shadow:1px 1px rgba(0, 0, 0, 0.5); }\ | |
.sop_squadBox2 div span.sop_st0 { background-color: #1E4A66; }\ | |
.sop_squadBox2 div span.sop_st1 { background-color: #AB7017; }\ | |
.sop_squadBox2 div span.sop_st2 { background-color: #B9EE09; }\ | |
.sop_squadBox2 div span.sop_st3 { background-color: #CCCCCC; }\ | |
.sop_squadBox2 div span.sop_st2 a, .sop_squadBox2 div span.sop_st3 a { color: black; }\ | |
.sop_squadBox2 div span.sop_st4 { background-color: #000000; }\ | |
.sop_squadBox2 div span.sop_st5 { background-color: #FF0000; }\ | |
.sop_squadBox2 div span.sop_st6 { background-color: #000000; }\ | |
.sop_squadBox2 div span.sop_st7 { background-color: #AB1C20; }\ | |
.sop_squadBox2 div span.bike {border-style:dashed; border-width:2px;}\ | |
.sop_squadBox2 div span.car {border-style:dotted; border-width:3px;}\ | |
.sop_squadBox2 div a { display:block; font-weight:bold; color: white; text-decoration:none; text-align:center;font-size:11px;color:white;padding:1px 2px;line-height:13px; }\ | |
tr.sop_squad { border-bottom: 2px solid #43A7E5;}\ | |
.sop_squad td { padding: 2px;white-space:nowrap; }\ | |
.sop_squad td span { display:block; background-color: #FFF; color: white; position: relative; left: 0px; top: 3px; width:14px; height:12px; border-radius: 6px; border: 1px solid #FFFFFF; }\ | |
.sop_squad td span.sop_st0 { background-color: #1E4A66; }\ | |
.sop_squad td span.sop_st1 { background-color: #AB7017; }\ | |
.sop_squad td span.sop_st2 { background-color: #B9EE09; }\ | |
.sop_squad td span.sop_st3 { background-color: #CCCCCC; }\ | |
.sop_squad td span.sop_st4 { background-color: #000000; }\ | |
.sop_squad td span.sop_st5 { background-color: #FF0000; }\ | |
.sop_squad td span.sop_st6 { background-color: #000000; }\ | |
.sop_squad td span.sop_st7 { background-color: #AB1C20; }\ | |
.sop_squad td span.bike {border-style:dashed;border-width:2px;border-color:#CCCCCC;}\ | |
.sop_squad td span.car {border-style:dotted;border-width:2px;border-color:black;}\ | |
#squadSelect { margin-top:5px;border-top: 1px solid "+defColor4+";border-bottom: 1px solid "+defColor4+"; }\ | |
#squadSelect .wrap {margin: 18px 0 0px 3px;}\ | |
#squadSelect button { font-weight:bold; }\ | |
#squadSelect select, #sop_out input, #issueOut select, #dialog-sop-options-window select, .ui-dialog select, .ui-dialog textarea {background-color: "+defBgColor2+"; border: 1px solid "+defColor1+"; color: "+defColor1+";min-width: 40px;padding: 2px;}\ | |
#issueOut td { padding: 3px 2px; }\ | |
#level { padding: 0 10px; padding: 0 10px; border-radius: 10px; background-color:"+defBgColor2+";margin-right: 20px; }\ | |
#sop_footer { text-align:center; }\ | |
#sop_footer a { font-size: 80%; }\ | |
.targetRow td { vertical-align:middle;}\ | |
table.vertical-center td { vertical-align:middle; }\ | |
#sop_link_sim img { box-shadow: 3px -2px 8px #ffffff; }\ | |
.ui-dialog-buttonset button, .ui-dialog-content button { margin-left:10px; }\ | |
#sop_logs { width:100%; min-height:50px; max-height:250px; overflow:auto; margin-top:8px; }\ | |
#sop_logs td { font-size: 80%; }\ | |
.ui-dialog-titlebar-button { border: 1px solid #9E8300; background-color: #9E8300; border-radius: 4px;}\ | |
.ui-dialog-titlebar-button-close { border: 1px solid #9B0D0D; background-color: #9B0D0D; }\ | |
.sop_chat_out { font-size:80%; max-height:50px; overflow: auto; }\ | |
.privacy_active div:has(> #dialog-sop-main-window) { display: none; }\ | |
.privacy_active #squadSelect, .privacy_active #sop_sidebar { display: none; }\ | |
#squadKeyList { font-size: 90%; }\ | |
#squadKeyList th { font-weight:bold; }\ | |
#squadKeyList td { font-weight:normal; background-color: "+defBgColor2+"; }\ | |
") | |
.appendTo("head"); | |
window.plugin.squadOP.drawSquadList(); | |
window.addHook('portalDetailsUpdated', window.plugin.squadOP.updatePortalDetail); | |
window.addPortalHighlighter('SOP Target Portals', window.plugin.squadOP.portalHighlighterIsTarget); | |
} | |
catch(e) { | |
alert("Fehler:" + e); | |
} | |
if (!sop_docked) { | |
window.plugin.squadOP.undockSquadList(); | |
} | |
try { | |
if (window.sopHasNoKey) { | |
window.plugin.squadOP.drawKeyInput(); | |
} | |
} | |
catch (e) {} | |
} | |
window.plugin.squadOP.actionList = new Array('destroy&capture', 'flip', 'neutralize', 'link to', 'remove Links', 'upgrade', 'hold&defend', 'get key(s)', 'meeting', 'read comment'); | |
window.plugin.squadOP.issueList = window.plugin.squadOP.actionList; | |
window.plugin.squadOP.saveData = new Array(); | |
window.plugin.squadOP.markerList = new Array(); | |
window.plugin.squadOP.linkPortalList = new Array(); | |
window.plugin.squadOP.linkPortalListIndex = 0; | |
window.plugin.squadOP.markerIndex = 0; | |
window.plugin.squadOP.teamNameLimit = 18; | |
window.plugin.squadOP.jsonDataObject = {}; | |
window.plugin.squadOP.updatePortalDetail = function(){ | |
try { | |
var out = ""; | |
if (window.plugin.squadOP.highlightPortals[window.selectedPortal]) { | |
out += "<div class='wrap enl' style='border-top: 1px solid "+defColor4+";text-align:center;'>Assigned Teams:<br /><table align='center'>"; | |
$.each ( | |
window.plugin.squadOP.highlightPortals[window.selectedPortal], | |
function (rowIndex, sq) { | |
var s = window.plugin.squadOP.getSquadById(rowIndex); | |
out += "<tr>"; | |
out += "<td align='left'><a onclick='window.plugin.squadOP.openSquadDialog("+s.dbid+")' href='javascript:void(0)'>" + s.name +"</a></td>"; | |
out += "<td align='right'>"; | |
if (s.lat != 0 && s.lon != 0) { | |
out += roundPrecision(s.distance,2); | |
} | |
else { | |
out += "---"; | |
} | |
out += " km</td></tr>"; | |
} | |
); | |
out += "</table></div>"; | |
$('#portaldetails > div.imgpreview').after(out); | |
} | |
window.plugin.squadOP.drawPortalTeamSelect(); | |
if ($('#dialog-select-link-target-portal b')) { | |
var portal = window.portals[window.selectedPortal].options.data; | |
var details = portalDetail.get(window.selectedPortal); | |
var lat = window.portals[window.selectedPortal].getLatLng().lat; | |
var lng = window.portals[window.selectedPortal].getLatLng().lng; | |
$('#dialog-select-link-target-portal b').html(portal.title + " <" + lat + "," + lng + ">"); | |
} | |
switch(window.plugin.squadOP.linkSimState){ | |
case 1: | |
var portal = window.portals[window.selectedPortal].options.data; | |
var details = portalDetail.get(window.selectedPortal); | |
window.plugin.squadOP.linkSimPortal.push(portal); | |
var out = "" | |
+ "<b>Startportal</b><br/>" | |
+ portal.title | |
+ "<br><br><img src='"+portal.image+"' style='max-width:200px;max-height:200px;' />" | |
; | |
$('#sop_link_sim_s1').html(out); | |
$('#sop_link_sim_s2').html("Jetzt klicke auf das<br><b>Zielportal</b>"); | |
window.plugin.squadOP.linkSimState = 2; | |
break; | |
case 2: | |
var portal = window.portals[window.selectedPortal].options.data; | |
var details = portalDetail.get(window.selectedPortal); | |
window.plugin.squadOP.linkSimPortal.push(portal); | |
var out = "" | |
+ "<b>Zielportal</b><br/>" | |
+ portal.title | |
+ "<br><br><img src='"+portal.image+"' style='max-width:200px;max-height:200px;' />" | |
; | |
var lat1 = (window.plugin.squadOP.linkSimPortal[0].latE6/1000000); | |
var lng1 = (window.plugin.squadOP.linkSimPortal[0].lngE6/1000000); | |
var lat2 = (window.plugin.squadOP.linkSimPortal[1].latE6/1000000); | |
var lng2 = (window.plugin.squadOP.linkSimPortal[1].lngE6/1000000); | |
$('#sop_link_sim_s2').html(out); | |
var out = "<h3 style='margin:0;'>Distanz:</h3><h2>" | |
+ roundPrecision(window.plugin.squadOP.getDistanceFromLatLonInKm(lat1, lng1, lat2, lng2),3) | |
+ " KM</h2>"; | |
$('#sop_link_sim_s3').html(out); | |
$('#sop_link_sim_s3').show(); | |
var opts = { | |
weight: 3, | |
color: "#1C425B", | |
clickable: false, | |
opacity: 1, | |
dashArray: "1,5", | |
smoothFactor: 1, | |
lineCap: 'round' | |
}; | |
//polyline = [[L.latLng(52.48971705,13.44772542),L.latLng(52.4897334,13.44768753)],[L.latLng(52.4897334,13.44768753),L.latLng(52.49054069,13.44842402)]]; | |
L.multiPolyline([[L.latLng(lat1,lng1),L.latLng(lat2,lng2)]], opts).addTo(plugin.squadOP.drawnLinkSim); | |
out = ""; | |
for (var i=0,j=window.plugin.squadOP.linkPortalList.length;i<j;i++) { | |
var obj1 = window.plugin.squadOP.linkPortalList[i][0]; | |
var obj2 = window.plugin.squadOP.linkPortalList[i][1]; | |
var lat1 = (obj1.latE6/1000000); | |
var lng1 = (obj1.lngE6/1000000); | |
var lat2 = (obj2.latE6/1000000); | |
var lng2 = (obj2.lngE6/1000000); | |
out +='<table style="width:100%">' | |
+ '<tr>' | |
+ '<td style="vertical-align:middle;width:120px;">'+obj1.title+'<br><img src="'+obj1.image+'" style="max-width:60px;max-height:60px;"></td>' | |
+ '<td style="vertical-align:middle;">-----> ' | |
+ roundPrecision(window.plugin.squadOP.getDistanceFromLatLonInKm(lat1, lng1, lat2, lng2),3) | |
+ 'km ----></td><td style="vertical-align:middle;width:120px;">'+obj2.title+'<br><img src="'+obj2.image+'" style="max-width:60px;max-height:60px;"></td>' | |
+ '</tr>' | |
+ '</table>' | |
; | |
} | |
if (window.plugin.squadOP.linkPortalList.length > 0) { | |
$('#sop_link_sim_s4').html(out); | |
$('#sop_link_sim_s4').show(); | |
} | |
window.plugin.squadOP.linkPortalList.push([window.plugin.squadOP.linkSimPortal[0], window.plugin.squadOP.linkSimPortal[1]]); | |
window.plugin.squadOP.linkSimState = 0; | |
break; | |
} // switch | |
} | |
catch (e) { | |
console.debug("Error:"+e); | |
} | |
} | |
window.plugin.squadOP.drawPortalTeamSelect = function() { | |
if ($('#squadSelect')) { | |
$('#squadSelect').remove(); | |
} | |
var out = ""; | |
if (portalKeysOfSquadsLoaded && plugin.keys != undefined) { | |
var count = plugin.keys.keys[window.selectedPortal] || 0; | |
if (count > 0) { | |
if (window.plugin.squadOP.lastPortalKeyCheck != window.selectedPortal || window.plugin.squadOP.lastPortalKeyCount != count) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getSquadsWithKey', | |
guid: window.selectedPortal, | |
callback: window.plugin.squadOP.getSquadsWithKeyCallback | |
}); | |
out += '<div id="squadKeyList" style="padding: 8px;display:none;"></div>'; | |
} | |
else { | |
out += '<div id="squadKeyList" style="padding: 8px;">'+window.plugin.squadOP.lastPortalKeyCache+'</div>'; | |
} | |
} | |
} | |
out += '<div id="squadSelect" class="privacy_inactive">' | |
+ '<div class="wrap enl ui-dialog-buttonset">' | |
+ '<table style="width:290px;"><tr><td align="left" style="width:50%">' | |
+ '<select id="squadSel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="width:100%;">'+window.plugin.squadOP.drawTeamSelect(true)+'</select><br />' | |
+ '<button onclick="window.plugin.squadOP.saveSquadToPortal()" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="margin:1px 0 0 0;width:100%;">'+soplng.assignSquad+'</button> </td>' | |
+ '<td align=right style="width:50%"><button onclick="window.plugin.squadOP.saveIssueToPortal()" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">'+soplng.newIssue+'</button></td>' | |
+ '</tr></table></div>' | |
+ '' | |
+ '' | |
+ '' | |
+ ''; | |
out += '</div>'; | |
$('#portaldetails > div.imgpreview').after(out); | |
} | |
window.plugin.squadOP.lastPortalKeyCheck = false; | |
window.plugin.squadOP.lastPortalKeyCache = {}; | |
window.plugin.squadOP.lastPortalKeyCount = 0; | |
window.plugin.squadOP.getSquadsWithKeyCallback = function(res) { | |
try { | |
var sqkeys = $.parseJSON(res); | |
if (sqkeys.ok == 0) { | |
return; | |
} | |
var out = ""; | |
out += "<h4 style='text-align:center;margin:0;font-size:110%;'>Team's with Key(s)</h4>"; | |
out += '<table style="width:100%">'; | |
$.each( sqkeys.sq, function( key, sqkey ) { | |
out += '<tr>'; | |
out += '<td nowrap>'+sqkey.n+'</td>'; | |
out += '<td style="width:80%;">'+sqkey.a+'</td>'; | |
out += '</tr>'; | |
}); | |
out += '</table>'; | |
$("#squadKeyList").html(out); | |
$("#squadKeyList").show(); | |
window.plugin.squadOP.lastPortalKeyCheck = window.selectedPortal; | |
window.plugin.squadOP.lastPortalKeyCache = out; | |
window.plugin.squadOP.lastPortalKeyCount = plugin.keys.keys[window.selectedPortal] || 0; | |
} | |
catch (e) { | |
alert("Error:"+e); | |
} | |
} | |
window.plugin.squadOP.linkSimState = 0; | |
window.plugin.squadOP.linkSimPortal = []; | |
window.plugin.squadOP.showLinkSimDialog = function() { | |
window.plugin.squadOP.linkSimState = 1; | |
window.plugin.squadOP.linkSimPortal = []; | |
var win = "<div id='sop_link_sim'>" | |
+ "<div id='sop_link_sim_s1' style='float:left;width:200px;text-align:center;'>Klicke auf das<br><b>Startportal</b></div>" | |
+ "<div id='sop_link_sim_s2' style='float:right;width:200px;text-align:center;'></div>" | |
+ "<br clear='all'/>" | |
+ "<div id='sop_link_sim_s3' style='text-align:center;display:none;padding: 15px; margin-top:13px;border: 1px solid "+defColor4+";border-radius:8px;'></div>" | |
+ "<div id='sop_link_sim_s4' style='text-align:center;display:none;padding: 15px; margin-top:13px;border: 1px solid "+defColor4+";border-radius:8px;'></div>" | |
+ "</div>" | |
; | |
dialog({ | |
text: win, | |
title: 'Link-Simulator', | |
id: 'sop-linksim-window', | |
width: 450, | |
maxHeight: 450, | |
position: { my: "center", at: "top", of: window }, | |
create: function( event, ui ) { | |
$('#dialog-sop-linksim-window').parent().css("margin-top", "10px"); | |
}, | |
buttons: [ | |
{ | |
text: "zur Linkliste hinzuf?gen", | |
click: function() { | |
alert("kommt bald :)"); | |
} | |
}, | |
{ | |
text: soplng.close, | |
click: function() { | |
$( this ).dialog( "close" ); | |
} | |
} | |
] | |
}); | |
} | |
window.plugin.squadOP.getDistanceFromLatLonInKm = function(lat1,lon1,lat2,lon2) { | |
var R = 6371; // Radius of the earth in km | |
var dLat = deg2rad(lat2-lat1); // deg2rad below | |
var dLon = deg2rad(lon2-lon1); | |
var a = | |
Math.sin(dLat/2) * Math.sin(dLat/2) + | |
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * | |
Math.sin(dLon/2) * Math.sin(dLon/2) | |
; | |
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); | |
var d = R * c; // Distance in km | |
return d; | |
} | |
function deg2rad(deg) { | |
return deg * (Math.PI/180) | |
} | |
function roundPrecision(number, precision) | |
{ | |
precision = Math.abs(parseInt(precision)) || 0; | |
var coefficient = Math.pow(10, precision); | |
return Math.round(number*coefficient)/coefficient; | |
} | |
window.plugin.squadOP.drawTeamSelect = function(saveState){ | |
var jdata = plugin.squadOP.JSONdata; | |
out = ""; | |
out+="<option value=''>---</option>"; | |
var filter = []; | |
if (sopSquadFilter != "") { | |
var filter = sopSquadFilter.split(","); | |
} | |
$.each ( | |
jdata.squads, | |
function (rowIndex, sq) { | |
if (sopSquadFilter != "" && sopSquadFilter != 0) { | |
var found = false; | |
$.each(filter, function( index, value ) { | |
if (sq.name.indexOf(value) === 0) { | |
found = true; | |
return true; | |
} | |
}); | |
if (found == false) { | |
return true; | |
} | |
} | |
var strLimit = window.plugin.squadOP.teamNameLimit; | |
if (sq.name.length > strLimit) { | |
sq.name = jQuery.trim(sq.name).substring(0, strLimit) + ".."; | |
} | |
if (sq.dbid != window.plugin.squadOP.lastAssignTeam || saveState != true) { | |
out+="<option value='"+sq.dbid+"'>"+sq.name+"</option>"; | |
} | |
else { | |
out+="<option value='"+sq.dbid+"' selected='selected'>"+sq.name+"</option>"; | |
} | |
} | |
); | |
return out; | |
} | |
window.plugin.squadOP.drawThemeSelect = function(saveState){ | |
var edata = [ | |
{id: 0, name: 'IITC'}, | |
{id: 1, name: 'enlightened'}, | |
{id: 2, name: 'greyscale'}, | |
{id: 3, name: 'darker'}, | |
{id: 4, name: 'gossip'}, | |
{id: 5, name: 'fresh'} | |
]; | |
out = ""; | |
//out+="<option value=''>---</option>"; | |
$.each ( | |
edata, | |
function (rowIndex, sq) { | |
if (sopSelectedTheme != sq.id) { | |
out+="<option value='"+sq.id+"'>"+sq.name+"</option>"; | |
} | |
else { | |
out+="<option value='"+sq.id+"' selected='selected'>"+sq.name+"</option>"; | |
} | |
} | |
); | |
return out; | |
} | |
window.plugin.squadOP.drawMarkerTypeSelect = function(saveState){ | |
var edata = [ | |
{id: 0, name: 'big'}, | |
{id: 1, name: 'small'} | |
]; | |
out = ""; | |
//out+="<option value=''>---</option>"; | |
$.each ( | |
edata, | |
function (rowIndex, sq) { | |
if (mapMarkerType != sq.id) { | |
out+="<option value='"+sq.id+"'>"+sq.name+"</option>"; | |
} | |
else { | |
out+="<option value='"+sq.id+"' selected='selected'>"+sq.name+"</option>"; | |
} | |
} | |
); | |
return out; | |
} | |
window.plugin.squadOP.drawSquadSortSelect = function(saveState){ | |
var edata = [ | |
{id: 0, name: 'Name'}, | |
{id: 1, name: 'Last'}, | |
{id: 2, name: 'Name (active)'}, | |
{id: 3, name: 'Last (active)'}, | |
]; | |
out = ""; | |
//out+="<option value=''>---</option>"; | |
$.each ( | |
edata, | |
function (rowIndex, sq) { | |
if (squadListSort != sq.id) { | |
out+="<option value='"+sq.id+"'>"+sq.name+"</option>"; | |
} | |
else { | |
out+="<option value='"+sq.id+"' selected='selected'>"+sq.name+"</option>"; | |
} | |
} | |
); | |
return out; | |
} | |
window.plugin.drawPortalLinkHandler = function(guid,lat,lng) { | |
return "onclick='window.renderPortalDetails(\""+guid+"\");' ondblclick='window.zoomToAndShowPortal(\""+guid+"\", ["+lat+","+lng+"]);'"; | |
} | |
window.plugin.squadOP.drawSquadListMd5 = false; | |
window.plugin.squadOP.squadNameAreVeryLong = false; | |
window.plugin.squadOP.drawSquadList = function() { | |
try { | |
acceptIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOySURBVHjavFdpSBVRFD5vfOrT1NzFVCwrNUFNIVFIxC1MRKu/JUWJQvijoIVKgyIqKkrQH1EWgvbXUkKllBaDMiFTy1LLyhV3y9TnknbO8EbnPe+8mVH0wAfDPXPvd+659yxXY38/DESiRSQjEhE+CB1iErEAy8VCpb4X8RxRgZhD2CA8taIJOxGPEEGwdpKNaEEcRQwi+jgR+as1JheEOKoRbogpzuB22rkDrJ/YIR4St3DminbOaTgIcw2CeO9ICHLaDi46R358WD8GTcNfoab7LTSPtMH8wrxSTyRrDRdOlnj/lgQ4HZaBxNuW6afmpiHcLQjOhmVC3+QA3GksguK2MiWGJGowCp7gR5rUH772XnAl4gTs8dkNNlprJnn/1BB42Lga6esHmuHYi/Pwc7zHnAGlnCFUmBLiEgDF8TdUk5Pscg+GypRC2OG01ZwBGs4Qp8ydF0RfhABHP9Xkgn52fg5KkwpgM64lIbYcK4nQmZPbV0Mu6L02eMCD2Kv8mgzRM0fpwq3E7SSfRtqhfrDJSE/Hke7PvGb/ONbu6bavlHxf5XHIfJnLR4NYToYeYXph2QjFuVSomSNvGm7lyQemhqF3YgBSKrJwjn5R72nrDsHO/vIGUJJhkXdP9IGz9UZJ8gNV2Ty54MVz4Vn4r87I+HjvqGVztYaqtZSeMMOxyHPq8vC2LkBJwi2w4izNkudH5y6eudhzIS6BTA8Y5QEhvZqSV3a+hqrOWjhUfQpm5mdVk5PnxGvL5gHxZAvNkpMEIz4MflZFrjgPUGERT3awsoOi+OuQ4htrZERc+WHV5LS2bB6gqmY6mc7c1Aih0KjZectou3weoJLKmkxG3I25BLFekUY5Q43ba7rfyYch1XPTJCIsPjL9my9O5Am15C2j36BhqEXeAHIt1XOpCyncidKkfMXkpL/ZUMjsDzjTPEBCzQTVc6nF6TjivKIUkz/regOPf1Szmx1WP0CWUjPRM9GvuOpJ6VvHOiDnfZ5UdySdB6iToTi35LSrIs+uvQy/pLsidj8gyJfR77D3acbicaghJ7en15zhs6UZ0VtYp3pG40eE1B9jM+NQ0lbOH0egkx/oLHSyt/1C3W241nAPxqb/yDWl1dSUpuJHmdK2nEoqVTUqLOK2nJIMxTmFmsK2nCSNDKCK2LhOryIjZyFCOcNDkd5qf9eRnM7mIHFzhlcqPRQTDFatx85jEB+FhsSTXqmIDnKJ6Hm+ieKUQoVuKxUOVhyr0HeZPM95+S/AADh6LHRZTLS3AAAAAElFTkSuQmCC"; | |
deleteIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMLSURBVHjaxFdNSBtBFH47m2hSkILYoFA8lILoSRFEYgrVeKrSXjzVHIrnFg96qK1QvGgPBoQcBU9681LQnoz2kBQpFD0pQikeCpUggpcmGtf0vc3MutnN7E+ryYMPlp3Z+d68ee97O8pyUxNYrBUxhuhDRBB/ECWwm4oIeRw/R3xHrCNO+HgY0RYwfUDPc4hpRAPcvr1CJBGLiI+IB4jfARP5J8QzuFujjb1DRBHPEXnGB+ZqQG62p4i39MD4mU9D7Y04WxlPuIY6OECcY4xnu9QeqSq8nJ2Fx6rqeWWam1ha0r91sV7GS01KHltdhfDkJMR2djw5QXNobmhiAp5sbMBDxpym32e8TqXkwaEhUBobIdDd7eqEIKe5pYsLUNvbIb656RSJe0wiItA/MwPB4WFQwuEboXBwwkpeyuVAiUQgODAA0WRS5kBBGp9vCwugHRzY5a2jA6JraxVOyMgpclf7+7A7NSWj0aQO/NA0yGD4aQFh+uKnpxAcHDQiYSPHcYN8bw8yOJfWklnAKUP0DzmZ2tlZXrylRT8WcRziaAzy5mZj57QBJ3IhRODmBO2imE4b5OacqAg7keO4Tu6yc7MDqhcnvo6Pg3Z4aBszyLlzfsiFAyEvE0UkKnIin785838gR1OkOuBm+s7Pzso7xzMvvyz5XUauA451TjsXYRfklBM9PRDb3vYj2wXmm9xSajad6Oqy6YSDaex/yOnMbTqBkQnG4557B/NNzsMuEk4kZkVCeuwdjg44nbk52w2dwLlChLz0Dlcd6McGYpBbwm4tNUMnjo6q9o4+bGy+dYAaSDGbrSg1pzqvqhN4bEWsil1sbL51gBZMj4yAdnzsWWTMTlDkiltbkEkk4Kf8G10HzmWjv66vITs6CoWVFc8KJ5zIp1Ju5GQ5BW9Gr/EhBfWxN4xfly7rQE6c64zf1Rbr4ABxnggdoLvalxqSf0Z8EGUY5hdFuqvN3/FxXHKOF4gr8UvWRrdUuigi3vOEpNtSL/23U6lQ16LGUa2OPY7n6D/Xcj3X7a8AAwAd5K3Nw/+quwAAAABJRU5ErkJggg=="; | |
resetIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANFSURBVHjaxFddSBRRFP52nCw3TZNN1qUi6aEiYiutQAkUJSozrWz7Q2h87EnCh6gHXQKJsIcMInpwH4QM8aFYSogQiYzKUgvEh17qRWX7IUtTTNfOmbnjuuvuzCy57gffzrJ39n5nzj3nu3NtrdcRCSexmrifmEP8Q5zHUqQQ11gcHye+J3YSx8R4GjFXXvQH/u4l1hNTsfy4SLxFbCbeIG4gjsqLxB8TjyKx4Ae7SiwkHidOSWLAuwLii1FMvMJfJLHm9Vh5sKZTEgWXmoQAWLNaEtWeLOTLotUsY+8OwH2gBkg/BKxyAbMBIEidNtmDD2/a0D8culeyadfgfMzpMmXRp6ZwZAEVHqpVx2WaOZ06fxr4OwLYqaBt1O7ra+F23YP74E34O7xItwMlp9ppTIav5XSsae1yDBMJQ+FuYFtpH1lHgfaDKj6mZYDFFx6ZVHMaUVFbpgW3jjptatBo6mnJTDw7M0Kc0z3eQRZyCRjOBoYogC/Uwb+fhoKTNwIZx8KDi4452eyOyjMNIfG5H8Dnw/C190Xc1aVSqakgc22hzDitiEP3AcOCg6M+9GRRxTVszqWPrPNxiZsGoFa7XnCU9ljijNKq27TmVXGJ63tASsxRbjW94HjdjcDjwYmlv/96ZBpA7JBlp6h2uk52G07ke9BLn73xGpFNMvQBLro41zRO2CVDH+CU6uJryxIRgIkPkL2GrLAuEQHMGQbA3q4aj5qBYigXSkxnVDx5UE6sXp42VDeWb83CB2YA113DIJRz+cDWfmD7CJSTGZbb0BD+jgbN22Xy/dQtQF43lLrnwHdyvEm6zgfV7CDzLNGj7QeMTQ/po/w/fYAT8JOWoqsI7iO9WgCqP5RpXNiYRsI3pulBfHpRbnkJTHuMl8LfWgQEGkM1EU2cx7424UnrHrwcsOYDlt8HOBO++14U7PRi174aLe2c7hQHzfAKmHiG4f42vP4Ynw/I4tBgGe+GmNQdaFuONgxI4sSSLLyVxHFpJgnirNkpibNacxICYM0x3Yj4rNazguL8/tagt2GaOCjyWa0pwcsxIzQqibO6EfHL1CgfFInXiHfEaSmf39u5VdhaeOOI1scWxwNccBHHcxX/BBgAfRzsOqsfZ/kAAAAASUVORK5CYII="; | |
loaderIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAYAAAASVl2WAAAACXBIWXMAAAZ2AAAGdgEpJm+AAAABe0lEQVR4Xl2OPUiUcQCHn7/33qmn6HVi0QlBLia5+EGQDUFBYdSk0BQUJAbREmRbs0tKuBTmIjRYGDk0dJA1XEGFox9wctcgWr7q8Xad78e9vr8GB8Nn+vHwGx6jiYEBMsu3iIWdRGEaNbrst27ihwU2qq8tjice0dR+nqrZIvIDAmOwatqw7AvEK6ctXOMSduwRraUIyzGisqh4hm3Xppr+ZZSdusbMcDMN9W3EW1qQEfvbNiU3z92XQlLd+xXdBniQV/fIqvpA5umCLktKATD2Qs1ypnNSl6QuqTK2ND+vDEfRzvOH2pwd/d9Zh1PJVzm+2SWAm4ca4MMnnbkypH6tM64vDN97osGFRfUCICk9N6ce7d2ZPGhA+sr9+rM6JymDvO835F+VtCLtIjkcnH5QUfnjJaPPo2+4eH0ooAGwER5wilp/EbLZtxbFYpzfj50EwR8SdaLqRZR+Wjg7x/BPYpFffsaJ1nVisQyhW0vwt4Yw5REkCzi8+wfsmspUeBeGZgAAAABJRU5ErkJggg=="; | |
markerIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJaSURBVHjaxJcxS1xBEMf3nod6h4IoxkRUVFLZxDRqY0JCtBDRqKUgYiEWKaxMehFJlcLCys6AGAyGQBREyBcIaKF2VyiYEC00EbXwfP7nnAfrY9c3b6OXgd8d7Ns3Mzs7M/s24fu+0iQJukAHqAXF4BTcmMRSEPP5PlgD38AFSIFHihxgmsGWf/9CNlpBI0jpxo/9/MlfdkIl8ENh3wRNKr+yDZ4Eex7H+DlYBusgw2ONoBP0gCKhnqacbURgJkboPoNqLW8CUrynxKcY+mbo5WXh5GmDYd14ShubFOpcosmrgokLMYwHfJRE1OM6vU1OwBvD+HUdK/UTnBmevxXoTnuWJqLLAjg0GK/hZtVgca4QLEYltCfI1hWDcsr6efAdbIEPlsh8jdCdlTiQMShvBy3a+DioN2xLJkp5UuDApWFlpvfKgRfKicso5ZII1BlWRnmxG9qmI0NC1kkiUBAxp4Pbpq6ckvIpeM2Z/sNSDS8ilyfoA4eg0qEPlIDfd9EHKsA7hz4wBSrvog8EWT4cw/iopXk59YEgWefAe46IzXiae8KsMMGzUgcCJybADnfAsPE2rvtxoXFxGYaF9nXIMD4GquIqc3FAcfnpzagU9Loo8gR9QFm63kstIftBmasDxY5RGNCq4ZmjjoSkD9ikj4/kA9DtqCOdFPYBWzI+5op44KjjPMk3FlfpVv8me3QvoE/pL44KfvH/Q8f3e//7xcTji+IIf3zmS/6AQbLtcSlRJr9ir/Kx8udgI1eHdJ5rB4t+Pa+m53zA0HUsa6rjGM/3QtfznFwJMABfWkOfHxFX4gAAAABJRU5ErkJggg=="; | |
markerIconRed = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ1SURBVHjavJc/TFRBEMYfy4viRQyRgEj0osTKRmkMDRgMWFyIfw6oiIZQGAoLKsGCDhKpKKm0UgEbSEiOAjVakZCY2IgVVwA5CokxaoSCO/yGzEs2z13e7J7wJb9mX97M7uzM7G7F2uBgoCkEGdAJLoIq8AfsB/+q0vF7ASyBHNgDp8D5UPvhOngFrgZHp8dgFQyAb2BLac4/HrHzSOTjLagDO4rDTis/ExyfToMX5Dvac5eV74J58A7keawJ3AZ3wEmHSGRCTjip5ngfC7HxZfAejIAJ0CO016k42yV6BrIG5wfZTAnFEekFY0KbjYpLJUmz4KlhXHe+o42PgtcCuxWK6/Qw/eawS51HGhbYTilLE9E1A7YNzi/w9l22TO4EeJOU0EoQpkWDccr6l+AD+AImLZFZSLBdlEwgbzDeCm5o40PgkmFb8knGQ8EESoaVmf47C1QsJ0pJxiURSBtWRnmxHtumH4aETEsiUJnULPgA0Y1TUjaDe5zpnyzV0C6JQFIf6AO/DMa/g2mwAjYN36nfP/gffaCWW6xrHxjnE6/sPhBleb+D80eW5uXVB6Ktes4HTe0hzlPcE6aECV6UTiCaxBPwlTtg3HkL1/2Q0Lm4DOOifX1oGKfL5TlXYz4TCLj89GZUDe76GFKCPhBYut4tLSHpnlDjO4Eqzyh0a9XQ5mlD1Adsus9HMl2vuzxtpEJhH7Al4xWuiHpPG7uh4Y7noq6gPG0ofi75Ksv4aknxW23V00AD4yPymVP8UBzgy+dx6SefsnuKS4kyuaOMSLiu/Cb4HF1I9EfFNe153kh1ygcMPceKpjp2+L4Re54f6K8AAwBBJI/RyNsHlQAAAABJRU5ErkJggg=="; | |
if (plugin.squadOP.JSONdata != undefined) { | |
var jdata = plugin.squadOP.JSONdata; | |
if (!! jdata.squads && jdata.squads.length > 15) { | |
$('#dialog-sop-main-window').css("min-height", ($(window).height()-180)+"px"); | |
} | |
out = "<div id='sop_err' style='display:none;background-color:#FF3333;color:white;text-align:center;padding:2px;margin-bottom:3px;'></div>"; | |
out += "<div style='width:100%;border:1px solid "+defColor4+";margin:0px 0px 8px 0px;position:relative;'>"; | |
out += "<h4 style='text-align:center;background-color:"+defBgColor2+";margin:0;font-size:110%;'>"+jdata.event_name+"</h4><div style='position:absolute;right:2px;top:-1px;display:none;' id='sop_loader'><img src='"+loaderIcon+"' height='10' /></div>"; | |
out += "<div id='sop_footer'>" | |
+ "<a href='javascript:void(0)' onclick='window.plugin.squadOP.showOptionsDialog()'>"+soplng.options+"</a> | " | |
+ "<a href='javascript:void(0)' id='undockLink' onclick='window.plugin.squadOP.undockSquadList()'>"+(sop_docked?'undock':'redock')+"</a> | "; | |
//+ "<a href='javascript:void(0)' onclick='window.plugin.squadOP.showLinkSimDialog()'>Link Sim</a> | " | |
out += "<a href='javascript:void(0)' onclick='window.plugin.squadOP.showImportDialog()'>Import/Export</a> | " | |
out += "<a href='javascript:void(0)' onclick='window.plugin.squadOP.toggleDualMonMode()'>dual mon</a> | " | |
out += "<a href='javascript:void(0)' onclick='window.plugin.squadOP.delOpKey()'>"+soplng.logoff+"</a>" | |
+ "</div>"; | |
out += "</div>"; | |
if (jdata.issueAnz > 0) { | |
out+= "<div style='width:100%;border:2px dotted #FF0000;margin:3px 0 8px 0;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.openIssueDialog()'>"+jdata.issueAnz+" "+soplng.waitingIssue+"</a></div>"; | |
} | |
window.plugin.squadOP.highlightPortals = {}; | |
if (sopSquadFilter != "") { | |
var filter = sopSquadFilter.split(","); | |
} | |
out+= "<table style='width:100%;'>"; | |
$.each ( | |
jdata.squads, | |
function (rowIndex, sq) { | |
var hideFromList = false; | |
if (sopSquadFilter != "" && sopSquadFilter != 0) { | |
var found = false; | |
$.each(filter, function( index, value ) { | |
if (sq.name.indexOf(value) === 0) { | |
found = true; | |
return true; | |
} | |
}); | |
if (found == false) { | |
window.plugin.squadOP.showIcon(sq.dbid, sq.id, sq.name, sq.lat, sq.lon, sq.status, sq.pos); | |
return true; | |
} | |
} | |
target_out = "<td colspan='4'></td>"; | |
var strLimit = window.plugin.squadOP.teamNameLimit; | |
var nameTrunc = sq.name; | |
if (nameTrunc.length > strLimit) { | |
nameTrunc = jQuery.trim(sq.name).substring(0, strLimit) + ".."; | |
window.plugin.squadOP.squadNameAreVeryLong = true; | |
} | |
if (sq.target) { | |
strLimit = 30; | |
var title = sq.target.title; | |
if (title.length > strLimit) { | |
title = jQuery.trim(title).substring(0, strLimit) + ".."; | |
} | |
var transportClass = ""; | |
if (sq.type == 2) { | |
transportClass = "bike"; | |
} | |
else if (sq.type == 3) { | |
transportClass = "car"; | |
} | |
if (window.plugin.squadOP.highlightPortals[sq.target.guid] == undefined) { | |
window.plugin.squadOP.highlightPortals[sq.target.guid] = {}; | |
} | |
window.plugin.squadOP.highlightPortals[sq.target.guid][sq.dbid] = true; | |
//target_out = "<td style='background-color:#002600;'><a href='javascript:void(0)' onclick='window.map.setView({lat: "+sq.target.lat+", lon: "+sq.target.lng+"});'><small>"+sq.target.title; | |
target_out = "<td style='background-color:"+defBgColor2+";"; | |
if (sq.outsync != undefined && sq.outsync == 1) { | |
target_out+= ";border:1px solid #9B0D0D;"; | |
} | |
target_out += "'><a href='javascript:void(0)' "+window.plugin.drawPortalLinkHandler(sq.target.guid, sq.target.lat, sq.target.lng)+"><small>" | |
+ title; | |
// onclick='window.renderPortalDetails(\""+sq.target.guid+"\");' ondblclick='window.zoomToAndShowPortal(\""+sq.target.guid+"\", ["+sq.target.lat+","+sq.target.lng+"]);' | |
if (sq.targetAnz > 1) { | |
target_out+= " (+"+(sq.targetAnz-1)+")"; | |
} | |
target_out+= "</small></a></td>"; | |
if (!sop_docked) { | |
target_out+= "<td style='text-align:right;width:10px;'><div style='padding-top:3px;'>"; | |
if (sq.lat != 0 && sq.lon != 0) { | |
target_out+= ""+(Math.round(sq.distance * 10 ) / 10)+" km"; | |
} | |
else target_out+= "---"; | |
target_out+= "</div></td>"; | |
} | |
target_out+= "<td style='text-align:center;width:16px;'><div style='padding-top:3px;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.setSquadTargetDone(this, "+sq.target.target_id+", "+sq.dbid+")'><img width='16' src="+acceptIcon+"></a></div></td>"; // title='target completed' | |
target_out+= "<td style='text-align:center;width:16px;'><div style='padding-top:3px;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.setSquadTargetToIssue(this, "+sq.target.target_id+", "+sq.dbid+")'><img width='16' src="+resetIcon+"></a></div></td>" //title='back to issues' | |
target_out+= "<td style='text-align:center;width:16px;'><div style='padding-top:3px;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.delSquadTarget(this, "+sq.target.target_id+", "+sq.dbid+")'><img width='16' src="+deleteIcon+"></a></div></td>"; //title='cancel target' } | |
} | |
else target_out+= "<td></td>"; | |
out+= "<tr class='sop_squad' cellspacing='2'"; | |
out+= ">"; | |
out+="<td class='center' style='width:20px;'>" | |
if (sq.lat != undefined && sq.lat != 0 && sq.lon != 0) { | |
out += '<a href="javascript:void(0)" onclick="window.map.setView({lat: '+sq.lat+', lon: '+sq.lon+'});">'; | |
} | |
out+= "<span class='sop_st"+sq.status+" "+transportClass+"' title='"+window.plugin.squadOP.statusList[sq.status]+"'></span>" | |
if (sq.lat != undefined && sq.lat != 0 && sq.lon != 0) { | |
out += "</a>" | |
} | |
out+= "</td>"; | |
out+= "<td style='background-color:"+defBgColor2+";width:50px"; | |
out+= "'><a href='javascript:void(0)' onclick='window.plugin.squadOP.openSquadDialog("+sq.dbid+");return false;'><b>"+nameTrunc+"</b>" | |
if (sq.nmc != undefined && sq.nmc > 0) { | |
out+= " <b style='background-color:#ececec;color:black;padding:0 2px;border-radius: 4px;font-size:80%;' title='" + sq.nmc + " new chat messages'>" + sq.nmc + "</b>"; | |
} | |
out+= "</a></td>"; | |
out+= target_out; | |
if (sq.lat != undefined && sq.lat != 0 && sq.lon != 0) { | |
out+= '<td><div style="padding-top:3px;width:16px;"><a href="javascript:void(0)" onclick="window.map.setView({lat: '+sq.lat+', lon: '+sq.lon+'});"><img width="16" src="'+(sq.outdated!=1?markerIcon:markerIconRed)+'"></a></div></td>'; //title="'+(sq.outdated!=1?'show on map':'Location outdated')+'" | |
} | |
else out+= '<td></td>'; | |
out+= "</tr>"; | |
window.plugin.squadOP.showIcon(sq.dbid, sq.id, sq.name, sq.lat, sq.lon, sq.status, sq.pos); | |
} | |
); | |
out+= "</table>"; | |
//if (sop_docked == true) { | |
out+= "<div id='sop_logs'></div>"; | |
//} | |
if (window.plugin.squadOP.squadNameAreVeryLong) { | |
$('#dialog-sop-main-window').parent().css("width", "580px"); | |
} | |
$('#sop_out').html(out); | |
//window.changePortalHighlights('Target Portals'); | |
return true; | |
} | |
} | |
catch (e) { | |
console.debug("Error drawSquadList:"+e); | |
} | |
} | |
window.plugin.squadOP.highlightPortals = {} | |
window.plugin.squadOP.portalHighlighterIsTarget = function(sopData) { | |
if (window.plugin.squadOP.highlightPortals[sopData.portal.options.ent[0]]) { | |
var fill_opacity = 85*.85 + .15; | |
color = 'red'; | |
var params = {fillColor: color, fillOpacity: fill_opacity}; | |
sopData.portal.setStyle(params); | |
} | |
window.COLOR_SELECTED_PORTAL = '#f0f'; | |
} | |
window.plugin.squadOP.drawLogsTimeoff = 1; | |
window.plugin.squadOP.drawLogsdata = new Array(); | |
window.plugin.squadOP.drawLogs = function() { | |
logs = window.plugin.squadOP.drawLogsdata; | |
if (logs.length > 0) { | |
out = ""; | |
for (var i=0,j=logs.length;i<j;i++) { | |
var date = new Date((parseInt(logs[i][1])+((parseInt(window.plugin.squadOP.drawLogsTimeoff)-1)*3600))*1000); | |
var hours = date.getHours(); | |
var minutes = date.getMinutes(); | |
var seconds = date.getSeconds(); | |
hours = hours < 10 ? "0"+hours : hours; | |
minutes = minutes < 10 ? "0"+minutes : minutes; | |
seconds = seconds < 10 ? "0"+seconds : seconds; | |
var formattedTime = hours + ':' + minutes + ':' + seconds; | |
out = "<tr><td>"+formattedTime+"</td><td nowrap>"+window.plugin.squadOP.drawLogsAction(logs[i])+"</td></tr>" + out; | |
} | |
out = "<table width='100%'>"+out+"</table>"; | |
$("#sop_logs").html(out); | |
$("#sop_logs").show(); | |
} | |
} | |
window.plugin.squadOP.drawLogsAction = function(sopData) { | |
//<a title="Bekenntniskirche Treptow" ondblclick="window.zoomToAndShowPortal("5e7aca0d0a534199857488f61c995046.16", [52.489168,13.452053]);" onclick="window.renderPortalDetails("5e7aca0d0a534199857488f61c995046.16");" href="javascript:void(0)"><small>Bekenntniskirche Treptow</small></a> | |
ret = "none"; | |
switch(sopData[0]){ | |
case 2: | |
if (window.portals[sopData[4]] != undefined) { | |
var p = window.portals[sopData[4]]; | |
ret = "[new target]</td><td><a ondblclick='window.zoomToAndShowPortal(\""+sopData[4]+"\", ["+p._latlng.lat+","+p._latlng.lng+"]);' onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[3]+"</b></a> for <b>"+sopData[2]+"</b></td><td>"+sopData[5]+""; | |
} | |
else { | |
ret = "[new target]</td><td><a onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[3]+"</b></a> for <b>"+sopData[2]+"</b></td><td>"+sopData[5]+""; | |
} | |
break; | |
case 3: | |
if (window.portals[sopData[3]] != undefined) { | |
var p = window.portals[sopData[3]]; | |
ret = "[new task]</td><td><a ondblclick='window.zoomToAndShowPortal(\""+sopData[3]+"\", ["+p._latlng.lat+","+p._latlng.lng+"]);' onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[2]+"</b></a></td><td>"+sopData[4]+""; | |
} | |
else { | |
ret = "[new task]</td><td><a onclick='window.renderPortalDetails(\""+sopData[3]+"\");' href='javascript:void(0)'><b>"+sopData[2]+"</b></a></td><td>"+sopData[4]+""; | |
} | |
break; | |
case 4: | |
ret = "<span style='color:#B57171'><b>[target abored]</b></span></td><td><b>"+sopData[3]+"</b> for <b>"+sopData[2]+"</b></td><td>"+(sopData[5]!=null?sopData[5]:'')+""; | |
break; | |
case 5: | |
if (window.portals[sopData[4]] != undefined) { | |
var p = window.portals[sopData[4]]; | |
ret = "<span style='color:#03FE03'>[target done]</span></td><td><a ondblclick='window.zoomToAndShowPortal(\""+sopData[4]+"\", ["+p._latlng.lat+","+p._latlng.lng+"]);' onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[3]+"</b></a> for <b>"+sopData[2]+"</td><td>"+sopData[5]+""; | |
} | |
else { | |
ret = "<span style='color:#03FE03'>[target done]</span></td><td><a onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[3]+"</b></a> for <b>"+sopData[2]+"</a></td><td>"+sopData[5]+""; | |
} | |
break; | |
case 6: | |
ret = "<span style='color:#A7DA9F'>[task assigned]</span></td><td><b>"+sopData[3]+"</b> for <b>"+sopData[2]+"</b></td><td>"+sopData[5]+""; | |
break; | |
case 7: | |
if (sopData[7] != undefined) { | |
ret = "<span style='color:#CADFAA'>[squad login]</span></td><td><b>"+sopData[2]+"</b> ("+sopData[3]+", "+sopData[4]+", "+sopData[5]+", "+sopData[7]+")"; | |
} | |
else { | |
ret = "<span style='color:#CADFAA'>[squad login]</span></td><td><b>"+sopData[2]+"</b> ("+sopData[3]+", "+sopData[4]+", "+sopData[5]+")"; | |
} | |
break; | |
case 8: | |
if (window.portals[sopData[4]] != undefined) { | |
var p = window.portals[sopData[4]]; | |
ret = "<span style='color:#03FE03'>[target done]</span></td><td><a ondblclick='window.zoomToAndShowPortal(\""+sopData[4]+"\", ["+p._latlng.lat+","+p._latlng.lng+"]);' onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[3]+"</b></a> by <b>"+sopData[2]+""; | |
} | |
else { | |
ret = "<span style='color:#03FE03'>[target done]</span></td><td><a onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[3]+"</b></a> by <b>"+sopData[2]+"</a>"; | |
} | |
break; | |
case 9: | |
if (window.portals[sopData[3]] != undefined) { | |
var p = window.portals[sopData[3]]; | |
ret = "<span style='color:#B57171'>[task abored]</span></td><td><a ondblclick='window.zoomToAndShowPortal(\""+sopData[3]+"\", ["+p._latlng.lat+","+p._latlng.lng+"]);' onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[2]+"</b></a></td><td>"+sopData[4]+""; | |
} | |
else { | |
ret = "<span style='color:#B57171'>[task abored]</span></td><td><a onclick='window.renderPortalDetails(\""+sopData[3]+"\");' href='javascript:void(0)'><b>"+sopData[2]+"</b></a></td><td>"+sopData[4]+""; | |
} | |
case 10: | |
if (window.portals[sopData[3]] != undefined) { | |
var p = window.portals[sopData[3]]; | |
ret = "<span style='color:#a0974c'>[target to tasks]</span></td><td><a ondblclick='window.zoomToAndShowPortal(\""+sopData[3]+"\", ["+p._latlng.lat+","+p._latlng.lng+"]);' onclick='window.renderPortalDetails(\""+sopData[4]+"\");' href='javascript:void(0)'><b>"+sopData[2]+"</b></a></td><td>"+sopData[4]+""; | |
} | |
else { | |
ret = "<span style='color:#a0974c'>[target to tasks]</span></td><td><a onclick='window.renderPortalDetails(\""+sopData[3]+"\");' href='javascript:void(0)'><b>"+sopData[2]+"</b></a></td><td>"+sopData[4]+""; | |
} | |
break; | |
case 11: | |
ret = "<span style='color:#95D4A5'><b>[OP Login]</b></span></td><td><b>"+sopData[2]+"</b> from <b>"+sopData[4]+"</b></td><td>"; | |
break; | |
case 12: | |
ret = "<span style='color:#9E8300'><b>[MSG]</b></span></td><td><b>@"+sopData[4]+"</b> "+sopData[2]+"</td><td>"+sopData[3]+"</td><td>"; | |
break; | |
} // switch | |
return ret; | |
} | |
window.plugin.squadOP.doKMLExport = function() { | |
alert("draw data:"+localStorage['plugin-draw-tools-layer']); | |
if (localStorage['plugin-draw-tools-layer'] != undefined) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'saveKML', | |
kml: localStorage['plugin-draw-tools-layer'], | |
callback: window.plugin.squadOP.doKMLExportCallback | |
}); | |
} | |
else { | |
alert("Keine KML Daten gefunden!"); | |
} | |
} | |
window.plugin.squadOP.doKMLExportCallback = function(sopData) { | |
alert("KML wurde auf dem Server gespeichert!\n"+sopData); | |
} | |
window.plugin.squadOP.toggleDualMonMode = function() { | |
var sidebarWidth = 340; | |
var textHeight = 200; | |
var textInputOffset = 23; | |
var minMapWidth = screen.width - sidebarWidth; | |
var dualSpace = $(window).width() - screen.width; | |
if (dualSpace > 100) { | |
$("#map").css("max-width", minMapWidth+"px"); | |
$('#scrollwrapper').css("left", minMapWidth+"px"); | |
$('#updatestatus').css("left", minMapWidth+"px"); | |
$('#chatcontrols').css("left", (minMapWidth+sidebarWidth)+"px"); | |
$('#chat').css("left", (minMapWidth+sidebarWidth)+"px"); | |
$('#chatinput').css("left", (minMapWidth+sidebarWidth)+"px"); | |
//$('#chat').css("height", (textHeight+textInputOffset)+"px"); | |
//$('#chatcontrols').css("bottom", (textHeight+(textInputOffset*2))+"px"); | |
$('.leaflet-top.leaflet-right').css('margin-right', '0px'); | |
$('#sidebartoggle').hide(); | |
} | |
} | |
window.plugin.squadOP.undockSquadListDialog; | |
//window.plugin.squadOP.docked = true; | |
window.plugin.squadOP.undockSquadList = function() { | |
var squadHtml = $('#sop_sidebar').html(); | |
if (squadHtml != "") { | |
var dialogTitle = "SOP [v"+window.plugin.squadOP.sopScriptVersion+"]"; | |
$('#sop_sidebar').html(""); | |
window.plugin.squadOP.undockSquadListDialog = dialog({ | |
text: squadHtml, | |
title: dialogTitle, | |
id: 'sop-main-window', | |
position: { my: "left top", at: "left+45 top+10", of: window }, | |
width: (window.plugin.squadOP.squadNameAreVeryLong==true?590:490), | |
buttons: false, | |
beforeClose: function( event, ui ) { | |
window.plugin.squadOP.docked = true; | |
sop_docked = true; | |
squadHtml = $('#dialog-sop-main-window').html(); | |
$('#sop_sidebar').html(squadHtml); | |
$('#undockLink').html("undock"); | |
} | |
}); | |
$('#undockLink').html("redock"); | |
window.plugin.squadOP.docked = false; | |
sop_docked = false; | |
} | |
else { | |
window.plugin.squadOP.undockSquadListDialog.dialog('close'); | |
window.plugin.squadOP.docked = true; | |
sop_docked = true; | |
} | |
} | |
window.plugin.squadOP.showOptionsDialog = function() { | |
var win = "<table class='vertical-center'>" | |
+ "<tr>" | |
+ "<td><b>Update-Interval:</b></td>" | |
+ "<td><input type='text' id='sop_updateInterval' value='"+squadIntTime+"' size='5' style='text-align:right;' /> <small>Millisekunden</small></td>" | |
+ "</tr>" | |
+ "<tr>" | |
+ "<td><b>Transfer-Interval:</b></td>" | |
+ "<td><input type='text' id='sop_asyncInterval' value='"+asyncIntTime+"' size='5' style='text-align:right;' /> <small>Millisekunden</small></td>" | |
+ "</tr>" | |
+ "<tr>" | |
+ "<td><b>Tracker Waypoints:</b></td>" | |
+ "<td><input type='text' id='sop_trackerWaypoints' value='"+trackerWaypoints+"' size='5' style='text-align:right;' /> <small>Steps</small></td>" | |
+ "</tr>" | |
+ "<tr>" | |
+ "<td><b>Squad-List Sorting:</b></td>" | |
+ "<td><select id='sop_squadListSort' class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'>"+window.plugin.squadOP.drawSquadSortSelect()+"</select></td>" | |
+ "</tr>" | |
+ "<tr>" | |
+ "<td><b>Map-Marker:</b></td>" | |
+ "<td><select id='sop_mapMarkerType' class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'>"+window.plugin.squadOP.drawMarkerTypeSelect()+"</select></td>" | |
+ "</tr>" | |
+ "<tr>" | |
+ "<td><b>SOP-Theme:</b></td>" | |
+ "<td><select id='sop_SelectedTheme' class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'>"+window.plugin.squadOP.drawThemeSelect()+"</select></td>" | |
+ "</tr>" | |
+ "<tr>" | |
+ "<td><b>Squad-Filter:</b></td>" | |
+ "<td><input type='text' id='sop_squadFilter' value='"+sopSquadFilter+"' size='15' /> <small>seperate by comma</small></td>" | |
+ "</tr>" | |
+ "</table>"; | |
dialog({ | |
text: win, | |
title: soplng.options, | |
id: 'sop-options-window', | |
width: 450, | |
buttons: [ | |
{ | |
text: soplng.save, | |
click: function() { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'saveOptions', | |
squadIntTime: $('#sop_updateInterval').val(), | |
asyncIntTime: $('#sop_asyncInterval').val(), | |
trackerWaypoints: $('#sop_trackerWaypoints').val(), | |
squadListSort: $('#sop_squadListSort').val(), | |
mapMarkerType: $('#sop_mapMarkerType').val(), | |
sopSelectedTheme: $('#sop_SelectedTheme').val(), | |
sopSquadFilter: $('#sop_squadFilter').val(), | |
callback: window.plugin.squadOP.showOptionsDialogCallback | |
}); | |
$( this ).dialog( "close" ); | |
} | |
}, | |
{ | |
text: soplng.cancel, | |
click: function() { | |
$( this ).dialog( "close" ); | |
} | |
} | |
] | |
}); | |
} | |
window.plugin.squadOP.showOptionsDialogCallback = function(err) { | |
if (err != "") { | |
alert(err); | |
} | |
else { | |
//alert("Bitte die Seite neu laden, um die �nderungen anzuwenden."); | |
} | |
} | |
window.plugin.squadOP.showImportDialog = function() { | |
var iconImport = 'data:image/png;base64,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'; | |
var iconExport = 'data:image/png;base64,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'; | |
var win = "<style>#dialog-sop-import-window .ui-button.ui-widget {border-radius: 5px;}</style>" + | |
"<center><font color='red'><b>"+soplng.importWarning+"</b></font></center><br/>" + | |
"<table class='vertical-center ui-dialog-buttonset' cellspacing=10 cellpadding=10>" + | |
"<tr>" + | |
"<td><b>Portal Keys:</b></td><td align='left'>"; | |
if(typeof window.plugin.keys == "function") { | |
win += "<button onclick='window.plugin.squadOP.getPortalKeys()' class='ui-button ui-widget'><img style='width:16px; height: 16px' src='"+iconImport+"' alt='import portal keys'> Import</button>"; | |
win += "<button onclick='window.plugin.squadOP.dialogCopyKeys()' class='ui-button ui-widget'><img style='width:16px; height: 16px'src='"+iconExport+"' alt='export portal keys'> Export</button>"; | |
win += "<button onclick='window.plugin.squadOP.getPortalKeysOfSquads()' class='ui-button ui-widget' style='margin-top:3px;'><img style='width:16px; height: 16px' src='"+iconImport+"' alt='import squad portal keys'> Import Squads Inventar</button>"; | |
} | |
else { | |
win += '<span style="color:red"><a href="http://iitc.jonatkins.com/release/plugins/keys.user.js">Keys Plugin</a> not installed</span>'; | |
} | |
win += '</td></tr>'; | |
win += "<tr>" | |
+ "<td><b>Bookmarks:</b></td><td align=left>"; | |
if(typeof window.plugin.bookmarks == "function") { | |
win += "<button id='getbookmarkslink' onclick='window.plugin.squadOP.getBookmarks()' class='ui-button ui-widget'><img style='width:16px; height: 16px' src='"+iconImport+"' alt='import bookmarks'> Import</button>"; | |
win += "<button onclick='window.plugin.squadOP.dialogCopyBookmarks()' class='ui-button ui-widget'><img style='width:16px; height: 16px' src='"+iconExport+"' alt='export bookmarks'> Export</button>"; | |
} | |
else { | |
win += '<span style="color:red"><a href="http://iitc.jonatkins.com/release/plugins/bookmarks-by-zaso.user.js">Bookmarks Plugin</a> not installed</span>'; | |
} | |
win += "</td></tr>"; | |
win += "<tr>" | |
+ "<td><b>Draw Tools:</b></td><td align=left>"; | |
if(typeof window.plugin.drawTools == "function") { | |
win += "<button id='getdrawtoolslink' class='ui-button ui-widget' onclick='window.plugin.squadOP.getDrawTools()'><img style='width:16px; height: 16px' src='"+iconImport+"' alt='import drawings'> Import</button>"; | |
win += "<button onclick='window.plugin.squadOP.dialogCopyDrawtools()' class='ui-button ui-widget'><img style='width:16px; height: 16px' src='"+iconExport+"' alt='export drawings'> Export</button>"; | |
} | |
else { | |
win += '<span style="color:red"><a href="http://iitc.jonatkins.com/release/plugins/draw-tools.user.js">Drawtools Plugin</a> not installed</span>'; | |
} | |
win += "</td></tr>"; | |
win += "<tr>" | |
+ "<td><b>Overlays:</b></td><td align=left>"; | |
if(typeof window.plugin.AnomalyTacticalMap == "function" || typeof window.plugin.SectorTacticalMap == "function") { | |
win += "<button class='ui-button ui-widget' onclick='window.plugin.squadOP.getOverlays()'> <img style='width:16px; height: 16px' src='"+iconImport+"' alt='import overlays'> Import</button>"; | |
} | |
else { | |
win += '<span style="color:red">Anomaly Plugin not installed</span>'; | |
} | |
win += "</td></tr>"; | |
win += "</table>"; | |
dialog({ | |
text: win, | |
title: soplng.importdialog, | |
id: 'sop-import-window', | |
width: 467, | |
buttons: [ | |
{ | |
text: "ok", | |
click: function() { | |
$( this ).dialog( "close" ); | |
} | |
} | |
] | |
}); | |
} | |
window.plugin.squadOP.showImportDialogCallback = function(err) { | |
if (err != "") { | |
alert(err); | |
} | |
else { | |
//alert("Bitte die Seite neu laden, um die ?nderungen anzuwenden."); | |
} | |
} | |
window.plugin.squadOP.saveSquadToPortalSelectedPortal = false; | |
window.plugin.squadOP.lastAssignTeam = false; | |
window.plugin.squadOP.xhrSaveSquad = false; | |
window.plugin.squadOP.htmlEscape = function(t){ | |
return t.replace(/&/g, '&') | |
.replace(/>/g, '>') | |
.replace(/</g, '<') | |
.replace(/"/g, '"') | |
.replace(/'/g, '''); | |
} | |
window.plugin.squadOP.htmlUnEscape = function(t){ | |
return t.replace(/&/g, '&') | |
.replace(/>/g, '>') | |
.replace(/</g, '<') | |
.replace(/"/g, '"') | |
.replace(/'/g, "'"); | |
} | |
window.plugin.squadOP.handleActionSelChangeSenderGuid = false; | |
window.plugin.squadOP.handleActionSelChange = function(ele, textfieldname) { | |
if(ele.value == 3) { | |
if (window.selectedPortal == null) return; | |
//Lets do some more. Store portal lat,long, name address and guid. | |
var portal = new Object(); | |
//var portal_full = window.portals[window.selectedPortal]; | |
var guid = window.selectedPortal; | |
var p = window.portals[guid]; | |
var d = p.options.data; | |
var label = d.title; | |
var lat = p.getLatLng().lat; | |
var lng = p.getLatLng().lng; | |
var details = portalDetail.get(guid); | |
window.plugin.squadOP.handleActionSelChangeSenderGuid = guid; | |
portal.title = label; | |
//portal.address = details.descriptiveText.map.ADDRESS; | |
portal.lat = lat; | |
portal.lon = lng; | |
portal.guid = guid; | |
var current_selected_portal = portal.title + ' <' + portal.lat+','+portal.lon+'>'; | |
dialog({ | |
text: soplng.linktohelp + '<br><br><b>' + current_selected_portal + '</b>', | |
title: soplng.linktodlgtitle, | |
id: 'select-link-target-portal', | |
width: 470, | |
close: function() { | |
if (window.selectedPortal == null) return; | |
//Lets do some more. Store portal lat,long, name address and guid. | |
var portal = new Object(); | |
//var portal_full = window.portals[window.selectedPortal]; | |
var guid = window.selectedPortal; | |
var p = window.portals[guid]; | |
var d = p.options.data; | |
var label = d.title; | |
var lat = p.getLatLng().lat; | |
var lng = p.getLatLng().lng; | |
var details = portalDetail.get(guid); | |
portal.title = label; | |
//portal.address = details.descriptiveText.map.ADDRESS; | |
portal.lat = lat; | |
portal.lon = lng; | |
portal.guid = guid; | |
var sel_portal = portal.title + ' <' + portal.lat+','+portal.lon+'>'; | |
if(current_selected_portal != sel_portal) { | |
window.plugin.nl2br($('#'+textfieldname).text(sel_portal)); | |
$('#sop_link_target').attr('value', window.plugin.squadOP.htmlEscape(JSON.stringify(d))); | |
} else { | |
alert("No Link Target selected, previous selection resetted!"); | |
$('#sop_link_target').attr('value', "{}"); | |
$('#'+textfieldname).text(""); | |
} | |
if (window.plugin.squadOP.handleActionSelChangeSenderGuid) { | |
window.renderPortalDetails(window.plugin.squadOP.handleActionSelChangeSenderGuid); | |
} | |
$( this ).dialog( "close" ); | |
}, | |
buttons: [ | |
{ | |
text: soplng.close, | |
click: function() { | |
try { | |
$( this ).dialog( "close" ); | |
} | |
catch (e) { | |
alert("error:"+e); | |
} | |
} | |
} | |
] | |
}); | |
} else { | |
$('#sop_link_target').attr('value', "{}"); | |
$('#sop_comment').text(""); | |
} | |
} | |
window.plugin.squadOP.saveSquadToPortal = function() { | |
var bike_icon = "data:image/png;base64,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"; | |
var car_icon = "data:image/png;base64,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"; | |
var walk_icon = "data:image/png;base64,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"; | |
try { | |
var curTeam = $('#squadSel').val(); | |
if (curTeam == "") { | |
alert(soplng.squadSelErr+"!"); | |
return false; | |
} | |
window.plugin.squadOP.lastAssignTeam = curTeam; | |
window.plugin.squadOP.saveSquadToPortalSelectedPortal = window.selectedPortal; | |
var portal = window.portals[window.selectedPortal].options.data; | |
var details = portalDetail.get(window.selectedPortal); | |
var squad_data = window.plugin.squadOP.getSquadById(curTeam); | |
var trafficIcon = walk_icon; | |
if (squad_data.type == 2) { | |
trafficIcon = bike_icon; | |
} | |
else if (squad_data.type == 3) { | |
trafficIcon = car_icon; | |
} | |
win = "<table style='width:100%' id='sop_directions'>"; | |
win+= "<tr><td width='85' align='right'>"+soplng.team+":</td><td colspan='2'><b>"+$('#squadSel option:selected').text()+"</b></td><td rowspan=5><img width='32' src='"+trafficIcon+"' /></td></tr>"; | |
win+= "<tr><td width='85' align='right'>"+soplng.targetportal+":</td><td colspan='2'><b>"+portal.title+"</b></td></tr>"; | |
win+= "<tr><td align='right'>"+soplng.task+":</td><td colspan='2'><select id='actionSel' onchange='window.plugin.squadOP.handleActionSelChange(this, \"sop_comment\")'>"+window.plugin.squadOP.drawActionsOption()+"</select></td></tr>"; | |
win+= "<tr><td align='right'>"+soplng.comment+":</td><td colspan='2'><textarea style='width:100%' rows='2' id='sop_comment'></textarea><input type='hidden' id='sop_link_target' value=''></td></tr>"; | |
win+= "<tr id='sop_squad_get_directions'><td align='right'> </td><td colspan='2' style='vertical-align:middle;'><select id='sop_squad_directions_select'><option value='0'>current position</option><option value='1'>next portal</option></select>"; | |
win+= '<button onclick="window.plugin.squadOP.getSquadDirectionsStart()" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">get directions</button></td></tr>'; | |
win+= "<tr id='sop_squad_directions_loader'><td align='right'><div style='height:52px;'> </div></td><td colspan='2' style='vertical-align:middle;'>directions loading..</td></tr>"; | |
win+= "</table>"; | |
dialog({ | |
text: win, | |
title: 'assign squad to portal', | |
id: 'assign-squad-portal', | |
width: 470, | |
close: function() { | |
plugin.squadOP.drawnDirections.clearLayers(); | |
$( this ).dialog( "close" ); | |
}, | |
buttons: [ | |
{ | |
text: soplng.save, | |
click: function() { | |
try { | |
var portal = window.portals[window.plugin.squadOP.saveSquadToPortalSelectedPortal].options.data; | |
var details = portalDetail.get(window.plugin.squadOP.saveSquadToPortalSelectedPortal); | |
if (details.owner != "") { | |
portal.captured = true; | |
portal.capturingPlayerId = details.owner; | |
portal.capturedTime = details.capturedTime; | |
} | |
else { | |
portal.captured = false; | |
} | |
//alert(details); | |
portal.mods = window.plugin.squadOP.getPortalModString(details.mods); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'assignPortal', | |
guid: window.plugin.squadOP.saveSquadToPortalSelectedPortal, | |
portal: portal, | |
details: details, | |
squad: $('#squadSel').val(), | |
action: $('#actionSel').val(), | |
comment: encodeURIComponent(window.plugin.nl2br($('#sop_comment').val().replace(/"/, "'"))), | |
//link_target: window.plugin.squadOP.htmlUnEscape($('#sop_link_target').val()), | |
callback: window.plugin.squadOP.saveSquadToPortalCallback | |
}); | |
$('#squadSelect div.wrap').html("<div style='text-align:center'>saving...</div>"); | |
plugin.squadOP.drawnDirections.clearLayers(); | |
if (window.plugin.squadOP.xhrSaveSquad != false) { | |
window.plugin.squadOP.xhrSaveSquad.abort(); | |
} | |
$( this ).dialog( "close" ); | |
} | |
catch (e) { | |
alert("error:"+e); | |
} | |
} | |
} | |
] | |
}); | |
var squad_data = window.plugin.squadOP.getSquadById(curTeam); | |
$('#sop_squad_directions_loader').hide(); | |
if (squad_data.lat != 0) { | |
} | |
else { | |
$('#sop_squad_get_directions').hide(); | |
$('#sop_directions tr:last').after("<tr><td align='right'> </td><td>Squad has no location.</tr>"); | |
} | |
} | |
catch (e) { | |
console.debug("saveSquadToPortal:"+e); | |
window.plugin.squadOP.showLoader(false); | |
} | |
} | |
window.plugin.squadOP.getSquadDirectionsStart = function() { | |
var portal = window.portals[window.plugin.squadOP.saveSquadToPortalSelectedPortal].options.data; | |
var squad_data = window.plugin.squadOP.getSquadById(window.plugin.squadOP.lastAssignTeam); | |
var start_select = $('#sop_squad_directions_select').val(); | |
if (start_select == 1) { | |
if (squad_data.target.lat != undefined) { | |
squad_data.lat = squad_data.target.lat; | |
squad_data.lon = squad_data.target.lng; | |
} | |
else { | |
alert("squad has no target"); | |
} | |
} | |
window.plugin.squadOP.getSquadDirections(squad_data, (portal.latE6/1E6), (portal.lngE6/1E6)); | |
} | |
window.plugin.squadOP.getSquadDirections = function(squad_data, toLat, toLng) { | |
try { | |
$('#sop_squad_directions_loader').show(); | |
$('#sop_directions_maneuvers').remove(); | |
var bike_icon = "data:image/png;base64,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"; | |
var car_icon = "data:image/png;base64,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"; | |
var walk_icon = "data:image/png;base64,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"; | |
var transportType = "pedestrian"; | |
var trafficIcon = walk_icon; | |
if (squad_data.type == 2) { | |
transportType = "bicycle"; | |
trafficIcon = bike_icon; | |
} | |
else if (squad_data.type == 3) { | |
transportType = "fastest"; | |
trafficIcon = car_icon; | |
} | |
window.plugin.squadOP.xhrSaveSquad = $.ajax({ | |
dataType: "json", | |
url: 'https://open.mapquestapi.com/directions/v2/route?key=Fmjtd|luur2q62lu%2Crw%3Do5-9a2l1r', | |
type: 'POST', | |
data: { | |
routeType: transportType, | |
fullShape: true, | |
locale: window.plugin.squadOP.locale, | |
from: squad_data.lat+','+squad_data.lon, | |
to: toLat+','+toLng, | |
}, | |
success: function(sopData) { | |
try { | |
if (sopData.info.statuscode == 0) { | |
var out = ""; | |
var from_address = "---"; | |
var to_address = "---"; | |
var route_maneuvers = false; | |
if (sopData.route.locations[0].geocodeQuality == "ADDRESS") { | |
from_address = sopData.route.locations[0].street + ", " + sopData.route.locations[0].postalCode + " " + sopData.route.locations[0].adminArea5; | |
} | |
if (sopData.route.locations[1].geocodeQuality == "ADDRESS") { | |
to_address = sopData.route.locations[1].street + ", " + sopData.route.locations[1].postalCode + " " + sopData.route.locations[1].adminArea5; | |
} | |
if (sopData.route.legs[0].maneuvers != undefined && sopData.route.legs[0].maneuvers.length > 0) { | |
route_maneuvers = "<div id='sop_directions_maneuvers'><div style='margin-bottom:3px;margin-top:12px;text-align:center;' class='ui-dialog-title'>Directions</div><table style='margin-bottom:8px;width:100%;'>"; | |
route_maneuvers+= "<tr><td align=right>from:</td><td>"+from_address+"</td><td rowspan=4></td></tr>"; //<img width='32' src='"+trafficIcon+"' /> | |
route_maneuvers+= "<tr><td align=right>to:</td><td>"+to_address+"</td></tr>"; | |
route_maneuvers+= "<tr><td align=right>distance:</td><td>"+window.plugin.roundPrecision(sopData.route.distance,2)+" km</td></tr>"; | |
route_maneuvers+= "<tr><td align=right>ETA:</td><td>"+sopData.route.formattedTime+"</td></tr>"; | |
route_maneuvers+= "</table><table>"; | |
$.each(sopData.route.legs[0].maneuvers, function( index, v ) { | |
route_maneuvers += "<tr>"; | |
route_maneuvers += "<td><img src='"+v.iconUrl+"' /></td>"; | |
route_maneuvers += "<td><small>"+v.narrative+"</small></td>"; | |
route_maneuvers += "<td align=right>"+window.plugin.roundPrecision(v.distance, 2)+"km</td>"; | |
route_maneuvers += "<td>"+v.formattedTime+"</td>"; | |
route_maneuvers += "</tr>"; | |
}); | |
route_maneuvers += "</table></div>"; | |
} | |
if (route_maneuvers) { | |
$('#sop_directions').after(route_maneuvers); | |
} | |
//$('#sop_directions tr:last').after(out); | |
shape = []; | |
for (var i = 0; i < sopData.route.shape.shapePoints.length; i+=2) { | |
shape.push(L.latLng(sopData.route.shape.shapePoints[i],sopData.route.shape.shapePoints[i+1])); | |
} | |
var routeShape = L.polyline(shape, { color: '#FF0000', weight: 8}); | |
plugin.squadOP.drawnDirections.addLayer(routeShape); | |
$('#sop_squad_directions_loader').hide(); | |
} | |
else { | |
$('#sop_squad_directions_loader').html("directions error"); | |
} | |
} | |
catch (e) { | |
console.debug(e); | |
} | |
window.plugin.squadOP.showLoader(false); | |
} | |
}); | |
} | |
catch (e) { | |
alert("Fehler:"+e); | |
} | |
} | |
window.plugin.squadOP.saveSquadToPortalCallback = function(sopData) { | |
window.plugin.squadOP.drawPortalTeamSelect(); | |
if(typeof sopData != 'object') { | |
var jdata = $.parseJSON(sopData); | |
} else { | |
var jdata = sopData; | |
} | |
if (jdata.saveerr != undefined && jdata.saveerr == 1) { | |
alert("Target could not be sent to Team, try again."); | |
return false; | |
} | |
else if (jdata.saveerr != undefined && jdata.saveerr == 2) { | |
//alert("Team not connected, targets will be send on first login."); | |
//return false; | |
} | |
window.plugin.squadOP.reloadSquadTargets(jdata); | |
} | |
window.plugin.squadOP.reloadSquadTargets = function(sopData) { | |
if(typeof sopData != 'object') { | |
var jdata = $.parseJSON(sopData); | |
} else { | |
var jdata = sopData; | |
} | |
var dialog = $('#sq_dialog_next_targets_'+jdata.squad_id); | |
if (typeof dialog === 'object' && dialog.attr('id') != undefined) { | |
$('#sq_dialog_next_targets_'+jdata.squad_id).html("loading..."); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getSquadTargets', | |
squad_id: jdata.squad_id, | |
callback: window.plugin.squadOP.getSquadTargetsCallback | |
}); | |
} | |
} | |
var bPortalkeysloading = false; | |
window.plugin.squadOP.getPortalKeys = function() { | |
if(bPortalkeysloading) return; | |
bPortalkeysloading = true; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getPortalKeys', | |
callback: window.plugin.squadOP.getPortalKeysCallback | |
}); | |
portalKeysOfSquadsLoaded = false; | |
} | |
window.plugin.squadOP.getPortalKeysOfSquads = function() { | |
if(bPortalkeysloading) return; | |
bPortalkeysloading = true; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getPortalKeysOfSquads', | |
callback: window.plugin.squadOP.getPortalKeysCallback | |
}); | |
portalKeysOfSquadsLoaded = true; | |
} | |
window.plugin.squadOP.getPortalKeysCallback = function(sopData) { | |
if(typeof sopData != 'object') { | |
window.plugin.squadOP.jsonDataObject = $.parseJSON(sopData); | |
} else { | |
window.plugin.squadOP.jsonDataObject = sopData; | |
} | |
bPortalkeysloading = false; | |
if (window.plugin.squadOP.jsonDataObject.ok == 0) { | |
alert("No Portal Keys data available."); | |
return; | |
} | |
else { | |
var pluginName = "squadOP"; | |
var fieldName = window.plugin.keys.KEY.field; | |
var keys = $.parseJSON(window.plugin.squadOP.jsonDataObject.k.replace(/\\(.?)/g, function(s, n1) { | |
switch (n1) { | |
case '\\': | |
return '\\'; | |
case '0': | |
return '\u0000'; | |
case '': | |
return ''; | |
default: | |
return n1; | |
} | |
})); | |
if (portalKeysOfSquadsLoaded) { | |
window.plugin.squadOP.deleteAllPortalKeys(); | |
} | |
else if (confirm("Delete existing portal keys before import?")) { | |
window.plugin.squadOP.deleteAllPortalKeys(); | |
} | |
var key_count = 0; | |
$.each (keys, function(guid, newCount) { | |
newCount = parseInt(newCount); | |
if(newCount === 0) { | |
delete plugin.keys.keys[guid]; | |
plugin.keys.updateQueue[guid] = null; | |
} else { | |
plugin.keys.keys[guid] = newCount; | |
plugin.keys.updateQueue[guid] = newCount; | |
} | |
plugin.keys.storeLocal(plugin.keys.KEY); | |
plugin.keys.storeLocal(plugin.keys.UPDATE_QUEUE); | |
plugin.keys.updateDisplayCount(); | |
window.runHooks('pluginKeysUpdateKey', {guid: guid, count: newCount}); | |
plugin.keys.delaySync(); | |
key_count++; | |
}); | |
//plugin.keys.delaySync(); | |
//plugin.keys.updateDisplayCount(); | |
alert("Keys of "+key_count+" portals loaded"); | |
} | |
} | |
window.plugin.squadOP.deleteAllPortalKeys = function() { | |
// delete all existing keys | |
$.each (plugin.keys.keys, function(guid, newCount) { | |
delete plugin.keys.keys[guid]; | |
plugin.keys.updateQueue[guid] = null; | |
plugin.keys.storeLocal(plugin.keys.KEY); | |
plugin.keys.storeLocal(plugin.keys.UPDATE_QUEUE); | |
plugin.keys.delaySync(); | |
window.runHooks('pluginKeysUpdateKey', {guid: guid, count: newCount}); | |
plugin.keys.updateDisplayCount(); | |
}); | |
} | |
window.plugin.squadOP.dialogCopyKeys = function() { | |
var data = localStorage[plugin.keys.KEY.key]; | |
if(typeof android !== 'undefined' && android && android.shareString) { | |
return android.shareString(data); | |
} else { | |
var contentType = "application/json"; | |
var fileName = "portalkeys.json"; | |
var dllink = createDownloadLink(data, contentType, fileName); | |
dialog({ | |
html: '<p><a onclick="$(\'.ui-dialog-bkmrksSet-copy textarea\').select();">Select all</a> and press CTRL+C to copy it.</p><textarea readonly>'+data+'</textarea><br><br>' | |
+ '<table>' | |
+ '<tr><td style="font-size:15px;font-weight:bold;">Download: '+dllink+'</td></tr>' | |
+ '</table>', | |
dialogClass: 'ui-dialog-bkmrksSet-copy', | |
title: 'Portal Keys Export' | |
}); | |
} | |
} | |
window.plugin.squadOP.dialogCopyBookmarks = function() { | |
var data = localStorage[window.plugin.bookmarks.KEY_STORAGE]; | |
if(typeof android !== 'undefined' && android && android.shareString) { | |
return android.shareString(data); | |
} else { | |
var contentType = "application/json"; | |
var fileName = "bookmarks.json"; | |
var dllink = createDownloadLink(data, contentType, fileName); | |
dialog({ | |
html: '<p><a onclick="$(\'.ui-dialog-bkmrksSet-copy textarea\').select();">Select all</a> and press CTRL+C to copy it.</p><textarea readonly>'+data+'</textarea><br><br>' | |
+ '<table>' | |
+ '<tr><td style="font-size:15px;font-weight:bold;">Download: '+dllink+'</td></tr>' | |
+ '</table>', | |
dialogClass: 'ui-dialog-bkmrksSet-copy', | |
title: 'Bookmarks Export' | |
}); | |
} | |
} | |
window.plugin.squadOP.dialogCopyDrawtools = function() { | |
var data = localStorage['plugin-draw-tools-layer']; | |
if(typeof android !== 'undefined' && android && android.shareString) { | |
return android.shareString(data); | |
} else { | |
var contentType = "application/json"; | |
var fileName = "drawtools.json"; | |
var dllink = createDownloadLink(data, contentType, fileName); | |
dialog({ | |
html: '<p><a onclick="$(\'.ui-dialog-drawtoolsSet-copy textarea\').select();">Select all</a> and press CTRL+C to copy it.</p><textarea readonly>'+data+'</textarea><br><br>' | |
+ '<table>' | |
+ '<tr><td style="font-size:15px;font-weight:bold;">Download: '+dllink+'</td></tr>' | |
+ '</table>', | |
dialogClass: 'ui-dialog-drawtoolsSet-copy', | |
title: 'Draw Tools Export' | |
}); | |
} | |
} | |
var bDrawtoolsloading = false; | |
window.plugin.squadOP.getDrawTools = function() { | |
if(bDrawtoolsloading) return; | |
bDrawtoolsloading = true; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getDrawTools', | |
callback: window.plugin.squadOP.getDrawToolsCallback | |
}); | |
} | |
window.plugin.squadOP.getDrawToolsCallback = function(sopData) { | |
if(typeof sopData != 'object') { | |
var jdata = $.parseJSON(sopData); | |
} else { | |
var jdata = sopData; | |
} | |
bDrawtoolsloading = false; | |
if (jdata.ok == 0) { | |
alert("No drawtools data available."); | |
return; | |
} | |
else { | |
try { | |
window.plugin.drawTools.drawnItems.clearLayers(); | |
var ddata = $.parseJSON(jdata.d); | |
window.plugin.drawTools.import(ddata); | |
window.plugin.drawTools.optAlert('Import Successful.'); | |
//to write back the data to localStorage | |
window.plugin.drawTools.save(); | |
} catch(e) { | |
console.warn('squadOP DRAWTOOLS: failed to import data: '+e); | |
window.plugin.drawTools.optAlert('<span style="color: #f88">Import failed</span>'); | |
} | |
setTimeout(function() {$('#getdrawtoolslink').bind('click')}, 5000); | |
alert("Draw Tools loaded"); | |
} | |
} | |
var bBookmarksloading = false; | |
window.plugin.squadOP.getBookmarks = function() { | |
if(bBookmarksloading) return; | |
bBookmarksloading = true; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getBookmarks', | |
callback: window.plugin.squadOP.getBookmarksCallback | |
}); | |
} | |
window.plugin.squadOP.getBookmarksCallback = function(sopData) { | |
var jdata = $.parseJSON(sopData); | |
bBookmarksloading = false; | |
if (jdata.ok == 0) { | |
alert("No bookmarks data available."); | |
return; | |
} | |
else { | |
localStorage[window.plugin.bookmarks.KEY_STORAGE] = jdata.b; | |
window.plugin.bookmarks.refreshBkmrks(); | |
alert("Bookmarks loaded"); | |
} | |
} | |
var bOverlaysloading = false | |
window.plugin.squadOP.getOverlays = function() { | |
if(bOverlaysloading) return; | |
bOverlaysloading = true; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getOverlays', | |
callback: window.plugin.squadOP.getOverlaysCallback | |
}); | |
} | |
window.plugin.squadOP.getOverlaysCallback = function(sopData) { | |
var jdata = $.parseJSON(sopData); | |
bOverlaysloading = false; | |
if(typeof window.plugin.AnomalyTacticalMap != "function") { | |
if(typeof window.plugin.SectorTacticalMap != "function") { | |
alert("Needed plugin \"AnomalyTacticalMap\" or \"SectorTacticalMap\" not installed."); | |
return; | |
} | |
} | |
if (jdata.ok == 0) { | |
alert("No overlays available."); | |
} | |
else { | |
if (jdata.c != undefined) { | |
localStorage["plugin-anomaly-tactical-map-cluster-bounds"] = jdata.c; | |
} | |
else { | |
localStorage["plugin-anomaly-tactical-map-cluster-bounds"] = ""; | |
} | |
if (jdata.z != undefined) { | |
localStorage["plugin-anomaly-tactical-map-zoning"] = jdata.z; | |
} | |
else { | |
localStorage["plugin-anomaly-tactical-map-zoning"] = ""; | |
} | |
if (jdata.p != undefined) { | |
localStorage["plugin-anomaly-tactical-map-portals"] = jdata.p; | |
} | |
else { | |
localStorage["plugin-anomaly-tactical-map-portals"] = ""; | |
} | |
if (jdata.v != undefined) { | |
localStorage["plugin-anomaly-tactical-map-volatiles"] = jdata.v; | |
} | |
else { | |
localStorage["plugin-anomaly-tactical-map-volatiles"] = ""; | |
} | |
if(typeof window.plugin.AnomalyTacticalMap == "function") { | |
window.plugin.AnomalyTacticalMap.redrawLayers(); | |
} | |
if(typeof window.plugin.SectorTacticalMap == "function") { | |
window.plugin.SectorTacticalMap.redrawLayers(); | |
} | |
alert("Overlays loaded"); | |
} | |
} | |
window.plugin.squadOP.getPortalModString = function(mods) { | |
var ret = new Array(); | |
$.each ( | |
mods, | |
function (rowIndex, m) { | |
if (m != null) { | |
var str = ""; | |
if (m.rarity != null) { | |
switch(m.rarity){ | |
case 'COMMON': | |
str += "C"; | |
break; | |
case 'RARE': | |
str += "R"; | |
break; | |
case 'VERY_RARE': | |
str += "VR"; | |
break; | |
} | |
} | |
if (m.name != null) { | |
switch(m.name) { | |
case 'Portal Shield': | |
str += "S"; | |
break; | |
case 'Force Amp': | |
str += "FA"; | |
break; | |
case 'Link Amp': | |
str += "LA"; | |
break; | |
case 'Turret': | |
str += "T"; | |
break; | |
case 'Multi-hack': | |
str += "MH"; | |
break; | |
case 'Heat Sink': | |
str += "HS"; | |
break; | |
} | |
} | |
if (str != "") { | |
ret[ret.length] = str; | |
} | |
} | |
} | |
); | |
if (ret.length > 0) { | |
ret = ret.join("|"); | |
} | |
else { | |
ret = ""; | |
} | |
return ret; | |
} | |
window.plugin.squadOP.showLoader = function (state){ | |
try { | |
if (state) { | |
$('#sop_loader').show(); | |
} | |
else { | |
$('#sop_loader').hide(); | |
} | |
} | |
catch (e) {} | |
} | |
window.plugin.squadOP.saveIssueToPortalSelectedPortal = false; | |
window.plugin.squadOP.saveIssueToPortal = function() { | |
try { | |
window.plugin.squadOP.saveIssueToPortalSelectedPortal = window.selectedPortal; | |
var portal = window.portals[window.selectedPortal].options.data; | |
var details = portalDetail.get(window.selectedPortal); | |
win = "<table style='width:100%'>"; | |
win+= "<tr><td width='85' align='right'>"+soplng.targetportal+":</td><td><b>"+portal.title+"</b></td></tr>"; | |
win+= "<tr><td align='right'>"+soplng.task+":</td><td><select id='actionSel' onchange='window.plugin.squadOP.handleActionSelChange(this, \"sop_issue_comment\")'>"+window.plugin.squadOP.drawIssueOption()+"</select></td></tr>"; | |
win+= "<tr><td align='right'>"+soplng.comment+":</td><td><textarea style='width:100%' rows='2' id='sop_issue_comment'></textarea><input type='hidden' id='sop_link_target' value=''></td></tr>"; | |
win+= "</table>"; | |
dialog({ | |
text: win, | |
title: soplng.createIssue, | |
id: 'assign-squad-portal', | |
width: 450, | |
buttons: [ | |
{ | |
text: soplng.save, | |
click: function() { | |
var portal = window.portals[window.plugin.squadOP.saveIssueToPortalSelectedPortal].options.data; | |
var details = portalDetail.get(window.plugin.squadOP.saveIssueToPortalSelectedPortal); | |
if (details.owner != "") { | |
portal.captured = true; | |
portal.capturingPlayerId = details.owner; | |
portal.capturedTime = details.capturedTime; | |
} | |
else { | |
portal.captured = false; | |
} | |
//alert(details); | |
portal.mods = window.plugin.squadOP.getPortalModString(details.mods); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'assignIssue', | |
guid: window.plugin.squadOP.saveIssueToPortalSelectedPortal, | |
portal: portal, | |
details: details, | |
squad: 0, | |
action: $('#actionSel').val(), | |
comment: window.plugin.nl2br($('#sop_issue_comment').val()), | |
//link_target: window.plugin.squadOP.htmlUnEscape($('#sop_link_target').val()), | |
callback: window.plugin.squadOP.saveIssueToPortalCallback | |
}); | |
$('#squadSelect div.wrap').html("<div style='text-align:center'>saving...</div>"); | |
$( this ).dialog( "close" ); | |
} | |
} | |
] | |
}); | |
} | |
catch (e) { | |
console.debug("saveSquadToPortal:"+e); | |
} | |
} | |
window.plugin.squadOP.saveIssueToPortalCallback = function(sopData) { | |
//$('#squadSelect div.wrap').html("<div style='text-align:center'>done!</div>"); | |
window.plugin.squadOP.drawPortalTeamSelect(); | |
if (sop_docked) { | |
renderPortalDetails(null); | |
} | |
} | |
window.plugin.squadOP.delSquadTarget = function(obj, tid, sq_id) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'delAssignPortal', | |
target_id: tid, | |
squad_id: sq_id, | |
callback: window.plugin.squadOP.delSquadTargetCallback | |
}); | |
$(obj).hide(); | |
} | |
window.plugin.squadOP.delSquadTargetCallback = function(sopData) { | |
window.plugin.squadOP.reloadSquadTargets(sopData); | |
} | |
window.plugin.squadOP.setSquadTargetDone = function(obj, tid, sq_id) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'setPortalDone', | |
target_id: tid, | |
squad_id: sq_id, | |
callback: window.plugin.squadOP.setSquadTargetDoneCallback | |
}); | |
$(obj).hide(); | |
} | |
window.plugin.squadOP.setSquadTargetDoneCallback = function(sopData) { | |
window.plugin.squadOP.reloadSquadTargets(sopData); | |
} | |
window.plugin.squadOP.setSquadTargetToIssue = function(obj, tid, sq_id) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'setTargetToIssue', | |
target_id: tid, | |
squad_id: sq_id, | |
callback: window.plugin.squadOP.setSquadTargetToIssueCallback | |
}); | |
$(obj).hide(); | |
} | |
window.plugin.squadOP.setSquadTargetToIssueCallback = function(sopData) { | |
window.plugin.squadOP.reloadSquadTargets(sopData); | |
} | |
window.plugin.squadOP.moveSquadTargetUp = function(obj, tid, squad_id) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'REST', | |
url: 'method=targetorderingup&targetid='+tid+'&squadid='+squad_id, | |
callback: window.plugin.squadOP.moveSquadTargetCallback | |
}); | |
} | |
window.plugin.squadOP.moveSquadTargetDown = function(obj, tid, squad_id) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'REST', | |
url: 'method=targetorderingdown&targetid='+tid+'&squadid='+squad_id, | |
callback: window.plugin.squadOP.moveSquadTargetCallback | |
}); | |
} | |
window.plugin.squadOP.deleteAllSquadTargets = function(obj, squad_id) { | |
if (confirm("Are you sure?")) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'REST', | |
url: 'method=deletesquadtargets&squadid='+squad_id, | |
callback: window.plugin.squadOP.deleteAllSquadTargetsCallback | |
}); | |
} | |
} | |
window.plugin.squadOP.deleteAllSquadTargetsCallback = function(sopData) { | |
if(typeof sopData != 'object') { | |
var jdata = $.parseJSON(sopData); | |
} else { | |
var jdata = sopData; | |
} | |
$('#sq_dialog_next_targets_'+plugin.squad_id).html("loading.."); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getSquadTargets', | |
squad_id: plugin.squad_id, | |
callback: window.plugin.squadOP.getSquadTargetsCallback | |
}); | |
} | |
window.plugin.squadOP.moveSquadTargetTop = function(obj, tid, squad_id) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'REST', | |
url: 'method=targetorderingtop&targetid='+tid+'&squadid='+squad_id, | |
callback: window.plugin.squadOP.moveSquadTargetCallback | |
}); | |
} | |
window.plugin.squadOP.moveSquadTargetCallback = function(sopData) { | |
var jdata = $.parseJSON(sopData); | |
$('#sq_dialog_next_targets_'+jdata.squad_id).html("loading.."); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getSquadTargets', | |
squad_id: jdata.squad_id, | |
callback: window.plugin.squadOP.getSquadTargetsCallback | |
}); | |
} | |
window.plugin.squadOP.delIssue = function(obj, tid) { | |
if (confirm('really sure?')) { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'delIssue', | |
target_id: tid, | |
callback: window.plugin.squadOP.delIssueCallback | |
}); | |
$("#issue"+tid).hide(); | |
} | |
} | |
window.plugin.squadOP.delIssueCallback = function(sopData) {} | |
window.plugin.squadOP.showIcon = function(sq_dbid, sq_id, sq_name, sq_lat, sq_lon, sq_status, sq_pos) { | |
if (sq_lat == 0 || sq_lon == 0) { | |
return false; | |
} | |
var squad_data = window.plugin.squadOP.getSquadById(sq_dbid); | |
var transportClass = ""; | |
if (squad_data.type == 2) { | |
transportClass = "bike"; | |
} | |
else if (squad_data.type == 3) { | |
transportClass = "car"; | |
} | |
var lblName = sq_name; | |
var isVolatile = false; | |
var isCluster = false; | |
var isBike = false; | |
if (sq_name.indexOf('Volat') > -1) { | |
isVolatile = true; | |
} | |
if (sq_name.indexOf('Cluster') > -1) { | |
isCluster = true; | |
} | |
if (sq_name.indexOf('Bike') > -1) { | |
isBike = true; | |
} | |
lblLimit = 8; | |
if (mapMarkerType == 1) { | |
lblName = lblName.replace(/cluster\s/gi, ""); | |
lblName = lblName.replace(/volatile\s/gi, ""); | |
lblName = lblName.replace(/team\s/gi, ""); | |
lblName = lblName.replace(/bike\s/gi, ""); | |
lblLimit = 4; | |
if (lblName.length > lblLimit) { | |
lblName = lblName.substring(0, lblLimit); | |
} | |
if (isVolatile) { | |
lblName = "V"+lblName; | |
} | |
if (isCluster) { | |
lblName = "C"+lblName; | |
} | |
if (isBike) { | |
lblName = "B"+lblName; | |
} | |
} | |
var div = ""; | |
if (mapMarkerType == 1) { | |
div = L.divIcon({iconSize: null, className:'sop_squadBox1',html:'<div id="'+sq_id+'" title="'+sq_name+'"><span class="sop_st'+sq_status+' '+transportClass+'"><a href="javascript:void(0)" onclick="window.plugin.squadOP.openSquadDialog('+sq_dbid+')">'+lblName+'</a></span></div>'}); | |
} | |
else { | |
div = L.divIcon({iconSize: null, className:'sop_squadBox2',html:'<div id="'+sq_id+'" title="'+sq_name+'"><span class="sop_st'+sq_status+' '+transportClass+'"><a href="javascript:void(0)" onclick="window.plugin.squadOP.openSquadDialog('+sq_dbid+')">'+lblName+'</a></span></div>'}); | |
//div = L.divIcon({iconSize: null, className:'sop_squadBox2',html:'<div id="'+sq_id+'" title="'+sq_name+'"><span class="sop_st'+sq_status+'"></span><a href="javascript:void(0)" onclick="window.plugin.squadOP.openSquadDialog('+sq_dbid+')">'+lblName+'</a></div>'}); | |
} | |
//div = L.divIcon({iconSize: null, className:'sop_squadBox3',html:'<div id="'+sq_id+'" title="'+sq_name+'" style="position:relative;white-space:nowrap;background-color:#FF0000;display:block;overflow:visible;"><a href="javascript:void(0)" onclick="window.plugin.squadOP.openSquadDialog('+sq_dbid+')" style="white-space:nowrap;background-color:#FF0000;display:block;overflow:visible;">'+lblName+'</a></div>'}); | |
var marker = L.marker([sq_lat,sq_lon],{icon:div}); | |
if (window.plugin.squadOP.drawnTracesSquad != undefined) { | |
try { | |
if (sq_pos.length > 1) { | |
var playerLine = []; | |
var last_i = 0; | |
for(var i = 1; i < sq_pos.length; i++) { | |
var cur = sq_pos[i]; | |
var last = sq_pos[last_i]; | |
if (cur.acc < 150) { | |
var line = [L.latLng(cur.lat,cur.lon),L.latLng(last.lat,last.lon)]; | |
playerLine.push(line); | |
last_i = i; | |
} | |
} | |
var opts = { | |
weight: 2, | |
color: "#1C425B", | |
clickable: false, | |
opacity: 1, | |
dashArray: "15,10,5,10", | |
smoothFactor: 5, | |
lineCap: 'round' | |
}; | |
//polyline = [[L.latLng(52.48971705,13.44772542),L.latLng(52.4897334,13.44768753)],[L.latLng(52.4897334,13.44768753),L.latLng(52.49054069,13.44842402)]]; | |
L.multiPolyline(playerLine, opts).addTo(plugin.squadOP.drawnTracesSquad); | |
} | |
} | |
catch (e) { | |
//console.debug("traces:"+e); | |
} | |
try { | |
marker.addTo(window.plugin.squadOP.drawnTracesSquad); | |
//window.plugin.squadOP.markerList.push(marker); | |
} | |
catch (e) { | |
console.debug("Error showIcon:"+e); | |
} | |
} | |
} | |
window.plugin.squadOP.openIssueDialog = function() { | |
var win = "no tasks over here.. :)"; | |
if (plugin.squadOP.JSONdata.issueAnz > 0) { | |
win = '<div id="issueOut"><i>loading '+plugin.squadOP.JSONdata.issueAnz+' tasks...</i></div><div style="text-align:center;margin-top:8px;">'+soplng.issueInfo+'.</div>'; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getIssues', | |
callback: window.plugin.squadOP.getIssuesCallback | |
}); | |
} | |
dialog({ | |
text: win, | |
title: soplng.issueOverview+' ['+plugin.squadOP.JSONdata.issueAnz+']', | |
id: 'issue-info-dialog', | |
position: { my: "center-2 top+2", at: "center-20 top+20", of: $('#map') }, | |
width: 700, | |
buttons: [ | |
{ | |
text: soplng.close, | |
click: function() { | |
$( this ).dialog( "close" ); | |
} | |
} | |
] | |
}); | |
} | |
window.plugin.squadOP.getIssuesCallback = function(sopData) { | |
result = $.parseJSON(sopData); | |
out = ""; | |
out+= "<table style='width:100%;'>"; | |
show = false; | |
$.each ( | |
result.issues, | |
function (rowIndex, ta) { | |
out+= '<tr style="border-bottom:1px solid black;background-color:'+defBgColor2+';" id="issue'+ta.target_id+'">' | |
+ '<td align=center>'+(rowIndex+1)+'.</td>' | |
+ "<td><a href='javascript:void(0)' " | |
+ window.plugin.drawPortalLinkHandler(ta.target_data.guid, ta.target_data.lat/10000, ta.target_data.lng/10000) | |
+ ">"+ta.target_data.title+"</a></td>" | |
+ '<td>'+window.plugin.squadOP.actionList[ta.target_data.action]+'</td>' | |
+ '<td style="">'+ta.target_data.comment+'</td>' | |
+ '<td align=center style="">'+ta.date+'<br /><small>'+ta.target_data.p+'</small></td>' | |
+ '<td width=20 valign="middle" nowrap><select id="squadSel'+(rowIndex+1)+'">'+window.plugin.squadOP.drawTeamSelect()+'</select>' | |
+ '<button onclick="window.plugin.squadOP.saveSquadToIssue(this, '+ta.target_id+', '+(rowIndex+1)+')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">ok</button></td>' | |
//+ "<td style='text-align:center;width:10px;'><div style='padding-top:3px;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.setSquadTargetDone(this, "+ta.target_id+")'><img width='14' title='target completed' src="+acceptIcon+"></a></div></td>" | |
+ "<td style='text-align:center;width:20px;'><div style='padding-top:8px;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.delIssue(this, "+ta.target_id+")'><img width='14' src="+deleteIcon+"></a></div></td>" | |
+ '</tr>'; | |
//window.plugin.squadOP.setSquadToIssue | |
} | |
); | |
out+= "</table>"; | |
$('#issueOut').html(out); | |
} | |
window.plugin.squadOP.saveSquadToIssue = function(obj, tid, num) { | |
try { | |
var selVal = $("#squadSel"+num).val(); | |
if (selVal != "") { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'saveSquadToIssue', | |
target_id: tid, | |
squad_id: selVal, | |
callback: window.plugin.squadOP.saveSquadToIssueCallback | |
}); | |
$(obj).parent().parent().hide(); | |
} | |
} | |
catch (e) { | |
alert("saveSquadToIssue err:" + e); | |
} | |
} | |
window.plugin.squadOP.saveSquadToIssueCallback = function(sopData) {} | |
window.plugin.squadOP.openSquadDialogSquadId = 0; | |
window.plugin.squadOP.openSquadDialogNextTargets = new Array(); | |
window.plugin.squadOP.openSquadDialogPastTargets = new Array(); | |
window.plugin.squadOP.openSquadDialog = function(squad_id) { | |
var bike_icon = "data:image/png;base64,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"; | |
var car_icon = "data:image/png;base64,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"; | |
var walk_icon = "data:image/png;base64,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"; | |
window.plugin.squadOP.openSquadDialogSquadId = squad_id; | |
var sq = window.plugin.squadOP.getSquadById(squad_id); | |
member_out = ""; | |
if (sq.member.length > 0) { | |
member_out+= "<b>Squad-Member</b><br /><br />"; | |
$.each ( | |
sq.member, | |
function (rowIndex, m) { | |
member_out+= m.name+'<br />'; | |
} | |
); | |
member_out += "<br><br>"; | |
} | |
if (sq.push == 1) { | |
chat_out = "<b>Send a message:</b><br /><div class='ui-dialog-buttonset' style='text-align:left;margin-top:2px;'>"; | |
chat_out+= "<input type='text' id='chatMsg' style='margin-right:1px;widht:100%;' /><input id='chatBtn' type='button' value='send' onclick='window.plugin.squadOP.sendChatMsg()' /><br />"; | |
chat_out+= "</div>"; | |
} | |
else { | |
chat_out = "<b>Squad does not receive push-notifications</b><br /><br />"; | |
} | |
chat_out+= "<div id='sop_chat_out_"+squad_id+"' class='sop_chat_out'></div>"; | |
timeStr = sq.lastCall; | |
if (sq.outdated == 1) { | |
timeStr = sq.lastCall + " <span style='color:red;font-weight:bold;' title='"+sq.last+" last location update'>[Location outdated]</span>"; | |
} | |
else if (timeStr == 0) { | |
timeStr = "---"; | |
} | |
var trafficIcon = walk_icon; | |
if (sq.type == 2) { | |
trafficIcon = bike_icon; | |
} | |
else if (sq.type == 3) { | |
trafficIcon = car_icon; | |
} | |
var scurl = SOP_SERVER_URL.replace(/connect/, "") + "key/" + sq.sc; | |
var win = '<table style="width:100%">' | |
+ '<tr><td width="350">' | |
+ '<table style="width:100%">' | |
+ '<tr><td align=right>'+soplng.squadName+':</td><td><b id="squad-info-name">'+sq.name+'</b> <small>[<a href="'+scurl+'" onclick="alert(\''+scurl+'\'); return false;">'+sq.sc+'</a>]</small></td></tr>'; | |
if (sq.operator_id) { | |
win += '<tr><td align=right>'+soplng.squadOperator+':</td><td><a target="_new" href="https://plus.google.com/u/0/'+sq.operator_id+'">'+sq.operator+'</a></td></tr>'; | |
} | |
win += '<tr><td align=right>'+soplng.lastPos+':</td><td id="squad-info-pos">'+window.plugin.roundPrecision(sq.lat,6)+','+window.plugin.roundPrecision(sq.lon,6)+'</td></tr>' | |
+ '<tr><td align=right>'+soplng.lastConnection+':</td><td id="squad-info-last">'+timeStr+'</td></tr>' | |
+ '<tr><td align=right>Status:</td><td id="squad-info-status">'+window.plugin.squadOP.statusList[sq.status]+'</td></tr>' | |
+ '</table>' | |
+ '</td>' | |
+ '<td width=80><img width="32" src="'+trafficIcon+'"></td>' | |
+ '<td>' | |
+ member_out | |
+ chat_out | |
+ '</td></tr>' | |
+ '</table>' | |
+ ''; | |
if (sq.target && false) { | |
win+= '<br/><b>current target</b><br />' | |
+ '<table>' | |
+ "<tr><td>Portal:</td><td><a href='javascript:void(0)' "+window.plugin.drawPortalLinkHandler(sq.target.guid, sq.target.lat, sq.target.lng)+">"+sq.target.title+"</a></td></tr>" | |
+ '<tr><td>Location:</td><td>'+window.plugin.roundPrecision(sq.target.lat,4)+','+window.plugin.roundPrecision(sq.target.lng,4)+'</td></tr>' | |
+ '<tr><td>Action:</td><td>'+window.plugin.squadOP.actionList[sq.target.action]+'</td></tr>' | |
+ (sq.target.comment != "" ? '<tr><td>'+soplng.comment+':</td><td>'+sq.target.comment+'</td></tr>' : '' ) | |
+ '</table>'; | |
} | |
if (sq.targetAnzAll > 0 || sq.nmc > 0) { //sq.targetAnzAll > 1 | |
win+= '<div id="sq_dialog_next_targets_'+squad_id+'">loading..</div>'; | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getSquadTargets', | |
squad_id: squad_id, | |
callback: window.plugin.squadOP.getSquadTargetsCallback | |
}); | |
} | |
else { | |
win+= '<div id="sq_dialog_next_targets_'+squad_id+'"><div style="text-align:right;"><a href="javascript:void(0)" onclick="window.plugin.squadOP.openSquadDialogLoadSquads('+squad_id+')">click here to load chat messages</a></div></div>'; | |
} | |
dialog({ | |
text: win, | |
title: 'Squad: '+sq.name+'', | |
id: 'squad-info-dialog', | |
position: { my: "center-2 top+2", at: "center-20 top+20", of: $('#map') }, | |
width: 700, | |
beforeClose: function( event, ui ) { | |
window.plugin.squadOP.openSquadDialogSquadId = 0; | |
}, | |
buttons: [ | |
{ | |
text: soplng.directionsOpt, | |
click: function() { | |
window.plugin.squadOP.getSquadDirectionsForAllTargets(2); | |
} | |
}, | |
{ | |
text: soplng.directions, | |
click: function() { | |
window.plugin.squadOP.getSquadDirectionsForAllTargets(1); | |
} | |
}, | |
{ | |
text: soplng.refresh, | |
click: function() { | |
window.plugin.squadOP.openSquadDialogLoadSquads(); | |
} | |
}, | |
{ | |
text: soplng.close, | |
click: function() { | |
$( this ).dialog( "close" ); | |
} | |
} | |
] | |
}); | |
} | |
window.plugin.squadOP.openSquadDialogLoadSquads = function(squad_id) { | |
$('#sq_dialog_next_targets_'+squad_id).html("loading.."); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'getSquadTargets', | |
squad_id: squad_id, | |
callback: window.plugin.squadOP.getSquadTargetsCallback | |
}); | |
} | |
if (!String.prototype.trim) { | |
(function() { | |
// Make sure we trim BOM and NBSP | |
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; | |
String.prototype.trim = function() { | |
return this.replace(rtrim, ''); | |
}; | |
})(); | |
} | |
window.plugin.squadOP.sendChatMsg = function () { | |
var msg = $('#chatMsg').val().trim(); | |
if (msg == "" || msg.lenght < 3) { | |
alert("Message to short!"); | |
return; | |
} | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'chatMsg', | |
msg: encodeURIComponent(msg), | |
squad_id: window.plugin.squadOP.openSquadDialogSquadId, | |
callback: window.plugin.squadOP.sendChatMsgCallback | |
}); | |
$('#chatMsg').val(""); | |
} | |
window.plugin.squadOP.sendChatMsgCallback = function (sopData) { | |
var jdata = $.parseJSON(sopData); | |
if (jdata.ok == 1) { | |
var outMsg = window.plugin.squadOP.formatChatMsg(jdata.m, jdata.i*1000, 0); | |
$('#sop_chat_out_'+jdata.sq+' table').prepend(outMsg) | |
$('#chatMsg').val(""); | |
} | |
else { | |
alert('Message not sent!'); | |
} | |
} | |
window.plugin.squadOP.getSquadDirectionsForAllTargets = function(type) { | |
var routeType = "route"; | |
var routeColor = "#FF0000"; | |
if (type == 2) { | |
routeType = "optimizedroute"; | |
routeColor = "#0AFFE1"; | |
} | |
try { | |
var bike_icon = "data:image/png;base64,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"; | |
var car_icon = "data:image/png;base64,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"; | |
var walk_icon = "data:image/png;base64,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"; | |
if (window.plugin.squadOP.openSquadDialogNextTargets.length > 0) { | |
window.plugin.squadOP.showLoader(true); | |
var squad_data = window.plugin.squadOP.getSquadById(window.plugin.squadOP.openSquadDialogSquadId); | |
var locationsArr = new Array(); | |
var ajaxData = { | |
routeType: transportType, | |
fullShape: true, | |
locale: window.plugin.squadOP.locale, | |
from: squad_data.lat+','+squad_data.lon | |
}; | |
locationsArr.push({ | |
"latLng":{ | |
"lat": squad_data.lat, | |
"lng": squad_data.lon, | |
} | |
}); | |
$.each ( | |
window.plugin.squadOP.openSquadDialogNextTargets, | |
function (rowIndex, ta) { | |
// ta.target_data.lat/10000, ta.target_data.lng/10000 | |
// ta.target_data.title | |
if (window.plugin.squadOP.highlightPortals[ta.guid] == undefined) { | |
window.plugin.squadOP.highlightPortals[ta.guid] = {}; | |
} | |
window.plugin.squadOP.highlightPortals[ta.guid]["1"] = true; | |
locationsArr.push({ | |
"latLng":{ | |
"lat": ta.target_data.lat/10000, | |
"lng": ta.target_data.lng/10000, | |
} | |
}); | |
} | |
); | |
var transportType = "pedestrian"; | |
var trafficIcon = walk_icon; | |
if (squad_data.type == 2) { | |
transportType = "bicycle"; | |
trafficIcon = bike_icon; | |
} | |
else if (squad_data.type == 3) { | |
transportType = "fastest"; | |
trafficIcon = car_icon; | |
} | |
var ajaxData = { | |
"locations":locationsArr, | |
"options":{ | |
routeType: transportType, | |
fullShape: "true" | |
} | |
} | |
//alert(JSON.stringify(ajaxData)); | |
// route | |
window.plugin.squadOP.xhrSquadDirections = $.ajax({ | |
dataType: 'json', | |
url: 'https://open.mapquestapi.com/directions/v1/'+routeType+'?key=Fmjtd|luur2q62lu%2Crw%3Do5-9a2l1r&format=json&json='+encodeURIComponent(JSON.stringify(ajaxData)), | |
type: 'POST', | |
crossDomain:true, | |
success: function(sopData) { | |
window.plugin.squadOP.mapquest = sopData; | |
plugin.squadOP.drawnDirections.clearLayers(); | |
try { | |
if (sopData.info.statuscode == 0) { | |
var out = ""; | |
var from_address = "---"; | |
var to_address = "---"; | |
var route_maneuvers = false; | |
if (sopData.route.locations[0].geocodeQuality == "ADDRESS") { | |
from_address = sopData.route.locations[0].street + ", " + sopData.route.locations[0].postalCode + " " + sopData.route.locations[0].adminArea5; | |
} | |
if (sopData.route.locations[sopData.route.locations.length-1].geocodeQuality == "ADDRESS") { | |
to_address = sopData.route.locations[sopData.route.locations.length-1].street + ", " + sopData.route.locations[sopData.route.locations.length-1].postalCode + " " + sopData.route.locations[sopData.route.locations.length-1].adminArea5; | |
} | |
if (sopData.route.legs[0].maneuvers != undefined && sopData.route.legs[0].maneuvers.length > 0) { | |
route_maneuvers = ""; | |
shape = []; | |
shape.push(L.latLng( sopData.route.locations[0].latLng.lat, sopData.route.locations[0].latLng.lng )); | |
$.each(sopData.route.legs, function( index, leg ) { | |
$.each(leg.maneuvers, function( index, ma ) { | |
shape.push(L.latLng( ma.startPoint.lat, ma.startPoint.lng)); | |
}); | |
}); | |
route_maneuvers+= "<div id='sop_directions_maneuvers'><div style='margin-bottom:3px;margin-top:12px;text-align:center;' class='ui-dialog-title'>Directions</div><table style='margin-bottom:8px;width:100%;'>"; | |
route_maneuvers+= "<tr><td align=right>from:</td><td>"+from_address+"</td><td rowspan=4><img width='32' src='"+trafficIcon+"' /></td></tr>"; | |
route_maneuvers+= "<tr><td align=right>to:</td><td>"+to_address+"</td></tr>"; | |
route_maneuvers+= "<tr><td align=right>distance:</td><td>"+window.plugin.roundPrecision(sopData.route.distance,2)+" km</td></tr>"; | |
route_maneuvers+= "<tr><td align=right>ETA:</td><td>"+sopData.route.formattedTime+"</td></tr>"; | |
route_maneuvers+= "</table>"; | |
/* | |
route_maneuvers+= "<table>"; | |
$.each(sopData.route.legs[0].maneuvers, function( index, v ) { | |
route_maneuvers += "<tr>"; | |
route_maneuvers += "<td><img src='"+v.iconUrl+"' /></td>"; | |
route_maneuvers += "<td><small>"+v.narrative+"</small></td>"; | |
route_maneuvers += "<td align=right>"+window.plugin.roundPrecision(v.distance, 2)+"km</td>"; | |
route_maneuvers += "<td>"+v.formattedTime+"</td>"; | |
route_maneuvers += "</tr>"; | |
}); | |
route_maneuvers += "</table>"; | |
*/ | |
route_maneuvers+= "</div>"; | |
} | |
if (route_maneuvers) { | |
$('#sop_directions_maneuvers').remove(); | |
$('#sq_dialog_next_targets_'+window.plugin.squadOP.openSquadDialogSquadId).before(route_maneuvers); | |
} | |
//$('#sop_directions tr:last').after(out); | |
var routeShape = L.polyline(shape, { color: routeColor, weight: 8}); | |
plugin.squadOP.drawnDirections.addLayer(routeShape); | |
//$('#sop_squad_directions_loader').hide(); | |
} | |
else { | |
//$('#sop_squad_directions_loader').html("directions error"); | |
} | |
} | |
catch (e) { | |
console.debug(e); | |
} | |
window.plugin.squadOP.showLoader(false); | |
} | |
}); | |
} | |
} | |
catch (e) { | |
window.plugin.squadOP.showLoader(false); | |
} | |
} | |
window.plugin.squadOP.getSquadTargetsCallback = function(sopData) { | |
var order_down = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAI2SURBVHjazFe9agJBEF4vGmJE0qgklXBWViKBPIEgCHYBX8OXOLC11GfQYGHALmAjBtIqCII2JgRBgviHxs3MsTlEd73dO6IZ+ERudvf7uJudHw85tFvAI+ABEAHMAZSz7gJwJen/ArwBKoAP5vcD7nY3eAEGYMUO/AusGEcQoDMRFvnzHxLv44WJsMw4IfkvjN1vvjqDAOS81VjAXZLTG3I+aizaz2X3XnbVuKZpGtF1nQQCAfP/vm23W7Jer4nP5+P6F4sF6fV65jqB3eDPE+8b+f1+Wq/X6Xw+pzzD5/1+39bfbrfNswRx0EABVZ4zHo+7Jv/1JxIJkYCaUAC8VjoYDFyT4xl4lkBAVSgAkcvlXJGj4RlHruJxAYhms+mYHPfa5AJ7Aclkkk6nU2XyzWZj7pURULPLWoZhKAdkqVSSyYamgIbdwlAoRCeTiTQ5rg2HwzICnoR5YB/5fF46IHGtZD1o2MbA7rXsdDq25LjmyLWTzwM8pNNpOpvNhOSQcmkqlVKpiFUlAYhyuSwMyEqlolqS1QXEYjG6XC4PyDHwotGosgBNtX7C6yfFYvGg6hUKBTIcDh3V5JpqNxMMBuloNLICstVqmc8cdEVyeYCHbDZrvvZut0szmYzTtkw+D4gSVCQScdMXNrxsaHBk4/HYbUv2qbGJ5Vz2eva2/F8MJoSNSS8nJH9m46A1pepMxKmGU4vcw8jfMaHtjef3rG+/BiwB35wg8kj6P1nA7Y7npv0IMAC0nQaWZ83nPwAAAABJRU5ErkJggg=="; | |
var order_up = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJnSURBVHjazFcxaypBEB43+nw+kGehEishioWNSOCBvSAIdgH/g5VWNpZa+k+SkCaQyqCNILxWRFGsNKSRIOqJPjc7lz25eHe6d6K+D75DnNn95taZdcYGWlwz3jH+YfQzzhmpjt8V409B+wfjX8Z7xjdudzEG1AvsjBXGJd/wFFxyDTfjDQ9iK/58QuFdvvIgtqicUVxhRf2bLy8QAGpeE55wP+D8QM07wrP9UrglvNQswe/3g9frPSaA34TXqWmk02mo1+vQ6/Ugk8lYDeAXPh7MJpDb7abNZpPO53OKGI1G8ncWEvGJWAk7l8tBLBYDl+vrHgkEAlAqlaxs9c/0CQSDQTqZTOguJEmioVDI7Ak8mD6BarUKHo9H8/1ms4FisWgpEYRPIJlMUiakeXvMhX6/T2ezGU2lUqZOAAN4EnF2OBy03W4biisJiT7oayaAFxHnfD5/UFwB+goG8Aj8sdfR5/NpEs9IHIG+7IISCeCFGDQT31Aul78l3mKxgPF4LJefUopqOJ1OKBQKIvknHUzCeDxO1+u10Jur7dPpVF4rkgN7A2g0GqbFFTuuPSqAbDZrWVwB7mEpACyl4XB4lDgC99hTlvJNeKWXHdFoFNi1ezDhDtnxLzscDhtmoZ23zhp0u11otVry/71VcbTXajVgp2Ckb7Mb9QO4OJFIQCQS0d0c7/7VagXseIEQomtnVzMMBgP5s1E/YOdDgy5wYafTOWVL9k74xHIptC7elv8XgwnwMen1jOLPvAK3U+oND+Jcw+lW3MbFx1h5O+P5LfbtvHWWlAZyt44F7e884dTjuYxPAQYASCbcQWMw2icAAAAASUVORK5CYII="; | |
var top_icon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAAEgAAABIAEbJaz4AAAAJdnBBZwAAACAAAAAgAIf6nJ0AAAH2SURBVEjHrVU9S8NQFH1DFQuNSnXooKIO/gA/QC3Bv+AiOCiOLkVBBzcn+wNEEB2k0F2pQrE42E0cXETBQZw6lIJT/SgF6/G8JE3z7EvE6L0N9L57z0nefSe5QjQtIVIiKwriRBy7ntPGGVYmLExUjNrgiEiLusAvvE6EQXjUhud/BW56kRSWpUPBpaftvddDE9RlL1Kh4dJTgp0PKOhHXzBBRvBgfNMrKOEGS0EEJ4I/bWoMl3jHEy/w35gfQUFQHm3LndhGzYVLq3GlU0eQ0xDM4YEQLxxWfAGzneD4G0EcR/jUwmX8yWw8iGAZFU85UMU6varQVVjlQ5BU7gbkMIhZ+gAOvz3NhEKQawamB17CPHpxgAZesYMeRiUPfVIhKHgJZPoFuzCwiLJLV2ZkcPXDiU29DkwrfYVJjOBc2Yy0c66O48yKTb0OkrjDGrqwhbc2uLRnrDK7wSc09TpIsGnTuFVa2aB741tWDLGt2lOIYV9TblO2nqbBqpiewFRk88ytRKz1CDZxr2wmGUwg4adsmVdxw05b7fxUsA6usaB981oHG6ADWzZ+b38v9vAYpIMbr0h9fIaHreog0wy6nab95B2sdKPsP3xU//xZ//NgERxQxVDwPIeiM2GNUMM1Yt/fmbDWeM/wUAuUVmug6+KsO95pXz3yglQA8uTuAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTAxLTAzVDA3OjIyOjU4KzAwOjAwghfXwgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wMS0wM1QwNzoyMjo1OCswMDowMPNKb34AAAAASUVORK5CYII="; | |
result = $.parseJSON(sopData); | |
var sq = window.plugin.squadOP.getSquadById(result.squad_id); | |
var nameStr = sq.name; | |
if (sq.outsync == 1) { | |
nameStr += " <span style='color:red;' title='last time in sync: "+sq.lastSync+"'>[out of sync]</span>"; | |
} | |
$('#squad-info-name').html(nameStr); | |
$('#squad-info-pos').html(window.plugin.roundPrecision(sq.lat,6)+','+window.plugin.roundPrecision(sq.lon,6)); | |
//$('#squad-info-pos-update').html(sq.last); | |
timeStr = sq.lastCall; | |
if (sq.outdated == 1) { | |
timeStr = sq.lastCall + " <span style='color:red;font-weight:bold;' title='"+sq.last+" last location update'>[Location outdated]</span>"; | |
} | |
$('#squad-info-last').html(timeStr); | |
$('#squad-info-status').html(window.plugin.squadOP.statusList[sq.status]); | |
window.plugin.squadOP.openSquadDialogNextTargets = result.next; | |
window.plugin.squadOP.openSquadDialogPastTargets = result.last; | |
out = ""; | |
out+= "<br /><b>"+soplng.curTargets+":</b><br /><table style='width:100%;'>"; | |
show = false; | |
$.each ( | |
result.next, | |
function (rowIndex, ta) { | |
if (true) { // ta.target_id != sq.target.target_id | |
var distance = roundPrecision(window.plugin.squadOP.getDistanceFromLatLonInKm(sq.lat, sq.lon, (ta.target_data.lat / 10000), (ta.target_data.lng / 10000) ),2); | |
if (distance > 999) { | |
distance = ">999"; | |
} | |
out+= '<tr class="targetRow" style="border-bottom:1px solid black;background-color:'+defBgColor2+';">' | |
+ '<td align=right style="padding: 0 2px;">'+ (rowIndex+1) +'.</td>' | |
+ "<td style='vertical-align: middle;'><a href='javascript:void(0)' " | |
+ window.plugin.drawPortalLinkHandler(ta.target_data.guid, ta.target_data.lat/10000, ta.target_data.lng/10000) | |
+ "><b>"+ta.target_data.title+"</b></a></td>" | |
+ '<td align=center>'+window.plugin.squadOP.actionList[ta.target_data.action]+'</td>' | |
+ '<td>'+(ta.target_data.comment!=""?ta.target_data.comment:"---")+'</td>' | |
+ '<td style="text-align:center;">'+distance+'km</td>' | |
+ '<td align=center>'+ta.date+'<br/><small>'+ta.target_data.p+'</small></td>' | |
+ "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.setSquadTargetDone(this, "+ta.target_id+", "+sq.dbid+")'><img width='16' src="+acceptIcon+"></a></div></td>" | |
+ "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.setSquadTargetToIssue(this, "+ta.target_id+", "+sq.dbid+")'><img width='16' src="+resetIcon+"></a></div></td>" | |
+ "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.delSquadTarget(this, "+ta.target_id+", "+sq.dbid+")'><img width='16' src="+deleteIcon+"></a></div></td>" | |
; | |
if (rowIndex < (result.next.length-1)) { | |
out+= "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.moveSquadTargetUp(this, "+ta.target_id+","+sq.dbid+")'><img width='16' src="+order_down+"></a></div></td>"; | |
} | |
else { | |
out+= "<td></td>"; | |
} | |
if (rowIndex > 0) { | |
out+= "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.moveSquadTargetDown(this, "+ta.target_id+","+sq.dbid+")'><img width='16' src="+order_up+"></a></div></td>"; | |
out+= "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.moveSquadTargetTop(this, "+ta.target_id+","+sq.dbid+")'><img width='16' src="+top_icon+"></a></div></td>"; | |
} | |
else { | |
out+= "<td></td>"; | |
} | |
out+= "</tr>"; | |
show = true; | |
} | |
} | |
); | |
out+= "</table>"; | |
if (result.next.length > 1) { | |
out += "<div style='padding: 3px 0'><button href='javascript:void(0)' onclick='window.plugin.squadOP.deleteAllSquadTargets(this, "+result.squad_id+")'>delete all targets</button></div>"; | |
} | |
if (show == false) { | |
out = ""; | |
} | |
show = false; | |
out2 = ""; | |
out2+= "<br /><b>"+soplng.pastTargets+":</b><br /><table style='width:100%;'>"; | |
out3 = ""; | |
$.each ( | |
result.last, | |
function (rowIndex, ta) { | |
if (sq && ta.target_id != sq.target.target_id) { | |
out3 += '<tr class="targetRow" style="border-bottom:1px solid black;background-color:'+(ta.status==1?'#016501':defBgColor2)+';">' | |
+ '<td align=right>'+(rowIndex+1)+'.</td>' | |
+ "<td><a href='javascript:void(0)' " | |
+ window.plugin.drawPortalLinkHandler(ta.target_data.guid, ta.target_data.lat/10000, ta.target_data.lng/10000) | |
+ ">"+ta.target_data.title+"</a></td>" | |
+ '<td align=center>'+window.plugin.squadOP.actionList[ta.target_data.action]+'</td>' | |
+ '<td>'+(ta.target_data.comment!=""?ta.target_data.comment:"--")+'</td>' | |
+ '<td align=center>'+ta.date+'<br/><small>'+ta.target_data.p+'</small></td>' | |
+ "<td style='text-align:center;color:#"+(ta.status==1?'03FE03':'CB600C')+"'>"+(ta.status==1?'done':'canceled')+"</td>" | |
+ "<td style='width:24px;padding:0;'><div style='padding-top:3px;text-align:center;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.setSquadTargetToIssue(this, "+ta.target_id+", "+sq.dbid+")'><img width='16' title='back to issues' src="+resetIcon+"></a></div></td>" | |
+ '</tr>'; | |
show = true; | |
} | |
} | |
); | |
out2+= out3 + "</table>"; | |
if (show == false) { | |
out2 = ""; | |
} | |
$('#sq_dialog_next_targets_'+result.squad_id).html(out+out2); | |
if (result.chat != undefined) { | |
var chat_out = "<table style='width:100%;'>"; | |
$.each( result.chat, function( key, chat ) { | |
var i = parseInt(chat.i)*1000; | |
var m = chat.m; | |
if (!! chat) { | |
chat_out += window.plugin.squadOP.formatChatMsg(m, i, chat.d); | |
} | |
}); | |
chat_out += "</table>"; | |
$('#sop_chat_out_'+result.squad_id).show(); | |
$('#sop_chat_out_'+result.squad_id).html(chat_out); | |
} | |
} | |
window.plugin.squadOP.formatChatMsg = function(m, i, d) { | |
var timeConverter = function (UNIX_timestamp){ | |
var a = new Date(UNIX_timestamp); | |
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; | |
var year = a.getFullYear(); | |
var month = a.getMonth()+1; | |
var date = a.getDate(); | |
var hour = a.getHours(); | |
var min = a.getMinutes(); | |
var sec = a.getSeconds(); | |
hour = hour < 10 ? "0"+hour : hour; | |
min = min < 10 ? "0"+min : min; | |
var time = date + '/' + month + '/' + year + ' ' + hour + ':' + min; | |
var ret = '<span title="'+time+'"><small>' + hour + ':' + min + '</small></span>'; | |
return ret; | |
} | |
var ret = ""; | |
if (d != 1) { | |
ret += "<tr>"; | |
} | |
else { | |
ret += "<tr style='background-color:"+defColor3+";padding:1px;'>"; | |
} | |
ret += "<td width=20>" + timeConverter(i) + "</td><td>" + m + "</td></tr>"; | |
return ret; | |
} | |
window.plugin.squadOP.getSquadById = function(squad_id) { | |
var jdata = plugin.squadOP.JSONdata; | |
var ret = false; | |
$.each ( | |
jdata.squads, | |
function (rowIndex, sq) { | |
if (sq.dbid == squad_id) { | |
ret = sq; | |
} | |
} | |
); | |
return ret; | |
} | |
window.plugin.squadOP.drawActionsOption = function() { | |
out = ""; | |
$.each ( | |
window.plugin.squadOP.actionList, | |
function (rowIndex, txt) { | |
out+= '<option value="'+rowIndex+'">'+txt+'</option>'; | |
} | |
); | |
return out; | |
} | |
window.plugin.squadOP.drawIssueOption = function() { | |
out = ""; | |
$.each ( | |
window.plugin.squadOP.issueList, | |
function (rowIndex, txt) { | |
out+= '<option value="'+rowIndex+'">'+txt+'</option>'; | |
} | |
); | |
return out; | |
} | |
window.plugin.squadOP.keySafe = {}; | |
window.plugin.squadOP.drawKeyInput = function() { | |
var timeConverter = function (UNIX_timestamp){ | |
var a = new Date(UNIX_timestamp); | |
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; | |
var year = a.getFullYear(); | |
var month = a.getMonth()+1; | |
var date = a.getDate(); | |
var hour = a.getHours(); | |
var min = a.getMinutes(); | |
var sec = a.getSeconds(); | |
hour = hour < 10 ? "0"+hour : hour; | |
min = min < 10 ? "0"+min : min; | |
var time = date + '/' + month + '/' + year + ' ' + hour + ':' + min; | |
return time; | |
} | |
var deleteIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMLSURBVHjaxFdNSBtBFH47m2hSkILYoFA8lILoSRFEYgrVeKrSXjzVHIrnFg96qK1QvGgPBoQcBU9681LQnoz2kBQpFD0pQikeCpUggpcmGtf0vc3MutnN7E+ryYMPlp3Z+d68ee97O8pyUxNYrBUxhuhDRBB/ECWwm4oIeRw/R3xHrCNO+HgY0RYwfUDPc4hpRAPcvr1CJBGLiI+IB4jfARP5J8QzuFujjb1DRBHPEXnGB+ZqQG62p4i39MD4mU9D7Y04WxlPuIY6OECcY4xnu9QeqSq8nJ2Fx6rqeWWam1ha0r91sV7GS01KHltdhfDkJMR2djw5QXNobmhiAp5sbMBDxpym32e8TqXkwaEhUBobIdDd7eqEIKe5pYsLUNvbIb656RSJe0wiItA/MwPB4WFQwuEboXBwwkpeyuVAiUQgODAA0WRS5kBBGp9vCwugHRzY5a2jA6JraxVOyMgpclf7+7A7NSWj0aQO/NA0yGD4aQFh+uKnpxAcHDQiYSPHcYN8bw8yOJfWklnAKUP0DzmZ2tlZXrylRT8WcRziaAzy5mZj57QBJ3IhRODmBO2imE4b5OacqAg7keO4Tu6yc7MDqhcnvo6Pg3Z4aBszyLlzfsiFAyEvE0UkKnIin785838gR1OkOuBm+s7Pzso7xzMvvyz5XUauA451TjsXYRfklBM9PRDb3vYj2wXmm9xSajad6Oqy6YSDaex/yOnMbTqBkQnG4557B/NNzsMuEk4kZkVCeuwdjg44nbk52w2dwLlChLz0Dlcd6McGYpBbwm4tNUMnjo6q9o4+bGy+dYAaSDGbrSg1pzqvqhN4bEWsil1sbL51gBZMj4yAdnzsWWTMTlDkiltbkEkk4Kf8G10HzmWjv66vITs6CoWVFc8KJ5zIp1Ju5GQ5BW9Gr/EhBfWxN4xfly7rQE6c64zf1Rbr4ABxnggdoLvalxqSf0Z8EGUY5hdFuqvN3/FxXHKOF4gr8UvWRrdUuigi3vOEpNtSL/23U6lQ16LGUa2OPY7n6D/Xcj3X7a8AAwAd5K3Nw/+quwAAAABJRU5ErkJggg=="; | |
if ($('#sop_key')) { | |
server_name = SOP_SERVER_URL; | |
server_name = server_name.replace(/https:\/\//, "").replace(/http:\/\//, "").replace(/\/connect/, ""); | |
out = "<div style='width:100%;border:1px solid "+defColor4+";margin-bottom:3px;'><h4 style='text-align:center;background-color:"+defBgColor2+";margin:0;'>Squad OP</h4></div>" | |
+ "<div style='text-align:center;margin-bottom:2px;'>Please enter your OP-Key for <i>" + server_name + "</i>:</div>" | |
+ "<input type='text' style='width:100%;' id='sop_key'>" | |
+ "<div class='ui-dialog-buttonset' style='text-align:center;'><button style='width:100%;margin: 3px 0 0 0' onclick='window.plugin.squadOP.setOpKey()' class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only'>ok</button></div>"; | |
var keySafe = window.plugin.squadOP.keySafe; | |
if (Object.keys(keySafe).length > 0) { | |
out += "<div style='margin-top:23px;'><div style='width:100%;border:1px solid "+defColor4+";margin-bottom:3px;'><h4 style='text-align:center;background-color:"+defBgColor2+";margin:0;'>OP History</h4></div><div style='max-height:250px;overflow:auto;'><table width='100%'>"; | |
var keySafeArr = new Array(); | |
$.each( keySafe, function( key, op ) { | |
op.op_id = key; | |
keySafeArr.push(op); | |
}); | |
function SortByLast(a, b){ | |
var aName = a.last; | |
var bName = b.last; | |
return ((aName > bName) ? -1 : ((aName < bName) ? 1 : 0)); | |
} | |
keySafeArr.sort(SortByLast); | |
$.each( keySafeArr, function( key, op ) { | |
var op_server_str = op.server.replace(/https:\/\//, "").replace(/http:\/\//, "").replace(/\/connect/, ""); | |
out += "<tr><td><a href='javascript:void(0)' onclick='window.plugin.squadOP.setKeyFromHistory(\""+op.op_id+"\")' style='text-decoration:underline;'>" + op.name + "</a></td>"; | |
out += "<td>" + op_server_str + "</td>"; | |
out += "<td align='right'>" + timeConverter(op.last) + "</td>"; | |
out += "<td width='14px;'><a href='javascript:void(0)' onclick='window.plugin.squadOP.deleteKeyFromHistory(\""+op.op_id+"\")'><img src='" + deleteIcon + "' width='14px;'></a></td>"; | |
out += "</tr>"; | |
}); | |
out += "</table></div></div>"; | |
} | |
$('#sop_out').html(out); | |
} | |
} | |
window.plugin.squadOP.setKeyFromHistory = function(key) { | |
var keySafe = window.plugin.squadOP.keySafe; | |
if (keySafe[key]) { | |
$('#sop_out .ui-dialog-buttonset').html("<div style='width:100%;text-align:center;'>please wait <a href='javascript:void(0)' onclick='window.plugin.squadOP.drawKeyInput()'>[retry]</a></div>"); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'setOpKeyHistory', | |
op_key: keySafe[key].key, | |
op_server: keySafe[key].server, | |
op_id: key, | |
callback: window.plugin.squadOP.setOpKeyCallback | |
}); | |
} | |
} | |
window.plugin.squadOP.deleteKeyFromHistory = function(key) { | |
var keySafe = window.plugin.squadOP.keySafe; | |
if (keySafe[key]) { | |
$('#sop_out .ui-dialog-buttonset').html("<div style='width:100%;text-align:center;'>please wait <a href='javascript:void(0)' onclick='window.plugin.squadOP.drawKeyInput()'>[retry]</a></div>"); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'deleteOpKeyHistory', | |
op_id: key | |
}); | |
} | |
} | |
window.plugin.squadOP.setOpKey = function() { | |
$('#sop_out .ui-dialog-buttonset').html("<div style='width:100%;text-align:center;'>please wait <a href='javascript:void(0)' onclick='window.plugin.squadOP.drawKeyInput()'>[retry]</a></div>"); | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'setOpKey', | |
op_key: $('#sop_key').val(), | |
op_server: false, | |
callback: window.plugin.squadOP.setOpKeyCallback | |
}); | |
} | |
window.plugin.squadOP.setOpKeyCallback = function() { | |
} | |
window.plugin.squadOP.delOpKey = function() { | |
window.plugin.squadOP.saveData.push({ | |
requestType: 'delOpKey', | |
callback: window.plugin.squadOP.delOpKeyCallback | |
}); | |
} | |
window.plugin.squadOP.delOpKeyCallback = function() { | |
$("#sop_logs").html(""); | |
$("#squadSelect").html(""); | |
$('#dialog-sop-import-window').parent().hide(); | |
$('#dialog-sop-options-window').parent().hide(); | |
$('#dialog-assign-squad-portal').parent().hide(); | |
$('#dialog-issue-info-dialog').parent().hide(); | |
$('#dialog-squad-info-dialog').parent().hide(); | |
window.plugin.squadOP.JSONdata = undefined; | |
window.plugin.squadOP.drawKeyInput(); | |
} | |
window.plugin.roundPrecision = function(number, precision) | |
{ | |
precision = Math.abs(parseInt(precision)) || 0; | |
var coefficient = Math.pow(10, precision); | |
return Math.round(number*coefficient)/coefficient; | |
} | |
window.plugin.nl2br = function(str, is_xhtml) { | |
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>'; | |
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); | |
} | |
var setup = plugin.squadOP.setup; | |
// PLUGIN END ////////////////////////////////////////////////////////// | |
setup.info = plugin_info; //add the script info data to the function as a property | |
if(!window.bootPlugins) window.bootPlugins = []; | |
window.bootPlugins.push(setup); | |
// if IITC has already booted, immediately run the 'setup' function | |
if(window.iitcLoaded && typeof setup === 'function') setup(); | |
} // wrapper end | |
// inject code into site context | |
var script = document.createElement('script'); | |
var info = {}; | |
if (typeof GM_info !== 'undefined' && GM_info && GM_info.script) info.script = { version: GM_info.script.version, name: GM_info.script.name, description: GM_info.script.description }; | |
script.appendChild(document.createTextNode('('+ wrapper +')('+JSON.stringify(info)+');')); | |
(document.body || document.head || document.documentElement).appendChild(script); | |
// BACKEND COMMUNICATION ////////////////////////////////////////////////////////// | |
function loadSquads(){ | |
var auth_key = GM_getValue("sop_cur_key"); | |
if (auth_key == undefined || auth_key == "") { | |
unsafeWindow.sopHasNoKey = true; | |
return false; | |
} | |
if (unsafeWindow.sopIsSending) { | |
return false; | |
} | |
// clearInterval(asyncInt); | |
showLoader(true); | |
var postStr = "formData1=1&key="+auth_key+"&chksum="+contentMD5+"&last="+lastTimestamp+"&wp="+trackerWaypoints+"&s="+squadListSort+"&p="+encodeURIComponent(unsafeWindow.PLAYER.nickname)+"&f="+encodeURIComponent(sopSquadFilter); | |
if (isLoginRequest == true) { | |
postStr += "&isLogin=1&v="+sopScriptVersion; | |
} | |
GM_xmlhttpRequest ( { | |
method: "POST", | |
url: SOP_SERVER_URL, | |
data: postStr, | |
headers: { | |
"Content-Type": "application/x-www-form-urlencoded" | |
}, | |
onload: function (response) { | |
//asyncInt = window.setInterval(sendUpdates, asyncIntTime); | |
//console.debug(response); | |
showLoader(false); | |
if (response.responseText == "0") { | |
clearInterval(squadInt); | |
squadInt = false; | |
GM_setValue("sop_cur_key", false); | |
unsafeWindow.alert("Key is invalid!"); | |
unsafeWindow.plugin.squadOP.delOpKey(); | |
} | |
unsafeWindow.$('#sop_err').hide(); | |
try { | |
var jsonDataObject = $.parseJSON(response.responseText); | |
if (auth_key == undefined || auth_key == false || jsonDataObject == null) { | |
clearInterval(squadInt); | |
squadInt = false; | |
GM_setValue("sop_cur_key", false); | |
auth_key = ""; | |
unsafeWindow.alert("OP-Key is invalid!"); | |
unsafeWindow.plugin.squadOP.delOpKey(); | |
} | |
else { | |
if (squadInt == false) { | |
squadInt = window.setInterval(loadSquads, squadIntTime); | |
} | |
} | |
} | |
catch (e) { | |
if (response.responseText.indexOf("Server too busy") > -1) { | |
var error_wait_time = 20000 + (Math.floor(Math.random() * 15000) + 5000); | |
unsafeWindow.$('#sop_err').html("connection error, please wait " + Math.floor(error_wait_time/1000) + "sec - don't reload"); | |
unsafeWindow.$('#sop_err').show(); | |
if (squadInt) clearInterval(squadInt); | |
squadInt = window.setInterval(loadSquads, error_wait_time); | |
return; | |
} | |
//console.debug("Error Data:"+response.responseText); | |
} | |
if (unsafeWindow.$ != undefined && unsafeWindow.$('#sop_out') && jsonDataObject != undefined && jsonDataObject.squads) { | |
unsafeWindow.plugin.squadOP.JSONdata = cloneInto(jsonDataObject, unsafeWindow); | |
if (unsafeWindow.plugin.squadOP.drawnTracesSquad != undefined) { | |
unsafeWindow.plugin.squadOP.drawnTracesSquad.clearLayers(); | |
} | |
if (unsafeWindow.plugin.squadOP.drawSquadList()) { | |
contentMD5 = jsonDataObject.Md5 | |
} | |
if (jsonDataObject.logs != false) { | |
unsafeWindow.plugin.squadOP.drawLogsTimeoff = cloneInto(jsonDataObject.toff, unsafeWindow); | |
for (var i = 0, j = jsonDataObject.logs.length; i < j; i++) { | |
unsafeWindow.plugin.squadOP.drawLogsdata[unsafeWindow.plugin.squadOP.drawLogsdata.length] = cloneInto(jsonDataObject.logs[i], unsafeWindow); | |
} | |
lastTimestamp = jsonDataObject.timestamp; | |
} | |
if (unsafeWindow.plugin.squadOP.drawLogs()) { | |
} | |
if (isLoginRequest == true) { | |
//unsafeWindow.console.log("isLoginRequest"); | |
var keyMD5 = MD5(auth_key + SOP_SERVER_URL); | |
var keySafe = GM_getValue("sop_key_history", ""); | |
if (keySafe != "") { | |
keySafe = $.parseJSON(keySafe); | |
} | |
else { | |
keySafe = {}; | |
} | |
keySafe[keyMD5] = { | |
name: jsonDataObject.event_name, | |
key: auth_key, | |
server: SOP_SERVER_URL, | |
last: Math.floor(new Date().getTime()) | |
}; | |
unsafeWindow.plugin.squadOP.keySafe = cloneInto(keySafe, unsafeWindow); | |
GM_setValue("sop_key_history", JSON.stringify(keySafe)); | |
isLoginRequest = false; | |
} | |
} | |
// response.responseText | |
} | |
} ); | |
} | |
var currentSendData = false; | |
var isLoginRequest = true; | |
function sendUpdates(){ | |
try { | |
if (unsafeWindow.sopIsSending) { | |
return false; | |
} | |
if (unsafeWindow.sop_docked != squadDocked) { | |
GM_setValue("sop_squad_dock", unsafeWindow.sop_docked); | |
squadDocked = unsafeWindow.sop_docked; | |
} | |
if (unsafeWindow.portalKeysOfSquadsLoaded != portalKeysOfSquadsLoaded) { | |
GM_setValue("sop_squad_portal_keys_loaded", unsafeWindow.portalKeysOfSquadsLoaded); | |
portalKeysOfSquadsLoaded = unsafeWindow.portalKeysOfSquadsLoaded; | |
} | |
showHidePrivacy('#dialog-sop-main-window'); | |
//showHidePrivacy('#dialog-assign-squad-portal'); | |
} | |
catch(e) { | |
return false; | |
} | |
if (unsafeWindow.plugin.squadOP != undefined && unsafeWindow.plugin.squadOP.saveData.length > 0) { | |
var auth_key = GM_getValue("sop_cur_key"); | |
try { | |
showLoader(true); | |
unsafeWindow.sopIsSending = true; | |
currentSendData = unsafeWindow.plugin.squadOP.saveData.shift(); | |
sendData = {}; | |
switch(currentSendData.requestType) | |
{ | |
case 'REST': | |
GM_xmlhttpRequest ( { | |
method: "GET", | |
url: SOP_SERVER_URL+'?rest=true&key='+GM_getValue("sop_cur_key")+'&'+currentSendData.url, | |
onload: function (response) { | |
unsafeWindow.sopIsSending = false; | |
showLoader(false); | |
if (currentSendData.callback) { | |
currentSendData.callback(response.responseText); | |
} | |
} | |
} ); | |
return true; | |
break; | |
case 'saveKML': | |
sendData = { | |
requestType: currentSendData.requestType, | |
kml: currentSendData.kml, | |
loadSquads: false | |
}; | |
break; | |
case 'setOpKey': | |
isLoginRequest = true; | |
auth_key = currentSendData.op_key || ""; | |
if (auth_key.indexOf("@@") > -1) { | |
var st = auth_key.split("@@"); | |
auth_key = st[0]; | |
SOP_SERVER_URL = st[1] + "/connect"; | |
unsafeWindow.SOP_SERVER_URL = cloneInto(SOP_SERVER_URL, unsafeWindow); | |
} | |
GM_setValue("sop_cur_key", auth_key); | |
currentSendData.callback(); | |
unsafeWindow.sopIsSending = false; | |
loadSquads(); | |
break; | |
case 'setOpKeyHistory': | |
isLoginRequest = true; | |
auth_key = currentSendData.op_key; | |
GM_setValue("sop_cur_key", auth_key); | |
if (currentSendData.op_server != false) { | |
SOP_SERVER_URL = currentSendData.op_server; | |
unsafeWindow.SOP_SERVER_URL = cloneInto(SOP_SERVER_URL, unsafeWindow); | |
GM_setValue("SOP_SERVER_URL", SOP_SERVER_URL); | |
} | |
keySafe[currentSendData.op_id].last = new Date().getTime(); | |
unsafeWindow.plugin.squadOP.keySafe = cloneInto(keySafe, unsafeWindow); | |
GM_setValue("sop_key_history", JSON.stringify(keySafe)); | |
currentSendData.callback(); | |
unsafeWindow.sopIsSending = false; | |
loadSquads(); | |
break; | |
case 'deleteOpKeyHistory': | |
delete keySafe[currentSendData.op_id]; | |
unsafeWindow.plugin.squadOP.keySafe = cloneInto(keySafe, unsafeWindow); | |
GM_setValue("sop_key_history", JSON.stringify(keySafe)); | |
unsafeWindow.plugin.squadOP.drawKeyInput(); | |
break; | |
case 'delOpKey': | |
contentMD5 = ""; | |
GM_setValue("sop_cur_key", ""); | |
GM_setValue("sop_squad_filter", ""); | |
unsafeWindow.sopSquadFilter = ""; | |
sopSquadFilter = ""; | |
lastTimestamp = 0; | |
unsafeWindow.plugin.squadOP.drawLogsdata = cloneInto(new Array(), unsafeWindow); | |
currentSendData.callback(); | |
unsafeWindow.sopIsSending = false; | |
if (portalKeysOfSquadsLoaded) { | |
} | |
break; | |
case 'saveOptions': | |
var err = ""; | |
if (currentSendData.squadIntTime >= 10000 && currentSendData.squadIntTime <= 30000) { | |
GM_setValue("sop_server_update_interval", currentSendData.squadIntTime); | |
squadIntTime = currentSendData.squadIntTime; | |
unsafeWindow.squadIntTime = currentSendData.squadIntTime; | |
} | |
else { | |
err += languageFile.errUpdateInterval + "<br />"; | |
} | |
if (currentSendData.asyncIntTime >= 10 && currentSendData.asyncIntTime <= 1000) { | |
GM_setValue("sop_async_interval", currentSendData.asyncIntTime); | |
asyncIntTime = currentSendData.asyncIntTime; | |
unsafeWindow.asyncIntTime = currentSendData.asyncIntTime; | |
} | |
else { | |
if (err != "") err += "<br />"; | |
err += languageFile.errTransferInterval + "<br />"; | |
} | |
if (currentSendData.trackerWaypoints >= 0 && currentSendData.trackerWaypoints <= 1000) { | |
GM_setValue("sop_tracker_waypoints", currentSendData.trackerWaypoints); | |
trackerWaypoints = currentSendData.trackerWaypoints; | |
unsafeWindow.trackerWaypoints = trackerWaypoints; | |
} | |
else { | |
if (err != "") err += "<br />"; | |
err += languageFile.errWaypoints + "<br />"; | |
} | |
GM_setValue("sop_squad_list_sort", currentSendData.squadListSort); | |
GM_setValue("sop_map_marker_type", currentSendData.mapMarkerType); | |
GM_setValue("sop_selected_theme", currentSendData.sopSelectedTheme); | |
GM_setValue("sop_squad_filter", currentSendData.sopSquadFilter); | |
squadListSort = currentSendData.squadListSort; | |
unsafeWindow.squadListSort = squadListSort; | |
mapMarkerType = currentSendData.mapMarkerType; | |
unsafeWindow.mapMarkerType = mapMarkerType; | |
if (currentSendData.sopSelectedTheme != sopSelectedTheme) { | |
unsafeWindow.alert(languageFile.errReloadWindow); | |
} | |
sopSelectedTheme = currentSendData.sopSelectedTheme; | |
unsafeWindow.sopSelectedTheme = sopSelectedTheme; | |
sopSquadFilter = currentSendData.sopSquadFilter; | |
unsafeWindow.sopSquadFilter = sopSquadFilter; | |
clearInterval(squadInt); | |
squadInt = window.setInterval(loadSquads, squadIntTime); | |
clearInterval(asyncInt); | |
asyncInt = window.setInterval(sendUpdates, asyncIntTime); | |
currentSendData.callback(err); | |
unsafeWindow.sopIsSending = false; | |
//showLoader(false); | |
break; | |
case 'assignPortal': | |
sendData = { | |
requestType: currentSendData.requestType, | |
action: currentSendData.action, | |
comment: currentSendData.comment, | |
//link_target: currentSendData.link_target, | |
guid: currentSendData.guid, | |
squad: currentSendData.squad, | |
title: encodeURIComponent(currentSendData.portal.title.replace(/["]/g, "'")), | |
adress: "", // removed in case of IITC Update: currentSendData.details.descriptiveText.map.ADDRESS | |
level: currentSendData.portal.level, | |
image: currentSendData.portal.image, | |
lat: currentSendData.portal.latE6/100, | |
lng: currentSendData.portal.lngE6/100, | |
team: currentSendData.portal.team, | |
type: currentSendData.portal.type, | |
mods:currentSendData.portal.mods, | |
capturedTime: currentSendData.portal.captured ? currentSendData.portal.capturedTime : 0, | |
capturingPlayerId: currentSendData.portal.captured ? currentSendData.portal.capturingPlayerId : "", | |
resCount: currentSendData.portal.resCount, | |
health: currentSendData.portal.health, | |
loadSquads: true | |
}; | |
break; | |
case 'chatMsg': | |
sendData = { | |
requestType: currentSendData.requestType, | |
msg: currentSendData.msg, | |
squad_id: currentSendData.squad_id, | |
loadSquads: false | |
}; | |
break; | |
case 'assignIssue': | |
sendData = { | |
requestType: currentSendData.requestType, | |
action: currentSendData.action, | |
comment: currentSendData.comment, | |
guid: currentSendData.guid, | |
squad: currentSendData.squad, | |
title: encodeURIComponent(currentSendData.portal.title.replace(/["]/g, "'")), | |
adress: "", // removed in case of IITC Update: currentSendData.details.descriptiveText.map.ADDRESS | |
level: currentSendData.portal.level, | |
image: currentSendData.portal.image, | |
lat: currentSendData.portal.latE6/100, | |
lng: currentSendData.portal.lngE6/100, | |
team: currentSendData.portal.team, | |
type: currentSendData.portal.type, | |
capturedTime: currentSendData.details.captured ? currentSendData.details.captured.capturedTime : 0, | |
capturingPlayerId: currentSendData.details.captured ? currentSendData.details.captured.capturingPlayerId : "", | |
resCount: currentSendData.portal.resCount, | |
health: currentSendData.portal.health, | |
loadSquads: true | |
}; | |
break; | |
case 'delAssignPortal': | |
sendData = { | |
requestType: currentSendData.requestType, | |
squad_id: currentSendData.squad_id, | |
target_id: currentSendData.target_id, | |
loadSquads: true | |
}; | |
break; | |
case 'delIssue': | |
sendData = { | |
requestType: currentSendData.requestType, | |
target_id: currentSendData.target_id, | |
loadSquads: false | |
}; | |
break; | |
case 'setPortalDone': | |
sendData = { | |
requestType: currentSendData.requestType, | |
squad_id: currentSendData.squad_id, | |
target_id: currentSendData.target_id, | |
loadSquads: true | |
}; | |
break; | |
case 'setTargetToIssue': | |
sendData = { | |
requestType: currentSendData.requestType, | |
squad_id: currentSendData.squad_id, | |
target_id: currentSendData.target_id, | |
loadSquads: true | |
}; | |
break; | |
case 'getSquadTargets': | |
sendData = { | |
requestType: currentSendData.requestType, | |
squad_id: currentSendData.squad_id, | |
loadSquads: false | |
}; | |
break; | |
case 'getIssues': | |
sendData = { | |
requestType: currentSendData.requestType, | |
loadSquads: false | |
}; | |
break; | |
case 'saveSquadToIssue': | |
sendData = { | |
requestType: currentSendData.requestType, | |
target_id: currentSendData.target_id, | |
squad_id: currentSendData.squad_id, | |
loadSquads: true | |
}; | |
break; | |
case 'getOverlays': | |
case 'getBookmarks': | |
case 'getDrawTools': | |
case 'getPortalKeys': | |
case 'getPortalKeysOfSquads': | |
sendData = { | |
requestType: currentSendData.requestType, | |
loadSquads: false | |
}; | |
break; | |
case 'getSquadsWithKey': | |
sendData = { | |
requestType: currentSendData.requestType, | |
guid: currentSendData.guid, | |
loadSquads: false | |
}; | |
break; | |
} | |
if (sendData.requestType == undefined) { | |
return false; | |
} | |
sendData.p = unsafeWindow.PLAYER.nickname; | |
sendDataStr = JSON.stringify(sendData); | |
GM_xmlhttpRequest ( { | |
method: "POST", | |
url: SOP_SERVER_URL, | |
data: "key="+auth_key+"&update="+sendDataStr | |
, | |
headers: { | |
"Content-Type": "application/x-www-form-urlencoded" | |
}, | |
onload: function (response) { | |
unsafeWindow.sopIsSending = false; | |
showLoader(false); | |
if (response.responseText.indexOf("Server too busy") > -1) { | |
unsafeWindow.$('#sop_err').html("command not sent, please wait and don't reload"); | |
unsafeWindow.$('#sop_err').show(); | |
return; | |
} | |
unsafeWindow.$('#sop_err').hide(); | |
if (currentSendData.callback) { | |
currentSendData.callback(response.responseText); | |
} | |
if (sendData.loadSquads == true) { | |
loadSquads(); | |
} | |
} | |
} ); | |
} | |
catch (e) { | |
unsafeWindow.console.log("Error sendUpdates: l:"+err.lineNumber+" " + err.message); | |
unsafeWindow.sopIsSending = false; | |
} | |
} | |
} | |
function showLoader(state){ | |
try { | |
if (state) { | |
unsafeWindow.$('#sop_loader').show(); | |
} | |
else { | |
unsafeWindow.$('#sop_loader').hide(); | |
} | |
} | |
catch (e) {} | |
} | |
function showHidePrivacy(sel){ | |
if (!!$(sel)) { | |
if($(document.body).hasClass('privacy_active')) { | |
$(sel).parent().hide(); | |
} | |
else { | |
$(sel).parent().show(); | |
} | |
} | |
} | |
unsafeWindow.sopIsSending = false; | |
var isAuthed = false; | |
var isWaitingForKey=false; | |
var contentMD5 = false; | |
var lastTimestamp = 0; | |
try { | |
var squadDocked = GM_getValue("sop_squad_dock", "0"); | |
var portalKeysOfSquadsLoaded = GM_getValue("sop_squad_portal_keys_loaded", "0"); | |
var squadIntTime = GM_getValue("sop_server_update_interval", "10000"); | |
var asyncIntTime = GM_getValue("sop_async_interval", "500"); | |
var trackerWaypoints = GM_getValue("sop_tracker_waypoints", "3"); | |
var squadListSort = GM_getValue("sop_squad_list_sort", "0"); | |
var mapMarkerType = GM_getValue("sop_map_marker_type", "0"); | |
var sopSelectedTheme = GM_getValue("sop_selected_theme", "0"); | |
var sopSquadFilter = GM_getValue("sop_squad_filter", ""); | |
var windowMainLeft = GM_getValue("sop_window_main_top", 30); | |
var windowMainTop = GM_getValue("sop_window_main_left", 50); | |
var windowLogLeft = GM_getValue("sop_window_log_top", 50); | |
var windowLogTop = GM_getValue("sop_window_log_left", 600); | |
var keySafe = GM_getValue("sop_key_history", ""); | |
var sopScriptVersion = GM_info.script.version; | |
SOP_SERVER_URL = GM_getValue("SOP_SERVER_URL", SOP_SERVER_URL); | |
if (keySafe != "") { | |
keySafe = $.parseJSON(keySafe); | |
} | |
else { | |
keySafe = {}; | |
} | |
} | |
catch (e) { | |
unsafeWindow.alert("Please install Tampermonkey!"); | |
} | |
try { | |
unsafeWindow.trackerWaypoints = cloneInto(trackerWaypoints, unsafeWindow); | |
unsafeWindow.squadIntTime = cloneInto(squadIntTime, unsafeWindow); | |
unsafeWindow.asyncIntTime = cloneInto(asyncIntTime, unsafeWindow); | |
unsafeWindow.squadListSort = cloneInto(squadListSort, unsafeWindow); | |
unsafeWindow.mapMarkerType = cloneInto(mapMarkerType, unsafeWindow); | |
unsafeWindow.sopSelectedTheme = cloneInto(sopSelectedTheme, unsafeWindow); | |
unsafeWindow.sopSquadFilter = cloneInto(sopSquadFilter, unsafeWindow); | |
unsafeWindow.windowMainTop = cloneInto(windowMainTop, unsafeWindow); | |
unsafeWindow.windowMainLeft = cloneInto(windowMainLeft, unsafeWindow); | |
unsafeWindow.windowLogLeft = cloneInto(windowLogLeft, unsafeWindow); | |
unsafeWindow.windowLogTop = cloneInto(windowLogTop, unsafeWindow); | |
unsafeWindow.SOP_SERVER_URL = cloneInto(SOP_SERVER_URL, unsafeWindow); | |
unsafeWindow.sop_docked = cloneInto(squadDocked==1?true:false, unsafeWindow); | |
unsafeWindow.portalKeysOfSquadsLoaded = cloneInto(portalKeysOfSquadsLoaded==1?true:false, unsafeWindow); | |
unsafeWindow.plugin.squadOP.keySafe = cloneInto(keySafe, unsafeWindow); | |
unsafeWindow.plugin.squadOP.sopScriptVersion = cloneInto(sopScriptVersion, unsafeWindow); | |
//unsafeWindow.$ = cloneInto($, unsafeWindow); | |
loadSquads(); | |
var squadInt = false; | |
var asyncInt = window.setInterval(sendUpdates, asyncIntTime); | |
var language = unsafeWindow.navigator.language; | |
var languageFile = false; | |
var lang_de = { | |
newIssue: 'neue<br />Aufgabe', | |
waitingIssue: 'offene Aufgaben', | |
assignSquad: 'Squad zuweisen', | |
squadSelErr: 'Bitte ein Squad auswählen', | |
team: 'Team', | |
targetportal: 'Zielportal', | |
task: 'Aufgabe', | |
comment: 'Kommentar', | |
save: 'speichern', | |
issueInfo: 'Bitte ordne die Aufgabe/n einem Team zu', | |
issueOverview: 'Aufgaben-Übersicht', | |
createIssue: 'Aufgabe für ein Portal erstellen', | |
squadName: 'Squad-Name', | |
squadOperator: 'Squad-Operator', | |
lastPos: 'letzte Position', | |
lastUpdate: 'Update der Position', | |
lastConnection: 'letzte Verbindung', | |
status0: '---', | |
status1: 'unterwegs zum Zielort', | |
status2: 'am Zielort eingetroffen', | |
status3: 'warten auf Anweisung', | |
status4: 'keine Verbindung zum Server', | |
status5: 'Zielportal, aber keine Verbindung!', | |
status6: 'keine aktuelle Position', | |
status7: 'Zielportal und keine aktuelle Position!', | |
errUpdateInterval : 'Das Update-Interval muss zwischen 10000 (10s) und 30000ms (30s) liegen.', | |
errTransferInterval : 'Das Transfer-Interval muss zwischen 10 und 1000ms liegen.', | |
errWaypoints : 'Mindestens 0 bis 1000', | |
errReloadWindow: 'Bitte Fenster neu laden, um Theme zu Übernehmen', | |
curTargets: 'aktuelle Ziele', | |
pastTargets: 'letzte Ziele', | |
logoff: 'ABMELDEN', | |
options: 'Optionen', | |
cancel: 'abbrechen', | |
refresh: 'aktualisieren', | |
close: 'schließen', | |
directions: 'Route anzeigen', | |
directionsOpt: 'Route anzeigen (opt.)', | |
assignbookmarkstopool: "Lesezeichen dem SOP Pool zuweisen", | |
assignbookmarkstoteam: "Lesezeichen dem SOP Team zuweisen", | |
importdialog: "Daten Importieren / Exportieren", | |
importWarning: "Achtung! Vorhandene Daten werden beim Import überschrieben.", | |
linktohelp: "Bitte selektiere jetzt das Zielportal zu welchem du gerne linken möchtest. Schliesse den Dialog damit die Portaldetails in das Kommentarfeld übernommen werden. Das Zielportal muss sich vom aktuell gewählten Portal unterscheiden: ", | |
linktodlgtitle: "Wähle das Link Ziel Portal" | |
} | |
var lang_en = { | |
newIssue: 'add<br />new task', | |
waitingIssue: 'waiting tasks', | |
squadSelErr: 'Please select squad', | |
assignSquad: 'assign squad', | |
team: 'Team', | |
targetportal: 'Target', | |
task: 'Action', | |
comment: 'Comment', | |
save: 'save', | |
issueInfo: 'please assign tasks to teams', | |
issueOverview: 'task overview', | |
createIssue: 'create task for portal', | |
squadName: 'Squad-Name', | |
squadOperator: 'Squad-Operator', | |
lastPos: 'last location', | |
lastUpdate: 'last location update', | |
lastConnection: 'last connection', | |
status0: '---', | |
status1: 'on way to target', | |
status2: 'at target location', | |
status3: 'waiting for advice', | |
status4: 'no connection to server', | |
status5: 'Target, but no connection!', | |
status6: 'location is not fresh', | |
status7: 'Target, but outdated location!', | |
errUpdateInterval : 'Update-Interval must be between 10000 (10s) and 30000ms (30s)', | |
errTransferInterval : 'Transfer-Interval must be between 10 and 1000ms.', | |
errWaypoints : 'at least 0 to 1000', | |
errReloadWindow: 'Please reload window to apply theme.', | |
curTargets: 'open targets', | |
pastTargets: 'past targets', | |
logoff: 'LOGOFF', | |
options: 'Settings', | |
cancel: 'cancel', | |
refresh: 'refresh', | |
close: 'close', | |
directions: 'show directions', | |
directionsOpt: 'show directions (opt.)', | |
assignbookmarkstopool: "Assign bookmarks to SOP Pool", | |
assignbookmarkstoteam: "Assing boomarks to SOP Team", | |
importdialog: "Import/Export data", | |
importWarning: "Attention! Existing data will be overwritten on import.", | |
linktohelp: "Please select the target portal you wish to link to. Close the dialog to load detailed portal data into the comment field.<br><br>The target portal have to be different from the currently selected portal: ", | |
linktodlgtitle: "select link target portal" | |
} | |
if (language.indexOf("de") === 0) { | |
languageFile = lang_de; | |
unsafeWindow.plugin.squadOP.locale = "de_DE"; | |
} | |
else { | |
languageFile = lang_en; | |
unsafeWindow.plugin.squadOP.locale = "en_US"; | |
//alert("EN ("+language+")"); | |
} | |
unsafeWindow.soplng = cloneInto(languageFile, unsafeWindow); | |
/*document.addEventListener('keydown', function(e) { | |
if (e.keyCode == 83 && !e.shiftKey && !e.ctrlKey && e.altKey && !e.metaKey) { | |
unsafeWindow.plugin.squadOP.undockSquadListDialog.toggle(); | |
} | |
}, false);*/ | |
// SOP THEME STUFF | |
var defBgColor1 = "rgba(8, 48, 78, 0.9)"; | |
var defBgColor2 = "#083C4E"; | |
var defColor1 = "#FFCE00"; // Font Color | |
var defColor2 = ""; | |
var defColor3 = "#000"; //chat msg bg | |
var defColor4 = "#20A8B1"; // Border Color | |
if (sopSelectedTheme > 0) { | |
if (sopSelectedTheme == 1) { // enlightened | |
defBgColor1 = "rgba(0, 0, 0, 0.98)"; | |
defBgColor2 = "#002600"; | |
defColor1 = "#EEEEEE"; | |
defColor2 = ""; | |
defColor3 = ""; | |
defColor4 = "#03D402"; | |
} | |
else if (sopSelectedTheme == 2) { // greyscale | |
defBgColor1 = "rgba(66, 66, 66, 0.98)"; | |
defBgColor2 = "#666666"; | |
defColor1 = "#ECECEC"; | |
defColor2 = ""; | |
defColor3 = ""; | |
defColor4 = "#c6c6c6"; | |
} | |
else if (sopSelectedTheme == 3) { // darker | |
defBgColor1 = "rgba(2, 7, 13, 0.98)"; | |
defBgColor2 = "#1f1f1f"; | |
defColor1 = "#CECECE"; | |
defColor2 = ""; | |
defColor3 = ""; | |
defColor4 = "#08140A"; | |
} | |
else if (sopSelectedTheme == 4) { // gossip | |
defBgColor1 = "rgba(64, 40, 60, 0.98)"; | |
defBgColor2 = "#402921"; | |
defColor1 = "#FAD2AE"; | |
defColor2 = ""; | |
defColor3 = ""; | |
defColor4 = "#BFAAB2"; | |
} | |
else if (sopSelectedTheme == 5) { // fresh | |
defBgColor1 = "rgba(2, 38, 1, 0.98)"; | |
defBgColor2 = "#55A603"; | |
defColor1 = "#C8EC44"; | |
defColor2 = ""; | |
defColor3 = ""; | |
defColor4 = "#EDF257"; | |
} | |
document.getElementsByTagName('head')[0].innerHTML = '' | |
+ '<style>/* general rules ******************************************************/\n\nhtml, body, #map {\n height: 100%;\n width: 100%;\n overflow: hidden; /* workaround for #373 */\n background: #0e3d4e;\n}\n\nbody {\n font-size: 14px;\n font-family: "Roboto", "Helvetica Neue", Helvetica, sans-serif;\n margin: 0;\n}\n\n#scrollwrapper {\n overflow-x: hidden;\n overflow-y: auto;\n position: fixed;\n right: -38px;\n top: 0;\n width: 340px;\n bottom: 45px;\n z-index: 1001;\n pointer-events: none;\n}\n\n#sidebar {\n background-color: '+defBgColor1+';\n border-left: 1px solid '+defColor4+';\n color: #888;\n position: relative;\n left: 0;\n top: 0;\n max-height: 100%;\n overflow-y:scroll;\n overflow-x:hidden;\n z-index: 3000;\n pointer-events: auto;\n}\n\n#sidebartoggle {\n display: block;\n padding: 20px 5px;\n margin-top: -31px; /* -(toggle height / 2) */\n line-height: 10px;\n position: absolute;\n top: 108px;\n z-index: 3001;\n background-color: '+defBgColor1+';\n color: '+defColor1+';\n border: 1px solid '+defColor4+';\n border-right: none;\n border-radius: 5px 0 0 5px;\n text-decoration: none;\n right: -50px; /* overwritten later by the script with SIDEBAR_WIDTH */\n}\n\n.enl {\n color: #03fe03 !important;\n}\n\n.res {\n color: #00c5ff !important;\n}\n\n.none {\n color: #fff;\n}\n\n.nickname {\n cursor: pointer !important;\n}\n\na {\n color: '+defColor1+';\n cursor: pointer;\n text-decoration: none;\n}\n\na:hover {\n text-decoration: underline;\n}\n\n/* map display, required because GMaps uses a high z-index which is\n * normally above Leaflet�s vector pane */\n.leaflet-map-pane {\n z-index: 1000;\n}\n\n/* leaflet layer chooser, when opened, is above other panels */\n/* doesn\'t actually work :( - left commented out for reference\n.leaflet-control-layers-expanded {\n z-index: 9999 !important;\n}\n*/\n\n\n.leaflet-control-layers-overlays label.disabled {\n text-decoration: line-through;\n cursor: help;\n}\n\n\n/* base layer selection - first column */\n.leaflet-control-layers-base {\n float: left;\n}\n\n/* overlays layer selection - 2nd column */\n.leaflet-control-layers-overlays {\n float: left;\n margin-left: 8px;\n border-left: 1px solid #DDDDDD;\n padding-left: 8px;\n}\n\n/* hide the usual separator */\n.leaflet-control-layers-separator {\n display: none;\n}\n\n\n\n.help {\n cursor: help;\n}\n\n.toggle {\n display: block;\n height: 0;\n width: 0;\n}\n\n/* field mu count */\n.fieldmu {\n color: '+defColor1+';\n font-size: 13px;\n font-family: Roboto, "Helvetica Neue", Helvetica, sans-serif; /*override leaflet-container */\n text-align: center;\n text-shadow: 0 0 0.2em black, 0 0 0.2em black, 0 0 0.2em black;\n pointer-events: none;\n}\n\n\n/* chat ***************************************************************/\n\n#chatcontrols {\n color: '+defColor1+';\n background: '+defBgColor1+';\n position: absolute;\n left: 0;\n z-index: 3000;\n height: 26px;\n padding-left:1px;\n}\n\n#chatcontrols.expand {\n top: 0;\n bottom: auto;\n}\n\n#chatcontrols a {\n margin-left: -1px;\n display: inline-block;\n width: 94px;\n text-align: center;\n height: 24px;\n line-height: 24px;\n border: 1px solid '+defColor4+';\n vertical-align: top;\n}\n\n#chatcontrols a:first-child {\n letter-spacing:-1px;\n text-decoration: none !important;\n}\n\n#chatcontrols a.active {\n border-color: '+defColor1+';\n border-bottom-width:0px;\n font-weight:bold\n}\n\n#chatcontrols a.active + a {\n border-left-color: '+defColor1+'\n}\n\n\n#chatcontrols .toggle {\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n margin: 6px auto auto;\n}\n\n#chatcontrols .expand {\n border-bottom: 10px solid '+defColor1+';\n}\n\n#chatcontrols .shrink {\n border-top: 10px solid '+defColor1+';\n}\n\n\n#chat {\n position: absolute;\n width: 708px;\n bottom: 23px;\n left: 0;\n z-index: 3000;\n background: '+defBgColor1+';\n font-size: 12.6px;\n line-height: 15px;\n color: #eee;\n border: 1px solid '+defColor4+';\n border-bottom: 0;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\nem {\n color: red;\n font-style: normal;\n}\n\n#chat.expand {\n height:auto;\n top: 25px;\n}\n\n#chatpublic, #chatfull, #chatcompact {\n display: none;\n}\n\n#chat > div {\n overflow-x:hidden;\n overflow-y:scroll;\n height: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 2px;\n position:relative;\n}\n\n#chat table, #chatinput table {\n width: 100%;\n table-layout: fixed;\n border-spacing: 0m;\n border-collapse: collapse;\n}\n\n#chatinput table {\n height: 100%;\n}\n\n#chat td, #chatinput td {\n font-size: 12.6px;\n vertical-align: top;\n padding-bottom: 3px;\n}\n\n/* time */\n#chat td:first-child, #chatinput td:first-child {\n width: 44px;\n overflow: hidden;\n padding-left: 2px;\n color: #bbb;\n white-space: nowrap;\n}\n\n#chat time {\n cursor: help;\n}\n\n/* nick */\n#chat td:nth-child(2), #chatinput td:nth-child(2) {\n width: 91px;\n overflow: hidden;\n padding-left: 2px;\n white-space: nowrap;\n}\n\n#chat td .system_narrowcast {\n color: #f66 !important;\n}\n\nmark {\n background: transparent;\n}\n\n.invisep {\n display: inline-block;\n width: 1px;\n height: 1px;\n overflow:hidden;\n color: transparent;\n}\n\n/* divider */\nsummary {\n color: #bbb;\n display: inline-block;\n height: 16px;\n overflow: hidden;\n padding: 0 2px;\n white-space: nowrap;\n width: 100%;\n}\n\n#chatinput {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 0 2px;\n background: '+defBgColor1+';\n width: 708px;\n border: 1px solid '+defColor4+';\n z-index: 3001;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n#chatinput td {\n padding-bottom: 1px;\n vertical-align: middle;\n}\n\n\n#chatinput input {\n background: transparent;\n font-size: 12.6px;\n color: #EEEEEE;\n width: 100%;\n height: 100%;\n padding:3px 4px 1px 4px;\n}\n\n\n\n/* sidebar ************************************************************/\n\n#sidebar > * {\n border-bottom: 1px solid '+defColor4+';\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n\n\n#sidebartoggle .toggle {\n border-bottom: 10px solid transparent;\n border-top: 10px solid transparent;\n}\n\n#sidebartoggle .open {\n border-right: 10px solid '+defColor1+';\n}\n\n#sidebartoggle .close {\n border-left: 10px solid '+defColor1+';\n}\n\n/* player stats */\n#playerstat {\n height: 30px;\n}\n\nh2 {\n color: '+defColor1+';\n font-size: 21px;\n padding: 0 4px;\n margin: 0;\n cursor:help;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n}\n\nh2 #name {\n font-weight: 300;\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: top;\n white-space: nowrap;\n width: 205px;\n position: relative;\n}\n\nh2 #stats {\n float: right;\n height: 100%;\n overflow: hidden;\n}\n\n#signout {\n font-size: 12px;\n font-weight: normal;\n line-height: 29px;\n padding: 0 4px;\n position: absolute;\n top: 0;\n right: 0;\n background-color: rgba(87, 87, 87, 0.5);\n display: none; /* starts hidden */\n}\n#name:hover #signout {\n display: block;\n}\n\nh2 sup, h2 sub {\n display: block;\n font-size: 11px;\n margin-bottom: -2px;\n}\n\n\n/* gamestats */\n#gamestat {\n height: 22px;\n}\n\n#gamestat span {\n display: block;\n float: left;\n font-weight: bold;\n cursor:help;\n height: 21px;\n line-height: 22px;\n}\n\n#gamestat .res {\n background: #005684;\n text-align: right;\n}\n\n#gamestat .enl {\n background: #017f01;\n}\n\n\n/* geosearch input, and others */\ninput {\n background-color: rgba(0, 0, 0, 0.3);\n color: '+defColor1+';\n height: 24px;\n padding:0px 4px 0px 4px;\n font-size: 12px;\n border:0;\n font-family:inherit;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n#geosearch{\n width:272px;\n background-color: transparent;\n}\n#geosearchwrapper {\n height:25px; \n background-color: rgba(0, 0, 0, 0.3);\n}\n#geosearchwrapper img{\n vertical-align: bottom;\n margin-bottom: 2px;\n cursor: pointer;\n}\n\n.search_not_found{\n color:red;\n font-style: italic;\n}\n\n::-webkit-input-placeholder {\n font-style: italic;\n}\n\n:-moz-placeholder {\n font-style: italic;\n}\n\n::-moz-placeholder {\n font-style: italic;\n}\n\n.leaflet-control-layers input {\n height: auto;\n padding: 0;\n}\n\n\n/* portal title and image */\nh3 {\n font-size: 16px;\n padding: 0 4px;\n margin:0;\n height: 23px;\n width: 100%;\n overflow:hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n.imgpreview {\n height: 190px;\n background: no-repeat center center;\n background-size: contain;\n cursor: help;\n overflow: hidden;\n position: relative;\n}\n\n.imgpreview img.hide {\n display: none;\n}\n\n.imgpreview .portalDetails {\n display: none;\n}\n\n#level {\n font-size: 40px;\n text-shadow: -1px -1px #000, 1px -1px #000, -1px 1px #000, 1px 1px #000, 0 0 5px #fff;\n display: block;\n margin-right: 15px;\n text-align:right;\n float: right;\n}\n\n/* portal mods */\n.mods {\n margin: 3px auto 1px auto;\n width: 296px;\n height: 67px;\n text-align: center;\n}\n\n.mods span {\n background-color: rgba(0, 0, 0, 0.3);\n /* can�t use inline-block because Webkit\'s implementation is buggy and\n * introduces additional margins in random cases. No clear necessary,\n * as that�s solved by setting height on .mods. */\n display: block;\n float:left;\n height: 63px;\n margin: 0 2px;\n overflow: hidden;\n padding: 2px;\n text-align: center;\n width: 63px;\n cursor:help;\n border: 1px solid #666;\n}\n\n.mods span:not([title]) {\n cursor: auto;\n}\n\n.res .mods span, .res .meter {\n border: 1px solid #0076b6;\n}\n.enl .mods span, .enl .meter {\n border: 1px solid #017f01;\n}\n\n/* random details, resonator details */\n#randdetails, #resodetails {\n width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0 4px;\n table-layout: fixed;\n border-spacing: 0m;\n border-collapse: collapse;\n}\n\n#randdetails td, #resodetails td {\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: top;\n white-space: nowrap;\n width: 50%;\n width: calc(50% - 62px);\n}\n\n#randdetails th, #resodetails th {\n font-weight: normal;\n text-align: right;\n width: 62px;\n padding:0px;\n padding-right:4px;\n padding-left:4px;\n}\n\n#randdetails th + th, #resodetails th + th {\n text-align: left;\n padding-right: 4px;\n padding-left: 4px;\n}\n\n#randdetails td:first-child, #resodetails td:first-child {\n text-align: right;\n padding-left: 2px;\n}\n\n#randdetails td:last-child, #resodetails td:last-child {\n text-align: left;\n padding-right: 2px;\n}\n\n\n#randdetails {\n margin-top: 4px;\n margin-bottom: 5px;\n}\n\n\n#randdetails tt {\n font-family: inherit;\n cursor: help;\n}\n\n/* resonators */\n#resodetails {\n margin-bottom: 0px;\n}\n\n.meter {\n background: #000;\n cursor: help;\n display: inline-block;\n height: 18px;\n padding: 1px;\n width: 100%;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n position: relative;\n left: 0;\n top: 0;\n}\n\n.meter.north {\n overflow: hidden;\n}\n.meter.north:before {\n content: "";\n background-color: red;\n border: 1px solid #000000;\n border-radius: 100%;\n display: block;\n height: 6px;\n width: 6px;\n left: 50%;\n top: -3px;\n margin-left: -4px;\n position: absolute;\n}\n\n.meter span {\n display: block;\n height: 14px;\n}\n\n.meter-level {\n position: absolute;\n left: 0;\n right: 0;\n top: -2px;\n text-shadow: 0.0em 0.0em 0.3em #808080;\n text-align: center;\n word-spacing: 4px; /* to leave some space for the north indicator */\n}\n\n/* links below resos */\n\n.linkdetails {\n margin-bottom: 0px;\n text-align: center;\n}\n\n.linkdetails aside {\n display: inline-block;\n white-space: nowrap;\n font-size: 12px;\n margin-left: 5px;\n margin-right: 5px;\n}\n\n#toolbox {\n font-size: 12px;\n text-align: left; /* centre didn\'t look as nice here as it did above in .linkdetails */\n}\n\n#toolbox > a {\n margin-left: 5px;\n margin-right: 5px;\n white-space: nowrap;\n display: inline-block;\n}\n\n/* a common portal display takes this much space (prevents moving\n * content when first selecting a portal) */\n\n#portaldetails {\n min-height: 63px;\n position: relative; /* so the below \'#portaldetails .close\' is relative to this */\n}\n\n#portaldetails .close {\n position: absolute;\n top: -2px;\n right: 2px;\n cursor: pointer;\n color: '+defColor1+';\n font-size: 16px;\n}\n\n/* update status */\n#updatestatus {\n background-color: '+defBgColor1+';\n border-bottom: 0;\n border-top: 1px solid '+defColor4+';\n border-left: 1px solid '+defColor4+';\n bottom: 0;\n color: '+defColor1+';\n font-size:13px;\n padding: 4px;\n position: fixed;\n right: 0;\n z-index: 3002;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n#updatestatus .map {\n margin-left: 8px;\n}\n\n#loadlevel {\n background: #FFF;\n color: #000000;\n display: inline-block;\n min-width: 1.8em;\n border: 1px solid '+defColor4+';\n border-width: 0 1px;\n margin: -4px 0;\n padding: 4px 0.2em;\n}\n\n/* Dialogs\n */\n.ui-tooltip, .ui-dialog {\n position: absolute;\n z-index: 9999;\n background-color: '+defBgColor1+';\n border: 1px solid '+defColor4+';\n color: #eee;\n font-size: 13px;\n line-height: 15px;\n padding: 2px 4px;\n}\n\n.ui-tooltip {\n max-width: 300px;\n}\n\n.ui-widget-overlay {\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: 10000;\n background: #444;\n opacity: 0.6;\n}\n\n.ui-modal {\n z-index: 10001 !important;\n}\n\n.ui-tooltip {\n z-index: 10002 !important;\n}\n\n.ui-tooltip, .ui-dialog a {\n color: '+defColor1+';\n}\n\n.ui-dialog {\n padding: 0;\n border-radius: 2px;\n}\n\n.ui-dialog-modal .ui-dialog-titlebar-close {\n display: none;\n}\n\n.ui-dialog-titlebar {\n font-size: 15px;\n line-height: 17px;\n text-align: center;\n padding: 4px;\n background-color: '+defBgColor1+';\n border-bottom: 1px solid '+defColor4+';\n min-width: 250px;\n}\n\n.ui-dialog-title {\n padding: 2px;\n font-weight: bold;\n}\n\n.ui-dialog-title-active {\n color: '+defColor1+';\n}\n\n.ui-dialog-title-inactive {\n color: #ffffff;\n}\n\n.ui-dialog-titlebar-button {\n position: absolute;\n display: table-cell;\n vertical-align: middle;\n text-align: center;\n width: 17px;\n height: 17px;\n top: 3px;\n cursor: pointer;\n border: 1px solid rgb(32, 168, 177);\n background-color: rgba(0, 0, 0, 0);\n}\n\n.ui-dialog-titlebar-button:active {\n background-color: rgb(32, 168, 177);\n}\n\n.ui-dialog-titlebar-button-close {\n right: 4px;\n}\n\n.ui-dialog-titlebar-button-collapse {\n right: 25px;\n}\n\n.ui-dialog-titlebar-button-collapse-expanded {\n /* For future changes */\n}\n\n.ui-dialog-titlebar-button-collapse-collapsed {\n background-color: rgb(32, 168, 177);\n}\n\n.ui-dialog-content {\n padding: 12px;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 600px !important;\n max-width: 700px !important;\n position: relative;\n}\n\n.ui-dialog-content-hidden {\n display: none !important;\n}\n\n.ui-dialog-buttonpane {\n padding: 6px;\n border-top: 1px solid '+defColor4+';\n}\n\n.ui-dialog-buttonset {\n text-align: right;\n}\n\n.ui-dialog-buttonset button,\n.ui-dialog-content button {\n padding: 2px;\n min-width: 40px;\n color: '+defColor1+';\n border: 1px solid '+defColor1+';\n background-color: '+defBgColor1+';\n border-radius: 4px;\n}\n\n.ui-dialog-buttonset button:hover {\n text-decoration: underline;\n}\n\n.ui-dialog-aboutIITC {\n width: auto !important;\n min-width: 400px !important;\n max-width: 600px !important;\n}\n\ntd {\n padding: 0;\n vertical-align: top;\n}\n\ntd + td {\n padding-left: 4px;\n}\n\n#qrcode > canvas {\n border: 8px solid white;\n}\n\n/* redeem results *****************************************************/\n.redeem-result-table {\n font-size: 14px;\n table-layout: fixed;\n}\n\n.redeem-result tr > td:first-child {\n width: 50px;\n text-align: right;\n}\n\n.redeem-result-html {\n font-family: Inconsolata, Consolas, Menlo, "Courier New", monospace;\n}\n\n.pl_nudge_date {\n background-color: #724510;\n border-left: 1px solid #ffd652;\n border-bottom: 1px solid #ffd652;\n border-top: 1px solid #ffd652;\n color: #ffd652;\n display: inline-block;\n float: left;\n font-size: 12px;\n height: 18px;\n text-align: center;\n}\n\n.pl_nudge_pointy_spacer {\n background: no-repeat url(//commondatastorage.googleapis.com/ingress.com/img/nudge_pointy.png);\n display: inline-block;\n float: left;\n height: 20px;\n left: 47px;\n width: 5px;\n}\n\n.pl_nudge_player {\n cursor: pointer;\n}\n\n.pl_nudge_me {\n color: #ffd652;\n}\n\n.RESISTANCE {\n color: #00c2ff;\n}\n\n.ALIENS, .ENLIGHTENED {\n color: #28f428;\n}\n\n#portal_highlight_select {\n position: absolute;\n top:5px;\n left:10px;\n z-index: 2500;\n font-size:11px;\n background-color:#0E3C46;\n color:'+defColor1+';\n \n}\n\n\n\n.portal_details th, .portal_details td {\n vertical-align: top;\n text-align: left;\n}\n\n.portal_details th {\n white-space: nowrap;\n padding-right: 1em;\n}\n\n.portal_details tr.padding-top th, .portal_details tr.padding-top td {\n padding-top: 0.7em;\n}\n\n#play_button {\n display: none;\n}\n\n\n/** artifact dialog *****************/\ntable.artifact tr > * {\n background: '+defBgColor1+';\n}\n\ntable.artifact td.info {\n min-width: 110px;\n}\n\n\n/* leaflet popups - restyle to match the theme of IITC */\n#map .leaflet-popup {\n pointer-events: none;\n}\n\n#map .leaflet-popup-content-wrapper {\n border-radius: 0px;\n -webkit-border-radius: 0px;\n border: 1px solid '+defColor4+';\n background: #0e3d4e;\n pointer-events: auto;\n}\n\n#map .leaflet-popup-content {\n color: '+defColor1+';\n margin: 5px 8px;\n}\n\n#map .leaflet-popup-close-button {\n padding: 2px 1px 0 0;\n font-size: 12px;\n line-height: 8px;\n width: 10px;\n height: 10px;\n pointer-events: auto;\n}\n\n\n#map .leaflet-popup-tip {\n /* change the tip from an arrow to a simple line */\n background: '+defColor4+';\n width: 1px;\n height: 20px;\n padding: 0;\n margin: 0 0 0 20px;\n -webkit-transform: none;\n -moz-transform: none;\n -ms-transform: none;\n -o-transform: none;\n transform: none;\n}\n\n\n/* misc */\n\n.no-pointer-events {\n pointer-events: none;\n}\n\n\n.layer_off_warning {\n color: '+defColor1+';\n margin: 8px;\n text-align: center;\n}\n</style>' | |
+ '<style>/* required styles */\n\n.leaflet-map-pane,\n.leaflet-tile,\n.leaflet-marker-icon,\n.leaflet-marker-shadow,\n.leaflet-tile-pane,\n.leaflet-tile-container,\n.leaflet-overlay-pane,\n.leaflet-shadow-pane,\n.leaflet-marker-pane,\n.leaflet-popup-pane,\n.leaflet-overlay-pane svg,\n.leaflet-zoom-box,\n.leaflet-image-layer,\n.leaflet-layer {\n position: absolute;\n left: 0;\n top: 0;\n }\n.leaflet-container {\n overflow: hidden;\n -ms-touch-action: none;\n }\n.leaflet-tile,\n.leaflet-marker-icon,\n.leaflet-marker-shadow {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n -webkit-user-drag: none;\n }\n.leaflet-marker-icon,\n.leaflet-marker-shadow {\n display: block;\n }\n/* map is broken in FF if you have max-width: 100% on tiles */\n.leaflet-container img {\n max-width: none !important;\n }\n/* stupid Android 2 doesn\'t understand "max-width: none" properly */\n.leaflet-container img.leaflet-image-layer {\n max-width: 15000px !important;\n }\n.leaflet-tile {\n filter: inherit;\n visibility: hidden;\n }\n.leaflet-tile-loaded {\n visibility: inherit;\n }\n.leaflet-zoom-box {\n width: 0;\n height: 0;\n }\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\n.leaflet-overlay-pane svg {\n -moz-user-select: none;\n }\n\n.leaflet-tile-pane { z-index: 2; }\n.leaflet-objects-pane { z-index: 3; }\n.leaflet-overlay-pane { z-index: 4; }\n.leaflet-shadow-pane { z-index: 5; }\n.leaflet-marker-pane { z-index: 6; }\n.leaflet-popup-pane { z-index: 7; }\n\n.leaflet-vml-shape {\n width: 1px;\n height: 1px;\n }\n.lvml {\n behavior: url(#default#VML);\n display: inline-block;\n position: absolute;\n }\n\n\n/* control positioning */\n\n.leaflet-control {\n position: relative;\n z-index: 7;\n pointer-events: auto;\n }\n.leaflet-top,\n.leaflet-bottom {\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n }\n.leaflet-top {\n top: 0;\n }\n.leaflet-right {\n right: 0;\n }\n.leaflet-bottom {\n bottom: 0;\n }\n.leaflet-left {\n left: 0;\n }\n.leaflet-control {\n float: left;\n clear: both;\n }\n.leaflet-right .leaflet-control {\n float: right;\n }\n.leaflet-top .leaflet-control {\n margin-top: 10px;\n }\n.leaflet-bottom .leaflet-control {\n margin-bottom: 10px;\n }\n.leaflet-left .leaflet-control {\n margin-left: 10px;\n }\n.leaflet-right .leaflet-control {\n margin-right: 10px;\n }\n\n\n/* zoom and fade animations */\n\n.leaflet-fade-anim .leaflet-tile,\n.leaflet-fade-anim .leaflet-popup {\n opacity: 0;\n -webkit-transition: opacity 0.2s linear;\n -moz-transition: opacity 0.2s linear;\n -o-transition: opacity 0.2s linear;\n transition: opacity 0.2s linear;\n }\n.leaflet-fade-anim .leaflet-tile-loaded,\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\n opacity: 1;\n }\n\n.leaflet-zoom-anim .leaflet-zoom-animated {\n -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\n -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\n -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);\n transition: transform 0.25s cubic-bezier(0,0,0.25,1);\n }\n.leaflet-zoom-anim .leaflet-tile,\n.leaflet-pan-anim .leaflet-tile,\n.leaflet-touching .leaflet-zoom-animated {\n -webkit-transition: none;\n -moz-transition: none;\n -o-transition: none;\n transition: none;\n }\n\n.leaflet-zoom-anim .leaflet-zoom-hide {\n visibility: hidden;\n }\n\n\n/* cursors */\n\n.leaflet-clickable {\n cursor: pointer;\n }\n.leaflet-container {\n cursor: -webkit-grab;\n cursor: -moz-grab;\n }\n.leaflet-popup-pane,\n.leaflet-control {\n cursor: auto;\n }\n.leaflet-dragging .leaflet-container,\n.leaflet-dragging .leaflet-clickable {\n cursor: move;\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n }\n\n\n/* visual tweaks */\n\n.leaflet-container {\n background: #ddd;\n outline: 0;\n }\n.leaflet-container a {\n color: #0078A8;\n }\n.leaflet-container a.leaflet-active {\n outline: 2px solid orange;\n }\n.leaflet-zoom-box {\n border: 2px dotted #38f;\n background: rgba(255,255,255,0.5);\n }\n\n\n/* general typography */\n.leaflet-container {\n font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;\n }\n\n\n/* general toolbar styles */\n\n.leaflet-bar {\n box-shadow: 0 1px 5px rgba(0,0,0,0.65);\n border-radius: 4px;\n }\n.leaflet-bar a,\n.leaflet-bar a:hover {\n background-color: #fff;\n border-bottom: 1px solid #ccc;\n width: 26px;\n height: 26px;\n line-height: 26px;\n display: block;\n text-align: center;\n text-decoration: none;\n color: black;\n }\n.leaflet-bar a,\n.leaflet-control-layers-toggle {\n background-position: 50% 50%;\n background-repeat: no-repeat;\n display: block;\n }\n.leaflet-bar a:hover {\n background-color: #f4f4f4;\n }\n.leaflet-bar a:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n.leaflet-bar a:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom: none;\n }\n.leaflet-bar a.leaflet-disabled {\n cursor: default;\n background-color: #f4f4f4;\n color: #bbb;\n }\n\n.leaflet-touch .leaflet-bar a {\n width: 30px;\n height: 30px;\n line-height: 30px;\n }\n\n\n/* zoom control */\n\n.leaflet-control-zoom-in,\n.leaflet-control-zoom-out {\n font: bold 18px \'Lucida Console\', Monaco, monospace;\n text-indent: 1px;\n }\n.leaflet-control-zoom-out {\n font-size: 20px;\n }\n\n.leaflet-touch .leaflet-control-zoom-in {\n font-size: 22px;\n }\n.leaflet-touch .leaflet-control-zoom-out {\n font-size: 24px;\n }\n\n\n/* layers control */\n\n.leaflet-control-layers {\n box-shadow: 0 1px 5px rgba(0,0,0,0.4);\n background: #fff;\n border-radius: 5px;\n }\n.leaflet-control-layers-toggle {\n background-image: url(data:image/png;base64,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);\n width: 36px;\n height: 36px;\n }\n.leaflet-retina .leaflet-control-layers-toggle {\n background-image: url(data:image/png;base64,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);\n background-size: 26px 26px;\n }\n.leaflet-touch .leaflet-control-layers-toggle {\n width: 44px;\n height: 44px;\n }\n.leaflet-control-layers .leaflet-control-layers-list,\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\n display: none;\n }\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\n display: block;\n position: relative;\n }\n.leaflet-control-layers-expanded {\n padding: 6px 10px 6px 6px;\n color: #333;\n background: #fff;\n }\n.leaflet-control-layers-selector {\n margin-top: 2px;\n position: relative;\n top: 1px;\n }\n.leaflet-control-layers label {\n display: block;\n }\n.leaflet-control-layers-separator {\n height: 0;\n border-top: 1px solid #ddd;\n margin: 5px -10px 5px -6px;\n }\n\n\n/* attribution and scale controls */\n\n.leaflet-container .leaflet-control-attribution {\n background: #fff;\n background: rgba(255, 255, 255, 0.7);\n margin: 0;\n }\n.leaflet-control-attribution,\n.leaflet-control-scale-line {\n padding: 0 5px;\n color: #333;\n }\n.leaflet-control-attribution a {\n text-decoration: none;\n }\n.leaflet-control-attribution a:hover {\n text-decoration: underline;\n }\n.leaflet-container .leaflet-control-attribution,\n.leaflet-container .leaflet-control-scale {\n font-size: 11px;\n }\n.leaflet-left .leaflet-control-scale {\n margin-left: 5px;\n }\n.leaflet-bottom .leaflet-control-scale {\n margin-bottom: 5px;\n }\n.leaflet-control-scale-line {\n border: 2px solid #777;\n border-top: none;\n line-height: 1.1;\n padding: 2px 5px 1px;\n font-size: 11px;\n white-space: nowrap;\n overflow: hidden;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n\n background: #fff;\n background: rgba(255, 255, 255, 0.5);\n }\n.leaflet-control-scale-line:not(:first-child) {\n border-top: 2px solid #777;\n border-bottom: none;\n margin-top: -2px;\n }\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\n border-bottom: 2px solid #777;\n }\n\n.leaflet-touch .leaflet-control-attribution,\n.leaflet-touch .leaflet-control-layers,\n.leaflet-touch .leaflet-bar {\n box-shadow: none;\n }\n.leaflet-touch .leaflet-control-layers,\n.leaflet-touch .leaflet-bar {\n border: 2px solid rgba(0,0,0,0.2);\n background-clip: padding-box;\n }\n\n\n/* popup */\n\n.leaflet-popup {\n position: absolute;\n text-align: center;\n }\n.leaflet-popup-content-wrapper {\n padding: 1px;\n text-align: left;\n border-radius: 12px;\n }\n.leaflet-popup-content {\n margin: 13px 19px;\n line-height: 1.4;\n }\n.leaflet-popup-content p {\n margin: 18px 0;\n }\n.leaflet-popup-tip-container {\n margin: 0 auto;\n width: 40px;\n height: 20px;\n position: relative;\n overflow: hidden;\n }\n.leaflet-popup-tip {\n width: 17px;\n height: 17px;\n padding: 1px;\n\n margin: -10px auto 0;\n\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n }\n.leaflet-popup-content-wrapper,\n.leaflet-popup-tip {\n background: white;\n\n box-shadow: 0 3px 14px rgba(0,0,0,0.4);\n }\n.leaflet-container a.leaflet-popup-close-button {\n position: absolute;\n top: 0;\n right: 0;\n padding: 4px 4px 0 0;\n text-align: center;\n width: 18px;\n height: 14px;\n font: 16px/14px Tahoma, Verdana, sans-serif;\n color: #c3c3c3;\n text-decoration: none;\n font-weight: bold;\n background: transparent;\n }\n.leaflet-container a.leaflet-popup-close-button:hover {\n color: #999;\n }\n.leaflet-popup-scrolled {\n overflow: auto;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n }\n\n.leaflet-oldie .leaflet-popup-content-wrapper {\n zoom: 1;\n }\n.leaflet-oldie .leaflet-popup-tip {\n width: 24px;\n margin: 0 auto;\n\n -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";\n filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\n }\n.leaflet-oldie .leaflet-popup-tip-container {\n margin-top: -1px;\n }\n\n.leaflet-oldie .leaflet-control-zoom,\n.leaflet-oldie .leaflet-control-layers,\n.leaflet-oldie .leaflet-popup-content-wrapper,\n.leaflet-oldie .leaflet-popup-tip {\n border: 1px solid #999;\n }\n\n\n/* div icon */\n\n.leaflet-div-icon {\n background: #fff;\n border: 1px solid #666;\n }\n</style>' | |
//note: smartphone.css injection moved into code/smartphone.js | |
+ '<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Roboto:100,100italic,300,300italic,400,400italic,500,500italic,700,700italic&subset=latin,cyrillic-ext,greek-ext,greek,vietnamese,latin-ext,cyrillic"/>'; | |
} | |
unsafeWindow.defBgColor1 = cloneInto(defBgColor1, unsafeWindow); | |
unsafeWindow.defBgColor2 = cloneInto(defBgColor2, unsafeWindow); | |
unsafeWindow.defColor1 = cloneInto(defColor1, unsafeWindow); | |
unsafeWindow.defColor2 = cloneInto(defColor2, unsafeWindow); | |
unsafeWindow.defColor3 = cloneInto(defColor3, unsafeWindow); | |
unsafeWindow.defColor4 = cloneInto(defColor4, unsafeWindow); | |
} | |
catch (e) { | |
unsafeWindow.alert("Please sign in and open Ingress Intel Map.\n\n"+e); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment