// Timeline drag and drop const tl_cont_attr = {id:"tl_cont", ondrop: "drop(event, this)", ondragover:"allowDrop(event)"}; const tl_drag_attr = {id:"tl_drag", draggable:"true", ondragstart:"drag(event, this)"}; // Config var timeline_color_cursor = "#FF8839"; var timeline_color_bg = "#2EB8E6"; var src_id = ""; var medias_status = {}; function updatePlaylist(){ var new_list = []; var media_count = document.getElementById("timeline").children.length; for (i=media_count,l=0;i>l;i--) { //~ new_list.push(document.getElementById("timeline").children[i].children[0].getAttribute("media_id")); toMove = document.getElementById("timeline").children[i-1].children[0].getAttribute("media_id"); console.log(toMove); sendCmd("/all/move/" + toMove + "/1"); } } function findTargetIndex(element, index, array, thisArg){ if (element == this) { return index+1; } return 0; }; function moveElements(target) { var elem_list = Array.from(src_id.parentElement.children); var elem_list_slice = elem_list; var source_idx = elem_list.findIndex(findTargetIndex, src_id); var target_idx = elem_list.findIndex(findTargetIndex, target); var idx; if (source_idx < target_idx) { elem_list_slice = elem_list.slice(source_idx+1, target_idx+1); idx = source_idx; } else { elem_list_slice = elem_list.slice(target_idx, source_idx ); idx = target_idx+1; } for (i=0, l=elem_list_slice.length; i-1){ elem = elem.children[child]; } var att = document.createAttribute(attr); att.value = val; elem.setAttributeNode(att); }; function addElement(type, attr, meta = 0, j = 0){ var elem = document.createElement(type); var keys_array = Object.keys(attr); for (i=0, l=keys_array.length;i -1 || command.indexOf("/poweroff") > -1 ) { if ( !confirm("Êtes vous certain de vouloir effectuer cette action ?") ) { return 0; } } else if ( command == "/scan" ) { document.getElementById("status_all").innerHTML = "Searching network for live hosts..."; } else if ( command.indexOf("/sort") > -1 ){ if (command.indexOf('/1/') > -1 ) { clickedButton.value = clickedButton.value.replace('/1/','/0/') } else { clickedButton.value = clickedButton.value.replace('/0/','/1/') } } else if ( command.indexOf("/move") > -1 ) { const test_array = [21,19,20]; for (i=test_array.length, l=0;i>l;i--){ console.log(test_array[i-1]); sendCmd("/all/move/" + test_array[i-1] + "/1"); }; sendCmd("/all/list"); //setInterval( sendCmd, scanInterval, "/all/move/16/1"); }; // On envoie la commande en AJAX var request = new XMLHttpRequest(); if ( command == "/scan" ) { request.onload = sendCmd(command); } // On construit la commande request.open("GET", command, true); // et on l'envoie request.send(); }); } }, true); // Affichage des infos function parseResult(command, infos_array) { switch (command) { case "/all/status": // Iterate over array for (var i = 0, l=infos_array.length; i " + infos_array[i].time + " / " + infos_array[i].leng; medias_status[infos_array[i].id] = infos_array[i].pos; // Find currently playing element //~ var pl_length = document.getElementById("timeline").getAttribute("length"); //~ for (j=0,k=pl_length;j" + "Id" + "Filename" + "Duration" + ""; for (var j = 0, k=items_array.length; j" + item_meta[0] + "" + "" + item_meta[1] + "" + "" + item_meta[2] + "" + "" ; // Timeline var child_node = addElement("div", tl_drag_attr, item_meta, j); var len = document.getElementById("timeline").children.length; addAttr("timeline", "length", len); if ( len < items_array.length ) { document.getElementById("timeline").appendChild( addElement("div", tl_cont_attr, 0, len) ); } document.getElementById(tl_cont_attr.id + j).replaceChildren(child_node); // Adjust elements width adjustTl(); // Highlight currently playing element if (item_meta[3] != ""){ document.getElementById(tl_cont_attr.id + j).children[0].style.borderBottom = "4px solid " + timeline_color_cursor; document.getElementById(tl_cont_attr.id + j).children[0].style.fontWeight = "bold"; var pos = medias_status[item_meta[0]] * 100; //~ pos = pos.toPrecision(2); var pos1 = pos-1 + "%"; pos = pos + "%"; //console.log( "linear-gradient(90deg," + timeline_color2 + " " + pos1 + ", " + timeline_color1 + " " + pos + ", " + timeline_color2 + " " + pos + ")" ); document.getElementById(tl_cont_attr.id + j).children[0].style.background = "linear-gradient(90deg," + timeline_color_bg + " " + pos1 + ", " + timeline_color_cursor + " " + pos + ", " + timeline_color_bg + " " + pos + ")"; } } html_table += ""; document.getElementById("playlist_"+infos_array[i].host).innerHTML += html_table; }; break; case "/scan": var host_up = infos_array[0]; var host_down = infos_array[1]; for ( var i=0, l=host_up.length; i" + "Filename" + "Duration" + ""; for (var j = 0, k=infos_array.length; j" + infos_array[j] + "" + "" + "00:00" + "" + "" ; } html_table += ""; document.getElementById("filelist").innerHTML = html_table; break; case "/all/rssi": var signal_color = 40; var best_rssi = 30; var worst_rssi = 70; for (var j = 0, k=infos_array.length; j