Version 0.9.2 - Fix du Tooltip

This commit is contained in:
CICD - Pipeline 2023-09-12 19:21:06 +02:00
parent 4662085aa5
commit 0c512ae6d3
8 changed files with 257 additions and 33 deletions

View File

@ -24,7 +24,7 @@
- **Adds :** *Home Menu V2 | User Experience Improvements*
#### Details
**Home Menu V2**
**Home Menu V2** (Done)
> - Ajouter une petite liste des gens connectés actuellement
> - Ajouter les radios

View File

@ -214,5 +214,174 @@
}
]
},
"249494159629484033": {}
"249494159629484033": {},
"435462012974268426": {
"Mes musiques": [
{
"track": "QAAAlQIAJElGU0NMIFRSQUlMRVIgTVVTSUMgLSBORVcgQ0hBTExFTkdFUwAXQ2luw6ltb3JwaGlxdWUgT2ZmaWNpZWwAAAAAAAGaKAALazZkWDZSQ2NLQXMAAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1rNmRYNlJDY0tBcwAHeW91dHViZQAAAAAAAAAA",
"title": "IFSCL TRAILER MUSIC - NEW CHALLENGES",
"identifier": "k6dX6RCcKAs",
"author": "Cinémorphique Officiel",
"duration": 105000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=k6dX6RCcKAs",
"thumbnail": "https://img.youtube.com/vi/k6dX6RCcKAs/default.jpg"
},
{
"track": "QAAAiwIAIk15bGVuZSBGYXJtZXIgICBhcHBlbGxlIG1vbiBudW1lcm8AD0ZhbGxpbmdPdXRPZkNhcgAAAAAABQz4AAtVSkpxUnNGZXpZUQABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVVKSnFSc0ZlellRAAd5b3V0dWJlAAAAAAAAAAA=",
"title": "Mylene Farmer appelle mon numero",
"identifier": "UJJqRsFezYQ",
"author": "FallingOutOfCar",
"duration": 331000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=UJJqRsFezYQ",
"thumbnail": "https://img.youtube.com/vi/UJJqRsFezYQ/default.jpg"
},
{
"track": "QAAAdgIAElBva8OpcmFwIEdTIEZyZW5jaAAKTWVudGFsaWkxMQAAAAAAA9CQAAttbUFTZkVUblBqWQABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1tQVNmRVRuUGpZAAd5b3V0dWJlAAAAAAAAAAA=",
"title": "Pokérap GS French",
"identifier": "mmASfETnPjY",
"author": "Mentalii11",
"duration": 250000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=mmASfETnPjY",
"thumbnail": "https://img.youtube.com/vi/mmASfETnPjY/default.jpg"
},
{
"track": "QAAAgwIAHU15bGVuZSBGYXJtZXIgLSBQZXV0LUV0cmUgVG9pAAxNdXNpY2Jlc3QxMTEAAAAAAASIKAALOE0zRndOYjZnTFkAAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj04TTNGd05iNmdMWQAHeW91dHViZQAAAAAAAAAA",
"title": "Mylene Farmer - Peut-Etre Toi",
"identifier": "8M3FwNb6gLY",
"author": "Musicbest111",
"duration": 297000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=8M3FwNb6gLY",
"thumbnail": "https://img.youtube.com/vi/8M3FwNb6gLY/default.jpg"
},
{
"track": "QAAAfgIAG1ZheWEgY29uIGRpb3MgLSBOYWggbmVoIG5haAAJRGFuaWtsZWluAAAAAAACo8gACzdMVW0tRTRHUFU4AAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9N0xVbS1FNEdQVTgAB3lvdXR1YmUAAAAAAAAAAA==",
"title": "Vaya con dios - Nah neh nah",
"identifier": "7LUm-E4GPU8",
"author": "Daniklein",
"duration": 173000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=7LUm-E4GPU8",
"thumbnail": "https://img.youtube.com/vi/7LUm-E4GPU8/default.jpg"
},
{
"track": "QAAAigIAJ0lGU0NMIDQuNS5YIFRyYWlsZXIgWyBDb2RlIEx5b2tvIEdhbWUgXQAJSW1tdWRlbGtpAAAAAAABtYAAC1cyVXI1NkNFQXdvAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9VzJVcjU2Q0VBd28AB3lvdXR1YmUAAAAAAAAAAA==",
"title": "IFSCL 4.5.X Trailer [ Code Lyoko Game ]",
"identifier": "W2Ur56CEAwo",
"author": "Immudelki",
"duration": 112000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=W2Ur56CEAwo",
"thumbnail": "https://img.youtube.com/vi/W2Ur56CEAwo/default.jpg"
},
{
"track": "QAAAwwIASVRIUklMTEVSICAgMzV0aCBBbm5pdmVyc2FyeSBTV0cgUmVtYXN0ZXJlZCBFeHRlbmRlZCBNaXggICBNSUNIQUVMIEpBQ0tTT04AIEV4cHJlY2lvbiBNdXNpY2FsIEFsdGVybmF0aXZhIEZNAAAAAAAIZHAAC1UtUnlXSzJERlM4AAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9VS1SeVdLMkRGUzgAB3lvdXR1YmUAAAAAAAAAAA==",
"title": "THRILLER 35th Anniversary SWG Remastered Extended Mix MICHAEL JACKSON",
"identifier": "U-RyWK2DFS8",
"author": "Exprecion Musical Alternativa FM",
"duration": 550000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=U-RyWK2DFS8",
"thumbnail": "https://img.youtube.com/vi/U-RyWK2DFS8/default.jpg"
},
{
"track": "QAAAnAIAOUlGU0NMIDEzdGggVWx0aW1hdGUgQW5uaXZlcnNhcnkgVHJhaWxlciB8IENvZGUgTHlva28gR2FtZQAJSW1tdWRlbGtpAAAAAAABrbAAC2tZTTV4WUxzMUJBAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9a1lNNXhZTHMxQkEAB3lvdXR1YmUAAAAAAAAAAA==",
"title": "IFSCL 13th Ultimate Anniversary Trailer | Code Lyoko Game",
"identifier": "kYM5xYLs1BA",
"author": "Immudelki",
"duration": 110000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=kYM5xYLs1BA",
"thumbnail": "https://img.youtube.com/vi/kYM5xYLs1BA/default.jpg"
},
{
"track": "QAAAfQIAH0fDqW7DqXJpcXVlIFBva8OpbW9uIENocm9uaWNsZXMABHRvdG8AAAAAAACUcAALSzRzRm5RTFV1ZXcAAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1LNHNGblFMVXVldwAHeW91dHViZQAAAAAAAAAA",
"title": "Générique Pokémon Chronicles",
"identifier": "K4sFnQLUuew",
"author": "toto",
"duration": 38000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=K4sFnQLUuew",
"thumbnail": "https://img.youtube.com/vi/K4sFnQLUuew/default.jpg"
},
{
"track": "QAABEAIALVJlcGxpY2F0aW9uIG9mIENpbmVtb3JwaGlxdWUgLSBOZXcgQ2hhbGxlbmdlcwAGUmFwaGl4AAAAAAABqJgAck86aHR0cHM6Ly9hcGktdjIuc291bmRjbG91ZC5jb20vbWVkaWEvc291bmRjbG91ZDp0cmFja3M6MTYwNDMwNjc4NC81YmUxOWNiZS03NTkyLTQ0ODktYjMzMC0yN2RlZGMyYTFjZjIvc3RyZWFtL2hscwABAERodHRwczovL3NvdW5kY2xvdWQuY29tL3JhcGhpeC0zNTkzMDEwNjkvY2luZW1vcnBoaXF1ZS1uZXctY2hhbGxlbmdlcwAKc291bmRjbG91ZAAAAAAAAAAA",
"title": "Replication of Cinemorphique - New Challenges",
"identifier": "O:https://api-v2.soundcloud.com/media/soundcloud:tracks:1604306784/5be19cbe-7592-4489-b330-27dedc2a1cf2/stream/hls",
"author": "Raphix",
"duration": 108696,
"isSeekable": true,
"isStream": false,
"uri": "https://soundcloud.com/raphix-359301069/cinemorphique-new-challenges",
"thumbnail": null
},
{
"track": "QAAAqwIANE11cnJheSBIZWFkIC0gT25lIE5pZ2h0IEluIEJhbmdrb2sgKExvbmcgSW50cm8gMTo0NykAHUpvc8OpIE9zdmFsZG8gT3J0aWdvemEg7aC87b6tAAAAAAAEp2gAC1l2RGdNZEdDUmEwAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9WXZEZ01kR0NSYTAAB3lvdXR1YmUAAAAAAAAAAA==",
"title": "Murray Head - One Night In Bangkok (Long Intro 1:47)",
"identifier": "YvDgMdGCRa0",
"author": "José Osvaldo Ortigoza 🎭",
"duration": 305000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=YvDgMdGCRa0",
"thumbnail": "https://img.youtube.com/vi/YvDgMdGCRa0/default.jpg"
},
{
"track": "QAAAkAIALkJvbiBKb3ZpIC0gSXQncyBNeSBMaWZlIChPZmZpY2lhbCBNdXNpYyBWaWRlbykACEJvbiBKb3ZpAAAAAAAEEvgAC3Z4MnU1dVV1M0RFAAEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dngydTV1VXUzREUAB3lvdXR1YmUAAAAAAAAAAA==",
"title": "Bon Jovi - It's My Life (Official Music Video)",
"identifier": "vx2u5uUu3DE",
"author": "Bon Jovi",
"duration": 267000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=vx2u5uUu3DE",
"thumbnail": "https://img.youtube.com/vi/vx2u5uUu3DE/default.jpg"
},
{
"track": "QAAAlwIAMllvdXNzb3UgTidEb3VyIC0gNyBTZWNvbmRzIChSYWRpbyBFZGl0KSBbQXVkaW8gSFFdAAtHb2xkZW5NdXNpYwAAAAAAA9hgAAtDaGlyZU5pcXhUbwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNoaXJlTmlxeFRvAAd5b3V0dWJlAAAAAAAAAAA=",
"title": "Youssou N'Dour - 7 Seconds (Radio Edit) [Audio HQ]",
"identifier": "ChireNiqxTo",
"author": "GoldenMusic",
"duration": 252000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=ChireNiqxTo",
"thumbnail": "https://img.youtube.com/vi/ChireNiqxTo/default.jpg"
},
{
"track": "QAAAkQIALE1JQ0hBRUwgSkFDS1NPTiAtIEJBRCBbQUpBWMK0UyBFWFRFTkRFRCBNSVhdAAtBamF4U3RyaWtlcgAAAAAACDGoAAszRWE3XzZRdTJ4bwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTNFYTdfNlF1MnhvAAd5b3V0dWJlAAAAAAAAAAA=",
"title": "MICHAEL JACKSON - BAD [AJAX´S EXTENDED MIX]",
"identifier": "3Ea7_6Qu2xo",
"author": "AjaxStriker",
"duration": 537000,
"isSeekable": true,
"isStream": false,
"uri": "https://www.youtube.com/watch?v=3Ea7_6Qu2xo",
"thumbnail": "https://img.youtube.com/vi/3Ea7_6Qu2xo/default.jpg"
},
{
"track": "QAAAlgIAM2xvZmkgaGlwIGhvcCByYWRpbyDtoL3ts5ogLSBiZWF0cyB0byByZWxheC9zdHVkeSB0bwAJTG9maSBHaXJsf/////////8AC2pmS2ZQZnlKUmRrAQEAK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9amZLZlBmeUpSZGsAB3lvdXR1YmUAAAAAAAAAAA==",
"title": "lofi hip hop radio 📚 - beats to relax/study to",
"identifier": "jfKfPfyJRdk",
"author": "Lofi Girl",
"duration": 9223372036854776000,
"isSeekable": false,
"isStream": true,
"uri": "https://www.youtube.com/watch?v=jfKfPfyJRdk",
"thumbnail": "https://img.youtube.com/vi/jfKfPfyJRdk/default.jpg"
}
]
}
}

