import { Component, Input, OnInit } from '@angular/core'; import { Sublevel, ToggleWorkflowLevelResponse, WorkflowLevel } from '@core/typings/workflow.typing'; import { AnalyticsService, EventType } from '@yourcause/common/analytics'; import { I18nService } from '@yourcause/common/i18n'; import { YCModalComponent } from '@yourcause/common/modals'; @Component({ selector: 'gc-toggle-workflow-level-modal', templateUrl: './toggle-workflow-level-modal.component.html', styleUrls: ['./toggle-workflow-level-modal.component.scss'] }) export class ToggleWorkflowLevelModalComponent extends YCModalComponent implements OnInit { @Input() level: WorkflowLevel; @Input() subLevel: Sublevel; title: string; levelName: string; textSaveButton: string; confirmationText: string; saveDisabled = false; defaultLevelPrograms: any = []; modalReady = false; constructor ( private i18n: I18nService, private analyticsService: AnalyticsService ) { super(); } get enabling () { return (this.subLevel && this.subLevel.disabled) || (!this.subLevel && this.level.disabled); } ngOnInit () { if (this.subLevel) { this.levelName = this.subLevel.name; if (!this.enabling) { this.title = this.i18n.translate( 'WORKFLOW:hdrDisableSubLevel', {}, 'Disable Sub-level' ); this.textSaveButton = this.i18n.translate( 'common:textDisable', {}, 'Disable' ); this.confirmationText = this.i18n.translate( 'WORKFLOW:textDisableWorkflowSubLevelConfirm', {}, 'Are you sure you want to disable the sub-level?' ); } else { this.title = this.i18n.translate( 'WORKFLOW:hdrEnableSubLevel', {}, 'Enable Sub-level' ); this.textSaveButton = this.i18n.translate( 'common:textEnable', {}, 'Enable' ); this.confirmationText = this.i18n.translate( 'WORKFLOW:textEnableWorkflowSubLevelConfirm', {}, 'Are you sure you want to enable the sub-level?' ); } } else { this.levelName = this.level.name; if (!this.enabling) { this.title = this.i18n.translate( 'WORKFLOW:hdrDisableLevel', {}, 'Disable Level' ); this.textSaveButton = this.i18n.translate( 'common:textDisable', {}, 'Disable' ); this.confirmationText = this.i18n.translate( 'WORKFLOW:textDisableWorkflowConfirm', {}, 'Are you sure you want to disable the level?' ); } else { this.title = this.i18n.translate( 'WORKFLOW:hdrEnableLevel', {}, 'Enable Level' ); this.textSaveButton = this.i18n.translate( 'common:textEnable', {}, 'Enable' ); this.confirmationText = this.i18n.translate( 'WORKFLOW:textEnableWorkflowConfirm', {}, 'Are you sure you want to enable the level?' ); } } this.setWorkflowDefaultPrograms(); this.modalReady = true; } setWorkflowDefaultPrograms () { if (this.subLevel) { if (this.subLevel.grantPrograms.length > 0) { this.defaultLevelPrograms.push({ level: this.subLevel.name, programs: this.subLevel.grantPrograms.map((program) => { return program.name; }).join(', ') }); } } else { this.level.subLevels.forEach((sub) => { if (sub.grantPrograms.length > 0) { this.defaultLevelPrograms.push({ level: sub.name, programs: sub.grantPrograms.map((subProgram) => { return subProgram.name; }).join(', ') }); } }); if (this.level.grantPrograms.length > 0) { this.defaultLevelPrograms.push({ level: this.level.name, programs: this.level.grantPrograms.map((program) => { return program.name; }).join(', ') }); } } } onCancel () { this.closeModal.emit(); } onSave () { if (this.subLevel) { this.subLevel.disabled = !this.subLevel.disabled; } else { this.level.disabled = !this.level.disabled; } this.closeModal.emit({ workflowLevelId: this.subLevel ? this.subLevel.id : this.level.id, disable: this.subLevel ? this.subLevel.disabled : this.level.disabled }); this.analyticsService.emitEvent({ eventName: 'Toggle workflow level save', eventType: EventType.Click, extras: null }); } }