1168 lines
30 KiB
JavaScript
Executable File
1168 lines
30 KiB
JavaScript
Executable File
var mao = {};
|
|
var misses = {};
|
|
$(document).on('ready', function() {
|
|
treeMaker();
|
|
mao = settingGrabber({ 'app': 'music', 'setting': 'mao' });
|
|
});
|
|
$(document).on('click', '#music_toggle', function() {
|
|
musicToggle();
|
|
});
|
|
|
|
function musicToggle() {
|
|
var url = '/manager/music';
|
|
var timestamp = Date.now();
|
|
var jmiss = JSON.stringify(misses);
|
|
if ($('#music').length == 0 ) {
|
|
$.ajax({
|
|
url: url,
|
|
type: 'GET',
|
|
data: { window_maker: 'yes', timestamp: timestamp, misses: jmiss },
|
|
success: function(response) {
|
|
var window_id = windowMaker(response);
|
|
|
|
musicInit();
|
|
|
|
}, error: function (response) { }
|
|
});
|
|
}
|
|
else {
|
|
var music_window = $('#music').closest('.wind').attr('id');
|
|
$('#' + music_window).show();
|
|
$('.little_window[app="music"]').hide()
|
|
topLevelNow($('#' + music_window));
|
|
musicInit();
|
|
}
|
|
}
|
|
|
|
async function musicInit(method) {
|
|
treeMaker();
|
|
if (method != 'search') {
|
|
tree.sound.volume = 0;
|
|
}
|
|
var player = JSON.parse($('#music_player_data').text());
|
|
|
|
//tree.sound.currentTime = player.currentTime;
|
|
$('#music_player_data').load("/manager/cache_get?app=music&context=player&json=yes");
|
|
if (isJson($('#music_player_data').text()) && method != 'search') {
|
|
|
|
var jpd = $('#music_player_data').text();
|
|
var pd = JSON.parse(jpd);
|
|
console.log(pd);
|
|
$('#video').attr('theatre_mode', pd.theatre_mode);
|
|
$('#video').attr('type', pd.type);
|
|
mediaMaker({ src: pd.file, currentTime: pd.currentTime, method: 'benign', timestamp: Date.now(), state: pd.state, });
|
|
if (method != 'search') {
|
|
tree.sound.currentTime = pd.currentTime;
|
|
}
|
|
// if (method != 'search') {
|
|
tree.sound.state = pd.state;
|
|
// }
|
|
$('#music_player_data').text(jpd);
|
|
console.log(pd);
|
|
|
|
$('.music_file').removeClass('playing');
|
|
var mf = $('.music_file[file="' + pd.file + '"]');
|
|
mf.addClass('playing');
|
|
|
|
|
|
var playing = $('.playing');
|
|
|
|
if ($('#video').attr('type') == 'audio') {
|
|
$('#video').hide();
|
|
}
|
|
tree.current_track = playing.attr('number');
|
|
// tree.sound.volume = 1;
|
|
thisTrack(playing.closest('.track_item'));
|
|
if (pd.state == 0 && method != 'search') {
|
|
tree.sound.pause();
|
|
}
|
|
if (pd.resizes) {
|
|
$('#music_albums').height(pd.resizes.music_albums.height);
|
|
$('#music_albums').scrollTop(pd.resizes.music_albums.scrollTop);
|
|
$('#music_artists').height(pd.resizes.music_artists.height);
|
|
$('#music_albums').scrollTop(pd.resizes.music_albums.scrollTop);
|
|
$('#music_files').css({ 'top': ($('#music_albums').height() + 100) + 'px' });
|
|
var i = $('#interface').height();
|
|
var mc = $('#music').find('.media_controls').height();
|
|
var mm = $('#music_albums').height();
|
|
$('#music_files').height($('#music').height() - (mm + mc + i));
|
|
}
|
|
playerCacheSaver();
|
|
}
|
|
|
|
|
|
$('.file_duration').each(function(i,v) {
|
|
$(v).text(numeral($(v).text()).format('00:00:00'));
|
|
});
|
|
$('#video').trigger('mouseenter');
|
|
setTimeout(function() {
|
|
if ($('#video').attr('type') != 'video') {
|
|
$('#video').hide();
|
|
}
|
|
},200);
|
|
|
|
$('#music_artists, #music_albums').resizable({
|
|
start: function(p) {
|
|
},
|
|
resize: function(p,j) {
|
|
if (p.target.id == 'music_artists') {
|
|
$('#music_albums').height(j.size.height);
|
|
}
|
|
else if (p.target.id == 'music_albums') {
|
|
$('#music_artists').height(j.size.height);
|
|
}
|
|
var newTop = ($('#music_albums').height() + 100) + 'px';
|
|
console.log(newTop);
|
|
$('#music_files').css({ 'top': newTop });
|
|
var i = $('#interface').height();
|
|
var mc = $('#music').find('.media_controls').height();
|
|
var mm = $('#music_albums').height();
|
|
$('#music_files').height($('#music').height() - (mm + mc + i));
|
|
},
|
|
stop: function(p) {
|
|
}
|
|
});
|
|
var mc = $('#music_configuration');
|
|
if (mc.is(':visible')) {
|
|
var z_index = $('#interface').css('z-index') + 1;
|
|
mc.css({ 'z-index': z_index });
|
|
}
|
|
}
|
|
var lastMusicCacheHtml;
|
|
function playerCacheSaver(type) {
|
|
var unlocked = 0;
|
|
if ($('#music').attr('unlock')) { unlocked = 1; }
|
|
var playerData = {
|
|
number: tree.sound.current_track,
|
|
'currentTime': tree.sound.currentTime,
|
|
file: tree.songs[0].file,
|
|
volume: tree.sound.volume,
|
|
state: tree.sound.state,
|
|
theatre_mode: $('#video').attr('theatre_mode'),
|
|
unlocked: unlocked,
|
|
resizes: {
|
|
music_albums: { bottom: $('#music_albums').css('top'), height: $('#music_albums').height() },
|
|
music_artists: { bottom: $('#music_artists').css('top'), height: $('#music_albums').height() },
|
|
music_files: { top: $('#music_files').css('top'), height: $('#music_files').height() }
|
|
},
|
|
type: $('#video').attr('type'),
|
|
method: 'playerCache'
|
|
};
|
|
var jpd = JSON.stringify(playerData);
|
|
|
|
|
|
if (type == 'ajax' || ws['music'].readyState != 1) {
|
|
cacheSet({ 'app': 'music', 'context': 'player'}, playerData);
|
|
var html = $('#music').parent().html();
|
|
if (html != lastMusicCacheHtml) {
|
|
cacheSet({'app': 'music', 'context': 'content' },{ contents: html });
|
|
}
|
|
}
|
|
else {
|
|
ws['music'].send(jpd);
|
|
}
|
|
$('#music_player_data').text(jpd);
|
|
return jpd;
|
|
}
|
|
|
|
function treeMaker() {
|
|
var sound = tree.sound;
|
|
tree = {
|
|
files: $('#files').find('.file'),
|
|
songs: [],
|
|
past_songs: [],
|
|
all_songs: [],
|
|
seek: 0,
|
|
song_id: 0,
|
|
current_track: 0,
|
|
speaker: new Audio,
|
|
ctx: new AudioContext,
|
|
sound: document.getElementById('video')
|
|
};
|
|
if (sound) {
|
|
// tree.sound = sound;
|
|
}
|
|
if (tree.sound) {
|
|
tree.sound.onstatechange = function(i) {
|
|
if (tree.sound.state == 1) {
|
|
$('#play_logo').attr('src', '/icons/play.jpg');
|
|
}
|
|
else {
|
|
$('#play_logo').attr('src', '/icons/pause.jpg');
|
|
}
|
|
};
|
|
}
|
|
for (n = 0; n <= tree.files.length - 1; n++) {
|
|
if (tree.files[n].textContent !== undefined) {
|
|
// JSON.parse($(tree.files[n]).val());
|
|
var info;
|
|
if (isJson($('.file_json[file_uuid="' + $(tree.files[n]).attr('file_uuid') + '"]').text())) {
|
|
info = JSON.parse($('.file_json[file_uuid="' + $(tree.files[n]).attr('file_uuid') + '"]').text());
|
|
}
|
|
var data = {
|
|
encodedFile: encodeURI(tree.files[n].textContent),
|
|
file: tree.files[n].textContent,
|
|
type: $(tree.files[n]).attr('type'),
|
|
app: $(tree.files[n]).attr('app'),
|
|
remote_uuid: $(tree.files[n]).attr('remote_uuid'),
|
|
computer_name: $(tree.files[n]).attr('computer_name'),
|
|
colour: $(tree.files[n]).attr('colour'),
|
|
info: info,
|
|
};
|
|
tree.songs.push(data);
|
|
tree.all_songs.push(data);
|
|
}
|
|
}
|
|
$('.file_duration').each(function(i,v) {
|
|
if ($(v).attr('initialized') != 'yes') {
|
|
$(v).text(numeral($(v).text()).format('00:00:00'));
|
|
$(v).attr('initialized', 'yes');
|
|
}
|
|
});
|
|
}
|
|
treeMaker();
|
|
|
|
|
|
var musicSearchTimeout;
|
|
$(document).on('keyup', '#music_search', function(e) {
|
|
if (e.keyCode == 13) {
|
|
$('.music_album').attr('active', 'no');
|
|
$('.music_artist').attr('active', 'no');
|
|
searchMusic();
|
|
}
|
|
});
|
|
|
|
|
|
var interval;
|
|
function mediaMaker(data) {
|
|
if (typeof data != 'object') { data = {}; }
|
|
var time = data['time'];
|
|
var timestamp = data['timestamp'] || Date.now();
|
|
var method = data['method'];
|
|
var file = data['file'] || tree.songs[0].file;
|
|
var uri_track = encodeURIComponent(file);
|
|
if (mao['srv'] == 'on') {
|
|
$.ajax({
|
|
url: '/play?track=' + uri_track,
|
|
|
|
success: function(response) {}
|
|
});
|
|
}
|
|
if (1 == 1) {
|
|
var id = 'video';
|
|
var vid = $('#' + id);
|
|
var window_id;
|
|
|
|
if (file) {
|
|
|
|
|
|
tree.sound = document.getElementById('video');
|
|
if (data['state'] != 0) {
|
|
$('#play_logo').attr('src', '/icons/pause.jpg');
|
|
}
|
|
if (method != 'benign') {
|
|
|
|
if (tree.songs[0].type == 'audio') {
|
|
$('#music_library').show();
|
|
$('#video').hide();
|
|
$('#video').attr('type', 'audio');
|
|
$('#album_cover').show();
|
|
var miss = $('#video').attr('miss');
|
|
console.log(miss);
|
|
// $('#' + miss + '_controls').show();
|
|
}
|
|
else {
|
|
console.log('is video');
|
|
$('#video').attr('type', 'video').show();
|
|
$('#album_cover').hide();
|
|
}
|
|
|
|
tree.current_track = tree.past_songs.length + 1;
|
|
|
|
if (data['state'] != 0) {
|
|
tree.sound.play();
|
|
tree.sound.load();
|
|
tree.sound.state = 1;
|
|
}
|
|
else {
|
|
tree.sound.state = 0;
|
|
}
|
|
tree.sound.saved_volume = master_volume;
|
|
tree.sound.volume = 0.00001;
|
|
|
|
|
|
console.log(uri_track);
|
|
var url = '/play?track=' + uri_track;
|
|
if (tree.songs[0].remote_uuid) {
|
|
url += '&remote_uuid=' + tree.songs[0].remote_uuid;
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log(url);
|
|
tree.sound.src = url
|
|
|
|
tree.sound.video = true;
|
|
// tree.sound.controls = true;
|
|
tree.sound.html5 = true;
|
|
tree.sound.playbackRate = 1;
|
|
tree.sound.currentTime = time || 0;
|
|
tree.sound.queued = 0;
|
|
remoteTrackToggle({
|
|
file: file,
|
|
toggle: 'on',
|
|
seek: tree.sound.currentTime
|
|
});
|
|
}
|
|
if ($('#video').attr('theatre_mode') == 'on') {
|
|
theatreModeOn();
|
|
}
|
|
else {
|
|
theatreModeOff();
|
|
}
|
|
tree.sound.onplaying = function() {
|
|
console.log('on playing');
|
|
var total = tree.sound.duration;
|
|
$('#progress_bar').attr('max', total);
|
|
var endsong = tree.sound.duration;
|
|
$('#total').text(endsong);
|
|
|
|
|
|
|
|
var app = tree.songs[0].app;
|
|
|
|
if (method != 'benign') {
|
|
playing_now();
|
|
}
|
|
else {
|
|
var playing = $('.playing');
|
|
var current_track = playing.attr('number');
|
|
treeMaker();
|
|
thisTrack(playing.closest('.track_item'));
|
|
tree.current_track = current_track;
|
|
playing_now('update');
|
|
}
|
|
vidControls['video'] = [];
|
|
if (tree.songs[0].info.chapters) {
|
|
|
|
$.each(tree.songs[0].info.chapters, function(i,v) {
|
|
vidControls['video'].push(v.start_time);
|
|
});
|
|
}
|
|
|
|
tree['music_data'] = musicAppointmentWriter('start');
|
|
if ($('#video').attr('theatre_mode') == 'on') {
|
|
theatreModeOn();
|
|
}
|
|
else {
|
|
theatreModeOff();
|
|
}
|
|
clearInterval(interval);
|
|
interval = setInterval(function(){
|
|
|
|
var pre_value = $('#progress_bar').val();
|
|
var cursor = tree.sound.currentTime;
|
|
if (pre_value > cursor + 2 || pre_value < cursor - 2 && tree.sound.exempt_seek != 1) {
|
|
remoteTrackToggle({
|
|
file: tree.songs[0].file,
|
|
toggle: 'seek',
|
|
seek: tree.sound.currentTime
|
|
});
|
|
}
|
|
tree.sound.exempt_seek = 0;
|
|
$('#progress_bar').attr('value', cursor);
|
|
$('#cursor').text(cursor);
|
|
$('#total_progress').text(numeral(tree.sound.duration).format('00:00:00'));
|
|
$('#elapsed_progress').text(numeral(tree.sound.currentTime).format('00:00:00'));
|
|
playerCacheSaver();
|
|
if (cursor >= tree.sound.duration - 3.9 && tree.sound.queued != 1) {
|
|
remoteTrackToggle({
|
|
file: tree.songs[1].file,
|
|
toggle: 'on',
|
|
music_data: tree.songs[1],
|
|
seek: 0,
|
|
queuing: 1
|
|
});
|
|
tree.sound.queued = 1;
|
|
}
|
|
}, 1000);
|
|
|
|
$('#play_logo').attr('src', '/icons/pause.jpg');
|
|
|
|
};
|
|
tree.sound.onpause = function() {
|
|
clearInterval(interval);
|
|
|
|
$('#play_logo').attr('src', '/icons/play.jpg');
|
|
|
|
};
|
|
tree.sound.onerror = function() {
|
|
nextTrack();
|
|
};
|
|
tree.sound.onended = function() {
|
|
clearInterval(interval);
|
|
$('#progress_bar').attr('value', 0).attr('max', 0);
|
|
$('#total_progress').text(0);
|
|
$('#elapsed_progress').text(0);
|
|
$('#' + id).hide();
|
|
|
|
tree.past_songs.push(tree.songs.shift());
|
|
var app = tree.songs[0].app;
|
|
if (tree.songs.length == 0 ) {
|
|
if ($('.music_repeat').attr('enabled') == 'on') {
|
|
for (var n = 0; n <= tree.all_songs.length; n++ ) {
|
|
tree.songs.push(tree.all_songs[n]);
|
|
}
|
|
tree.past_songs = [];
|
|
}
|
|
else {
|
|
tree.sound.pause();
|
|
$('.playing').removeClass('playing');
|
|
musicAppointmentWriter('stop','no');
|
|
}
|
|
}
|
|
mediaMaker();
|
|
};
|
|
}
|
|
}
|
|
console.log(mao);
|
|
playerCacheSaver();
|
|
var html = $('#music').parent().html();
|
|
cacheSet({'app': 'music', 'context': 'content' },{ contents: html });
|
|
}
|
|
|
|
function remoteTrackToggle(data) {
|
|
var file = data['file'];
|
|
var seek = data['seek'] || tree.sound.currentTime;
|
|
var toggle = data['toggle'];
|
|
var music_data = data['music_data'] || tree.songs[0];
|
|
if (data['queuing'] != 1) {
|
|
tree.sound.volume = 0.000001;
|
|
}
|
|
if (mao['me'] == 'off') {
|
|
|
|
}
|
|
var remoted = 0;
|
|
$.each(mao, function(i,v) {
|
|
if (i.match("\\.")) {
|
|
if (v == 'on' && $('.music_audio_output_select[value="' + i + '"]').length > 0) {
|
|
// tree.sound.volume = 0;
|
|
var timestamp = Date.now();
|
|
var tr = { queuing: data['queuing'], timestamp: timestamp, volume: master_volume, method: 'transmitter', music_data: music_data, file: file, domain: i, toggle: toggle, seek: seek };
|
|
var jtr = JSON.stringify(tr);
|
|
ws['music'].send(jtr);
|
|
remoted = 1;
|
|
console.log(tr);
|
|
}
|
|
}
|
|
});
|
|
console.log(mao);
|
|
if (data['queuing'] != 1) {
|
|
if (mao['me'] == 'on' && remoted == 0) {
|
|
tree.sound.volume = master_volume;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function musicTitleMaker(object) {
|
|
var app = $('.playing').find('.file');
|
|
var album = app.attr('album');
|
|
var artist = app.attr('artist');
|
|
var song = app.attr('song');
|
|
var video = document.getElementById('video');
|
|
var canvas = document.createElement('canvas');
|
|
var image;
|
|
|
|
|
|
if (object == 'object') {
|
|
var playing;
|
|
if ($('#video').is(':visible') && advertise_watching == 'on') {
|
|
var ratio = video.videoWidth / video.videoHeight;
|
|
canvas.width = 640 || 0;
|
|
canvas.height = ratio * video.videoHeight || 0;
|
|
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
image = canvas.toDataURL('image/png');
|
|
playing = app.closest('.track_item').html();
|
|
}
|
|
else {
|
|
|
|
}
|
|
return {
|
|
artist: artist,
|
|
album: album,
|
|
song: song,
|
|
image: image,
|
|
width: canvas.width,
|
|
height: canvas.height,
|
|
ratio: ratio,
|
|
playing: playing
|
|
};
|
|
}
|
|
else {
|
|
return (artist || '') + ' - ' + (album || '') + ' - ' + (song || '');
|
|
}
|
|
}
|
|
|
|
$(document).on('click', '#music_list_view', function() {
|
|
if ($('#video').attr('theatre_mode') == 'on') {
|
|
theatreModeOff();
|
|
}
|
|
else {
|
|
theatreModeOn();
|
|
}
|
|
});
|
|
|
|
function theatreModeOn() {
|
|
console.log('on');
|
|
$('#music_library').hide();
|
|
$('#video').show();
|
|
var bs = $('#video').attr('big_style');
|
|
$('#video').attr('style', bs);
|
|
$('#music').css({'background-color':'black'});
|
|
$('#video').attr('theatre_mode', 'on');
|
|
if ($('#video').attr('type') == 'audio') {
|
|
$('#video').hide();
|
|
var src = $('.playing').closest('.track_item').find('.music_file_thumb').attr('src');
|
|
$('#music_album_cover').attr('src', src).show();
|
|
}
|
|
else if ($('#video').attr('src')) {
|
|
$('#video').show();
|
|
$('#interface').hide();
|
|
$('#music_padlock_toggle').hide();
|
|
$('#music_configuration_toggle').hide();
|
|
$('#music_album_cover').hide()
|
|
}
|
|
}
|
|
|
|
function theatreModeOff() {
|
|
console.log('off');
|
|
$('#music_library').show();
|
|
$('#music').css({'background-color': $('#music').attr('background_colour')});
|
|
if ($('#video').attr('type') == 'video') {
|
|
var ts = $('#video').attr('thumb_style');
|
|
console.log(ts);
|
|
$('#video').attr('style', ts);
|
|
$('#video').attr('theatre_mode', 'off');
|
|
}
|
|
else {
|
|
$('#video').hide();
|
|
}
|
|
$('#interface').show();
|
|
$('#music_padlock_toggle').show();
|
|
$('#music_configuration_toggle').show();
|
|
$('#music_album_cover').hide();
|
|
$('#video').attr('theatre_mode', 'off');
|
|
}
|
|
|
|
function musicAppointmentWriter(type,mute) {
|
|
var app = $('.track_item.playing').find('.file');
|
|
var duration = tree.sound.duration;
|
|
var album = app.attr('album');
|
|
var artist = app.attr('artist');
|
|
var song = app.attr('song');
|
|
var words = artist + ' - ' + song;
|
|
var filename = app.text();
|
|
var timestamp = Date.now();
|
|
var musicData = {
|
|
app: musicTitleMaker(),
|
|
timestamp: timestamp,
|
|
type: type,
|
|
account: 'gallery',
|
|
unit: tree.sound.duration + 's',
|
|
file: filename,
|
|
notes: musicTitleMaker(),
|
|
mute: mute,
|
|
words: words,
|
|
duration: '-' + duration + 's',
|
|
source: 'music',
|
|
currentTime: tree.sound.currentTime,
|
|
total_time: duration,
|
|
title: musicTitleMaker('object'),
|
|
interface: $('#interface').html(),
|
|
|
|
};
|
|
if (song != undefined && type != 'data_entry') {
|
|
$.ajax({
|
|
url: '/manager/reset',
|
|
type: 'POST',
|
|
data: musicData,
|
|
success:function(response) {
|
|
continent_record(musicTitleMaker(),timestamp);
|
|
}
|
|
});
|
|
}
|
|
return musicData;
|
|
}
|
|
|
|
$(document).on('click', '#play', function() {
|
|
if (tree.sound.src == '') {
|
|
mediaMaker({ file: tree.songs[0].file });
|
|
}
|
|
else if (tree.sound.state == 0) {
|
|
tree.sound.play();
|
|
tree.sound.state = 1;
|
|
$('#play_logo').attr('src', '/icons/pause.jpg');
|
|
remoteTrackToggle({
|
|
file: tree.songs[0].file,
|
|
toggle: 'on',
|
|
seek: tree.sound.currentTime
|
|
});
|
|
}
|
|
else {
|
|
tree.sound.pause();
|
|
tree.sound.state = 0;
|
|
$('#play_logo').attr('src', '/icons/play.jpg');
|
|
remoteTrackToggle({
|
|
file: tree.songs[0].file,
|
|
toggle: 'off',
|
|
seek: tree.sound.currentTime
|
|
});
|
|
}
|
|
playerCacheSaver();
|
|
var html = $('#music').parent().html();
|
|
cacheSet({'app': 'music', 'context': 'content' },{ contents: html });
|
|
});
|
|
|
|
$(document).on('click', '#prev', function() {
|
|
prevTrack();
|
|
});
|
|
|
|
function prevTrack() {
|
|
if (tree.past_songs.length > 0) {
|
|
tree.songs.unshift(tree.past_songs.pop());
|
|
}
|
|
mediaMaker()
|
|
}
|
|
|
|
function nextTrack() {
|
|
if (tree.songs.length == 0) {
|
|
if ($('.music_repeat').attr('enabled') == 'on') {
|
|
for (var n = 0; n <= tree.all_songs.length; n++ ) {
|
|
tree.songs.push(tree.all_songs[n]);
|
|
}
|
|
tree.past_songs = [];
|
|
}
|
|
else {
|
|
tree.sound.pause();
|
|
$('.playing').removeClass('playing');
|
|
}
|
|
}
|
|
else {
|
|
tree.past_songs.push(tree.songs.shift());
|
|
}
|
|
mediaMaker();
|
|
}
|
|
|
|
$(document).on('click', '#next', function() {
|
|
nextTrack();
|
|
});
|
|
|
|
$(document).on('click', '.track_item', function(e) {
|
|
var item = $(this);
|
|
var file = item.attr('file');
|
|
if ($(e.target).hasClass('music_information_toggle')) {
|
|
musicInformation(file);
|
|
}
|
|
else if ($(e.target).closest('.chapter_thumb')) {
|
|
var ch = $(e.target).closest('.chapter_thumb');
|
|
thisTrack(item);
|
|
mediaMaker({ time: ch.attr('start_time') });
|
|
}
|
|
else {
|
|
console.log('starting media');
|
|
console.log(e.target);
|
|
thisTrack(item);
|
|
mediaMaker();
|
|
}
|
|
});
|
|
|
|
function thisTrack(item) {
|
|
var number = item.attr("number");
|
|
var unformatted_filename = item.find('.file').text();
|
|
console.log(number + ' is the number ' + unformatted_filename);
|
|
var filename = encodeURI(unformatted_filename);
|
|
treeMaker();
|
|
for (var n = 0; n <= tree.all_songs.length; n++) {
|
|
if (tree.all_songs[n]) {
|
|
if (tree.all_songs[n].encodedFile == filename) {
|
|
tree.past_songs = tree.all_songs.slice(0, number - 1);
|
|
tree.songs = tree.all_songs.slice(number - 1);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function musicInformation(file) {
|
|
var td = $('.track_description[file="' + file + '"]');
|
|
if (td.is(':visible')) {
|
|
td.hide();
|
|
}
|
|
else {
|
|
td.show();
|
|
}
|
|
}
|
|
|
|
function musicWindowResizes() {
|
|
var resizes = {
|
|
music_albums: { bottom: $('#music_albums').css('top'), height: $('#music_albums').height(), scrollTop: $('#music_albums').scrollTop() },
|
|
music_artists: { bottom: $('#music_artists').css('top'), height: $('#music_albums').height(), scrollTop: $('#music_artists').scrollTop() },
|
|
music_files: { top: $('#music_files').css('top'), height: $('#music_files').height(), scrollTop: $('#music_files').scrollTop() }
|
|
};
|
|
return resizes;
|
|
}
|
|
|
|
$(document).on('click change', '#progress_bar', function(e) {
|
|
var total_width = $('#progress_bar').width();
|
|
var current_location = e.offsetX;
|
|
var seek_to = (current_location / total_width) * tree.sound.duration;
|
|
tree.sound.currentTime = seek_to;
|
|
remoteTrackToggle({
|
|
file: tree.songs[0].file,
|
|
toggle: 'seek',
|
|
seek: tree.sound.currentTime
|
|
});
|
|
});
|
|
|
|
var master_volume = 1;
|
|
$(document).on('click', '#volume_control', function(e) {
|
|
var total_width = $('#volume_control').width();
|
|
var current_location = e.offsetX;
|
|
var new_volume = (current_location / total_width);
|
|
tree.sound.volume = new_volume;
|
|
master_volume = new_volume;
|
|
$('#volume_control').attr('value', new_volume);
|
|
});
|
|
|
|
$(document).on('click', '.music_artist', function(e) {
|
|
if (e.originalEvent.ctrlKey == true) {
|
|
if ($(this).attr('active') == 'yes') {
|
|
$(this).attr('active', 'no');
|
|
}
|
|
else {
|
|
$(this).attr('active', 'yes');
|
|
}
|
|
}
|
|
else {
|
|
if ($(this).attr('active') == 'yes') {
|
|
$('.music_artist').attr('active', 'no');
|
|
}
|
|
else {
|
|
$('.music_artist').attr('active', 'no');
|
|
$(this).attr('active', 'yes');
|
|
}
|
|
}
|
|
searchMusic({ source: 'artist' });
|
|
});
|
|
|
|
$(document).on('click', '.music_album', function(e) {
|
|
if (e.originalEvent.ctrlKey == true) {
|
|
if ($(this).attr('active') == 'yes') {
|
|
$(this).attr('active', 'no');
|
|
}
|
|
else {
|
|
$(this).attr('active', 'yes');
|
|
}
|
|
}
|
|
else {
|
|
if ($(this).attr('active') == 'yes') {
|
|
$('.music_album').attr('active', 'no');
|
|
}
|
|
else {
|
|
$('.music_album').attr('active', 'no');
|
|
$(this).attr('active', 'yes');
|
|
}
|
|
}
|
|
searchMusic({ source: 'album' });
|
|
});
|
|
|
|
function searchMusic(data) {
|
|
if (typeof data != 'object') { data = {}; }
|
|
var searching = data['search'];
|
|
var list = data['list'] || [];
|
|
var same_order = data['same_order'];
|
|
var new_settings = data['new_settings'];
|
|
var source = data['source'];
|
|
if (new_settings) {
|
|
new_settings = JSON.stringify(new_settings);
|
|
}
|
|
var artist = [];
|
|
$('.music_artist').each(function(i,v) {
|
|
if ($(v).attr('active') == 'yes') {
|
|
artist.push({ 'artist': $(v).attr('artist'), 'path': $(v).attr('path') });
|
|
}
|
|
});
|
|
var album = [];
|
|
$('.music_album').each(function(i,v) {
|
|
if ($(v).attr('active') == 'yes') {
|
|
album.push({ 'album': $(v).attr('album'), 'path': $(v).attr('path') });
|
|
}
|
|
});
|
|
artist = JSON.stringify(artist);
|
|
album = JSON.stringify(album);
|
|
console.log(artist);
|
|
console.log(album);
|
|
var artistScroll = $('#music_artists').scrollTop();
|
|
var albumScroll = $('#music_albums').scrollTop();
|
|
|
|
|
|
var search = searching || $('#music_search').val();
|
|
var unlock = $('#music').attr('unlock');
|
|
$('body').css({ 'cursor': 'progress' });
|
|
var folders = musicFolderChecker();
|
|
var nowPlaying = {};
|
|
if (tree.sound) {
|
|
if (tree.sound.state == 1) {
|
|
nowPlaying = tree.songs[0];
|
|
}
|
|
}
|
|
console.log(nowPlaying);
|
|
var jnowPlaying = JSON.stringify(nowPlaying);
|
|
var jlist = JSON.stringify(list);
|
|
var resizes = musicWindowResizes();
|
|
var jresizes = JSON.stringify(resizes);
|
|
var jmiss = JSON.stringify(misses);
|
|
var theatreMode = $('#video').attr('theatre_mode');
|
|
$.ajax({
|
|
url: '/music/search',
|
|
type: 'POST',
|
|
data: {
|
|
search: search,
|
|
window_maker: 'yes',
|
|
folders: folders,
|
|
artist: artist,
|
|
album: album,
|
|
unlock: unlock,
|
|
now_playing: jnowPlaying,
|
|
list: jlist,
|
|
same_order: same_order,
|
|
new_settings: new_settings,
|
|
resizes: jresizes,
|
|
misses: jmiss
|
|
},
|
|
success: function(response) {
|
|
clearInterval(vidControls['video_video_interval']);
|
|
$('body').css({ 'cursor': 'auto' });
|
|
|
|
var v = document.getElementById('video');
|
|
var src = v.src;
|
|
var currentTime = v.currentTime;
|
|
var timestamp = Date.now();
|
|
var state = v.state;
|
|
|
|
|
|
treeMaker();
|
|
|
|
var configOpen = $('#music_configuration').is(':visible');
|
|
var oldMusic = $('#music').html();
|
|
musicWindowResizes();
|
|
if (1 == 0 && v.src) {
|
|
$('#temporary_workspace').append(v);
|
|
$('#music').find('#video').remove();
|
|
windowMaker(response.html);
|
|
var nv = $('#music').find('#video');
|
|
// var id = nv.attr('id');
|
|
// console.log('new id ' + id);
|
|
// $('#temporary_workspace').find('video').attr('id', id);
|
|
|
|
nv.remove();
|
|
|
|
$('#music').find('.video_container').append(v);
|
|
|
|
$('#temporary_workspace').find('#video').remove();
|
|
|
|
}
|
|
else {
|
|
windowMaker(response.html);
|
|
}
|
|
$.each(response.artist, function(i,v) {
|
|
$('.music_artist[artist="' + v.artist + '"][path="' + v.path + '"]').attr('active', 'yes');
|
|
});
|
|
$.each(response.album, function(i,v) {
|
|
$('.music_album[album="' + v.album + '"][path="' + v.path + '"]').attr('active', 'yes');
|
|
});
|
|
|
|
if (state == 1) {
|
|
var v = document.getElementById('video');
|
|
v.src = src;
|
|
var now = Date.now();
|
|
currentTime = ((now - timestamp) / 1000) + currentTime;
|
|
v.currentTime = currentTime;
|
|
v.state = 1;
|
|
var playing = $('.playing');
|
|
var ts = $('#video').attr('thumb_style');
|
|
$('#video').attr('style', ts).attr('type', nowPlaying['type']);
|
|
if (nowPlaying['type'] == 'audio') {
|
|
$('#video').hide();
|
|
}
|
|
else {
|
|
$('#video').show();
|
|
}
|
|
tree.current_track = playing.attr('number');
|
|
tree.sound.volume = master_volume;
|
|
thisTrack(playing.closest('.track_item'));
|
|
mediaMaker({ src: v.src, currentTime: v.currentTime, method: 'benign', timestamp: timestamp });
|
|
var html = $('#music').parent().html();
|
|
cacheSet({'app': 'music', 'context': 'content' },{ contents: html });
|
|
}
|
|
else {
|
|
$('#video').hide();
|
|
}
|
|
var wind_id = $('#music').closest('.wind').attr('id');
|
|
|
|
|
|
playing_now('update');
|
|
|
|
$('#music_albums').scrollTop(albumScroll);
|
|
$('#music_artists').scrollTop(artistScroll);
|
|
musicInit('search');
|
|
|
|
if (configOpen == true) {
|
|
$('#music_configuration').show();
|
|
}
|
|
if (theatreMode == 'on') {
|
|
theatreModeOn();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function playing_now(movement) {
|
|
var playing_scroll;
|
|
if ($('.playing').is(':visible') > 0) {
|
|
playing_scroll = ($('#music_files').scrollTop() - ( $('.playing').offset().top || 0 ) + $('#interface').height());
|
|
}
|
|
else {
|
|
playing_scroll = "5 billion or something!";
|
|
}
|
|
if (movement != 'update') {
|
|
musicAppointmentWriter('stop');
|
|
$('.playing').removeClass('playing');
|
|
}
|
|
$('#track_' + tree.current_track).parent().addClass('playing');
|
|
$('#track_' + tree.current_track).parent().addClass('playing');
|
|
$('.track_description').each(function() { $(this).hide() });
|
|
$('#track_' + tree.current_track).parent().find('.track_description').show();
|
|
console.log(playing_scroll);
|
|
//$('#music_files').scrollTop(playing_scroll);
|
|
|
|
return tree.current_track;
|
|
|
|
}
|
|
|
|
function musicFolderChecker() {
|
|
var folders = [];
|
|
$('.music_folder_toggle[status="on"]').each(function(i,v) {
|
|
console.log(v);
|
|
folders.push($(v).attr('location'));
|
|
});
|
|
return folders;
|
|
}
|
|
|
|
$(document).on('click', '.music_folder_toggle', function() {
|
|
var b = $(this);
|
|
var status = b.attr('status');
|
|
var location = b.attr('location');
|
|
var timestamp = Date.now();
|
|
if (status == 'on') {
|
|
status = 'off';
|
|
}
|
|
else {
|
|
status = 'on';
|
|
}
|
|
$.ajax({
|
|
url: '/music/folder_toggle',
|
|
type: 'POST',
|
|
data: { timestamp: timestamp, location: location, status: status },
|
|
success: function(response) {
|
|
b.attr('status', response);
|
|
if (response == 'on') {
|
|
b.css({'background-color': 'lightblue'});
|
|
}
|
|
else {
|
|
b.css({'background-color': ''});
|
|
}
|
|
console.log('about to search');
|
|
searchMusic();
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.music_lock', function() {
|
|
if ($('#music').attr('unlock')) {
|
|
$('#music').attr('unlock', undefined);
|
|
settingDeleter({ 'app': 'music', 'setting': 'combo_unlock' });
|
|
tree.sound = undefined;
|
|
$('#music_search').val('');
|
|
$('.music_artist').attr('active', 'no');
|
|
$('.music_album').attr('active', 'no');
|
|
var wt = $('.wind[app="video"]').attr('timestamp');
|
|
closeWindow(wt);
|
|
searchMusic();
|
|
}
|
|
else if ($('#music').is(':visible')) {
|
|
$('#music').hide();
|
|
$('#music_padlock').show();
|
|
}
|
|
else {
|
|
$('#music').show();
|
|
$('#music_padlock').hide();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#music_cancel_padlock', function() {
|
|
$('#music').show();
|
|
$('#music_padlock').hide();
|
|
});
|
|
|
|
$(document).on('click', '.music_shuffle', function() {
|
|
var shuffle = $(this).attr('enabled');
|
|
if (shuffle == 'on') {
|
|
shuffle = 'off';
|
|
}
|
|
else {
|
|
shuffle = 'on';
|
|
}
|
|
$(this).attr('enabled', shuffle);
|
|
|
|
var list = [];
|
|
$.each(tree.files, function(i,v) {
|
|
list.push($(v).text());
|
|
});
|
|
searchMusic({ list: list, same_order: 0, new_settings: { 'shuffle': shuffle } });
|
|
|
|
});
|
|
|
|
$(document).on('click', '#music_layout_select', function() {
|
|
var layout = $(this).val();
|
|
var list = [];
|
|
$.each(tree.files, function(i,v) {
|
|
list.push($(v).text());
|
|
});
|
|
console.log(list);
|
|
searchMusic({ list: list, same_order: 1, new_settings: { 'layout': layout } });
|
|
|
|
});
|
|
|
|
|
|
$(document).on('change', '#music_library_select', function() {
|
|
var library = $(this).val();
|
|
settingSetter({ app: 'music', setting: 'library', value: library });
|
|
searchMusic({ });
|
|
});
|
|
|
|
$(document).on('click', '.music_repeat', function() {
|
|
var repeat = $(this).attr('enabled');
|
|
if (repeat == 'on') {
|
|
repeat = 'off';
|
|
}
|
|
else {
|
|
repeat = 'on';
|
|
}
|
|
settingSetter({ app: 'music', setting: 'repeat', value: repeat });
|
|
$(this).attr('enabled', repeat);
|
|
});
|
|
|
|
|
|
$(document).on('click', '.music_audio_output_select', function() {
|
|
var output = $(this).val();
|
|
var state = $(this).attr('state');
|
|
var file = tree.songs[0].file;
|
|
var seek = tree.sound.currentTime;
|
|
if (state == 'on') {
|
|
state = 'off';
|
|
if (output != 'me' && output != 'srv') {
|
|
var timestamp = Date.now();
|
|
var tr = { volume: master_volume, timestamp: timestamp, method: 'transmitter', music_data: tree.songs[0], file: file, domain: output, toggle: 'off', seek: seek };
|
|
console.log(tr);
|
|
var jtr = JSON.stringify(tr);
|
|
ws['music'].send(jtr);
|
|
}
|
|
}
|
|
else {
|
|
state = 'on';
|
|
if (output != 'me' && output != 'srv') {
|
|
|
|
if (tree.sound.state == 1) {
|
|
var timestamp = Date.now();
|
|
var tr = { volume: master_volume, timestamp: timestamp, method: 'transmitter', music_data: tree.songs[0], file: file, domain: output, toggle: 'on', seek: seek };
|
|
console.log(tr);
|
|
var jtr = JSON.stringify(tr);
|
|
ws['music'].send(jtr);
|
|
}
|
|
}
|
|
}
|
|
|
|
$(this).attr('state', state);
|
|
$.ajax({
|
|
url: '/music/audio_output_select',
|
|
type: 'POST',
|
|
data: { state: state, output: output },
|
|
success: function(response) {
|
|
mao = response;
|
|
if (mao['me'] == 'on') {
|
|
tree.sound.volume = master_volume;
|
|
}
|
|
if (mao['me'] == 'off') {
|
|
tree.sound.volume = 0.0000001;
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
$(document).on('click', '#music_configuration_toggle', function() {
|
|
var mc = $('#music_configuration');
|
|
var remote_uuid = $('#music_configuration').attr('remote_uuid');
|
|
if (mc.is(':visible')) {
|
|
mc.hide();
|
|
}
|
|
else {
|
|
mc.show();
|
|
$.ajax({
|
|
url: '/music/configuration',
|
|
type: 'GET',
|
|
data: { },
|
|
success: function(response) {
|
|
console.log(response)
|
|
mc.html(response.html);
|
|
volumeChecker();
|
|
var z_index = $('#interface').css('z-index') + 1;
|
|
mc.css({ 'z-index': z_index });
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.all_music', function() {
|
|
var library = $(this).attr('library');
|
|
var enabled = $(this).attr('enabled');
|
|
console.log(enabled);
|
|
if (enabled == 'yes') {
|
|
enabled = 'no';
|
|
}
|
|
else {
|
|
enabled = 'yes';
|
|
}
|
|
console.log(library + ' ' + enabled)
|
|
$(this).attr('enabled', enabled);
|
|
var setting = 'all_' + library;
|
|
var new_settings = {};
|
|
new_settings[setting] = enabled;
|
|
searchMusic({ 'new_settings': new_settings });
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|