(function() { var css = { width: '12px', height: '12px', margin: '2px', borderRadius: '3px' }, reload = pandora.$ui.appPanel.reload, timeout, $users = $('
'), $icon = $('') .attr({src: Ox.getFlagByGeoname('', 16)}) .css(css) .bind({click: start}) .appendTo($users); load(); function getUsers() { Ox.Request.clearCache('findUsers'); pandora.api.findUsers({ keys: ['firstseen', 'lastseen', 'location'], query: { conditions: [{key: 'level', operator: '!=', value: 'robot'}], operator: '&' }, range: [0, 2400], sort: [{key: 'lastseen', operator: '-'}] }, function(result) { var time = new Date(), newUsers = result.data.items.filter(function(user) { return time - new Date(user.firstseen) < 86400000; }).length, allUsers = result.data.items.filter(function(user) { return time - new Date(user.lastseen) < 86400000; }).length; $users.empty(); result.data.items.slice(0, 16).forEach(function(user) { $users.prepend( Ox.Element({ element: '', tooltip: '
' + (user.location || 'Unknown') + '
' + Ox.formatDate(user.lastseen, '%T') + '
' }) .attr({src: Ox.getFlagByGeoname(user.location, 16)}) .css(css) .bindEvent({anyclick: stop}) ); }); $users.prepend( Ox.Element({ tooltip: Ox.formatNumber(newUsers) + '/' + Ox.formatNumber(allUsers) + ' (new/total) users in the last 24 hours' }) .addClass('OxLight') .css({float: 'left', margin: '2px', fontSize: '10px'}) .html( Ox.formatNumber(newUsers) + '/' + Ox.formatNumber(allUsers) ) .bindEvent({anyclick: stop}) ); }); timeout = setTimeout(getUsers, 60000); } function load() { pandora.$ui.mainMenu.find('.OxExtras').prepend($users); patchReload(); } function patchReload() { pandora.$ui.appPanel.reload = function() { reload(); load(); timeout ? start() : stop(); } } function start() { clearTimeout(timeout); timeout = void 0; getUsers(); } function stop() { clearTimeout(timeout); timeout = void 0; $('.OxTooltip').hide(); $users.empty().append($icon.bind({click: start})); } }());