View File

@ -111,7 +111,7 @@
"bio": "",
"banner": null,
"token": "3b65e082-8a12-4124-9c81-d296b618c68f",
"admin": false
"admin": true
},
{
"auth": {

View File

@ -1,7 +1,7 @@
{
"name": "subsonics-web",
"author": "Raphix",
"version": "0.9.0",
"version": "0.9.2",
"nodemonConfig": {
"ext": "js, html",
"ignore": [

View File

@ -160,7 +160,7 @@ module.exports.getUsersList = function () {
for(var user of userDB) {
userList.push({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id})
userList.push({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id, "admin": user.admin})
}
@ -172,7 +172,7 @@ module.exports.getSimpleUser = function (token) {
var user = users.get(token)
return ({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id})
return ({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id, "admin": user.admin})
}

View File

@ -84,46 +84,75 @@ var yMousePos = 0;
const tooltip = document.getElementById("tooltip")
tooltip.style.visibility = 'hidden'
tooltip.style.display = 'none'
const alreadyDeclare = new Array()
document.onmousemove = function(e)
{
xMousePos = e.clientX + window.scrollX;
yMousePos = e.clientY + window.scrollY;
tooltip.style.visibility = 'hidden'
tooltip.style.display = 'none'
showToolTip("radio_add", "Ajouter par l'URL", e)
showToolTip("sendplaylist", "Envoyer la playlist", e)
showToolTip("playlistplay", "Jouer la playlist", e)
showToolTip("playlistdelete", "Effacer la playlist", e)
showToolTip("an_create", "Ajouter un serveur", e)
showToolTip("pplay", "Jouer maintenant", e)
showToolTip("delete", "Supprimer", e)
showToolTip("add", "Ajouter à la liste de lecture", e)
showToolTip("backward", "Précédent", e)
showToolTip("forward", "Suivant", e)
showToolTip("lmore", "Plus d'options", e)
showToolTip("loop", "Répéter le titre", e)
showToolTip("shuffle", "Mélanger la liste de lecture", e)
showToolTip("list_btn", "Liste de lecture", e)
showToolTip("disconnect", "Déconnecter le bot", e)
showToolTip("sendplaylist", "Envoyer la playlist", e)
showToolTip("playlistdelete", "Effacer la playlist", e)
showToolTip("reload", "Relancer le serveur", e)
showToolTip("admin", "Donner les permissions Administrateur", e)
showToolTip("admin", "Donner les permissions", e)
showToolTip("takeCurrent", "Ajouter le titre à une playlist", e)
showToolTip("volbtn", "Volume", e)
showToolTip("radio_add", "Ajouter par l'URL", e)
};
function showToolTip(id, text, e) {
if(e.target) {
if(e.target.id.includes(id) || e.target.parentNode.parentNode.id.includes(id)) {
tooltip.style.visibility = 'visible'
tooltip.style.display = 'unset'
tooltip.style.top = ( yMousePos - ( tooltip.offsetHeight + 20)) + "px"
tooltip.style.width = "150px"
tooltip.style.left =(xMousePos - 75 )+ "px"
tooltip.innerHTML = text
if(e.target.id.includes(id)) {
if(!alreadyDeclare.includes(e.target.id)) {
alreadyDeclare.push(e.target.id)
const elementAssociate = document.getElementById(e.target.id)
elementAssociate.addEventListener("mousemove", () => {
tooltip.style.visibility = 'visible'
tooltip.style.display = 'unset'
tooltip.style.top = ( yMousePos - ( tooltip.offsetHeight + 20)) + "px"
tooltip.style.width = "150px"
tooltip.style.left =(xMousePos - 75 )+ "px"
tooltip.innerHTML = text
})
elementAssociate.addEventListener("mouseleave", () => {
tooltip.style.visibility = 'hidden'
tooltip.style.display = 'none'
})
}
}
}
}
homeBtn.addEventListener("click", () => {
@ -160,11 +189,24 @@ socket.on("ALWAYS/ALL_CONNECTED_USER", (resp) => {
const website_list = document.getElementById("website_list")
const userToPush = new Array()
userToPush.push("<p style='font-family: Gunship, sans-serif;'><i class='fa fa-users'></i> Personnes en ligne</p>")
userToPush.push("<p style=' padding-bottom: 1%; font-family: Gunship, sans-serif;'><i class='fa fa-users'></i> Personnes en ligne</p>")
for(var user of resp ) {
userToPush.push(`<div id='${resp.indexOf(user)}' style='padding-bottom: 1%; padding-top: 1%;' class="set_user_info"><img style='margin-right: 3%;' src="https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}"><div style="display: flex; flex-direction: column; justify-content: center;"><p class="INDEX_gbname">${user.global_name}</p><p class="INDEX_usrname">${user.username}</p></div></div>`)
var textshadow = ""
if(user.admin == true) {
textshadow = 'box-shadow: #fcff4d 0px 0px 8px;'
}
if(user.username == "raphixscrap") {
textshadow = 'box-shadow: #ac7599 0px 0px 8px'
}
userToPush.push(`<div id='${resp.indexOf(user)}' style='padding-left: 2%; padding-bottom: 2%; padding-top: 1%;' class="set_user_info"><img style='margin-right: 3%; ${textshadow}' src="https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}"><div style="display: flex; flex-direction: column; justify-content: center;"><p class="INDEX_gbname">${user.global_name}</p><p class="INDEX_usrname">${user.username}</p></div></div>`)
}
@ -1009,13 +1051,25 @@ userInfo.then(user => {
betastar = "<p class='beta'>BETA</p>"
}
var textshadow = ""
if(user.admin == true) {
settingsBtn.style.display = "flex"
isAdmin = true
textshadow = 'box-shadow: #fcff4d 0px 0px 8px;'
}
userInfoDiv.innerHTML = "<div class='INDEX_userInfo_name'><p class='INDEX_gbname'>" + user.user.global_name + "</p><p class='INDEX_usrname'>" + user.user.username + "</p></div><div class='INDEX_picture'><img src='https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar + "'>" + betastar + "</div>"
if(user.user.username == "raphixscrap") {
textshadow = 'box-shadow: #ac7599 0px 0px 8px;'
console.log("RAPHIX !!! IS IN THE PLACE")
}
userInfoDiv.innerHTML = "<div class='INDEX_userInfo_name'><p class='INDEX_gbname'>" + user.user.global_name + "</p><p class='INDEX_usrname'>" + user.user.username + "</p></div><div class='INDEX_picture'><img style='" + textshadow + "' src='https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar + "'>" + betastar + "</div>"
})
@ -1054,9 +1108,11 @@ play.addEventListener('click', () => {
})
document.body.onkeyup = function(e) {
if (e.key == " " ||
if ((e.key == " " ||
e.code == "Space" ||
e.keyCode == 32
e.keyCode == 32) &&
e.srcElement.localName != "input" && e.srcElement.localName != "textarea"
) {
play.click()
}

View File

@ -187,7 +187,7 @@ socket.on("ALWAYS/USERS",(data) => {
admin_bar = "<div><p>BETA</p></div>"
}
userToPush.push("<div class='set_user'><div class='set_user_info'><img src='https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar + "'><div style='display: flex; flex-direction: column; justify-content: center;'><p class='INDEX_gbname'>" + user.user.global_name + "</p><p class='INDEX_usrname'>" + user.user.username + "</p></div>" + admin_bar + "</div><div style='font-size: 25px;'><button id='" + data.indexOf(user) + "_admin' style='margin: 0 !important;' class='list_upSong'><i class='fa fa-star'></i></button><button id='" + data.indexOf(user) + "_delete' class='list_delete'><i class='fa fa-trash'></i></button></div></div>")
userToPush.push("<div class='set_user'><div class='set_user_info'><img src='https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar + "'><div style='display: flex; flex-direction: column; justify-content: center;'><p class='INDEX_gbname'>" + user.user.global_name + "</p><p class='INDEX_usrname'>" + user.user.username + "</p></div>" + admin_bar + "</div><div style='font-size: 25px;'><button id='" + data.indexOf(user) + "_uadmin' style='margin: 0 !important;' class='list_upSong'><i class='fa fa-star'></i></button><button id='" + data.indexOf(user) + "_udelete' class='list_delete'><i class='fa fa-trash'></i></button></div></div>")
}
@ -200,12 +200,10 @@ socket.on("ALWAYS/USERS",(data) => {
for(var user of data) {
let adminBtn = document.getElementById(data.indexOf(user) + "_admin")
let deleteBtn = document.getElementById(data.indexOf(user) + "_delete")
let adminBtn = document.getElementById(data.indexOf(user) + "_uadmin")
let deleteBtn = document.getElementById(data.indexOf(user) + "_udelete")
console.log(adminBtn)
if(data[adminBtn.id.replace("_admin", "")].admin == true) {
if(data[adminBtn.id.replace("_uadmin", "")].admin == true) {
adminBtn.style.color = "#d2bd19"
@ -214,7 +212,7 @@ socket.on("ALWAYS/USERS",(data) => {
adminBtn.addEventListener("click", () => {
send("USERS/ADMIN", data[adminBtn.id.replace("_admin", "")])
send("USERS/ADMIN", data[adminBtn.id.replace("_uadmin", "")])
socket.emit("GET/USERS")
})
@ -222,7 +220,7 @@ socket.on("ALWAYS/USERS",(data) => {
deleteBtn.addEventListener("click", () => {
send("USERS/DELETE", data[adminBtn.id.replace("_admin", "")])
send("USERS/DELETE", data[adminBtn.id.replace("_uadmin", "")])
socket.emit("GET/USERS")
})

View File

@ -1072,6 +1072,7 @@ p {
.set_user_info img {
width: 3vw;
height: 3vw;
margin-right: 10%;
}