[missions] fix mission permalinks not working if mission is not in cache

fixed issue #1034
This commit is contained in:
fkloft 2015-08-10 22:16:09 +02:00
parent 5c43225642
commit 631d459f56

View File

@ -2,7 +2,7 @@
// @id iitc-plugin-missions@jonatkins // @id iitc-plugin-missions@jonatkins
// @name IITC plugin: Missions // @name IITC plugin: Missions
// @category Info // @category Info
// @version 0.1.1.@@DATETIMEVERSION@@ // @version 0.1.2.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@ // @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@ // @downloadURL @@DOWNLOADURL@@
@ -228,13 +228,17 @@ window.plugin.missions = {
}, },
zoomToMission: function(mission) { zoomToMission: function(mission) {
map.fitBounds(this.getMissionBounds(mission), {maxZoom: 17});
},
getMissionBounds: function(mission) {
var latlngs = mission.waypoints.filter(function(waypoint) { var latlngs = mission.waypoints.filter(function(waypoint) {
return !!waypoint.portal; return !!waypoint.portal;
}).map(function(waypoint) { }).map(function(waypoint) {
return [waypoint.portal.latE6/1E6, waypoint.portal.lngE6/1E6]; return [waypoint.portal.latE6/1E6, waypoint.portal.lngE6/1E6];
}); });
map.fitBounds(L.latLngBounds(latlngs), {maxZoom: 17}); return L.latLngBounds(latlngs);
}, },
loadMissionsInBounds: function(bounds, callback, errorcallback) { loadMissionsInBounds: function(bounds, callback, errorcallback) {
@ -857,10 +861,21 @@ window.plugin.missions = {
}, },
// called after IITC and all plugin loaded // called after IITC and all plugin loaded
registerFieldForSyncing: function() { onIITCLoaded: function() {
if(!window.plugin.sync) return; var match = location.pathname.match(/\/mission\/([0-9a-z.]+)/);
if(match && match[1]) {
var mid = match[1];
this.loadMission(mid, function(mission) {
this.openMission(mid);
this.zoomToMission(mission);
}.bind(this));
}
if(window.plugin.sync) {
window.plugin.sync.registerMapForSync('missions', 'checkedMissions', this.syncCallback.bind(this), this.syncInitialed.bind(this)); window.plugin.sync.registerMapForSync('missions', 'checkedMissions', this.syncCallback.bind(this), this.syncInitialed.bind(this));
window.plugin.sync.registerMapForSync('missions', 'checkedWaypoints', this.syncCallback.bind(this), this.syncInitialed.bind(this)); window.plugin.sync.registerMapForSync('missions', 'checkedWaypoints', this.syncCallback.bind(this), this.syncInitialed.bind(this));
}
}, },
// called after local or remote change uploaded // called after local or remote change uploaded
@ -962,12 +977,7 @@ window.plugin.missions = {
// mission may be a cached mission or contain the full details // mission may be a cached mission or contain the full details
if(mission.waypoints) { if(mission.waypoints) {
var latlngs = mission.waypoints.filter(function(waypoint) { result.bounds = this.getMissionBounds(mission);
return !!waypoint.portal;
}).map(function(waypoint) {
return [waypoint.portal.latE6/1E6, waypoint.portal.lngE6/1E6];
});
result.bounds = L.latLngBounds(latlngs)
} }
if(mission.typeNum) { if(mission.typeNum) {
result.icon = this.missionTypeImages[mission.typeNum] || this.missionTypeImages[0]; result.icon = this.missionTypeImages[mission.typeNum] || this.missionTypeImages[0];
@ -1078,13 +1088,8 @@ window.plugin.missions = {
window.addHook('plugin-missions-missions-refreshed', this.onMissionsRefreshed.bind(this)); window.addHook('plugin-missions-missions-refreshed', this.onMissionsRefreshed.bind(this));
window.addHook('plugin-missions-waypoint-changed', this.onWaypointChanged.bind(this)); window.addHook('plugin-missions-waypoint-changed', this.onWaypointChanged.bind(this));
window.addHook('plugin-missions-waypoints-refreshed', this.onWaypointsRefreshed.bind(this)); window.addHook('plugin-missions-waypoints-refreshed', this.onWaypointsRefreshed.bind(this));
window.addHook('iitcLoaded', this.registerFieldForSyncing.bind(this));
var match = location.pathname.match(/\/mission\/([0-9a-z.]+)/); window.addHook('iitcLoaded', this.onIITCLoaded.bind(this));
if(match && match[1]) {
var mid = match[1];
this.openMission(mid);
}
} }
}; };