Skip to content
This repository was archived by the owner on Jul 6, 2022. It is now read-only.

Commit febfce4

Browse files
committed
Merge branch 'release/1.0.5'
2 parents c52fad0 + 641b340 commit febfce4

20 files changed

Lines changed: 925 additions & 613 deletions

File tree

app/js/AdvisoryList.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
var AdvisoryList = {
2+
types: ['Wormhole Detected',
3+
'Hostile Cloaked',
4+
'Hostile Logged Off',
5+
'Undock Camped',
6+
'Gate Bubbled'],
7+
8+
clear: function () {
9+
log('Clearing advisory list...');
10+
Data.advisories = {};
11+
},
12+
13+
lookup: function(systemId) {
14+
var advisories = $.map(AdvisoryList.types, function(t) {
15+
var a = {type: t, systemId: systemId}
16+
17+
if ($.inArray(t, Data.advisories[systemId]) !== -1) a.present = true;
18+
19+
return a;
20+
})
21+
22+
return advisories;
23+
},
24+
25+
addAdvisory: function(advisory) {
26+
if (! (Data.advisories[advisory.systemId] instanceof Array)) Data.advisories[advisory.systemId] = new Array;
27+
Data.advisories[advisory.systemId].push(advisory.type);
28+
29+
$.unique(Data.advisories[advisory.systemId]);
30+
},
31+
32+
clearAdvisory: function (advisory) {
33+
Data.advisories[advisory.systemId] = $.grep(Data.advisories[advisory.systemId], function(t) { return t != advisory.type });
34+
},
35+
36+
}

app/js/Data.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var Data = {
22

3+
advisories: [],
34
members: [],
45
hostiles: [],
56
events: [],
@@ -10,7 +11,7 @@ var Data = {
1011
domain: 'https://standing-fleet.apps.goonswarm.org/',
1112
apiUrl: '/api',
1213
alertStay: 5000,
13-
pollInterval: 7000,
14+
pollInterval: 5000,
1415
maxEvents: 20,
1516
maxScans: 20,
1617
uiSpeed: 400,

app/js/EventHandler.js

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ var EventHandler = {
3030
delete event.blink;
3131
}
3232

33-
if (event.suppress !== true) EventList.addEvent(event);;
33+
if (Util.dedupe(Data.events, event, 'text')) event.suppress = true;
34+
if (event.suppress !== true) EventList.addEvent(event);
3435
});
3536
},
3637

@@ -149,7 +150,23 @@ var EventHandler = {
149150
+ target.characterId + ');">' + target.characterName + '</a> has moved into '
150151
+ '<a href="javascript:CCPEVE.showInfo(5, ' + target.systemId + ');">'
151152
+ target.systemName + '</a>';
152-
153+
154+
} else if (event.type === 'addAdvisory') {
155+
var advisory = event.data;
156+
event.text = 'Advisory issued for '
157+
+ '<a href="javascript:CCPEVE.showInfo(5, ' + advisory.systemId + ');">'
158+
+ Data.systems[advisory.systemId].name + '</a>: '
159+
+ advisory.type;
160+
event.alert = true;
161+
162+
} else if (event.type === 'clearAdvisory') {
163+
var advisory = event.data;
164+
event.text = 'Advisory cleared for '
165+
+ '<a href="javascript:CCPEVE.showInfo(5, ' + advisory.systemId + ');">'
166+
+ Data.systems[advisory.systemId].name + '</a>: '
167+
+ advisory.type;
168+
event.alert = true;
169+
153170
} else if (event.type === 'sourcedClear') {
154171
var report = event.data;
155172
event.text = 'Intel channel reported '
@@ -222,6 +239,18 @@ var EventHandler = {
222239
SystemMap.refreshSystems();
223240
},
224241

242+
addAdvisory: function(advisory) {
243+
AdvisoryList.addAdvisory(advisory);
244+
SystemMap.refreshSystems();
245+
SystemMap.updateInfo(Data.systems[advisory.systemId].name);
246+
},
247+
248+
clearAdvisory: function(advisory) {
249+
AdvisoryList.clearAdvisory(advisory);
250+
SystemMap.refreshSystems();
251+
SystemMap.updateInfo(Data.systems[advisory.systemId].name);
252+
},
253+
225254
reportClear: function (system) {
226255
HostileList.clearBySystem(system.systemId);
227256
HostileList.sortAndRenderAll();
@@ -284,6 +313,11 @@ var EventHandler = {
284313
SystemMap.init();
285314
},
286315

316+
statusAdvisories: function (advisories) {
317+
advisories.forEach(AdvisoryList.addAdvisory);
318+
SystemMap.refreshSystems();
319+
},
320+
287321
statusEvents: function (events) {
288322
EventHandler.dispatchEvents(events, true);
289323
},

app/js/Main.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,25 @@ function submitHostileDetails(key, id, name, shipType, shipName) {
232232
});
233233
}
234234

