/**
 * An element which displays a link to a repository image.
 */
angular.module('quay').directive('imageLink', function () {
  var directiveDefinitionObject = {
    priority: 0,
    templateUrl: '/static/directives/image-link.html',
    replace: false,
    transclude: true,
    restrict: 'C',
    scope: {
      'repository': '=repository',
      'imageId': '=imageId',
      'manifestDigest': '=?manifestDigest'
    },
    controller: function($scope, $element, $timeout) {
      $scope.showingCopyBox = false;

      $scope.hasSHA256 = function(digest) {
        return digest && digest.indexOf('sha256:') == 0;
      };

      $scope.getShortDigest = function(digest) {
        return digest.substr('sha256:'.length).substr(0, 12);
      };

      $scope.showCopyBox = function() {
        $scope.showingCopyBox = true;

        // Necessary to wait for digest cycle to complete.
        $timeout(function() {
          $element.find('.modal').modal('show');
        }, 10);        
      };

      $scope.hideCopyBox = function() {
        $element.find('.modal').modal('hide');

        // Wait for the modal to hide before removing from the DOM.
        $timeout(function() {
          $scope.showingCopyBox = false;
        }, 10);
      };
    }
  };
  return directiveDefinitionObject;
});