scripts/apps/archive/directives/ItemRendition.ts
export function ItemRendition() {
return {
templateUrl: 'scripts/apps/archive/views/item-rendition.html',
scope: {
item: '=',
rendition: '@',
},
link: function(scope, elem, attrs) {
scope.$watch('item.renditions[rendition].href', (href) => {
var figure = elem.find('figure'),
oldImg = figure.find('img').css('opacity', 0.5);
if (href) {
var img = new Image();
img.onload = function() {
if (oldImg.length) {
oldImg.replaceWith(img);
} else {
figure.html(img);
}
if (img.naturalWidth < img.naturalHeight) {
elem.addClass('portrait');
} else {
elem.removeClass('portrait');
}
};
img.onerror = function() {
figure.html('');
};
img.src = href;
}
});
},
};
}