(function(){ 'use strict'; angular.module('uk.ac.soton.ecs.videogular.plugins.cuepoints', []) .directive( 'vgCuepoints', [function() { return { restrict: 'E', require: '^videogular', templateUrl: function(element, attrs) { return attrs.templateUrl || 'videogular-cuepoints/cuepoints.html'; }, scope: { cuepoints: '=vgCuepointsConfig', theme: '=vgCuepointsTheme', }, link: function($scope, elem, attr, API) { // shamelessly stolen from part of videogular's updateTheme function function updateTheme(value) { if (value) { var headElem = angular.element(document).find("head"); headElem.append(""); } } var calcLeft = function(cuepoint) { if (API.totalTime === 0) return '-1000'; var videoLength = API.totalTime / 1000; return (cuepoint.time * 100 / videoLength).toString(); }; $scope.onCuepointClick = function(cuepoint){ API.seekTime(cuepoint.time); }; $scope.cuepointStyle = function(cuepoint) { return { left: calcLeft(cuepoint) + '%' }; } updateTheme($scope.theme); }, }; }]) .run(['$templateCache', function($templateCache) { $templateCache.put('videogular-cuepoints/cuepoints.html', '' ); }]); })();