several fixes for lsp, login save on error, enter button login and refresh viewer stats (#17, 1h)

This commit is contained in:
That-Guy 2012-04-21 11:25:25 +02:00
parent 2325d3be5a
commit d20729fb64

View file

@ -460,7 +460,7 @@ td
if(protocol === null || (protocol[1] && protocol[1] === 'file')) if(protocol === null || (protocol[1] && protocol[1] === 'file'))
{ {
return 'VoD'; return 'Recorded';
}else{ }else{
return 'Live'; return 'Live';
} }
@ -486,6 +486,96 @@ td
} }
function getData(callback)
{
// this beast returns the server settings, but doesn't authorize first,
// nor does it save the retrieved data.
var data =
{
'authorize':
{
'username': settings.credentials.username,
'password': MD5(MD5(settings.credentials.password) + settings.credentials.authstring)
}
};
$.ajax(
{
'url': settings.server,
'data':
{
"command": JSON.stringify(data)
},
'dataType': 'jsonp',
'timeout': 2500,
'error': function()
{
console.log('ERROR ERROR ERROR @514');
},
'success': function(d)
{
var ret = $.extend(true,
{
"config":
{
"host": "",
"limits": [],
"name": "",
"protocols": {},
"status": "",
"version": ""
},
"streams": {},
"log": {},
"statistics": {}
}, d);
if(callback)
{
callback(ret);
}
}
});
}
function getStatData(callback)
{
getData(function(data)
{
console.log('getStatData: real data retrieved: ', data);
var svr, viewer, ret,
numstr = 0,
numvwr = 0,
numtotstr = 0;
for(svr in data.statistics)
{
if(data.statistics[svr].curr)
{
for(viewer in data.statistics[svr].curr)
{
numvwr++;
}
}
}
for(svr in data.streams)
{
numtotstr++;
if(data.streams[svr].online && data.streams[svr].online == 1)
{
numstr++;
}
}
ret = {streams: [numtotstr, numstr], viewers: numvwr};
callback(ret);
});
}
// connect to server and set/get settings // connect to server and set/get settings
function loadSettings(callback) function loadSettings(callback)
{ {
@ -579,6 +669,9 @@ td
// used on the overview page. clear when not on that page in showTab()
var sinterval = null;
// show tab // show tab
@ -586,6 +679,7 @@ td
{ {
// clear page // clear page
$('#page').html(''); $('#page').html('');
clearInterval(sinterval);
switch(name) switch(name)
{ {
@ -601,6 +695,9 @@ td
settings.credentials.password = pass.val(); settings.credentials.password = pass.val();
settings.server = host.val() || host.attr('placeholder'); settings.server = host.val() || host.attr('placeholder');
// save username, URL in address
location.hash = user.val() + '@' + host.val();
// try to login // try to login
setHeaderState('logingin'); setHeaderState('logingin');
@ -637,6 +734,35 @@ td
$('#page').append( $('#page').append(
$('<div>').attr('id', 'login').append(host).append(user).append(pass).append(conn) $('<div>').attr('id', 'login').append(host).append(user).append(pass).append(conn)
); );
// btw: if we 'enter' in host, user or pass we should try to login.
function hand(e)
{
if(e.keyCode == 13)
{
conn.trigger('click'); // conn = login button :)
}
}
host.keypress(hand);
user.keypress(hand);
pass.keypress(hand);
// retrieve address hash stuff
var adr = location.hash.replace('#', '').split('@');
if(adr.length == 2)
{
console.log(adr[0], adr[1]);
}
// put it in the page
host.val(adr[1]);
user.val(adr[0]);
break; break;
@ -644,31 +770,6 @@ td
case 'overview': case 'overview':
var svr, viewer,
numstr = 0,
numvwr = 0,
numtotstr = 0;
for(svr in settings.settings.statistics)
{
if(settings.settings.statistics[svr].curr)
{
for(viewer in settings.settings.statistics[svr].curr)
{
numvwr++;
}
}
}
for(svr in settings.settings.streams)
{
numtotstr++;
if(settings.settings.streams[svr].online && settings.settings.streams[svr].online == 1)
{
numstr++;
}
}
$('#page').append( $('#page').append(
$('<div>').attr('id', 'editserver').append( $('<div>').attr('id', 'editserver').append(
@ -689,15 +790,32 @@ td
) )
).append( ).append(
$('<label>').text('Streams').append( $('<label>').text('Streams').append(
$('<span>').text( numstr + ' of ' + numtotstr + ' online') $('<span>').attr('id', 'cur_streams_online').text('retrieving data...')
) )
).append( ).append(
$('<label>').text('Viewers').append( $('<label>').text('Viewers').append(
$('<span>').text( numvwr ) $('<span>').attr('id', 'cur_num_viewers').text('retrieving data...')
) )
) )
); );
function showStats()
{
getStatData(function(data)
{
console.log('getting live data... @' + new Date().getTime());
$('#cur_streams_online').html('').text(data.streams[0] + ' of ' + data.streams[1] + ' online');
$('#cur_num_viewers').html('').text(data.viewers);
});
}
sinterval = setInterval(function()
{
showStats();
}, 30000);
// instantly call it the first time
showStats();
$('#editserver').append( $('#editserver').append(
@ -742,13 +860,13 @@ td
tr.append( $('<td>').attr('class', 'center').append( $('<button>').click(function() tr.append( $('<td>').attr('class', 'center').append( $('<button>').click(function()
{ {
if(confirmDelete('Are you sure you want to delete this protocol?') == true) if(confirmDelete('Are you sure you want to delete this protocol?') == true)
{ {
var id = $(this).parent().parent().attr('id').replace('protocol-', ''); var id = $(this).parent().parent().attr('id').replace('protocol-', '');
delete settings.settings.config.protocols[protocol]; delete settings.settings.config.protocols[protocol];
$(this).parent().parent().remove(); $(this).parent().parent().remove();
loadSettings(); loadSettings();
} }
}).text('delete') ) ); }).text('delete') ) );
$tbody.append(tr); $tbody.append(tr);
@ -982,19 +1100,14 @@ if(confirmDelete('Are you sure you want to delete this protocol?') == true)
case 'embed':
case 'embed': var url = settings.settings.streams[streamname].channel.URL;
// FIXME use server URLs from stream_links.js
var url = settings.settings.streams[streamname].channel.URL;
$('#page').append( $('<p>').text('This feature is not yet implemented.') );
$('#page').append( $('<p>').text('The URL for this stream is ').append( $('<span>').attr('class', 'nocapitals').text(url) ) );
break;
$('#page').append( $('<p>').text('This feature is not yet implemented.') );
$('#page').append( $('<p>').text('The URL for this stream is ').append( $('<span>').attr('class', 'nocapitals').text(url) ) );
break;
@ -1049,26 +1162,26 @@ case 'embed':
tr.append( $('<td>').attr('class', 'center').append( $('<button>').click(function() tr.append( $('<td>').attr('class', 'center').append( $('<button>').click(function()
{ {
if(confirmDelete('Are you sure you want to delete this limit?') == true) if(confirmDelete('Are you sure you want to delete this limit?') == true)
{ {
var id = $(this).parent().parent().attr('id').replace('limits-', ''); var id = $(this).parent().parent().attr('id').replace('limits-', '');
var at = $($(this).parent().parent().children()[3]).attr('id'); var at = $($(this).parent().parent().children()[3]).attr('id');
if(at == undefined) if(at == undefined)
{ {
settings.settings.config.limits.splice(id, 1); settings.settings.config.limits.splice(id, 1);
}else{ }else{
var data = at.replace('limit-at-', '').split('-'); var data = at.replace('limit-at-', '').split('-');
var loc = data.pop(); var loc = data.pop();
data = data.join('-'); data = data.join('-');
settings.settings.streams[data].limits.splice(loc, 1); settings.settings.streams[data].limits.splice(loc, 1);
} }
$(this).parent().parent().remove(); $(this).parent().parent().remove();
loadSettings(); loadSettings();
} }
}).text('delete') ) ); }).text('delete') ) );
$tbody.append(tr); $tbody.append(tr);
@ -1188,8 +1301,6 @@ if(confirmDelete('Are you sure you want to delete this limit?') == true)
case 'disconnect': case 'disconnect':
showTab('login'); showTab('login');
setHeaderState('disconnected'); setHeaderState('disconnected');
@ -1207,11 +1318,11 @@ if(confirmDelete('Are you sure you want to delete this limit?') == true)
settings: {} settings: {}
}; };
break; break;
} // end switch } // end switch :D
//placeholder for older browsers T_T //placeholder for older browsers
$('input[placeholder]').placeholder(); $('input[placeholder]').placeholder();
} }