Merge remote-tracking branch 'upstream/gh-pages' into gh-pages

This commit is contained in:
Jon Atkins 2013-02-14 16:50:55 +00:00
commit 2cd4db92d2
13 changed files with 1229 additions and 443 deletions

34
NEWS.md
View File

@ -1,6 +1,36 @@
CHANGES IN 0.5 / 0.51 CHANGES IN 0.6 / 0.61
===================== =====================
0.6 had a broken link to style sheets. Fixed in 0.61.
- **SECURITY**: Chat was vulnerable to XSS attacks. Update as soon as
possible.
- Feature: [**more plugins**](https://github.com/breunigs/ingress-intel-total-conversion/tree/gh-pages/plugins#readme)
- weakened portals: highlights portals with few resonators or ones
that are decayed, making it easier to see where
to attack or defend
- draw tools: allow you to draw things on the map, making it easier
to plan your next big field
- Feature: chat now has a tab that shows all automated messages, not
only the last one per user
- Feature: render lines between portals and their resonators
- Change: resonators are only re-rendered on demand, could improve per-
formance
- Change: AP Gain now also includes gains by deploying resonators
- Change: portal images are not shrinked instead of cut in preview
- Bugfix: styling issues in sidebar (by cmrn)
- Bugfix: “field decayed” and similar messages were not shown
- Bugfix: tooltips have broken alignment sometimes (by saithis)
- Bugfix: chat sometimes didnt warn if message didnt went through
- Bugfix: base layer was not saved properly
- Bugfix: avoid zooming to invalid lat/lng, crashing the browser
CHANGES IN 0.5 / 0.51
---------------------
- Feature: draw resonators on map on high zoom levels (by Xelio) - Feature: draw resonators on map on high zoom levels (by Xelio)
- Feature: show AP if portal is taken down (by Pirozek) - Feature: show AP if portal is taken down (by Pirozek)
- Feature: collapsible sidebar (by cmrn) - Feature: collapsible sidebar (by cmrn)
@ -15,7 +45,7 @@ CHANGES IN 0.5 / 0.51
backgrouds (by jonatkins) backgrouds (by jonatkins)
- Change: increased hack range from 35m to 40m - Change: increased hack range from 35m to 40m
- Change: Sidebar now semi-transparent, just like chat (by cmrn) - Change: Sidebar now semi-transparent, just like chat (by cmrn)
- Change: portals are now sizes according to their level (by OshiHidra) - Change: portals are now sized according to their level (by OshiHidra)
- Change: resonators are now more aligned to their octant (thanks - Change: resonators are now more aligned to their octant (thanks
Worros for helping confirming the slot-to-octant matching) Worros for helping confirming the slot-to-octant matching)
- Change: release versions are now put in `dist/`. This should avoid - Change: release versions are now put in `dist/`. This should avoid

View File

@ -20,8 +20,8 @@ Features
- feels faster. (Likely because [leaflet](http://leafletjs.com/) is faster, although there are some other tricks.) - feels faster. (Likely because [leaflet](http://leafletjs.com/) is faster, although there are some other tricks.)
- full view of portal images - full view of portal images
- better chat - better chat
- separated automated/public/faction - separated full/compact/public/faction
- only showing the last automated message for each user. Makes a great “where are they now” guide. - compact only shows the last automated message for each user. Makes a great “where are they now” guide.
- nick tab completion - nick tab completion
- clickable links - clickable links
- automatic idle resume - automatic idle resume
@ -38,7 +38,7 @@ Features
Install Install
------- -------
Current version is 0.51. See [NEWS.md](https://github.com/breunigs/ingress-intel-total-conversion/blob/gh-pages/NEWS.md) for details. Current version is 0.61. See [NEWS.md](https://github.com/breunigs/ingress-intel-total-conversion/blob/gh-pages/NEWS.md) for details. **THIS VERSION CONTAINS A SECURITY UPDATE.** Please update as soon as possible and also alert friends about it.
[**INSTALL**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/total-conversion-build.user.js) [**INSTALL**](https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/total-conversion-build.user.js)

View File

@ -6,21 +6,20 @@
// be run once. // be run once.
window.setupLargeImagePreview = function() { window.setupLargeImagePreview = function() {
$('#portaldetails').on('click', '.imgpreview img', function() { $('#portaldetails').on('click', '.imgpreview', function() {
var ex = $('#largepreview'); var ex = $('#largepreview');
if(ex.length > 0) { if(ex.length > 0) {
ex.remove(); ex.remove();
return; return;
} }
var img = $(this).parent().html(); var img = $(this).html();
var w = $(this)[0].naturalWidth/2; var w = $(this).find('img')[0].naturalWidth/2;
var h = $(this)[0].naturalHeight/2; var h = $(this).find('img')[0].naturalHeight/2;
var c = $('#portaldetails').attr('class'); var c = $('#portaldetails').attr('class');
$('body').append( $('body').append(
'<div id="largepreview" class="'+c+'" style="margin-left: '+(-SIDEBAR_WIDTH/2-w-2)+'px; margin-top: '+(-h-2)+'px">' + img + '</div>' '<div id="largepreview" class="'+c+'" style="margin-left: '+(-SIDEBAR_WIDTH/2-w-2)+'px; margin-top: '+(-h-2)+'px">' + img + '</div>'
); );
$('#largepreview').click(function() { $(this).remove() }); $('#largepreview').click(function() { $(this).remove() });
$('#largepreview img').attr('title', '');
}); });
} }
@ -280,13 +279,23 @@ function asyncLoadScript(a){return function(b,c){var d=document.createElement("s
// modified version of https://github.com/shramov/leaflet-plugins. Also // modified version of https://github.com/shramov/leaflet-plugins. Also
// contains the default Ingress map style. // contains the default Ingress map style.
var LLGMAPS = 'http://breunigs.github.com/ingress-intel-total-conversion/dist/leaflet_google.js'; var LEAFLETGOOGLE = 'http://breunigs.github.com/ingress-intel-total-conversion/dist/leaflet_google.js';
var JQUERY = 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'; var JQUERY = 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js';
var JQUERYUI = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js'; var JQUERYUI = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js';
var LEAFLET = 'http://cdn.leafletjs.com/leaflet-0.5/leaflet.js'; var LEAFLET = 'http://cdn.leafletjs.com/leaflet-0.5/leaflet.js';
var AUTOLINK = 'http://breunigs.github.com/ingress-intel-total-conversion/dist/autolink.js'; var AUTOLINK = 'http://breunigs.github.com/ingress-intel-total-conversion/dist/autolink.js';
var EMPTY = 'data:text/javascript;base64,';
// dont download resources which have been injected already
var ir = window && window.internalResources ? window.internalResources : [];
if(ir.indexOf('jquery') !== -1) JQUERY = EMPTY;
if(ir.indexOf('jqueryui') !== -1) JQUERYUI = EMPTY;
if(ir.indexOf('leaflet') !== -1) LEAFLET = EMPTY;
if(ir.indexOf('autolink') !== -1) AUTOLINK = EMPTY;
if(ir.indexOf('leafletgoogle') !== -1) LEAFLETGOOGLE = EMPTY;
// after all scripts have loaded, boot the actual app // after all scripts have loaded, boot the actual app
load(JQUERY, LEAFLET, AUTOLINK).then(LLGMAPS, JQUERYUI).onError(function (err) { load(JQUERY, LEAFLET, AUTOLINK).then(LEAFLETGOOGLE, JQUERYUI).onError(function (err) {
alert('Could not all resources, the script likely wont work.\n\nIf this happend the first time for you, its probably a temporary issue. Just wait a bit and try again.\n\nIf you installed the script for the first time and this happens:\n try disabling NoScript if you have it installed\n press CTRL+SHIFT+K in Firefox or CTRL+SHIFT+I in Chrome/Opera and reload the page. Additional info may be available in the console.\n Open an issue at https://github.com/breunigs/ingress-intel-total-conversion/issues'); alert('Could not all resources, the script likely wont work.\n\nIf this happend the first time for you, its probably a temporary issue. Just wait a bit and try again.\n\nIf you installed the script for the first time and this happens:\n try disabling NoScript if you have it installed\n press CTRL+SHIFT+K in Firefox or CTRL+SHIFT+I in Chrome/Opera and reload the page. Additional info may be available in the console.\n Open an issue at https://github.com/breunigs/ingress-intel-total-conversion/issues');
}).thenRun(boot); }).thenRun(boot);

View File

@ -347,15 +347,16 @@ window.renderResonators = function(ent, portalLayer) {
weight: 1, weight: 1,
fillColor: COLORS_LVL[rdata.level], fillColor: COLORS_LVL[rdata.level],
fillOpacity: rdata.energyTotal/RESO_NRG[rdata.level], fillOpacity: rdata.energyTotal/RESO_NRG[rdata.level],
clickable: false,
guid: resoGuid // need this here as well for add/remove events guid: resoGuid // need this here as well for add/remove events
}); });
// line connecting reso to portal // line connecting reso to portal
var conn = L.polyline([Rlatlng, portalLatLng], { var conn = L.polyline([portalLatLng, Rlatlng], {
weight: 2, weight: 2,
color: '#FFFFFF', color: '#FFA000',
opacity: 0.2, opacity: 0.25,
dashArray: '10,4', dashArray: '0,10,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4,8,4',
fill: false, fill: false,
clickable: false}); clickable: false});

View File

@ -57,13 +57,16 @@ window.renderPortalDetails = function(guid) {
var lat = d.locationE6.latE6; var lat = d.locationE6.latE6;
var lng = d.locationE6.lngE6; var lng = d.locationE6.lngE6;
var perma = 'http://ingress.com/intel?latE6='+lat+'&lngE6='+lng+'&z=17&pguid='+guid; var perma = 'http://ingress.com/intel?latE6='+lat+'&lngE6='+lng+'&z=17&pguid='+guid;
var imgTitle = 'title="'+getPortalDescriptionFromDetails(d)+'\n\nClick to show full image."';
$('#portaldetails') $('#portaldetails')
.attr('class', TEAM_TO_CSS[getTeam(d)]) .attr('class', TEAM_TO_CSS[getTeam(d)])
.html('' .html(''
+ '<h3>'+d.portalV2.descriptiveText.TITLE+'</h3>' + '<h3>'+d.portalV2.descriptiveText.TITLE+'</h3>'
// help cursor via “.imgpreview img” // help cursor via “.imgpreview img”
+ '<div class="imgpreview"><img src="'+img+'" title="'+getPortalDescriptionFromDetails(d)+'\n\nClick to show full image."/></div>' + '<div class="imgpreview" '+imgTitle+' style="background-image: url('+img+')">'
+ '<img class="hide" src="'+img+'"/>'
+ '</div>'
+ '<span id="level">'+Math.floor(getPortalLevel(d))+'</span>' + '<span id="level">'+Math.floor(getPortalLevel(d))+'</span>'
+ '<div class="mods">'+getModDetails(d)+'</div>' + '<div class="mods">'+getModDetails(d)+'</div>'
+ '<div id="randdetails">'+randDetails+'</div>' + '<div id="randdetails">'+randDetails+'</div>'

View File

@ -73,7 +73,7 @@ window.getEnergyText = function(d) {
window.getAvgResoDistText = function(d) { window.getAvgResoDistText = function(d) {
var avgDist = Math.round(10*getAvgResoDist(d))/10; var avgDist = Math.round(10*getAvgResoDist(d))/10;
return ['res dist', avgDist + 'm']; return ['reso dist', avgDist + 'm'];
} }
window.getResonatorDetails = function(d) { window.getResonatorDetails = function(d) {

626
dist/style.0.6.css vendored Normal file
View File

@ -0,0 +1,626 @@
/* general rules ******************************************************/
html, body, #map {
height: 100%;
width: 100%;
}
body {
font-size: 14px;
font-family: "coda",arial,helvetica,sans-serif;
margin: 0;
}
#scrollwrapper {
overflow: hidden;
position: fixed;
right: -38px;
top: 0;
width: 340px;
bottom: 45px;
z-index: 1001;
}
#sidebar {
background-color: rgba(8, 48, 78, 0.9);
border-left: 1px solid #20A8B1;
color: #888;
position: relative;
left: 0;
top: 0;
max-height: 100%;
overflow-y:scroll;
overflow-x:hidden;
z-index: 3000;
}
#sidebartoggle {
display: block;
padding: 20px 5px;
margin-top: -31px; /* -(toggle height / 2) */
line-height: 10px;
position: absolute;
top: 340px; /* (sidebar height / 2) */
z-index: 3001;
background-color: rgba(8, 48, 78, 0.9);
color: #FFCE00;
border: 1px solid #20A8B1;
border-right: none;
border-radius: 5px 0 0 5px;
text-decoration: none;
}
.enl {
color: #03fe03 !important;
}
.res {
color: #00c5ff !important;
}
.none {
color: #fff;
}
a {
color: #ffce00;
cursor: pointer;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* map display, required because GMaps uses a high z-index which is
* normally above Leaflets vector pane */
.leaflet-map-pane {
z-index: 1000;
}
.leaflet-control-layers-overlays label.disabled {
text-decoration: line-through;
cursor: help;
}
.help {
cursor: help;
}
.toggle {
display: block;
height: 0;
width: 0;
}
/* chat ***************************************************************/
#chatcontrols {
color: #FFCE00;
background: rgba(8, 48, 78, 0.9);
position: absolute;
left: 0;
z-index: 3001;
height: 26px;
padding-left:1px;
}
#chatcontrols.expand {
top: 0;
bottom: auto;
}
#chatcontrols a {
margin-left: -1px;
display: inline-block;
width: 94px;
text-align: center;
height: 24px;
line-height: 24px;
border: 1px solid #20A8B1;
vertical-align: top;
}
#chatcontrols a:first-child {
letter-spacing:-1px;
text-decoration: none !important;
}
#chatcontrols a.active {
border-color: #FFCE00;
border-bottom-width:0px;
font-weight:bold
}
#chatcontrols a.active + a {
border-left-color: #FFCE00
}
#chatcontrols .toggle {
border-left: 10px solid transparent;
border-right: 10px solid transparent;
margin: 6px auto auto;
}
#chatcontrols .expand {
border-bottom: 10px solid #FFCE00;
}
#chatcontrols .shrink {
border-top: 10px solid #FFCE00;
}
#chat {
position: absolute;
width: 708px;
bottom: 24px;
left: 0;
z-index: 3000;
background: rgba(8, 48, 78, 0.9);
font-size: 12.6px;
color: #eee;
border: 1px solid #20A8B1;
border-bottom: 0;
}
em {
color: red;
font-style: normal;
}
#chat.expand {
height:auto;
top: 25px;
}
#chatpublic, #chatfull, #chatcompact, /* FIXME DEPRECATED: */#chatautomated {
display: none;
}
#chat > div {
overflow-x:hidden;
overflow-y:scroll;
height: 100%; /* fallback for Opera which doesnt support calc */
height: calc(100% - 4px);
height: -webkit-calc(100% - 4px);
height: -moz-calc(100% - 4px);
padding: 2px;
position:relative;
}
#chat p {
display: block;
padding: 1px 2px;
margin:0;
}
#chat time {
cursor: help;
}
time, mark, #chat span, #chat a {
font-family: Verdana, sans-serif;
font-size: 12.6px;
vertical-align: top;
}
time {
display: inline-block;
width: 44px;
color: #bbb;
overflow: hidden;
}
mark {
display: inline-block;
width: 91px;
margin-right:4px;
overflow:hidden;
vertical-align: top;
background: transparent;
}
summary {
color: #bbb;
display: inline-block;
font-family: Verdana,sans-serif;
height: 16px;
overflow: hidden;
padding: 0 2px;
white-space: nowrap;
width: 683px;
}
#chat span {
display: inline-block;
width: 540px;
}
#chatinput {
line-height:22px;
padding: 0 4px;
position: absolute;
bottom: 0;
left: 0;
background: rgba(8, 48, 78, 0.9);
width: 700px;
border: 1px solid #20A8B1;
z-index: 3001;
}
#chat .invisibleseparator {
color: rgba(8, 48, 78, 0.0);
overflow: hidden;
width: 0px;
}
#chatinput span {
font-family: Verdana,sans-serif;
display: inline-block;
font-size: 12.6px;
width: 84px;
color: red;
padding: 0 4px 0 1px;
width: 85px;
}
#chatinput input {
background: transparent;
font-size: 12.6px;
font-family: Verdana,sans-serif;
color: #EEEEEE;
width: 558px
}
/* sidebar ************************************************************/
#sidebar > * {
border-bottom: 1px solid #20A8B1;
}
#sidebartoggle .toggle {
border-bottom: 10px solid transparent;
border-top: 10px solid transparent;
}
#sidebartoggle .open {
border-right: 10px solid #FFCE00;
}
#sidebartoggle .close {
border-left: 10px solid #FFCE00;
}
/* player stats */
#playerstat {
height: 30px;
}
h2 {
color: #ffce00;
font-size: 21px;
padding: 0 4px;
margin: 0;
cursor:help;
}
h2 span {
display: inline-block;
overflow: hidden;
text-overflow: "~";
vertical-align: top;
white-space: nowrap;
width: 205px;
}
h2 div {
float: right;
height: 100%;
overflow: hidden;
}
h2 sup, h2 sub {
display: block;
font-size: 11px;
margin-bottom: -1px;
}
/* gamestats */
#gamestat, #gamestat span {
height: 22px;
line-height: 22px;
}
#gamestat span {
display: block;
float: left;
font-weight: bold;
cursor:help;
}
#gamestat .res {
background: #005684;
text-align: right;
}
#gamestat .enl {
background: #017f01;
}
/* geosearch input, and others */
input {
background-color: rgba(0, 0, 0, 0.3);
color: #ffce00;
height: 22px;
line-height: 22px;
padding: 0 4px;
font-size: 14px;
border:0;
font-family:inherit;
}
::-webkit-input-placeholder {
font-style: italic;
}
:-moz-placeholder {
font-style: italic;
}
::-moz-placeholder {
font-style: italic;
}
/* portal title and image */
h3 {
font-size: 17px;
padding: 0 4px;
margin:0;
height: 25px;
width: 100%;
overflow:hidden;
text-overflow: "~";
white-space: nowrap;
}
.imgpreview {
height: 200px;
background: no-repeat center center;
background-size: contain;
cursor: help;
overflow: hidden;
}
.imgpreview img.hide {
display: none;
}
#level {
font-size: 40px;
position: absolute;
right: 10px;
text-shadow: -1px -1px #000, 1px -1px #000, -1px 1px #000, 1px 1px #000, 0 0 5px #fff;
top: 100px;
}
/* portal mods */
.mods {
margin-bottom: 1px;
margin-top: 5px;
height: 75px;
}
.mods span {
background-color: rgba(0, 0, 0, 0.3);
/* cant use inline-block because Webkits implementation is buggy and
* introduces additional margins in random cases. No clear necessary,
* as thats solved by setting height on .mods. */
display: block;
float:left;
height: 63.7px;
margin-left: 4px;
overflow: hidden;
padding: 2px;
text-align: center;
width: 63.7px;
cursor:help;
border: 1px solid #666;
}
.mods span:not([title]) {
cursor: auto;
}
.res .mods span, .res .meter {
border: 1px solid #0076b6;
}
.enl .mods span, .enl .meter {
border: 1px solid #017f01;
}
/* random details list */
#randdetails {
margin: 0 4px;
margin-top: 11px;
}
aside {
display: inline-block;
width: 140px;
}
aside span {
overflow: hidden;
text-overflow: "~";
white-space: nowrap;
width: 74px;
}
aside:nth-child(odd) {
margin-right: 4px;
text-align: right;
}
aside:nth-child(even) {
margin-left: 4px;
text-align: left;
}
aside:nth-child(even) span {
float: right;
padding-left: 4px;
text-align: left;
}
aside:nth-child(odd) span {
float: left;
padding-right: 4px;
text-align: right;
}
#randdetails tt {
font-family: inherit;
cursor: help;
}
/* resonators */
#resodetails {
white-space: nowrap;
margin: 16px 0;
-moz-column-gap: 10px;
-moz-column-width: 141px;
-webkit-column-gap: 10px;
-webkit-column-width: 141px;
}
.meter {
background: #000;
cursor: help;
display: inline-block;
height: 14px;
padding: 1px;
width: 58px;
}
.meter-text {
display: inline-block;
height: 18px;
margin: 0 4px;
overflow: hidden;
text-overflow: "~";
vertical-align: top;
white-space: nowrap;
width: 75px;
}
.meter-text.left {
text-align: right;
}
.meter span {
display: block;
height: 14px;
}
.meter-rel {
position: relative;
left: 0;
top: 0;
}
.meter-level {
position: absolute;
top: -2px;
left: 25px;
text-shadow: 0.0em 0.0em 0.3em #808080;
}
/* links below resos */
.linkdetails {
text-align: center;
margin-bottom: 10px;
}
.linkdetails aside {
margin: 0 4px;
width: 140px;
}
#toolbox {
padding: 4px;
font-size:90%;
}
#toolbox > a {
padding: 5px;
}
/* a common portal display takes this much space (prevents moving
* content when first selecting a portal) */
#portaldetails {
min-height: 553px;
}
/* update status */
#updatestatus {
background-color: rgba(8, 48, 78, 0.9);
border-bottom: 0;
border-top: 1px solid #20A8B1;
border-left: 1px solid #20A8B1;
bottom: 0;
color: #ffce00;
font-size:13px;
padding: 4px;
position: fixed;
right: 0;
z-index:3002;
}
/* preview */
#largepreview {
left: 50%;
position: fixed;
top: 50%;
z-index: 2000;
}
#largepreview img {
box-shadow: 0 0 40px #000;
}
#largepreview img {
border: 2px solid #f8ff5e;
}
/* tooltips */
.ui-tooltip {
max-width: 300px;
position: absolute;
z-index: 9999;
background-color: #fff;
border: 1px solid #ccc;
color: #222;
font: 13px/15px "Helvetica Neue", Arial, Helvetica, sans-serif;
padding: 2px 4px;
}
td {
padding: 0;
}
td + td {
padding-left: 4px;
}

