mirror of
https://github.com/KevinMidboe/zoff.git
synced 2026-02-11 11:59:31 +00:00
Added functionality for intelligent playlist, making voting and such easier on many listeners
This commit is contained in:
@@ -117,9 +117,6 @@ var Channel = {
|
||||
draggable: Helper.mobilecheck(),
|
||||
onOpenStart: function(el) {
|
||||
Helper.addClass(".hamburger-sidenav", "open");
|
||||
try {
|
||||
M.Collapsible.getInstance(document.querySelector(".settings-collapsible")).open(1);
|
||||
} catch(e) {}
|
||||
},
|
||||
onCloseStart: function(el) {
|
||||
Helper.removeClass(".hamburger-sidenav", "open");
|
||||
|
||||
@@ -20,13 +20,29 @@ var Crypt = {
|
||||
} catch(err) {
|
||||
conf_arr = Crypt.decrypt(Crypt.create_cookie("_opt"), "_opt");
|
||||
}
|
||||
|
||||
|
||||
if(window.location.pathname != "/") {
|
||||
change_intelligent(Crypt.get_intelligent_list_enabled());
|
||||
Hostcontroller.change_enabled(conf_arr.remote);
|
||||
if(conf_arr.width != 100) Player.set_width(conf_arr.width);
|
||||
}
|
||||
},
|
||||
|
||||
get_intelligent_list_enabled: function() {
|
||||
if(conf_arr.hasOwnProperty("intelligent")) {
|
||||
return conf_arr.intelligent;
|
||||
} else {
|
||||
conf_arr.intelligent = false;
|
||||
Crypt.encrypt(conf_arr, "_opt");
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
set_intelligent_list_enabled: function(enabled) {
|
||||
conf_arr.intelligent = enabled;
|
||||
Crypt.encrypt(conf_arr, "_opt");
|
||||
},
|
||||
|
||||
decrypt: function(cookie, name) {
|
||||
if(Crypt.getCookie(name) === undefined) {
|
||||
cookie = Crypt.create_cookie(name);
|
||||
|
||||
@@ -3,7 +3,7 @@ var timed_remove_check;
|
||||
var gotten_np = false;
|
||||
var song_title = "";
|
||||
var paused = false;
|
||||
var intelligentList = true;
|
||||
var intelligentList = false;
|
||||
var client = false;
|
||||
var _VERSION;
|
||||
try {
|
||||
@@ -21,6 +21,7 @@ if(window.location.hostname == "localhost" || window.location.hostname == "clien
|
||||
var SC_player;
|
||||
var durationTimeout;
|
||||
var intelligentQueue = [];
|
||||
var deleted_elements = 0;
|
||||
var sc_need_initialization = true;
|
||||
var sc_initialized = false;
|
||||
var startTime = 0;
|
||||
|
||||
@@ -611,18 +611,26 @@ function loadChromecastVideo() {
|
||||
});
|
||||
}
|
||||
|
||||
window.clearIntelligentQueue = clearIntelligentQueue;
|
||||
function enable_intelligent_list() {
|
||||
if(Crypt.get_intelligent_list_enabled()) {
|
||||
intelligentList = true;
|
||||
}
|
||||
}
|
||||
|
||||
function change_intelligent(enabled) {
|
||||
document.querySelector(".intelligent_switch_class").checked = enabled;
|
||||
}
|
||||
|
||||
function clearIntelligentQueue() {
|
||||
intelligentList = false;
|
||||
for(var i = 0; i < intelligentQueue.length; i++) {
|
||||
console.log(intelligentQueue[i]);
|
||||
var currentElement = intelligentQueue[i];
|
||||
console.log(currentElement);
|
||||
if(currentElement.type == "vote") {
|
||||
Helper.removeElement("#"+currentElement.element.id);
|
||||
List.insertAtIndex(currentElement.element, false);
|
||||
} else if(currentElement.type == "delete") {
|
||||
List.deleted_song(currentElement.element.id, false, true);
|
||||
List.deleted_song(currentElement.element.id, false, true, currentElement.index);
|
||||
deleted_elements += 1;
|
||||
} else if(currentElement.type == "add") {
|
||||
List.insertAtIndex(currentElement.element, true);
|
||||
Helper.css(document.querySelector("#wrapper").children[List.page + List.can_fit], "display", "none");
|
||||
@@ -638,6 +646,7 @@ function clearIntelligentQueue() {
|
||||
}
|
||||
}
|
||||
}
|
||||
intelligentQueue = [];
|
||||
}
|
||||
|
||||
function updateChromecastMetadata() {
|
||||
|
||||
@@ -35,7 +35,7 @@ var Hostcontroller = {
|
||||
|
||||
host_on_action: function(arr) {
|
||||
if(client) return;
|
||||
if(enabled){
|
||||
if(Hostcontroller.enabled){
|
||||
if(arr.type == "volume") {
|
||||
try {
|
||||
Playercontrols.visualVolume(arr.value);
|
||||
@@ -75,9 +75,9 @@ var Hostcontroller = {
|
||||
|
||||
change_enabled:function(val){
|
||||
if(client) return;
|
||||
enabled = val;
|
||||
Hostcontroller.enabled = val;
|
||||
try {
|
||||
document.querySelector(".remote_switch_class").checked = enabled;
|
||||
document.querySelector(".remote_switch_class").checked = Hostcontroller.enabled;
|
||||
}catch(e) {}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -121,9 +121,9 @@ var List = {
|
||||
insertAtIndex: function(song_info, transition, change) {
|
||||
if(document.querySelector("#wrapper") == null) return;
|
||||
var i = List.getIndexOfSong(song_info.id);
|
||||
console.log(i, song_info);
|
||||
var display = "none";
|
||||
if(i == -1) return;
|
||||
if(!song_info.now_playing){
|
||||
var display = "none";
|
||||
if(i >= List.page && i < List.page + (List.can_fit)) display = "inline-flex"
|
||||
var add = List.generateSong(song_info, transition, false, true, false, display, false);
|
||||
if(i === 0) {
|
||||
@@ -420,17 +420,16 @@ var List = {
|
||||
}
|
||||
},
|
||||
|
||||
deleted_song: function(deleted, removed, intelligentSecond) {
|
||||
deleted_song: function(deleted, removed, intelligentSecond, deleted_index) {
|
||||
try{
|
||||
console.log(deleted);
|
||||
var index = List.getIndexOfSong(deleted);
|
||||
console.log("place 2");
|
||||
if(intelligentList && !intelligentSecond) {
|
||||
intelligentQueue.push({
|
||||
type: "delete",
|
||||
element: full_playlist[index],
|
||||
index: index,
|
||||
});
|
||||
full_playlist.splice(List.getIndexOfSong(deleted), 1);
|
||||
if(index != -1) full_playlist.splice(index, 1);
|
||||
var this_element = document.getElementById(deleted);
|
||||
Helper.addClass(this_element, "disabled-vote");
|
||||
this_element.querySelector(".vote-span").innerText = "Deleted";
|
||||
@@ -441,6 +440,7 @@ var List = {
|
||||
} else {
|
||||
//if(!removed) to_delete.style.height = 0;
|
||||
var nextToChange;
|
||||
if(index == -1) index = deleted_index;
|
||||
if(index < List.page && document.querySelector("#wrapper").children.length - (List.page + 2) >= 0){
|
||||
//Helper.css(document.querySelector("#wrapper").children[List.page], "height", 0 + "px");
|
||||
nextToChange = document.querySelector("#wrapper").children[List.page];
|
||||
@@ -495,7 +495,6 @@ var List = {
|
||||
}
|
||||
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
var index = List.getIndexOfSong(deleted);
|
||||
if(index != -1) full_playlist.splice(index, 1);
|
||||
if(!List.empty){
|
||||
@@ -531,6 +530,7 @@ var List = {
|
||||
|
||||
voted_song: function(voted, time) {
|
||||
var index_of_song = List.getIndexOfSong(voted);
|
||||
if(index_of_song == -1) return;
|
||||
var song_voted_on = full_playlist[index_of_song];
|
||||
|
||||
full_playlist[index_of_song].votes += 1;
|
||||
@@ -538,7 +538,6 @@ var List = {
|
||||
|
||||
|
||||
if(intelligentList) {
|
||||
console.log(full_playlist[index_of_song].votes, full_playlist[index_of_song]);
|
||||
document.getElementById(voted).querySelector(".list-votes").innerText = full_playlist[index_of_song].votes;
|
||||
intelligentQueue.push({
|
||||
type: "vote",
|
||||
@@ -581,13 +580,13 @@ var List = {
|
||||
List.empty = true;
|
||||
Helper.setHtml("#wrapper", "<span id='empty-channel-message'>The playlist is empty.</span>");
|
||||
}
|
||||
|
||||
var newLast = full_playlist[0];
|
||||
full_playlist[0].now_playing = true;
|
||||
full_playlist[0].votes = 0;
|
||||
full_playlist[0].guids = [];
|
||||
full_playlist[0].added = time;
|
||||
var i = intelligentQueue.length
|
||||
var deleted_elements = 0;
|
||||
|
||||
while (i--) {
|
||||
var current = intelligentQueue[i];
|
||||
if (current.type == "delete") {
|
||||
@@ -611,17 +610,21 @@ var List = {
|
||||
|
||||
full_playlist.push(full_playlist.shift());
|
||||
if(!remove){
|
||||
List.insertAtIndex(full_playlist[document.querySelector("#wrapper").children.length], false, true);
|
||||
}
|
||||
var wrapperChildren = [].slice.call(document.querySelector("#wrapper").children);
|
||||
if(wrapperChildren.length >= List.can_fit && intelligentList) {
|
||||
console.log(wrapperChildren[List.can_fit]);
|
||||
for(var i = 0; i < deleted_elements + 1; i++) {
|
||||
//Helper.css(wrapperChildren[List.can_fit - 2], "display", "inline-flex");
|
||||
Helper.css(wrapperChildren[List.can_fit - 1 - i], "display", "inline-flex");
|
||||
if(full_playlist.length >= 2) {
|
||||
var index = full_playlist.length - 2;
|
||||
List.insertAtIndex(full_playlist[index], false, true);
|
||||
}
|
||||
}
|
||||
} catch(e) {}
|
||||
var wrapperChildren = [].slice.call(document.querySelector("#wrapper").children);
|
||||
if(wrapperChildren.length >= List.can_fit && deleted_elements > 0) {
|
||||
for(var i = 0; i < deleted_elements + 1; i++) {
|
||||
//Helper.css(wrapperChildren[List.can_fit - 2], "display", "inline-flex");
|
||||
Helper.css(wrapperChildren[List.page + List.can_fit - 1 - i], "display", "inline-flex");
|
||||
}
|
||||
}
|
||||
deleted_elements = 0;
|
||||
} catch(e) {
|
||||
}
|
||||
},
|
||||
|
||||
vote: function(id, vote) {
|
||||
@@ -1332,6 +1335,7 @@ var List = {
|
||||
for(var i = 0; i < full_playlist.length; i++) {
|
||||
if(full_playlist[i].id == id) return i;
|
||||
}
|
||||
} catch(e) {}
|
||||
return -1;
|
||||
} catch(e) {return -1;}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -18,7 +18,8 @@ var SC_player;
|
||||
var previewing = false;
|
||||
var sc_initialized = false;
|
||||
var intelligentQueue = [];
|
||||
var intelligentList = true;
|
||||
var intelligentList = false;
|
||||
var deleted_elements = 0;
|
||||
var soundcloud_enabled = true;
|
||||
var local_new_channel = false;
|
||||
var sc_need_initialization = true;
|
||||
@@ -904,10 +905,23 @@ function addDynamicListeners() {
|
||||
|
||||
addListener("change", '.remote_switch_class', function()
|
||||
{
|
||||
Hostcontroller.change_enabled(document.getElementsByName("remote_switch")[0].checked);
|
||||
var enabled = document.getElementsByName("remote_switch")[0].checked;
|
||||
Hostcontroller.change_enabled(enabled);
|
||||
Crypt.set_remote(enabled);
|
||||
});
|
||||
|
||||
addListener("change", '.intelligent_switch_class', function()
|
||||
{
|
||||
var enabled = document.getElementsByName("intelligent_switch")[0].checked;
|
||||
change_intelligent(enabled);
|
||||
Crypt.set_intelligent_list_enabled(enabled);
|
||||
if(enabled) {
|
||||
toast("Enabled intelligent playlist!");
|
||||
} else {
|
||||
toast("Disabled intelligent playlist.");
|
||||
}
|
||||
});
|
||||
|
||||
addListener("change", '.offline_switch_class', function()
|
||||
{
|
||||
offline = document.getElementsByName("offline_switch")[0].checked;
|
||||
@@ -1855,6 +1869,31 @@ function addDynamicListeners() {
|
||||
image_timeout = setTimeout(function(){
|
||||
that.querySelector(".card-reveal").setAttribute("style", "display: none;");
|
||||
}, 100);
|
||||
} else if(!Helper.mobilecheck() && Crypt.get_intelligent_list_enabled()){
|
||||
try {
|
||||
if(event.target.id == "wrapper" && event.relatedTarget.id != "context-menu-overlay" && event.relatedTarget.className.indexOf("context-menu-list") == -1 && event.relatedTarget.className.indexOf("context-menu-item") == -1) {
|
||||
clearIntelligentQueue();
|
||||
} else if(event.target.id == "context-menu-overlay" || event.relatedTarget.className.indexOf("context-menu-list") >= 0 || event.relatedTarget.className.indexOf("context-menu-item") >= 0) {
|
||||
var related = event.relatedTarget;
|
||||
if(related.id == "wrapper" || related.className.indexOf("context-menu-list") >= 0 || related.className.indexOf("context-menu-item") >= 0) {
|
||||
enable_intelligent_list();
|
||||
return;
|
||||
}
|
||||
var parent = related.parentElement;
|
||||
while(parent != null) {
|
||||
try {
|
||||
if(parent.id == "wrapper" || parent.className.indexOf("context-menu-list") >= 0 || parent.className.indexOf("context-menu-item") >= 0) {
|
||||
enable_intelligent_list();
|
||||
return;
|
||||
}
|
||||
} catch(e){}
|
||||
try {
|
||||
parent = parent.parentElement;
|
||||
} catch(e){break;}
|
||||
}
|
||||
clearIntelligentQueue();
|
||||
}
|
||||
} catch(e) {}
|
||||
}
|
||||
}, true);
|
||||
|
||||
@@ -1867,6 +1906,8 @@ function addDynamicListeners() {
|
||||
image_timeout = setTimeout(function(){
|
||||
that.querySelector(".card-reveal").setAttribute("style", "display: block;transform: translateY(-100%);");
|
||||
}, 50);
|
||||
} else if(event.target.id == "wrapper") {
|
||||
enable_intelligent_list();
|
||||
}
|
||||
}, true);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user