diff --git a/dashboard-ui/css/mediaplayer-video.css b/dashboard-ui/css/mediaplayer-video.css index 951f6213be..ecf2223a79 100644 --- a/dashboard-ui/css/mediaplayer-video.css +++ b/dashboard-ui/css/mediaplayer-video.css @@ -52,10 +52,40 @@ margin-top: 0px; } +#videoControls #video-basic-controls { + position: absolute; + top: 30px; + left: 20px; + bottom: 0; + width: 600px; + display: inline-block; +} + +#videoControls #video-advanced-controls { + position: absolute; + top: 30px; + right: 20px; + bottom: 0; + width: 400px; + display: inline-block; +} + #videoControls .currentTime { margin-top: 25px; } +#slider-tooltip { + z-index: 99999; + position: absolute; + top: -30px; + left: 0; + background-color: #eee; + border: 1px solid #333; + color: #333; + border-radius: 3px; + padding: 5px; +} + /* Fullscreen ***************************************/ @@ -95,6 +125,17 @@ display: none!important } +#mediaPlayer #video-advanced-controls { + text-align: right; +} + +#mediaPlayer #videoControls .mediaPlayerFlyout { + text-align: left; + margin-left: 0; + right: 0; + bottom: 83px; +} + /* Media queries ***************************************/ @@ -165,87 +206,63 @@ /****************************************/ @media all and (max-width: 1200px), all and (max-height: 720px) { - #mediaPlayer .chaptersButton, #mediaPlayer .audioTracksButton { - display: none!important; + #videoControls .nowPlayingMediaInfo { + display: none; } - #mediaPlayer.showVideoMenu .muteButton, #mediaPlayer.showVideoMenu .unmuteButton, #mediaPlayer.showVideoMenu .qualityButton, #mediaPlayer.showVideoMenu .chaptersButton, #mediaPlayer.showVideoMenu .audioTracksButton, #mediaPlayer.showVideoMenu .subtitleButton { - display: initial!important; + #videoControls .currentTime { + margin-right: 0; } - - #mediaPlayer.showVideoMenu .nowPlayingMediaInfo { - display: none!important; + + #videoControls #video-advanced-controls { + width: 350px; } } @media all and (max-width: 960px), all and (max-height: 550px) { - #mediaPlayer .nowPlayingBarImage, #mediaPlayer .qualityButton, #mediaPlayer .audioTracksButton, #mediaPlayer .chaptersButton { - display: none!important; - } - - #mediaPlayer.showVideoMenu .muteButton, #mediaPlayer.showVideoMenu .unmuteButton, #mediaPlayer.showVideoMenu .qualityButton, #mediaPlayer.showVideoMenu .chaptersButton, #mediaPlayer.showVideoMenu .audioTracksButton, #mediaPlayer.showVideoMenu .subtitleButton { - display: initial!important; - } - - #mediaPlayer.showVideoMenu .nowPlayingMediaInfo { - display: none!important; + #videoControls #video-advanced-controls { + width: 275px; } } @media all and (max-width: 800px), all and (max-height: 460px) { - #mediaPlayer .muteButton, #mediaPlayer .unmuteButton, #mediaPlayer .nowPlayingMediaInfo { - display: none!important; - } - - #mediaPlayer .volumeButton, #mediaPlayer .volumeSliderContainer { - display: inline-block!important; - } - - #mediaPlayer.showVideoMenu #videoPlayer { + #mediaPlayer #videoPlayer { margin-top: -180px; } - #mediaPlayer.showVideoMenu .itemVideo { + #mediaPlayer .itemVideo { margin-bottom: 120px; } - #mediaPlayer.showVideoMenu #videoControls { + #mediaPlayer #videoControls { height: 120px; } - #mediaPlayer.showVideoMenu .muteButton, #mediaPlayer.showVideoMenu .unmuteButton, #mediaPlayer.showVideoMenu .qualityButton, #mediaPlayer.showVideoMenu .chaptersButton, #mediaPlayer.showVideoMenu .audioTracksButton, #mediaPlayer.showVideoMenu .subtitleButton { - display: initial!important; + #mediaPlayer #video-basic-controls { + width: 250px; + } + + #mediaPlayer #video-basic-controls .volumeSliderContainer { + margin-top: 8px; + } + + #mediaPlayer #video-basic-controls, #mediaPlayer #video-advanced-controls { + width: 200px; + height: 120px; + } + + #mediaPlayer #videoControls .mediaPlayerFlyout { + bottom: 148px; } } @media all and (max-width: 640px), all and (max-height: 365px) { - #mediaPlayer .fullscreenButton, #mediaPlayer .chaptersButton, #mediaPlayer .audioTracksButton, #mediaPlayer .qualityButton, #mediaPlayer .subtitleButton { - display: none!important; - } - - #mediaPlayer .currentTime { - margin-top: 15px; - } - - #mediaPlayer .volumeSliderContainer { - vertical-align: middle; - margin-top: -5px; - } - - #mediaPlayer.showVideoMenu #videoPlayer { + #mediaPlayer #videoPlayer { margin-top: -135px; } - #mediaPlayer.showVideoMenu .itemVideo { - margin-bottom: 120px; - } - - #mediaPlayer.showVideoMenu #videoControls { - height: 120px; - } - - #mediaPlayer.showVideoMenu .fullscreenButton, #mediaPlayer.showVideoMenu .chaptersButton, #mediaPlayer.showVideoMenu .audioTracksButton, #mediaPlayer.showVideoMenu .qualityButton, #mediaPlayer.showVideoMenu .subtitleButton { - display: initial!important; + #mediaPlayer #video-advanced-controls { + width: 150px; } } diff --git a/dashboard-ui/css/mediaplayer.css b/dashboard-ui/css/mediaplayer.css index 4affbc40c3..c1a1e176db 100644 --- a/dashboard-ui/css/mediaplayer.css +++ b/dashboard-ui/css/mediaplayer.css @@ -79,6 +79,10 @@ width: 130px; } +#nowPlayingBar .positionSliderContainer { + margin-top: 8px; +} + .volumeSliderContainer { width: 90px; } @@ -123,41 +127,41 @@ input[type="range"]::-ms-fill-upper { } @media all and (max-width: 800px) { - .volumeButton, .volumeSliderContainer, .muteButton, .unmuteButton, .nowPlayingMediaInfo { - display: none!important; + #nowPlayingBar .volumeButton, #nowPlayingBar .volumeSliderContainer, #nowPlayingBar .muteButton, #nowPlayingBar .unmuteButton, #nowPlayingBar .nowPlayingMediaInfo { + display: none; /*!important;*/ } } @media all and (max-width: 650px) { - .nowPlayingMediaInfo { + #nowPlayingBar .nowPlayingMediaInfo { display: none; } } @media all and (max-width: 600px) { - .chaptersButton, .audioTracksButton { - display: none!important; + #nowPlayingBar .chaptersButton, #nowPlayingBar .audioTracksButton { + display: none; /*!important;*/ } - .positionSliderContainer, .currentTime { + #nowPlayingBar .positionSliderContainer, #nowPlayingBar .currentTime { top: 0!important; position: relative!important; } } @media all and (max-width: 500px) { - .positionSliderContainer { + #nowPlayingBar .positionSliderContainer { width: 80px; } - .previousTrackButton, .nextTrackButton { - display: none!important; + #nowPlayingBar .previousTrackButton, #nowPlayingBar .nextTrackButton { + display: none; /*!important;*/ } } @media all and (max-width: 400px) { - .playlistButton { - display: none!important; + #nowPlayingBar .playlistButton { + display: none; /*!important;*/ } } @@ -173,18 +177,15 @@ input[type="range"]::-ms-fill-upper { position: absolute; z-index: 99999; bottom: 78px; - margin-left: -50px; + margin-left: -125px; max-height: 300px; overflow-y: auto; font-size: 13px; } -.chaptersFlyout { - width: 250px; -} - -.audioTracksFlyout { +.chaptersFlyout,.audioTracksFlyout { width: 250px; + margin-left: -150px; } .mediaFlyoutOption { @@ -248,7 +249,7 @@ input[type="range"]::-ms-fill-upper { } @media (min-width: 1440px) { - .positionSliderContainer { + #nowPlayingBar .positionSliderContainer { width: 300px; } } diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index 804f672599..0ccf04a569 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -140,21 +140,6 @@ } }; - self.toggleVideoPlayerMenu = function () { - - var mediaPlayer = $("#mediaPlayer"); - - if (videoMenuVisible) { - $(mediaPlayer).removeClass("showVideoMenu"); - } else { - $(mediaPlayer).addClass("showVideoMenu"); - } - - videoMenuVisible = !videoMenuVisible; - - console.log("show vid click"); - }; - $(document).on('webkitfullscreenchange mozfullscreenchange fullscreenchange', function (e) { var videoControls = $('#videoControls'); @@ -227,6 +212,35 @@ idleHandler(this); }); + + var trackChange = false; + + var tooltip = $('
'); + + $("#videoControls .positionSliderContainer .slider").on("change", function (e) { + if (!trackChange) return; + + var pct = $(this).val(); + + var time = self.curentDurationTicks * (Number(pct) * .01); + + var tooltext = Dashboard.getDisplayTime(time) + + tooltip.text(tooltext); + + console.log("slidin", pct, self.curentDurationTicks, time); + + }).on("slidestart", function (e) { + trackChange = true; + + var handle = $("#videoControls .positionSliderContainer .ui-slider-handle"); + + handle.after(tooltip); + }).on("slidestop", function (e) { + trackChange = false; + + tooltip.remove(); + }); }); function idleHandler() { diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index d5c39289d9..bc2ddfb622 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -9,10 +9,10 @@ var currentProgressInterval; var currentItem; var currentMediaSource; - var curentDurationTicks; var canClientSeek; var currentPlaylistIndex = 0; + self.curentDurationTicks = null; self.currentTimeElement = null; self.unmuteButton = null; self.muteButton = null; @@ -200,12 +200,12 @@ var timeText = Dashboard.getDisplayTime(ticks); - if (curentDurationTicks) { + if (self.curentDurationTicks) { - timeText += " / " + Dashboard.getDisplayTime(curentDurationTicks); + timeText += " / " + Dashboard.getDisplayTime(self.curentDurationTicks); if (updateSlider) { - var percent = ticks / curentDurationTicks; + var percent = ticks / self.curentDurationTicks; percent *= 100; self.positionSlider.val(percent).slider('enable').slider('refresh'); @@ -446,7 +446,7 @@ videoPlayer(self, item, currentMediaSource, startPosition, user); mediaElement = self.initVideoPlayer(); - curentDurationTicks = currentMediaSource.RunTimeTicks; + self.curentDurationTicks = currentMediaSource.RunTimeTicks; mediaControls = $("#videoControls"); @@ -458,7 +458,7 @@ mediaElement = playAudio(item, currentMediaSource, startPosition); mediaControls.show(); - curentDurationTicks = currentMediaSource.RunTimeTicks; + self.curentDurationTicks = currentMediaSource.RunTimeTicks; } else { throw new Error("Unrecognized media type"); diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index a46e49c79f..12f5fccad0 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1288,6 +1288,8 @@ $(function () { videoPlayerHtml += ''; videoPlayerHtml += ''; + videoPlayerHtml += '