show warning if unable to conenct to lsd
This commit is contained in:
parent
6013154708
commit
fd7d603934
3 changed files with 129 additions and 84 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@
|
||||||
MANIFEST
|
MANIFEST
|
||||||
build
|
build
|
||||||
db.sqlite
|
db.sqlite
|
||||||
|
secret.txt
|
||||||
|
|
14
README
Normal file
14
README
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
LSD example site
|
||||||
|
|
||||||
|
REQUIREMENTS
|
||||||
|
you have to install
|
||||||
|
|
||||||
|
Django
|
||||||
|
pip install Django
|
||||||
|
django_lsd
|
||||||
|
pip install git+https://git.0x2620.org/django_lsd.git#egg=django_lsd
|
||||||
|
|
||||||
|
CLINETS
|
||||||
|
and users will need to run lsd, more on that at
|
||||||
|
https://git.0x2620.org/?p=lsd.git
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
Ox.load('UI', function() {
|
Ox.load('UI', function() {
|
||||||
var current,
|
var lsdURL = 'http://127.0.0.1:15550',
|
||||||
|
current,
|
||||||
columns = [
|
columns = [
|
||||||
{
|
{
|
||||||
id: 'state',
|
id: 'state',
|
||||||
|
@ -73,73 +74,79 @@ Ox.load('UI', function() {
|
||||||
url: '/api/'
|
url: '/api/'
|
||||||
}).bindEvent({
|
}).bindEvent({
|
||||||
load: function(data) {
|
load: function(data) {
|
||||||
window.app.local = Ox.API({
|
Ox.get(lsdURL + '/api/', function(result) {
|
||||||
url: 'http://127.0.0.1:15550/api/'
|
!result ? warningDialog() : load(data);
|
||||||
}, function() {
|
|
||||||
if (!data.user) {
|
|
||||||
signupDialog();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
app._seed = setInterval(function() {
|
|
||||||
app.local.seedRequests({});
|
|
||||||
}, 60000);
|
|
||||||
app.local.config({});
|
|
||||||
app.$player = $('<audio>');
|
|
||||||
app.play = function(id) {
|
|
||||||
var url = 'http://127.0.0.1:15550/get/' + id;
|
|
||||||
app.$player.attr('src', url);
|
|
||||||
app.$player[0].play();
|
|
||||||
current = id;
|
|
||||||
}
|
|
||||||
app.stop = function() {
|
|
||||||
app.$player[0].pause();
|
|
||||||
}
|
|
||||||
app.api.find({}, function(result) {
|
|
||||||
app.items = result.data.items;
|
|
||||||
app.$list = Ox.TableList({
|
|
||||||
columns: columns,
|
|
||||||
columnsMovable: true,
|
|
||||||
columnsVisible: true,
|
|
||||||
items: result.data.items,
|
|
||||||
max: 1,
|
|
||||||
pageLength: Math.min(100, result.data.items.length),
|
|
||||||
//query: getQuery(),
|
|
||||||
scrollbarVisible: true,
|
|
||||||
//sortable: true,
|
|
||||||
sort: ['+id'],
|
|
||||||
unique: 'id',
|
|
||||||
}).bindEvent({
|
|
||||||
open: function(data) {
|
|
||||||
var id = data.ids[0],
|
|
||||||
item = app.$list.value(id);
|
|
||||||
if (item.state == 'available') {
|
|
||||||
app.play(id);
|
|
||||||
} else {
|
|
||||||
app.local.addRequests({ids: [id]}, function() {
|
|
||||||
app.$list.value(id, 'state', 'downloading');
|
|
||||||
var interval = setInterval(function () {
|
|
||||||
app.local.info({id: id}, function(result) {
|
|
||||||
if (Ox.isEmpty(result.data)) {
|
|
||||||
clearInterval(interval);
|
|
||||||
app.$list.value(id, 'state', 'available');
|
|
||||||
app.$list.value(id, 'info', '');
|
|
||||||
} else {
|
|
||||||
var percent = Math.round(100
|
|
||||||
* result.data.total_done
|
|
||||||
/ result.data.total_wanted) || 0;
|
|
||||||
app.$list.value(id, 'info', '' + percent + ' % downloaded');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 1000);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}).appendTo(Ox.$body);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function load(data) {
|
||||||
|
window.app.local = Ox.API({
|
||||||
|
url: lsdURL + '/api/'
|
||||||
|
}, function() {
|
||||||
|
if (!data.user) {
|
||||||
|
signupDialog();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
app._seed = setInterval(function() {
|
||||||
|
app.local.seedRequests({});
|
||||||
|
}, 60000);
|
||||||
|
app.local.config({});
|
||||||
|
app.$player = $('<audio>');
|
||||||
|
app.play = function(id) {
|
||||||
|
var url = lsdURL + '/get/' + id;
|
||||||
|
app.$player.attr('src', url);
|
||||||
|
app.$player[0].play();
|
||||||
|
current = id;
|
||||||
|
}
|
||||||
|
app.stop = function() {
|
||||||
|
app.$player[0].pause();
|
||||||
|
}
|
||||||
|
app.api.find({}, function(result) {
|
||||||
|
app.items = result.data.items;
|
||||||
|
app.$list = Ox.TableList({
|
||||||
|
columns: columns,
|
||||||
|
columnsMovable: true,
|
||||||
|
columnsVisible: true,
|
||||||
|
items: result.data.items,
|
||||||
|
max: 1,
|
||||||
|
pageLength: Math.min(100, result.data.items.length),
|
||||||
|
//query: getQuery(),
|
||||||
|
scrollbarVisible: true,
|
||||||
|
//sortable: true,
|
||||||
|
sort: ['+id'],
|
||||||
|
unique: 'id',
|
||||||
|
}).bindEvent({
|
||||||
|
open: function(data) {
|
||||||
|
var id = data.ids[0],
|
||||||
|
item = app.$list.value(id);
|
||||||
|
if (item.state == 'available') {
|
||||||
|
app.play(id);
|
||||||
|
} else {
|
||||||
|
app.local.addRequests({ids: [id]}, function() {
|
||||||
|
app.$list.value(id, 'state', 'downloading');
|
||||||
|
var interval = setInterval(function () {
|
||||||
|
app.local.info({id: id}, function(result) {
|
||||||
|
if (Ox.isEmpty(result.data)) {
|
||||||
|
clearInterval(interval);
|
||||||
|
app.$list.value(id, 'state', 'available');
|
||||||
|
app.$list.value(id, 'info', '');
|
||||||
|
} else {
|
||||||
|
var percent = Math.round(100
|
||||||
|
* result.data.total_done
|
||||||
|
/ result.data.total_wanted) || 0;
|
||||||
|
app.$list.value(id, 'info', '' + percent + ' % downloaded');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}).appendTo(Ox.$body);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function signupDialog() {
|
function signupDialog() {
|
||||||
var $form,
|
var $form,
|
||||||
$dialog = Ox.Dialog({
|
$dialog = Ox.Dialog({
|
||||||
|
@ -160,7 +167,7 @@ Ox.load('UI', function() {
|
||||||
username: values.username,
|
username: values.username,
|
||||||
password: values.password,
|
password: values.password,
|
||||||
url: document.location.origin + '/api/',
|
url: document.location.origin + '/api/',
|
||||||
extensions: ['ogg', 'mp3']
|
extensions: ['ogg', 'oga', 'mp3']
|
||||||
}, function() {
|
}, function() {
|
||||||
document.location.reload();
|
document.location.reload();
|
||||||
});
|
});
|
||||||
|
@ -174,30 +181,53 @@ Ox.load('UI', function() {
|
||||||
],
|
],
|
||||||
closeButton: true,
|
closeButton: true,
|
||||||
content: Ox.Element()
|
content: Ox.Element()
|
||||||
.append(
|
.css({
|
||||||
$form = Ox.Form({
|
padding: '48px'
|
||||||
items: [
|
|
||||||
Ox.Input({
|
|
||||||
id: 'username',
|
|
||||||
label: Ox._('Username'),
|
|
||||||
labelWidth: 120,
|
|
||||||
width: 320
|
|
||||||
}),
|
|
||||||
Ox.Input({
|
|
||||||
autovalidate: /.+/,
|
|
||||||
id: 'password',
|
|
||||||
label: Ox._('Password'),
|
|
||||||
labelWidth: 120,
|
|
||||||
type: 'password',
|
|
||||||
width: 320
|
|
||||||
})
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
),
|
.append(
|
||||||
|
$form = Ox.Form({
|
||||||
|
items: [
|
||||||
|
Ox.Input({
|
||||||
|
id: 'username',
|
||||||
|
label: Ox._('Username'),
|
||||||
|
labelWidth: 120,
|
||||||
|
width: 320
|
||||||
|
}),
|
||||||
|
Ox.Input({
|
||||||
|
autovalidate: /.+/,
|
||||||
|
id: 'password',
|
||||||
|
label: Ox._('Password'),
|
||||||
|
labelWidth: 120,
|
||||||
|
type: 'password',
|
||||||
|
width: 320
|
||||||
|
})
|
||||||
|
]
|
||||||
|
})
|
||||||
|
),
|
||||||
height: 192,
|
height: 192,
|
||||||
removeOnClose: true,
|
removeOnClose: true,
|
||||||
title: 'Sign Up',
|
title: 'Sign Up',
|
||||||
width: 432
|
width: 432
|
||||||
}).open();
|
}).open();
|
||||||
}
|
}
|
||||||
|
function warningDialog() {
|
||||||
|
var $dialog = Ox.Dialog({
|
||||||
|
buttons: [
|
||||||
|
],
|
||||||
|
closeButton: false,
|
||||||
|
content: Ox.Element()
|
||||||
|
.css({
|
||||||
|
padding: '48px'
|
||||||
|
})
|
||||||
|
.append(
|
||||||
|
'Could not connect to LSD on <a href="' + lsdURL + '">'+lsdURL+'</a><br>'
|
||||||
|
+ 'Please start or install <a href="https://git.0x2620.org/?p=lsd.git">LSD</a>'
|
||||||
|
|
||||||
|
),
|
||||||
|
height: 192,
|
||||||
|
removeOnClose: true,
|
||||||
|
title: 'LSD Not Running',
|
||||||
|
width: 432
|
||||||
|
}).open();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue