diff --git a/src/main/java/net/Broken/RestApi/Data/PlaylistData.java b/src/main/java/net/Broken/RestApi/Data/PlaylistData.java new file mode 100644 index 0000000..04f5000 --- /dev/null +++ b/src/main/java/net/Broken/RestApi/Data/PlaylistData.java @@ -0,0 +1,18 @@ +package net.Broken.RestApi.Data; + +import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; + +import java.util.List; + +public class PlaylistData { + + private List list; + + public PlaylistData(List list) { + this.list = list; + } + + public List getList() { + return list; + } +} diff --git a/src/main/java/net/Broken/RestApi/MusicWebController.java b/src/main/java/net/Broken/RestApi/MusicWebController.java index 84df22f..2429932 100644 --- a/src/main/java/net/Broken/RestApi/MusicWebController.java +++ b/src/main/java/net/Broken/RestApi/MusicWebController.java @@ -2,14 +2,19 @@ package net.Broken.RestApi; import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; import com.sedmelluq.discord.lavaplayer.track.AudioTrack; +import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; import net.Broken.Commandes.Music; import net.Broken.MainBot; import net.Broken.RestApi.Data.CurrentMusicData; +import net.Broken.RestApi.Data.PlaylistData; import net.Broken.audio.NotConectedException; import net.Broken.audio.NullMusicManager; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("/api/music/") public class MusicWebController { @@ -28,4 +33,16 @@ public class MusicWebController { return new CurrentMusicData(null,0, "STOP",false); } } + + @RequestMapping("/getPlaylist") + public PlaylistData getPlaylist(){ + Music musicCommande = (Music) MainBot.commandes.get("music"); + List list = null; + try { + list = musicCommande.getAudioManager().getMusicManager().scheduler.getList(); + return new PlaylistData(list); + } catch (NullMusicManager | NotConectedException nullMusicManager) { + return new PlaylistData(list); + } + } } diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 2402330..8a55852 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -25,37 +25,3 @@ - - - - - -<<<<<<< Updated upstream -======= - ->>>>>>> Stashed changes - - - - [%d{yyy-MM-dd ~ HH:mm:ss.SSS}][%-5level]%-30.30c{1.}: %msg%n - - - - - - - - - - - - - -<<<<<<< Updated upstream - -======= ->>>>>>> Stashed changes - - - diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index e44bab3..397fb88 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -1,22 +1,10 @@ -.main, footer { - padding-right: 300px; -} - -.side-nav{ - top: 10.2%; -} - .nav-wrapper{ margin-right: 1%; margin-left: 1%; width: 100%; } -@media only screen and (max-width : 992px) { - .main, footer { - padding-right: 0; - } - .side-nav{ - top: 0%; - } + +.collapsible-body{ + padding: 0px; } \ No newline at end of file diff --git a/src/main/resources/static/img/.directory b/src/main/resources/static/img/.directory new file mode 100644 index 0000000..234b912 --- /dev/null +++ b/src/main/resources/static/img/.directory @@ -0,0 +1,6 @@ +[Dolphin] +Timestamp=2017,12,24,15,16,6 +Version=4 + +[Settings] +HiddenFilesShown=true diff --git a/src/main/resources/static/img/no_music.jpg b/src/main/resources/static/img/no_music.jpg new file mode 100644 index 0000000..d0e8aae Binary files /dev/null and b/src/main/resources/static/img/no_music.jpg differ diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 5747a44..4119e3c 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -31,61 +31,92 @@ Home
  • - ac_unit + Playlist
  • - menu + menu
    -
    -
    - -
    -

    Test- By test

    -
    -
    -
    +
    +
    +
    + +
    +

    +
    +
    +
    +
    +
    + +
    -
    - - - +
    +
      + +
    -
    - - + + +
    + + + + + + -
      - -
    + diff --git a/src/main/resources/static/js/init.js b/src/main/resources/static/js/init.js index d595aea..8bc156f 100644 --- a/src/main/resources/static/js/init.js +++ b/src/main/resources/static/js/init.js @@ -1,7 +1,182 @@ -$('.button-collapse').sideNav({ - menuWidth: 300, // Default is 300 - edge: 'right', // Choose the horizontal origin - closeOnClick: true, // Closes side-nav on clicks, useful for Angular/Meteor - draggable: true // Choose whether you can drag to open on touch screens, +var savedPlaylist; +var error = false; + +$(document).ready(function() { + setInterval("getCurentMusic()",1000); + // the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered + $('.modal').modal(); + $('.button-collapse-1').sideNav({ + menuWidth: 400, // Default is 300 + edge: 'right', // Choose the horizontal origin + closeOnClick: false, // Closes side-nav on clicks, useful for Angular/Meteor + draggable: true // Choose whether you can drag to open on touch screens, + }); + var height = $( window ).height(); + +}) + + +function updateModal(data){ + $('#modal_title').text("Title: "+ data.info.title); + $('#modal_author').text("Author: "+ data.info.author); + $('#modal_lenght').text("Duration: "+ msToTime(data.info.length)); + $('#modal_url').text("URL: "+ data.info.uri); + + + +} + + + +function getCurentMusic() { + $.get("api/music/currentMusicInfo", function (data) { + }).done(function (data) { + + // alert( "second success" ); + // console.log(data); + switch (data.state) { + case "STOP": + $('#music_text').text("No Music"); + + if (!$('#btn_info').hasClass("indeterminate")) { + $('#btn_info').addClass("determinate").removeClass("indeterminate"); + } + $('#music_progress').width("0%"); + + $('#btn_play').children().text("play_arrow"); + if (!$('#btn_stop').hasClass("disabled")) { + $('#btn_stop').addClass("disabled"); + } + if (!$('#btn_info').hasClass("disabled")) { + $('#btn_info').addClass("disabled"); + } + + $('#music_img').attr("src","/img/no_music.jpg"); + + break; + + case "PLAYING": + $('#btn_play').children().text("pause"); + updateControl(data); + + break; + + case "PAUSE": + $('#btn_play').children().text("play_arrow"); + updateControl(data); + + + break; + + case "LOADING": + if (!$('#btn_info').hasClass("determinate")) { + $('#btn_info').addClass("indeterminate").removeClass("determinate"); + } + break; + } + getPlayList(); + }) + .fail(function (data) { + if(!error){ + alert("error"); + error = true; + } + + }) +} + + +function getPlayList() { + $.get("api/music/getPlaylist", function (data) { + }).done(function (data) { + data = data.list; + if(data.length != 0){ + var noUpdate = comparePlaylist(data, savedPlaylist); + + if(!noUpdate){ + savedPlaylist = data; + $('#playlist_list').empty(); + + data.forEach(function(element){ + var template = $('#playlist_template').clone(); + template.removeAttr("id"); + template.removeAttr("style"); + var content = template.html(); + console.log(content); + content = content.replace("@title", element.title); + content = content.replace("@author", element.author); + content = content.replace("@lenght", msToTime(element.length)); + content = content.replace("@url", element.uri) + template.html(content); + + $('#playlist_list').append(template); + + }); + } + } + + + + }); + +} + + +function msToTime(duration) { + var milliseconds = parseInt((duration%1000)/100) + , seconds = parseInt((duration/1000)%60) + , minutes = parseInt((duration/(1000*60))%60) + , hours = parseInt((duration/(1000*60*60))%24); + + hours = (hours < 10) ? "0" + hours : hours; + minutes = (minutes < 10) ? "0" + minutes : minutes; + seconds = (seconds < 10) ? "0" + seconds : seconds; + if(hours > 0 ) + return hours + ":" + minutes + ":" + seconds; + else + return minutes + ":" + seconds; +} + + +function comparePlaylist(list1, list2){ + if(list1 == null || list2 == null){ + console.log(list1); + console.log(list2); + console.log("False From null") + return false; } - ); \ No newline at end of file + + if(list1.length != list2.length){ + console.log("False from length"); + return false; + } + + + for(var i = 0; i++; i < list1.length){ + if(list1[i].uri != list2[i].uri) + console.log("false from compare") + return false + } + return true; +} + +function updateControl(data){ + $('#music_text').text(data.info.title); + var percent = (data.currentPos / data.info.length) * 100; + // console.log(percent) + if (!$('#btn_info').hasClass("indeterminate")) { + $('#btn_info').addClass("determinate").removeClass("indeterminate"); + } + $('#music_progress').width(percent + "%"); + + + if ($('#btn_stop').hasClass("disabled")) { + $('#btn_stop').removeClass("disabled"); + } + if ($('#btn_info').hasClass("disabled")) { + $('#btn_info').removeClass("disabled"); + } + + $('#music_img').attr("src","http://img.youtube.com/vi/"+data.info.identifier+"/hqdefault.jpg"); + updateModal(data); +} diff --git a/src/main/resources/static/templates/music_item_playlist.html b/src/main/resources/static/templates/music_item_playlist.html new file mode 100644 index 0000000..1e80e33 --- /dev/null +++ b/src/main/resources/static/templates/music_item_playlist.html @@ -0,0 +1,10 @@ +
  • +
    drag_handle
    @title
    +
    +
  • \ No newline at end of file