Updates forms video player js + css
This commit is contained in:
@@ -19,15 +19,85 @@
|
||||
height: 4px;
|
||||
}
|
||||
|
||||
.video_player video {
|
||||
width: 100%;
|
||||
max-width: 640px;
|
||||
border: 1px solid #ededed;
|
||||
border-left: none;
|
||||
border-bottom: none;
|
||||
box-sizing:border-box;
|
||||
-moz-box-sizing:border-box;
|
||||
}
|
||||
|
||||
.video_player{
|
||||
video {
|
||||
width: 100%;
|
||||
max-width: 640px;
|
||||
border: 1px solid #ededed;
|
||||
border-left: none;
|
||||
border-bottom: none;
|
||||
box-sizing:border-box;
|
||||
-moz-box-sizing:border-box;
|
||||
}
|
||||
|
||||
input[type="range"] {
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
max-width: 640px;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type="range"]::-ms-fill-lower, input[type="range"]::-ms-fill-upper {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
input[type="range"]::-ms-tooltip {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.video-controls {
|
||||
position: relative;
|
||||
max-width: 640px;
|
||||
height: 20px;
|
||||
margin: -13px auto 40px;
|
||||
opacity: .8;
|
||||
}
|
||||
|
||||
.loader {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 3px;
|
||||
margin-top: -13px;
|
||||
background-color: whitesmoke;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing:border-box;
|
||||
max-width: 100%;
|
||||
width: 200px;
|
||||
height: 100%;
|
||||
background: #7c7e80;
|
||||
}
|
||||
|
||||
.video-controls, .loader, .progress-bar {
|
||||
-webkit-transition: all 150ms ease-in-out;
|
||||
transition: all 150ms ease-in-out;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
transition-property: background;
|
||||
}
|
||||
|
||||
.video_player video:hover + .video-controls, .video-controls:hover {
|
||||
margin-top: -19px;
|
||||
margin-bottom: 46px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.video_player video:hover + .video-controls .loader, .video-controls:hover .loader {
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.video_player video:hover + .video-controls .progress-bar, .video-controls:hover .progress-bar {
|
||||
background: #2e99f4;
|
||||
}
|
||||
}
|
||||
|
||||
.installer-top {
|
||||
overflow: hidden;
|
||||
|
||||
@@ -43,13 +43,141 @@ function FormsController($scope, $route, packageResource) {
|
||||
};
|
||||
|
||||
$scope.complete = function(result){
|
||||
window.location.reload();
|
||||
var urL = window.location.href + "?init=true";
|
||||
window.location.href = url;
|
||||
//window.location.reload();
|
||||
};
|
||||
|
||||
$scope.error = function(err){
|
||||
$scope.state = undefined;
|
||||
$scope.error = err;
|
||||
};
|
||||
|
||||
|
||||
function Video_player (videoId) {
|
||||
// Get dom elements
|
||||
this.container = document.getElementById(videoId);
|
||||
this.video = this.container.getElementsByTagName('video')[0];
|
||||
|
||||
//Create controls
|
||||
this.controls = document.createElement('div');
|
||||
this.controls.className="video-controls";
|
||||
|
||||
this.seek_bar = document.createElement('input');
|
||||
this.seek_bar.className="seek-bar";
|
||||
this.seek_bar.type="range";
|
||||
this.seek_bar.setAttribute('value', '0');
|
||||
|
||||
this.loader = document.createElement('div');
|
||||
this.loader.className="loader";
|
||||
|
||||
this.progress_bar = document.createElement('span');
|
||||
this.progress_bar.className="progress-bar";
|
||||
|
||||
// Insert controls
|
||||
this.controls.appendChild(this.seek_bar);
|
||||
this.container.appendChild(this.controls);
|
||||
this.controls.appendChild(this.loader);
|
||||
this.loader.appendChild(this.progress_bar);
|
||||
}
|
||||
|
||||
|
||||
Video_player.prototype
|
||||
.seeking = function() {
|
||||
// get the value of the seekbar (hidden input[type="range"])
|
||||
var time = this.video.duration * (this.seek_bar.value / 100);
|
||||
|
||||
// Update video to seekbar value
|
||||
this.video.currentTime = time;
|
||||
};
|
||||
|
||||
// Stop video when user initiates seeking
|
||||
Video_player.prototype
|
||||
.start_seek = function() {
|
||||
this.video.pause();
|
||||
};
|
||||
|
||||
// Start video when user stops seeking
|
||||
Video_player.prototype
|
||||
.stop_seek = function() {
|
||||
this.video.play();
|
||||
};
|
||||
|
||||
// Update the progressbar (span.loader) according to video.currentTime
|
||||
Video_player.prototype
|
||||
.update_progress_bar = function() {
|
||||
// Get video progress in %
|
||||
var value = (100 / this.video.duration) * this.video.currentTime;
|
||||
|
||||
// Update progressbar
|
||||
this.progress_bar.style.width = value + '%';
|
||||
};
|
||||
|
||||
// Bind progressbar to mouse when seeking
|
||||
Video_player.prototype
|
||||
.handle_mouse_move = function(event) {
|
||||
// Get position of progressbar relative to browser window
|
||||
var pos = this.progress_bar.getBoundingClientRect().left;
|
||||
|
||||
// Make sure event is reckonized cross-browser
|
||||
event = event || window.event;
|
||||
|
||||
// Update progressbar
|
||||
this.progress_bar.style.width = (event.clientX - pos) + "px";
|
||||
};
|
||||
|
||||
// Eventlisteners for seeking
|
||||
Video_player.prototype
|
||||
.video_event_handler = function(videoPlayer, interval) {
|
||||
// Update the progress bar
|
||||
var animate_progress_bar = setInterval(function () {
|
||||
videoPlayer.update_progress_bar();
|
||||
}, interval);
|
||||
|
||||
// Fire when input value changes (user seeking)
|
||||
videoPlayer.seek_bar
|
||||
.addEventListener("change", function() {
|
||||
videoPlayer.seeking();
|
||||
});
|
||||
|
||||
// Fire when user clicks on seekbar
|
||||
videoPlayer.seek_bar
|
||||
.addEventListener("mousedown", function (clickEvent) {
|
||||
// Pause video playback
|
||||
videoPlayer.start_seek();
|
||||
|
||||
// Stop updating progressbar according to video progress
|
||||
clearInterval(animate_progress_bar);
|
||||
|
||||
// Update progressbar to where user clicks
|
||||
videoPlayer.handle_mouse_move(clickEvent);
|
||||
|
||||
// Bind progressbar to cursor
|
||||
window.onmousemove = function(moveEvent){
|
||||
videoPlayer.handle_mouse_move(moveEvent);
|
||||
};
|
||||
});
|
||||
|
||||
// Fire when user releases seekbar
|
||||
videoPlayer.seek_bar
|
||||
.addEventListener("mouseup", function () {
|
||||
|
||||
// Unbind progressbar from cursor
|
||||
window.onmousemove = null;
|
||||
|
||||
// Start video playback
|
||||
videoPlayer.stop_seek();
|
||||
|
||||
// Animate the progressbar
|
||||
animate_progress_bar = setInterval(function () {
|
||||
videoPlayer.update_progress_bar();
|
||||
}, interval);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
var videoPlayer = new Video_player('video_1');
|
||||
videoPlayer.video_event_handler(videoPlayer, 17);
|
||||
}
|
||||
|
||||
angular.module("umbraco").controller("Umbraco.Dashboard.FormsDashboardController", FormsController);
|
||||
|
||||
Reference in New Issue
Block a user