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

Commit b89b510

Browse files
committed
Cleaning up client javascript. Fixing submitting scans/locals/etc with a hotkey for enter
1 parent 7e94499 commit b89b510

15 files changed

Lines changed: 337 additions & 1085 deletions

File tree

‎app/js/UIPanels.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ var UIPanels = {
196196
.fadeIn(Data.config.uiSpeed, function () {
197197
$(this).find('.textinput').focus().on('keydown', function (event) {
198198
if (event.keyCode == 13) {
199-
$(this).siblings('.submit-join, .submit-scan').click();
199+
$(this).siblings('.submit').children('a').click();
200200
return false;
201201
}
202202
});
@@ -209,7 +209,7 @@ var UIPanels = {
209209
UI.dim(function () {
210210
compiledPanel.find('.textinput').focus().on('keydown', function (event) {
211211
if (event.keyCode == 13) {
212-
$(this).siblings('.submit-join, .submit-scan').click();
212+
$(this).siblings('.submit').children('a').click();
213213
return false;
214214
}
215215
});

‎app/js/Util.js‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,8 @@ var Util = {
2525
return $('<div/>').append(returnElement).html();
2626
},
2727

28-
getTime: function (ts) {
29-
var date = ts ? new Date(ts) : new Date();
30-
date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));
31-
32-
return ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2);
28+
getTime: function () {
29+
return moment().utc().format('HH:mm:ss');
3330
},
3431

3532
escapeHTML: function (string) {

‎app/js/client/Clipboard.js‎

Whitespace-only changes.

‎app/js/client/Data.js‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
var Data = {
2+
config: {
3+
domain: 'https://standing-fleet.herokuapp.com/',
4+
apiUrl: '/api',
5+
alertStay: 5000,
6+
maxEvents: 20,
7+
uiSpeed: 400,
8+
log: 'console'
9+
},
10+
11+
state: {
12+
alertCount: 0,
13+
dimmed: false,
14+
pollLoop: 0
15+
},
16+
17+
build_ui: function() {
18+
return {
19+
logo: $('#top-logo'),
20+
alertContainer: $('#alert-container'),
21+
contentWrapper: $('#content-wrapper'),
22+
dim: $('#dim'),
23+
24+
topMenu: $('#top-menu'),
25+
topMenu_clipboard: $('#top-menu-clipboard'),
26+
topMenu_logs: $('#top-menu-logs'),
27+
28+
bottomMenu: $('#bottom-menu'),
29+
bottomMenu_spinner: $('#bottom-menu-spinner'),
30+
bottomMenu_menu: $('#bottom-menu-menu'),
31+
32+
clipboard: $('#clipboard'),
33+
clipboard_list: $('#clipboard > .list'),
34+
logs: $('#logs'),
35+
logs_list: $('#logs > .list')
36+
}
37+
},
38+
39+
build_templates: function() {
40+
return {
41+
alert: Templates.alert,
42+
event: Templates.event,
43+
panel: Templates.panel,
44+
}
45+
},
46+
};

‎app/js/client/Main.js‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
var gui = require('nw.gui')
2+
, moment = require('moment')
3+
, fs = require('fs')
4+
, Tail = require('tail').Tail
5+
6+
window.onload = function () {
7+
initializeClient();
8+
};
9+
10+
window.onresize = function() {
11+
UI.update_scrollables();
12+
};
13+
14+
function initializeClient() {
15+
log('Client Init...');
16+
Data.ui = Data.build_ui();
17+
Data.templates = Data.build_templates();
18+
19+
UI.stopSpin();
20+
UI.registerEventHandlers();
21+
22+
pollClipboard();
23+
gui.Window.get().show();
24+
};
25+
26+
function pollClipboard() {
27+
UI.startSpin();
28+
setTimeout(function() {
29+
var cb = gui.Clipboard.get();
30+
var clipboard = document.getElementById('clipboard')
31+
var event = {'time': Util.getTime(), 'text': cb.get('text')};
32+
33+
var renderedEvent = $(Templates.event(event))
34+
Data.ui.clipboard_list.prepend(renderedEvent);
35+
UI.stopSpin();
36+
37+
pollClipboard();
38+
}, 7000);
39+
}
40+
41+
function log(message) {
42+
if (!Data.config.log) return;
43+
44+
if (Data.config.log === 'events') {
45+
EventList.addEvent({
46+
type: 'info',
47+
text: message
48+
});
49+
50+
} else if (Data.config.log === 'console') {
51+
console.log('[' + Date.now() + '] - ' + message)
52+
}
53+
};

‎app/js/client/UI.js‎

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
var UI = {
2+
3+
dim: function(callback) {
4+
if (!Data.state.dimmed) {
5+
Data.ui.dim.fadeIn(Data.config.uiSpeed, callback);
6+
}
7+
},
8+
9+
unDim: function(callback) {
10+
if (!Data.state.dimmed) {
11+
Data.ui.dim.fadeOut(Data.config.uiSpeed, callback);
12+
}
13+
14+
return UI;
15+
},
16+
17+
startSpin: function () {
18+
Data.ui.bottomMenu_spinner
19+
.fadeIn(Data.config.uiSpeed*4);
20+
},
21+
22+
stopSpin: function () {
23+
Data.ui.bottomMenu_spinner
24+
.fadeOut(Data.config.uiSpeed*4);
25+
},
26+
27+
registerEventHandlers: function () {
28+
Data.ui.topMenu_clipboard.on('click', $.proxy(UI.tabClick, null, "clipboard"));
29+
Data.ui.topMenu_logs.on('click', $.proxy(UI.tabClick, null, "logs"));
30+
Data.ui.bottomMenu_menu.on('click', $.proxy(UIPanels.showMenuPanel, null, false));
31+
UI.update_scrollables();
32+
},
33+
34+
update_scrollables: function() {
35+
Data.ui.clipboard_list.slimScroll({height: 'auto', color: '#ffcc2a', alwaysVisible: true});
36+
Data.ui.logs_list.slimScroll({height: 'auto', color: '#ffcc2a', alwaysVisible: true});
37+
},
38+
39+
showAlert: function (event) {
40+
var alert = $(Data.templates.alert(event));
41+
42+
alert.on('mouseover',function () {
43+
alert.stop(true, true);
44+
}).on('mouseout',function () {
45+
UI.idleAlert(alert);
46+
});
47+
48+
Data.ui.alertContainer.append(alert);
49+
50+
alert.fadeIn(Data.config.uiSpeed, function () {
51+
UI.idleAlert(alert);
52+
});
53+
},
54+
55+
idleAlert: function (alert) {
56+
alert.delay(Data.config.alertStay)
57+
.fadeOut(Data.config.uiSpeed, function() {
58+
alert.remove();
59+
});
60+
},
61+
62+
tabClick: function (tab) {
63+
if ($('#'+tab).hasClass('active')) return;
64+
65+
$('#content-wrapper').fadeOut('fast',function(){
66+
$('.main-content.active, .menu-button.active ').removeClass('active');
67+
$('.menu-button.' + tab + ', #' + tab).addClass('active');
68+
$('.menu-button.' + tab).removeClass('blink');
69+
$('#content-wrapper').fadeIn('fast');
70+
});
71+
},
72+
73+
blinkTab: function (tab) {
74+
if ($('#'+tab).hasClass('active')) return;
75+
$('.menu-button.' + tab).addClass('blink');
76+
},
77+
78+
getLoadingText: function () {
79+
var msgs = [
80+
"Hull tanking",
81+
"EFT warrioring",
82+
"Smacktalking",
83+
"Shitpoasting",
84+
"Lemming'ing",
85+
"Clicking jump instead of bridge",
86+
"Overheating guns",
87+
"Bumping the titan",
88+
"Fitting a windicator",
89+
"Burning point",
90+
"Posting gudfites",
91+
"Z0r",
92+
"Whoring on the pod"
93+
];
94+
return msgs[Math.floor(Math.random()*msgs.length)] + "...";
95+
}
96+
}

‎app/js/client/UIPanels.js‎

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
var UIPanels = {
2+
3+
substringMatcher: function(strs) {
4+
return function findMatches(q, cb) {
5+
var matches, substrRegex;
6+
matches = [];
7+
substrRegex = new RegExp(q, 'i');
8+
9+
$.each(strs, function(i, str) {
10+
if (substrRegex.test(str)) matches.push({ value: str });
11+
});
12+
13+
cb(matches);
14+
};
15+
},
16+
17+
showMenuPanel: function(callback) {
18+
var panel = {
19+
type: 'options',
20+
image: 'panel-settings.png',
21+
title: 'Standing Fleet Options',
22+
footer: '&copy; 2014 Goonswarm Federation',
23+
closeable: true,
24+
formitems: [
25+
{button: {legend: 'Fleet Actions', class: 'reload-armada no-margin', text: 'Reload Standing Fleet', onClick: 'location.reload()'}}
26+
]
27+
};
28+
29+
UIPanels.showPanel(panel, callback);
30+
},
31+
32+
showPendingPanel: function (callback) {
33+
var panel = {
34+
type: 'pending',
35+
image: 'spinner.gif',
36+
text: 'Waiting for Standing Fleet to accept...',
37+
formitems: [
38+
{button: {text: 'Cancel', class: 'abort-pending', onClick: 'leaveFleetButtonClick(this)'}}
39+
],
40+
};
41+
42+
UIPanels.showPanel(panel, callback);
43+
},
44+
45+
showLoadingPanel: function (text, callback) {
46+
var panel = {
47+
type: 'loading',
48+
title: text || UI.getLoadingText(),
49+
image: 'spinner.gif'
50+
};
51+
52+
UIPanels.showPanel(panel, callback);
53+
},
54+
55+
showPanel: function (params, callback) {
56+
var compiledPanel = $(Data.templates.panel(params));
57+
58+
if (Data.ui.dim.children().length) {
59+
60+
Data.ui.dim.children().remove();
61+
compiledPanel
62+
.css('display','none')
63+
.appendTo(Data.ui.dim)
64+
.fadeIn(Data.config.uiSpeed, function () {
65+
$(this).find('.textinput').focus().on('keydown', function (event) {
66+
if (event.keyCode == 13) {
67+
$(this).siblings('.submit-join, .submit-scan').click();
68+
return false;
69+
}
70+
});
71+
if (callback) callback();
72+
});
73+
74+
} else {
75+
76+
compiledPanel.appendTo(Data.ui.dim);
77+
UI.dim(function () {
78+
compiledPanel.find('.textinput').focus().on('keydown', function (event) {
79+
if (event.keyCode == 13) {
80+
$(this).siblings('.submit-join, .submit-scan').click();
81+
return false;
82+
}
83+
});
84+
if (callback) callback();
85+
});
86+
}
87+
},
88+
89+
hidePanel: function (callback) {
90+
Data.ui.dim.children().remove();
91+
UI.unDim(callback);
92+
}
93+
94+
};

‎app/js/client/Util.js‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
var Util = {
2+
getTime: function (ts) {
3+
var date = ts ? new Date(ts) : new Date();
4+
date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));
5+
6+
return ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2);
7+
}
8+
};

‎app/styles/main.css‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ a:hover { color: #fff0be }
3333
/* Fix 'height: 100%;' */
3434
div#page, div#content-wrapper { position: relative; height: 100%; width: 100%; box-sizing: border-box; }
3535

36-
#bottom-bar, #top-bar { width: 100%; }
36+
#bottom-bar, #top-bar { width: 100%; -webkit-app-region: drag; }
3737

3838
#top-menu, #top-bar { top: 0 }
3939
#bottom-bar, #bottom-menu { bottom: 0 }
@@ -442,7 +442,7 @@ rect.status-hostile { stroke: #d9534f; fill: #74312f; }
442442
*/
443443

444444
.event {
445-
color: #bbb;
445+
color: #ccc;
446446
clear: both;
447447
border-top: 0.16rem solid #555;
448448
background-color: #222;
@@ -453,6 +453,13 @@ rect.status-hostile { stroke: #d9534f; fill: #74312f; }
453453
padding: 0.2rem 0.5rem;
454454
}
455455

456+
/*.event i {
457+
line-height: 2rem;
458+
float: left;
459+
margin-left: 0.5rem;
460+
}*/
461+
462+
.event i,
456463
.event img.icon {
457464
position: absolute;
458465
top: 0.7rem;

‎app/templates/alert.hbs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<div class="event alert {{type}}" onClick="EventList.alertClick('{{type}}', '{{id}}')">
22
{{#if type}}
33
<img class="icon" src="/images/icon-{{type}}.png" />
4-
<span class="text">{{{text}}}</span>
4+
<span class="text">{{text}}</span>
55
{{else}}
6-
<span class="text"><i class="fa fa-exclamation-triangle"></i> {{{text}}}</span>
6+
<span class="text"><i class="fa fa-exclamation-triangle"></i> {{text}}</span>
77
{{/if}}
88
</div>

0 commit comments

Comments
 (0)