fc6eb71ab1
We no longer allow viewing individual images, but instead only manifests. This will help with the transition to Clair V3 (which is manifest based) and, eventually, the the new data model (which will also be manifest based)
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { Input, Component, Inject } from 'ng-metadata/core';
|
|
import { Repository } from '../../../types/common.types';
|
|
|
|
|
|
/**
|
|
* A component that links to a manifest view.
|
|
*/
|
|
@Component({
|
|
selector: 'manifest-link',
|
|
templateUrl: '/static/js/directives/ui/manifest-link/manifest-link.component.html'
|
|
})
|
|
export class ManifestLinkComponent {
|
|
|
|
@Input('<') public repository: Repository;
|
|
@Input('<') public manifestDigest: string;
|
|
@Input('<') public imageId: string;
|
|
|
|
private showingCopyBox: boolean = false;
|
|
|
|
constructor(@Inject('$timeout') private $timeout, @Inject('$element') private $element) {
|
|
}
|
|
|
|
private hasSHA256(digest: string) {
|
|
return digest && digest.indexOf('sha256:') == 0;
|
|
}
|
|
|
|
private getShortDigest(digest: string) {
|
|
if (!digest) { return ''; }
|
|
return digest.substr('sha256:'.length).substr(0, 12);
|
|
}
|
|
|
|
private showCopyBox() {
|
|
this.showingCopyBox = true;
|
|
|
|
// Necessary to wait for digest cycle to complete.
|
|
this.$timeout(() => {
|
|
this.$element.find('.modal').modal('show');
|
|
}, 10);
|
|
};
|
|
|
|
private hideCopyBox() {
|
|
this.$element.find('.modal').modal('hide');
|
|
|
|
// Wait for the modal to hide before removing from the DOM.
|
|
this.$timeout(() => {
|
|
this.showingCopyBox = false;
|
|
}, 10);
|
|
};
|
|
}
|