import { Component, OnInit } from '@angular/core'; import { ProgramTypes } from '@core/typings/program.typing'; import { StringMap } from '@features/my-workspace/my-workspace.typing'; import { ArrayHelpersService, defaultCKEditorConfig, TopLevelFilter, TopLevelFilterOption } from '@yourcause/common'; import { I18nService } from '@yourcause/common/i18n'; import { ProgramService } from '../../program.service'; @Component({ selector: 'gc-translate-programs-page', templateUrl: './translate-programs-page.component.html', styleUrls: ['./translate-programs-page.component.scss'] }) export class TranslateProgramsPageComponent implements OnInit { topLevelFilters: TopLevelFilter[]; programOptions: TopLevelFilterOption[] = []; richTextMap: StringMap = {}; ckEditorConfig = defaultCKEditorConfig; constructor ( private i18n: I18nService, private programService: ProgramService, private arrayHelper: ArrayHelpersService ) { } get isNomination () { return location.pathname.includes('nomination'); } ngOnInit () { const programs = this.programService.get('allPrograms'); this.programOptions = this.arrayHelper.sort( programs.filter((prog) => { return prog.active && !prog.isArchived && (this.isNomination ? prog.programType === ProgramTypes.NOMINATION : prog.programType === ProgramTypes.GRANT); }).map((prog) => { return { label: prog.grantProgramName, value: prog.grantProgramId }; }), 'label' ); programs.forEach((prog) => { this.richTextMap[prog.grantProgramId] = prog.grantProgramName; }); const programFilter = new TopLevelFilter( 'checkboxDropdown', 'grantProgramId', [], this.i18n.translate( 'GLOBAL:textSearchForAProgram', {}, 'Search for a program' ), { selectOptions: this.programOptions, filterObjectName: this.i18n.translate( 'common:lblProgram', {} ).toLowerCase(), filterObjectNamePlural: this.i18n.translate( 'GLOBAL:textPrograms', {} ).toLowerCase() } ); this.topLevelFilters = [ new TopLevelFilter( 'text', 'defaultTranslationText', '', this.i18n.translate( 'FORMS:textSearchTranslations', {}, 'Search translations' ) ) ]; if (this.programOptions.length > 0) { this.topLevelFilters.push(programFilter); } } getDefaultLangOnFilterChange = (ids: number[]) => { return this.programService.getMostCommonDefaultLangFromArray(ids); }; }