UNPKG

@knora/action

Version:
71 lines 8.11 kB
import * as tslib_1 from "tslib"; import { Directive, ElementRef, Input, OnChanges, Renderer2 } from '@angular/core'; import { Md5 } from 'ts-md5'; import { AdminImageConfig } from './admin-image.config'; /** * You can use the admin image module for user avatar together with gravatar.com and for project logos. * * The feature of this module ist the error handling: In case of a 404 error of the image source (img src) the module shows a default image-not-found image. Or a default user profile icon (type=user), or a default project icon (type=project). * */ let AdminImageDirective = class AdminImageDirective { /** * @ignore */ constructor(_renderer, _ele) { this._renderer = _renderer; this._ele = _ele; /** * @ignore */ this.onError = AdminImageConfig.defaultNotFound; } /** * @ignore */ ngOnChanges() { this.source = this.image; switch (this.type) { case 'user': this.onError = AdminImageConfig.defaultUser; if (this.image === null || this.image === undefined) { this.source = AdminImageConfig.defaultUser; } else { this.source = location.protocol + '//www.gravatar.com/avatar/' + Md5.hashStr(this.image) + '?d=mp&s=256'; } break; case 'project': this.onError = AdminImageConfig.defaultProject; if (this.image === null || this.image === undefined) { this.source = AdminImageConfig.defaultProject; } break; default: this.source = this.image; } this._renderer.setAttribute(this._ele.nativeElement, 'src', this.source); this._renderer.setAttribute(this._ele.nativeElement, 'onError', 'this.src=\'' + this.onError + '\''); } }; AdminImageDirective.ctorParameters = () => [ { type: Renderer2 }, { type: ElementRef } ]; tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", String) ], AdminImageDirective.prototype, "image", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", String) ], AdminImageDirective.prototype, "type", void 0); AdminImageDirective = tslib_1.__decorate([ Directive({ selector: '[kuiAdminImage]' }), tslib_1.__metadata("design:paramtypes", [Renderer2, ElementRef]) ], AdminImageDirective); export { AdminImageDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4taW1hZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtub3JhL2FjdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9hZG1pbi1pbWFnZS9hZG1pbi1pbWFnZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQ7Ozs7O0dBS0c7QUFJSCxJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtJQWlDNUI7O09BRUc7SUFDSCxZQUFxQixTQUFvQixFQUM3QixJQUFnQjtRQURQLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDN0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVY1Qjs7V0FFRztRQUNILFlBQU8sR0FBVyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7SUFRbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUVQLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV6QixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFFZixLQUFLLE1BQU07Z0JBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7Z0JBRTVDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7b0JBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO2lCQUM5QztxQkFBTTtvQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEdBQUcsNEJBQTRCLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsYUFBYSxDQUFDO2lCQUM1RztnQkFFRCxNQUFNO1lBRVYsS0FBSyxTQUFTO2dCQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO2dCQUUvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO29CQUVqRCxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztpQkFDakQ7Z0JBRUQsTUFBTTtZQUVWO2dCQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRXpHLENBQUM7Q0FFSixDQUFBOztZQTNDbUMsU0FBUztZQUN2QixVQUFVOztBQTVCbkI7SUFBUixLQUFLLEVBQUU7O2tEQUFlO0FBU2Q7SUFBUixLQUFLLEVBQUU7O2lEQUFjO0FBbEJiLG1CQUFtQjtJQUgvQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsaUJBQWlCO0tBQzlCLENBQUM7NkNBcUNrQyxTQUFTO1FBQ3ZCLFVBQVU7R0FyQ25CLG1CQUFtQixDQStFL0I7U0EvRVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1kNSB9IGZyb20gJ3RzLW1kNSc7XG5pbXBvcnQgeyBBZG1pbkltYWdlQ29uZmlnIH0gZnJvbSAnLi9hZG1pbi1pbWFnZS5jb25maWcnO1xuXG4vKipcbiAqIFlvdSBjYW4gdXNlIHRoZSBhZG1pbiBpbWFnZSBtb2R1bGUgZm9yIHVzZXIgYXZhdGFyIHRvZ2V0aGVyIHdpdGggZ3JhdmF0YXIuY29tIGFuZCBmb3IgcHJvamVjdCBsb2dvcy5cbiAqXG4gKiBUaGUgZmVhdHVyZSBvZiB0aGlzIG1vZHVsZSBpc3QgdGhlIGVycm9yIGhhbmRsaW5nOiBJbiBjYXNlIG9mIGEgNDA0IGVycm9yIG9mIHRoZSBpbWFnZSBzb3VyY2UgKGltZyBzcmMpIHRoZSBtb2R1bGUgc2hvd3MgYSBkZWZhdWx0IGltYWdlLW5vdC1mb3VuZCBpbWFnZS4gT3IgYSBkZWZhdWx0IHVzZXIgcHJvZmlsZSBpY29uICh0eXBlPXVzZXIpLCBvciBhIGRlZmF1bHQgcHJvamVjdCBpY29uICh0eXBlPXByb2plY3QpLlxuICpcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdba3VpQWRtaW5JbWFnZV0nXG59KVxuZXhwb3J0IGNsYXNzIEFkbWluSW1hZ2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGltYWdlXG4gICAgICpcbiAgICAgKiBzb3VyY2Ugb2YgdGhlIGltYWdlO1xuICAgICAqIC0gaW4gY2FzZSBvZiB1c2VyIChncilhdmF0YXIgaXQncyB0aGUgZS1tYWlsIGFkZHJlc3MsXG4gICAgICogLSBpbiBjYXNlIG9mIHByb2plY3QgbG9nbyBpdCdzIHRoZSBpbWFnZSB1cmxcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbWFnZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAgICAgKlxuICAgICAqIHR5cGUgb2YgaW1hZ2U7IHlvdSBjYW4gdXNlIGl0IHdpdGhcbiAgICAgKiAtIHByb2plY3RcbiAgICAgKiAtIHVzZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XG5cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBzb3VyY2U6IHN0cmluZztcblxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIG9uRXJyb3I6IHN0cmluZyA9IEFkbWluSW1hZ2VDb25maWcuZGVmYXVsdE5vdEZvdW5kO1xuXG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IgKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgX2VsZTogRWxlbWVudFJlZikge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBuZ09uQ2hhbmdlcygpIHtcblxuICAgICAgICB0aGlzLnNvdXJjZSA9IHRoaXMuaW1hZ2U7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcblxuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yID0gQWRtaW5JbWFnZUNvbmZpZy5kZWZhdWx0VXNlcjtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmltYWdlID09PSBudWxsIHx8IHRoaXMuaW1hZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZSA9IEFkbWluSW1hZ2VDb25maWcuZGVmYXVsdFVzZXI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBsb2NhdGlvbi5wcm90b2NvbCArICcvL3d3dy5ncmF2YXRhci5jb20vYXZhdGFyLycgKyBNZDUuaGFzaFN0cih0aGlzLmltYWdlKSArICc/ZD1tcCZzPTI1Nic7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Byb2plY3QnOlxuICAgICAgICAgICAgICAgIHRoaXMub25FcnJvciA9IEFkbWluSW1hZ2VDb25maWcuZGVmYXVsdFByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbWFnZSA9PT0gbnVsbCB8fCB0aGlzLmltYWdlID09PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZSA9IEFkbWluSW1hZ2VDb25maWcuZGVmYXVsdFByb2plY3Q7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSB0aGlzLmltYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuX2VsZS5uYXRpdmVFbGVtZW50LCAnc3JjJywgdGhpcy5zb3VyY2UpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZWxlLm5hdGl2ZUVsZW1lbnQsICdvbkVycm9yJywgJ3RoaXMuc3JjPVxcJycgKyB0aGlzLm9uRXJyb3IgKyAnXFwnJyk7XG5cbiAgICB9XG5cbn1cbiJdfQ==