File diff suppressed because it is too large Load Diff

20
main.js
View File

@ -1,7 +1,7 @@
// ==UserScript== // ==UserScript==
// @id ingress-intel-total-conversion@breunigs // @id ingress-intel-total-conversion@breunigs
// @name intel map total conversion // @name intel map total conversion
// @version 0.51-@@BUILDDATE@@ // @version 0.6-@@BUILDDATE@@
// @namespace https://github.com/breunigs/ingress-intel-total-conversion // @namespace https://github.com/breunigs/ingress-intel-total-conversion
// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/total-conversion-build.user.js // @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/total-conversion-build.user.js
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/total-conversion-build.user.js // @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/dist/total-conversion-build.user.js
@ -49,15 +49,23 @@ for(var i = 0; i < d.length; i++) {
// player information is now available in a hash like this: // player information is now available in a hash like this:
// window.PLAYER = {"ap": "123", "energy": 123, "available_invites": 123, "nickname": "somenick", "team": "ALIENS||RESISTANCE"}; // window.PLAYER = {"ap": "123", "energy": 123, "available_invites": 123, "nickname": "somenick", "team": "ALIENS||RESISTANCE"};
var ir = window.internalResources || [];
// remove complete page. We only wanted the user-data and the pages // remove complete page. We only wanted the user-data and the pages
// security context so we can access the API easily. Setup as much as // security context so we can access the API easily. Setup as much as
// possible without requiring scripts. // possible without requiring scripts.
document.getElementsByTagName('head')[0].innerHTML = '' document.getElementsByTagName('head')[0].innerHTML = ''
//~ + '<link rel="stylesheet" type="text/css" href="http://0.0.0.0:8000/style.css"/>' //~ + '<link rel="stylesheet" type="text/css" href="http://0.0.0.0:8000/style.css"/>'
+ '<title>Ingress Intel Map</title>' + '<title>Ingress Intel Map</title>'
+ '<link rel="stylesheet" type="text/css" href="http://breunigs.github.com/ingress-intel-total-conversion/style.css?@@BUILDDATE@@"/>' + (ir.indexOf('mainstyle') === -1
+ '<link rel="stylesheet" type="text/css" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.css"/>' ? '<link rel="stylesheet" type="text/css" href="http://breunigs.github.com/ingress-intel-total-conversion/style.css?@@BUILDDATE@@"/>'
+ '<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Coda"/>'; : '')
+ (ir.indexOf('leafletcss') === -1
? '<link rel="stylesheet" type="text/css" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.css"/>'
: '')
+ (ir.indexOf('codafont') === -1
? '<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Coda"/>'
: '');
document.getElementsByTagName('body')[0].innerHTML = '' document.getElementsByTagName('body')[0].innerHTML = ''
+ '<div id="map">Loading, please wait</div>' + '<div id="map">Loading, please wait</div>'
@ -80,7 +88,9 @@ document.getElementsByTagName('body')[0].innerHTML = ''
+ ' <input id="geosearch" placeholder="Search location…" type="text"/>' + ' <input id="geosearch" placeholder="Search location…" type="text"/>'
+ ' <div id="portaldetails"></div>' + ' <div id="portaldetails"></div>'
+ ' <input id="redeem" placeholder="Redeem code…" type="text"/>' + ' <input id="redeem" placeholder="Redeem code…" type="text"/>'
+ ' <div id="toolbox"><a onmouseover="setPermaLink(this)">permalink</a></div>' + ' <div id="toolbox">'
+ ' <a onmouseover="setPermaLink(this)">permalink</a>'
+ ' <a href="https://github.com/breunigs/ingress-intel-total-conversion#readme" title="IITC = Ingress Intel Total Conversion.\n\nOn the scripts homepage you can:\n find updates\n get plugins\n report bugs\n and contribute." style="cursor: help">IITCs page</a></div>'
+ ' </div>' + ' </div>'
+ '</div>' + '</div>'
+ '<div id="updatestatus"></div>'; + '<div id="updatestatus"></div>';

View File

@ -4,6 +4,7 @@
cp iitc-debug.user.js dist/total-conversion-build.user.js cp iitc-debug.user.js dist/total-conversion-build.user.js
cp style.css dist/style.css cp style.css dist/style.css
cp external/* dist/ cp external/* dist/
cp -r images/ dist/images rm -r dist/images/
cp -r images/ dist/images/
echo 'Change path of style.css to dist/style.css' echo 'Change path of style.css to dist/style.css'

View File

@ -1,7 +1,7 @@
// ==UserScript== // ==UserScript==
// @id iitc-plugin-draw-tools@breunigs // @id iitc-plugin-draw-tools@breunigs
// @name iitc: draw tools // @name iitc: draw tools
// @version 0.1 // @version 0.2
// @namespace https://github.com/breunigs/ingress-intel-total-conversion // @namespace https://github.com/breunigs/ingress-intel-total-conversion
// @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/draw-tools.user.js // @updateURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/draw-tools.user.js
// @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/draw-tools.user.js // @downloadURL https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/draw-tools.user.js
@ -47,7 +47,7 @@ window.plugin.drawTools.addStyles = function() {
window.plugin.drawTools.addCustomButtons = function() { window.plugin.drawTools.addCustomButtons = function() {
$('.leaflet-control-draw .leaflet-bar-part-bottom').removeClass('leaflet-bar-part-bottom'); $('.leaflet-control-draw .leaflet-bar-part-bottom').removeClass('leaflet-bar-part-bottom');
var undo = $('<a class="leaflet-bar-part" title="undo last" href="#">⎌</a>') var undo = $('<a class="leaflet-bar-part" title="remove last drawn line/circle/marker" href="#">⎌</a>')
.click(function() { .click(function() {
var last = null; var last = null;
window.plugin.drawTools.drawnItems.eachLayer(function(l) { window.plugin.drawTools.drawnItems.eachLayer(function(l) {
@ -57,7 +57,7 @@ window.plugin.drawTools.addCustomButtons = function() {
} }
); );
var clear = $('<a class="leaflet-bar-part leaflet-bar-part-bottom" title="clear drawings" href="#">✗</a>') var clear = $('<a class="leaflet-bar-part leaflet-bar-part-bottom" title="clear ALL drawings" href="#">✗</a>')
.click(function() { .click(function() {
window.plugin.drawTools.drawnItems.clearLayers(); window.plugin.drawTools.drawnItems.clearLayers();
} }
@ -73,11 +73,29 @@ window.plugin.drawTools.addDrawControl = function() {
polygon: false, polygon: false,
polyline: { polyline: {
shapeOptions: DRAW_TOOLS_SHAPE_OPTIONS shapeOptions: DRAW_TOOLS_SHAPE_OPTIONS,
title: 'Add a (poly) line.\n\n'
+ 'Click on the button, then click on the map to\n'
+ 'define the start of the line. Continue click-\n'
+ 'ing to draw the line you want. Click the last\n'
+ 'point of the line (a small white rectangle) to\n'
+ 'finish. Double clicking also works.'
}, },
circle: { circle: {
shapeOptions: DRAW_TOOLS_SHAPE_OPTIONS shapeOptions: DRAW_TOOLS_SHAPE_OPTIONS,
title: 'Add a circle.\n\n'
+ 'Click on the button, then click-AND-HOLD on the\n'
+ 'map where the circles center should be. Move\n'
+ 'the mouse to control the radius. Release the mouse\n'
+ 'to finish.'
},
marker: {
title: 'Add a marker.\n\n'
+ 'Click on the button, then click on the map where\n'
+ 'you want the marker to appear. You can drag the\n'
+ 'marker around after it has been placed.'
} }
}); });
map.addControl(drawControl); map.addControl(drawControl);
@ -135,14 +153,11 @@ window.plugin.drawTools.enhancePolyLine = function() {
} }
// remove polyline markers because they get in the way // remove polyline markers because they get in the way
L.Polyline.Draw.prototype._updateMarkerHandlerOld = L.Polyline.Draw.prototype._updateMarkerHandler;
L.Polyline.Draw.prototype._updateMarkerHandler = function() { L.Polyline.Draw.prototype._updateMarkerHandler = function() {
if(!this._markers) return; this._updateMarkerHandlerOld();
if (this._markers.length > 1)
if(this._markers.length >= 2) this._markerGroup.removeLayer(this._markers[this._markers.length - 2]);
this._markerGroup.removeLayer(this._markers.shift());
if(this._markers.length >= 1)
this._markers[this._markers.length - 1].on('click', this._finishShape, this);
} }
} }

View File

@ -103,7 +103,9 @@ window.plugin.portalWeakness.portalAdded = function(data) {
var params = {fillColor: color, fillOpacity: fill_opacity, radius: data.portal.options.radius+1}; var params = {fillColor: color, fillOpacity: fill_opacity, radius: data.portal.options.radius+1};
if(resCount<8) if(resCount<8)
{ {
params["dashArray"] = "4,6"; // Hole per missing resonator
var dash = new Array(8-resCount + 1).join("1,4,") + "100,0"
params["dashArray"] = dash;
} }
data.portal.setStyle(params); data.portal.setStyle(params);
} }

View File

@ -18,6 +18,7 @@ body:after {
html, body, #map { html, body, #map {
height: 100%; height: 100%;
width: 100%;
} }
body { body {
@ -411,11 +412,14 @@ h3 {
.imgpreview { .imgpreview {
height: 200px; height: 200px;
background: no-repeat center center;
background-size: contain;
cursor: help;
overflow: hidden; overflow: hidden;
} }
.imgpreview img { .imgpreview img.hide {
cursor: help; display: none;
} }
#level { #level {