UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

156 lines 16.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, QueryList, ViewChildren, ChangeDetectorRef } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { Guid } from 'guid-typescript'; import { E5coreUiAssignUserBaseComponent } from './component/e5core-ui-work-assign-user-base'; import { WorkItemFoundationService } from 'e5core-angular-services'; import { UiStyleService } from '../../services/ui-style.service'; export class E5coreUiAssignUserComponent { /** * @param {?} style * @param {?} workItemFoundationService * @param {?} changeDetectorRef */ constructor(style, workItemFoundationService, changeDetectorRef) { this.style = style; this.workItemFoundationService = workItemFoundationService; this.changeDetectorRef = changeDetectorRef; this.showAssignButton = true; this.readonly = false; this.assignUserEvent = new EventEmitter(); this.selectUserEvent = new EventEmitter(); this.loading = false; } /** * @return {?} */ ngOnInit() { if (typeof this.workItem$ == 'undefined') { console.error('e5core-ui-work-assign-user [workItem$] must have a BehaviorSubject<WorkItemModel>'); return; } if (typeof this.workItem$ != 'undefined') { this.workItem$.subscribe(wim => { if (wim.workId && wim.workId != Guid.EMPTY) { this.populateAssignableUsers(wim.workId); } }); } } /** * @param {?} wid * @return {?} */ populateAssignableUsers(wid) { this.loading = true; this.changeDetectorRef.detectChanges(); this.workItemFoundationService.getAssignableUsers(wid).subscribe(s => { this.assignUserComponents.forEach(element => { element.users = s; this.loading = false; this.changeDetectorRef.detectChanges(); }); }, error => { console.error(error); }); } /** * @param {?} event * @return {?} */ selectUser(event) { this.selectedUser = event.value; /** @type {?} */ var wid = this.workItem$.getValue().workId; this.selectUserEvent.emit({ workId: wid, id: this.selectedUser.id, login: this.selectedUser.userName, name: this.selectedUser.name, email: this.selectedUser.email }); } /** * @param {?} event * @return {?} */ assignUser(event) { if (this.selectedUser) { /** @type {?} */ var assignUserJson = { AssignedUser: this.selectedUser.userName }; /** @type {?} */ var wid = this.workItem$.getValue().workId; this.workItemFoundationService.update(wid, assignUserJson).subscribe(s => { if (typeof this.workItem$ != "undefined") { this.workItem$.next(this.workItem$.getValue()); } this.assignUserEvent.emit({ workId: wid, id: this.selectedUser.id, login: this.selectedUser.userName, name: this.selectedUser.name, email: this.selectedUser.email }); }, error => { console.error(error); throw error; }); } } /** * @return {?} */ ngAfterViewInit() { } } E5coreUiAssignUserComponent.decorators = [ { type: Component, args: [{ selector: 'e5core-ui-work-assign-user', template: ` <span *ngIf="workItem$" [ngSwitch]="style.current()"> <e5core-ui-work-assign-user-box *ngSwitchCase='0' [showAssignButton]='showAssignButton' [loading]='loading' [readonly]='readonly' (selectUserEvent)='selectUser($event)' (assignUserEvent)='assignUser($event)'></e5core-ui-work-assign-user-box> <e5core-ui-work-assign-user-bootstrap *ngSwitchCase='1' [showAssignButton]='showAssignButton' [loading]='loading' [readonly]='readonly' (selectUserEvent)='selectUser($event)' (assignUserEvent)='assignUser($event)'></e5core-ui-work-assign-user-bootstrap> <e5core-ui-work-assign-user-material *ngSwitchCase='2' [showAssignButton]='showAssignButton' [loading]='loading' [readonly]='readonly' (selectUserEvent)='selectUser($event)' (assignUserEvent)='assignUser($event)'></e5core-ui-work-assign-user-material> </span> <div *ngIf="!(workItem$)" class="e5core-component-error">&lt;e5core-ui-work-assign-user&gt; [workItem$] must have a BehaviorSubject&lt;WorkItemModel&gt;</div>`, changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ E5coreUiAssignUserComponent.ctorParameters = () => [ { type: UiStyleService }, { type: WorkItemFoundationService }, { type: ChangeDetectorRef } ]; E5coreUiAssignUserComponent.propDecorators = { workItem$: [{ type: Input }], showAssignButton: [{ type: Input }], readonly: [{ type: Input }], assignUserEvent: [{ type: Output }], selectUserEvent: [{ type: Output }], assignUserComponents: [{ type: ViewChildren, args: [E5coreUiAssignUserBaseComponent,] }] }; if (false) { /** @type {?} */ E5coreUiAssignUserComponent.prototype.workItem$; /** @type {?} */ E5coreUiAssignUserComponent.prototype.showAssignButton; /** @type {?} */ E5coreUiAssignUserComponent.prototype.readonly; /** @type {?} */ E5coreUiAssignUserComponent.prototype.assignUserEvent; /** @type {?} */ E5coreUiAssignUserComponent.prototype.selectUserEvent; /** @type {?} */ E5coreUiAssignUserComponent.prototype.selectedUser; /** @type {?} */ E5coreUiAssignUserComponent.prototype.loading; /** @type {?} */ E5coreUiAssignUserComponent.prototype.assignUserComponents; /** @type {?} */ E5coreUiAssignUserComponent.prototype.style; /** * @type {?} * @private */ E5coreUiAssignUserComponent.prototype.workItemFoundationService; /** * @type {?} * @private */ E5coreUiAssignUserComponent.prototype.changeDetectorRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZTVjb3JlLWFuZ3VsYXItdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci9lNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFpQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBYWpFLE1BQU0sT0FBTywyQkFBMkI7Ozs7OztJQWN0QyxZQUNTLEtBQW9CLEVBQ25CLHlCQUFvRCxFQUNwRCxpQkFBb0M7UUFGckMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNuQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFkckMscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDekIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNwRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBR3ZELFlBQU8sR0FBWSxLQUFLLENBQUU7SUFTN0IsQ0FBQzs7OztJQUVMLFFBQVE7UUFD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SUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1lBQ3RLLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtnQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQixNQUFNLEtBQUssQ0FBQztZQUNkLENBQUMsQ0FDRixDQUFBO1NBQ0Y7SUFDSCxDQUFDOzs7O0lBRUQsZUFBZTtJQUNmLENBQUM7OztZQWpHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsUUFBUSxFQUFFOzs7Ozs7aUtBTXFKO2dCQUMvSixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7OztZQVpRLGNBQWM7WUFIZCx5QkFBeUI7WUFMd0YsaUJBQWlCOzs7d0JBdUJ4SSxLQUFLOytCQUNMLEtBQUs7dUJBQ0wsS0FBSzs4QkFDTCxNQUFNOzhCQUNOLE1BQU07bUNBS04sWUFBWSxTQUFDLCtCQUErQjs7OztJQVQ3QyxnREFBbUQ7O0lBQ25ELHVEQUEwQzs7SUFDMUMsK0NBQW1DOztJQUNuQyxzREFBOEQ7O0lBQzlELHNEQUE4RDs7SUFFOUQsbURBQStCOztJQUMvQiw4Q0FBaUM7O0lBRWpDLDJEQUN3RTs7SUFHdEUsNENBQTJCOzs7OztJQUMzQixnRUFBNEQ7Ozs7O0lBQzVELHdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIEFmdGVyVmlld0luaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3VpZCB9IGZyb20gJ2d1aWQtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBXb3JrSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmstaXRlbSc7XG5pbXBvcnQgeyBFNWNvcmVVaUFzc2lnblVzZXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQvZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItYmFzZSc7XG5pbXBvcnQgeyBXb3JrSXRlbUZvdW5kYXRpb25TZXJ2aWNlIH0gZnJvbSAnZTVjb3JlLWFuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgV29ya1VzZXJFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy93b3JrLXVzZXItZXZlbnQnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnZTVjb3JlLWFuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgVWlTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91aS1zdHlsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXInLFxuICB0ZW1wbGF0ZTogYFxuICA8c3BhbiAqbmdJZj1cIndvcmtJdGVtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgPGU1Y29yZS11aS13b3JrLWFzc2lnbi11c2VyLWJveCAqbmdTd2l0Y2hDYXNlPScwJyBbc2hvd0Fzc2lnbkJ1dHRvbl09J3Nob3dBc3NpZ25CdXR0b24nIFtsb2FkaW5nXT0nbG9hZGluZycgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3RVc2VyRXZlbnQpPSdzZWxlY3RVc2VyKCRldmVudCknIChhc3NpZ25Vc2VyRXZlbnQpPSdhc3NpZ25Vc2VyKCRldmVudCknPjwvZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItYm94PlxuICA8ZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItYm9vdHN0cmFwICpuZ1N3aXRjaENhc2U9JzEnIFtzaG93QXNzaWduQnV0dG9uXT0nc2hvd0Fzc2lnbkJ1dHRvbicgW2xvYWRpbmddPSdsb2FkaW5nJyBbcmVhZG9ubHldPSdyZWFkb25seScgKHNlbGVjdFVzZXJFdmVudCk9J3NlbGVjdFVzZXIoJGV2ZW50KScgKGFzc2lnblVzZXJFdmVudCk9J2Fzc2lnblVzZXIoJGV2ZW50KSc+PC9lNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci1ib290c3RyYXA+XG4gIDxlNWNvcmUtdWktd29yay1hc3NpZ24tdXNlci1tYXRlcmlhbCAqbmdTd2l0Y2hDYXNlPScyJyBbc2hvd0Fzc2lnbkJ1dHRvbl09J3Nob3dBc3NpZ25CdXR0b24nIFtsb2FkaW5nXT0nbG9hZGluZycgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3RVc2VyRXZlbnQpPSdzZWxlY3RVc2VyKCRldmVudCknIChhc3NpZ25Vc2VyRXZlbnQpPSdhc3NpZ25Vc2VyKCRldmVudCknPjwvZTVjb3JlLXVpLXdvcmstYXNzaWduLXVzZXItbWF0ZXJpYWw+XG4gIDwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cIiEod29ya0l0ZW0kKVwiIGNsYXNzPVwiZTVjb3JlLWNvbXBvbmVudC1lcnJvclwiPiZsdDtlNWNvcmUtdWktd29yay1hc3NpZ24tdXNlciZndDsgW3dvcmtJdGVtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0Jmx0O1dvcmtJdGVtTW9kZWwmZ3Q7PC9kaXY+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRTVjb3JlVWlBc3NpZ25Vc2VyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcblxuICBASW5wdXQoKSB3b3JrSXRlbSQ6IEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPjtcbiAgQElucHV0KCkgc2hvd0Fzc2lnbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBhc3NpZ25Vc2VyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtVc2VyRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RVc2VyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtVc2VyRXZlbnQ+KCk7XG5cbiAgcHVibGljIHNlbGVjdGVkVXNlcjogVXNlck1vZGVsO1xuICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlIDtcbiAgXG4gIEBWaWV3Q2hpbGRyZW4oRTVjb3JlVWlBc3NpZ25Vc2VyQmFzZUNvbXBvbmVudClcbiAgcHVibGljIGFzc2lnblVzZXJDb21wb25lbnRzOiBRdWVyeUxpc3Q8RTVjb3JlVWlBc3NpZ25Vc2VyQmFzZUNvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0eWxlOlVpU3R5bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgd29ya0l0ZW1Gb3VuZGF0aW9uU2VydmljZTogV29ya0l0ZW1Gb3VuZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2U1Y29yZS11aS13b3JrLWFzc2lnbi11c2VyIFt3b3JrSXRlbSRdIG11c3QgaGF2ZSBhIEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMud29ya0l0ZW0kLnN1YnNjcmliZShcbiAgICAgICAgd2ltID0+IHtcbiAgICAgICAgICBpZiAod2ltLndvcmtJZCAmJiB3aW0ud29ya0lkICE9IEd1aWQuRU1QVFkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVBc3NpZ25hYmxlVXNlcnMod2ltLndvcmtJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlQXNzaWduYWJsZVVzZXJzKHdpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLndvcmtJdGVtRm91bmRhdGlvblNlcnZpY2UuZ2V0QXNzaWduYWJsZVVzZXJzKHdpZCkuc3Vic2NyaWJlKFxuICAgICAgcyA9PiB7XG4gICAgICAgIHRoaXMuYXNzaWduVXNlckNvbXBvbmVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBlbGVtZW50LnVzZXJzID0gcztcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2VsZWN0VXNlcihldmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VyID0gZXZlbnQudmFsdWU7XG4gICAgdmFyIHdpZCA9IHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkud29ya0lkO1xuXG4gICAgdGhpcy5zZWxlY3RVc2VyRXZlbnQuZW1pdCh7d29ya0lkOiB3aWQsIGlkOiB0aGlzLnNlbGVjdGVkVXNlci5pZCwgbG9naW46IHRoaXMuc2VsZWN0ZWRVc2VyLnVzZXJOYW1lLCBuYW1lOiB0aGlzLnNlbGVjdGVkVXNlci5uYW1lLCBlbWFpbDogdGhpcy5zZWxlY3RlZFVzZXIuZW1haWx9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NpZ25Vc2VyKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRVc2VyKSB7XG5cbiAgICAgIHZhciBhc3NpZ25Vc2VySnNvbiA9IHtcbiAgICAgICAgQXNzaWduZWRVc2VyOiB0aGlzLnNlbGVjdGVkVXNlci51c2VyTmFtZVxuICAgICAgfTtcblxuICAgICAgdmFyIHdpZCA9IHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkud29ya0lkO1xuXG4gICAgICB0aGlzLndvcmtJdGVtRm91bmRhdGlvblNlcnZpY2UudXBkYXRlKHdpZCwgYXNzaWduVXNlckpzb24pLnN1YnNjcmliZShcbiAgICAgICAgcyA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtJC5uZXh0KHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFzc2lnblVzZXJFdmVudC5lbWl0KHt3b3JrSWQ6IHdpZCwgaWQ6IHRoaXMuc2VsZWN0ZWRVc2VyLmlkLCBsb2dpbjogdGhpcy5zZWxlY3RlZFVzZXIudXNlck5hbWUsIG5hbWU6IHRoaXMuc2VsZWN0ZWRVc2VyLm5hbWUsIGVtYWlsOiB0aGlzLnNlbGVjdGVkVXNlci5lbWFpbH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cbn0iXX0=