235+
function reportAdvisory(button, systemId, type) {
236+
var state = ! $( button ).hasClass('present');
237+
var advisory = {systemId: systemId, type: type, state: state};
238+
239+
$(button).removeAttr('onclick');
240+
241+
Server.postAdvisory(advisory, function(error, data) {
242+
if (error) {
243+
handleError(error);
244+
return;
245+
}
246+
247+
EventList.addEvent({type: 'info', alert: true, text: 'Advisory reported on ' +
248+
'<a href="javascript:CCPEVE.showInfo(5, ' + systemId + ')">' +
249+
Data.systems[systemId].name + '</a> by you.'
250+
});
251+
});
252+
}
253+
235254
function leaveFleet() {
236255
UIPanels.showLoadingPanel('Leaving Standing Fleet...', function () {
237256
Server.leaveFleet(function(error, data) {

app/js/Server.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ var Server = {
9898
Server.ajaxPost('/fleets/status', statusData , callback);
9999
},
100100

101+
postAdvisory: function(advisoryData, callback) {
102+
Server.ajaxPost('/fleets/advisory', advisoryData , callback);
103+
},
104+
101105
postDetails: function(detailsData, callback) {
102106
Server.ajaxPost('/fleets/details', detailsData, callback);
103107
}

app/js/SystemMap.js

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,16 @@ var SystemMap = {
151151
.attr("y", 10)
152152
.text(function(n) { return n.system.name; });
153153

154+
node_groups.append("text")
155+
.attr("class", "advisories")
156+
.attr("text-anchor", "middle")
157+
.attr("alignment-baseline", "middle")
158+
.attr("x", rect_width / 2)
159+
.attr("y", -10)
160+
.text(function(n) {
161+
return UI.advisoryUnicode( Data.advisories[n.system.id] );
162+
});
163+
154164
node_groups.on('click', function(n) {
155165
SystemMap.updateInfo( n.system.name );
156166
});
@@ -304,19 +314,20 @@ var SystemMap = {
304314
Server.ajaxGet('/map/system/' + system_name, function(error, results) {
305315
if (results === null) return;
306316
var system = { name: results.name,
317+
systemId: results.id,
307318
region: Data.regions[ results.regionID ].name,
308319
hostile_count: SystemMap.hostile_count( results ),
309320
faded_count: SystemMap.faded_count( results ),
310321
gates: $.map( results.jumps, function(j) { return Data.systems[ j.to ]})
311322
}
312323

313324
system.last_report = (results.reports.length) ? moment(results.reports.pop().ts).format('HH:MM:SS') : 'Never';
314-
315-
Data.ui.mapInfo.html( $(Data.templates.system_info(system)) )
316-
$('#system-info dl')
317-
.fadeIn(Data.config.uiSpeed)
318-
.delay(Data.config.alertStay)
319-
.fadeOut(Data.config.uiSpeed * 5);
325+
system.advisories = AdvisoryList.lookup(results.id);
326+
system.active_advisories = $.grep(system.advisories, function(a) { return a.present == true; });
327+
if (results.id == Data.state.self.systemId) system.allow_report = true;
328+
329+
Data.ui.mapInfo.html( $(Data.templates.system_info(system)) );
330+
Data.ui.mapInfo.children('dl').fadeIn(Data.config.uiSpeed)
320331
});
321332

322333
},
@@ -325,6 +336,11 @@ var SystemMap = {
325336
d3.selectAll('g.node rect')
326337
.attr("class", function(n) { return 'status-' + SystemMap.system_color(n.system); });
327338

339+
d3.selectAll('g.node text.advisories')
340+
.text(function(n) {
341+
return UI.advisoryUnicode( Data.advisories[n.system.id] );
342+
});
343+
328344
SystemMap.updateHud( Data.systems[ Data.state.self.systemId ].name );
329345
},
330346

app/js/UI.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,23 @@ var UI = {
144144
"Whoring on the pod"
145145
];
146146
return msgs[Math.floor(Math.random()*msgs.length)] + "...";
147+
},
148+
149+
advisoryUnicode: function(advisory_list) {
150+
if (advisory_list === undefined) return "";
151+
if (advisory_list.length === 0) return "";
152+
153+
return $.map(advisory_list, function(a) {
154+
if (a == 'Wormhole Detected') return '\uf138';
155+
else if (a == 'Hostile Cloaked') return '\uf0c2';
156+
else if (a == 'Hostile Faded') return '\uf017';
157+
else if (a == 'Hostile Logged Off') return '\uf08b';
158+
else if (a == 'Undock Camped') return '\uf023';
159+
else if (a == 'Gate Bubbled') return '\uf192';
160+
else if (a == 'Hostiles') return '\uf0fb';
161+
else return '';
162+
163+
}).join("");
147164
}
148165
};
149166

@@ -157,6 +174,7 @@ Handlebars.registerHelper('format_ts', function(ts) {
157174
});
158175

159176
Handlebars.registerHelper('ui_icon', function(icon) {
177+
if (icon == 'addAdvisory') return 'bolt';
160178
if (icon == 'alert') return 'bell';
161179
if (icon == 'approve') return 'check';
162180
if (icon == 'close') return 'close';
@@ -175,6 +193,7 @@ Handlebars.registerHelper('ui_icon', function(icon) {
175193
if (icon == 'options') return 'cog';
176194
if (icon == 'reportClear') return 'check';
177195
if (icon == 'reportHostile') return 'crosshairs';
196+
if (icon == 'clearAdvisory') return 'check';
178197
if (icon == 'scan') return 'wifi';
179198
if (icon == 'scanPosted') return 'wifi';
180199
if (icon == 'settings') return 'cog';
@@ -185,6 +204,13 @@ Handlebars.registerHelper('ui_icon', function(icon) {
185204
if (icon == 'updateHostile') return 'crosshairs';
186205
if (icon == 'updateSystemMap') return 'sitemap';
187206
if (icon == 'youJoined') return 'user';
207+
208+
if (icon == 'Wormhole Detected') return 'chevron-circle-right';
209+
if (icon == 'Hostile Cloaked') return 'cloud';
210+
if (icon == 'Hostile Faded') return 'clock-o';
211+
if (icon == 'Hostile Logged Off') return 'sign-out';
212+
if (icon == 'Undock Camped') return 'lock';
213+
if (icon == 'Gate Bubbled') return 'dot-circle-o';
188214

189215
return 'exclamation';
190216
});

app/js/Util.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
var Util = {
22

33
compareRegion: function( pilot ) {
4-
return Data.systems[ pilot.systemId ].regionID === Data.systems[ Data.state.self.systemId ].regionID;
4+
try {
5+
return Data.systems[ pilot.systemId ].regionID === Data.systems[ Data.state.self.systemId ].regionID;
6+
} catch(e) {
7+
return false;
8+
}
59
},
610

11+
dedupe: function(list, element, key) {
12+
var match = $.grep(list, function(e) { return e[key] === element[key] && e.ts.toString().slice(0,-2) === element.ts.toString().slice(0,-2) });
13+
14+
return (match.length > 0) ? true : false;
15+
},
16+
717
isShip: function (shipName) {
818
return (typeof Data.ships[shipName] !== 'undefined' && Data.ships[shipName].icons !== undefined)
919
},
@@ -49,10 +59,16 @@ var Util = {
4959
},
5060

5161
redirectToKeyUrl: function (fleetKey) {
52-
window.location = location.protocol
62+
if (fleetKey !== undefined || fleetKey !== 'undefined') {
63+
window.location = location.protocol
5364
+ '//' + location.hostname
5465
+ (location.port ? ':' + location.port : '')
55-
+ '/' + fleetKey + '/';
66+
+ '/' + fleetKey + '/';
67+
} else {
68+
Data.poll = false;
69+
stopPolling();
70+
Util.redirectToBasePath();
71+
}
5672
},
5773

5874
redirectToBasePath: function () {

0 commit comments

Comments
 (0)