Version 0.9.2 - Fix du Tooltip
This commit is contained in:
		@@ -24,7 +24,7 @@
 | 
				
			|||||||
- **Adds :** *Home Menu V2 | User Experience Improvements*
 | 
					- **Adds :** *Home Menu V2 | User Experience Improvements*
 | 
				
			||||||
#### Details
 | 
					#### Details
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Home Menu V2**
 | 
					**Home Menu V2** (Done)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> - Ajouter une petite liste des gens connectés actuellement
 | 
					> - Ajouter une petite liste des gens connectés actuellement
 | 
				
			||||||
> - Ajouter les radios
 | 
					> - Ajouter les radios
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -111,7 +111,7 @@
 | 
				
			|||||||
    "bio": "",
 | 
					    "bio": "",
 | 
				
			||||||
    "banner": null,
 | 
					    "banner": null,
 | 
				
			||||||
    "token": "3b65e082-8a12-4124-9c81-d296b618c68f",
 | 
					    "token": "3b65e082-8a12-4124-9c81-d296b618c68f",
 | 
				
			||||||
    "admin": false
 | 
					    "admin": true
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "auth": {
 | 
					    "auth": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "subsonics-web",
 | 
					  "name": "subsonics-web",
 | 
				
			||||||
  "author": "Raphix",
 | 
					  "author": "Raphix",
 | 
				
			||||||
  "version": "0.9.0",
 | 
					  "version": "0.9.2",
 | 
				
			||||||
  "nodemonConfig": {
 | 
					  "nodemonConfig": {
 | 
				
			||||||
    "ext": "js, html",
 | 
					    "ext": "js, html",
 | 
				
			||||||
    "ignore": [
 | 
					    "ignore": [
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -160,7 +160,7 @@ module.exports.getUsersList = function () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for(var user of userDB) {
 | 
					    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)
 | 
					    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})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,34 +84,50 @@ var yMousePos = 0;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const tooltip = document.getElementById("tooltip")
 | 
					const tooltip = document.getElementById("tooltip")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tooltip.style.visibility = 'hidden'
 | 
				
			||||||
 | 
					tooltip.style.display = 'none'
 | 
				
			||||||
 | 
					const alreadyDeclare = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
document.onmousemove = function(e)
 | 
					document.onmousemove = function(e)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  xMousePos = e.clientX + window.scrollX;
 | 
					  xMousePos = e.clientX + window.scrollX;
 | 
				
			||||||
  yMousePos = e.clientY + window.scrollY;
 | 
					  yMousePos = e.clientY + window.scrollY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  tooltip.style.visibility = 'hidden'
 | 
					  showToolTip("radio_add", "Ajouter par l'URL", e)
 | 
				
			||||||
  tooltip.style.display = 'none'
 | 
					  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("pplay", "Jouer maintenant", e)
 | 
				
			||||||
  showToolTip("delete", "Supprimer", e)
 | 
					  showToolTip("delete", "Supprimer", e)
 | 
				
			||||||
  showToolTip("add", "Ajouter à la liste de lecture", 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("loop", "Répéter le titre", e)
 | 
				
			||||||
  showToolTip("shuffle", "Mélanger la liste de lecture", e)
 | 
					  showToolTip("shuffle", "Mélanger la liste de lecture", e)
 | 
				
			||||||
  showToolTip("list_btn", "Liste de lecture", e)
 | 
					  showToolTip("list_btn", "Liste de lecture", e)
 | 
				
			||||||
  showToolTip("disconnect", "Déconnecter le bot", 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("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("takeCurrent", "Ajouter le titre à une playlist", e)
 | 
				
			||||||
  showToolTip("volbtn", "Volume", e)
 | 
					  showToolTip("volbtn", "Volume", e)
 | 
				
			||||||
  showToolTip("radio_add", "Ajouter par l'URL", e)
 | 
					 
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function showToolTip(id, text, e) {
 | 
					function showToolTip(id, text, e) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if(e.target) {
 | 
					    if(e.target) {
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if(e.target.id.includes(id) || e.target.parentNode.parentNode.id.includes(id)) {
 | 
					        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.visibility = 'visible'
 | 
				
			||||||
                    tooltip.style.display = 'unset'
 | 
					                    tooltip.style.display = 'unset'
 | 
				
			||||||
                    tooltip.style.top = ( yMousePos - ( tooltip.offsetHeight + 20)) + "px"
 | 
					                    tooltip.style.top = ( yMousePos - ( tooltip.offsetHeight + 20)) + "px"
 | 
				
			||||||
@@ -119,11 +135,24 @@ function showToolTip(id, text, e) {
 | 
				
			|||||||
                    tooltip.style.left =(xMousePos - 75 )+ "px"
 | 
					                    tooltip.style.left =(xMousePos - 75 )+ "px"
 | 
				
			||||||
                    tooltip.innerHTML = text
 | 
					                    tooltip.innerHTML = text
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                elementAssociate.addEventListener("mouseleave", () => {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					                    tooltip.style.visibility = 'hidden'
 | 
				
			||||||
 | 
					                    tooltip.style.display = 'none'
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        } 
 | 
					        } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
homeBtn.addEventListener("click", () => {
 | 
					homeBtn.addEventListener("click", () => {
 | 
				
			||||||
@@ -160,11 +189,24 @@ socket.on("ALWAYS/ALL_CONNECTED_USER", (resp) => {
 | 
				
			|||||||
        const website_list = document.getElementById("website_list")
 | 
					        const website_list = document.getElementById("website_list")
 | 
				
			||||||
        const userToPush = new Array()
 | 
					        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 ) {
 | 
					        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>"
 | 
					        betastar = "<p class='beta'>BETA</p>"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var textshadow = ""
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
    if(user.admin == true) {
 | 
					    if(user.admin == true) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        settingsBtn.style.display = "flex"
 | 
					        settingsBtn.style.display = "flex"
 | 
				
			||||||
        isAdmin = true
 | 
					        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) {
 | 
					document.body.onkeyup = function(e) {
 | 
				
			||||||
    if (e.key == " " ||
 | 
					
 | 
				
			||||||
 | 
					    if ((e.key == " " ||
 | 
				
			||||||
        e.code == "Space" ||      
 | 
					        e.code == "Space" ||      
 | 
				
			||||||
        e.keyCode == 32      
 | 
					        e.keyCode == 32) &&
 | 
				
			||||||
 | 
					        e.srcElement.localName != "input" && e.srcElement.localName != "textarea"   
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        play.click()
 | 
					        play.click()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -187,7 +187,7 @@ socket.on("ALWAYS/USERS",(data) => {
 | 
				
			|||||||
                admin_bar = "<div><p>BETA</p></div>"
 | 
					                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) {
 | 
					        for(var user of data) {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
            let adminBtn = document.getElementById(data.indexOf(user) + "_admin")
 | 
					            let adminBtn = document.getElementById(data.indexOf(user) + "_uadmin")
 | 
				
			||||||
            let deleteBtn = document.getElementById(data.indexOf(user) + "_delete") 
 | 
					            let deleteBtn = document.getElementById(data.indexOf(user) + "_udelete") 
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
            console.log(adminBtn)
 | 
					            if(data[adminBtn.id.replace("_uadmin", "")].admin == true) {
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
            if(data[adminBtn.id.replace("_admin", "")].admin == true) {
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
                adminBtn.style.color = "#d2bd19"
 | 
					                adminBtn.style.color = "#d2bd19"
 | 
				
			||||||
@@ -214,7 +212,7 @@ socket.on("ALWAYS/USERS",(data) => {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
            adminBtn.addEventListener("click", () => { 
 | 
					            adminBtn.addEventListener("click", () => { 
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
                send("USERS/ADMIN", data[adminBtn.id.replace("_admin", "")])
 | 
					                send("USERS/ADMIN", data[adminBtn.id.replace("_uadmin", "")])
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
                socket.emit("GET/USERS")
 | 
					                socket.emit("GET/USERS")
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
@@ -222,7 +220,7 @@ socket.on("ALWAYS/USERS",(data) => {
 | 
				
			|||||||
            deleteBtn.addEventListener("click", () => {
 | 
					            deleteBtn.addEventListener("click", () => {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
                send("USERS/DELETE", data[adminBtn.id.replace("_admin", "")])
 | 
					                send("USERS/DELETE", data[adminBtn.id.replace("_uadmin", "")])
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
                socket.emit("GET/USERS")
 | 
					                socket.emit("GET/USERS")
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1072,6 +1072,7 @@ p {
 | 
				
			|||||||
.set_user_info img {
 | 
					.set_user_info img {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    width: 3vw;
 | 
					    width: 3vw;
 | 
				
			||||||
 | 
					    height: 3vw;
 | 
				
			||||||
    margin-right: 10%;
 | 
					    margin-right: 10%;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user