/* tslint:disable:no-string-literal */ import {Component, OnInit} from '@angular/core'; import {NavController, ToastController} from '@ionic/angular'; import {CorpusService} from 'src/app/corpus.service'; import {VocabularyService} from 'src/app/vocabulary.service'; import {ExerciseService} from 'src/app/exercise.service'; import {HelperService} from 'src/app/helper.service'; import {TranslateService} from '@ngx-translate/core'; import {FileType, VocabularyCorpus} from '../models/enum'; import {HttpClient} from '@angular/common/http'; @Component({ selector: 'app-show-text', templateUrl: './show-text.page.html', styleUrls: ['./show-text.page.scss'], }) export class ShowTextPage implements OnInit { FileType = FileType; HelperService = HelperService; ObjectKeys = Object.keys; public highlightOOV = false; public text: string; public urlBase: string; public isDownloading = false; public showTextComplexity = false; public showTextComplexityDoc = false; public textComplexityMap = { all: 'TEXT_COMPLEXITY_ALL', n_w: 'TEXT_COMPLEXITY_WORD_COUNT', n_sent: 'TEXT_COMPLEXITY_SENTENCE_COUNT', avg_w_per_sent: 'TEXT_COMPLEXITY_AVERAGE_SENTENCE_LENGTH', avg_w_len: 'TEXT_COMPLEXITY_AVERAGE_WORD_LENGTH', n_types: 'TEXT_COMPLEXITY_TYPE_COUNT', pos: 'TEXT_COMPLEXITY_PART_OF_SPEECH_COUNT', lex_den: 'TEXT_COMPLEXITY_LEXICAL_DENSITY', n_punct: 'TEXT_COMPLEXITY_PUNCTUATION_COUNT', n_clause: 'TEXT_COMPLEXITY_CLAUSE_COUNT', n_subclause: 'TEXT_COMPLEXITY_SUBCLAUSE_COUNT', n_inf: 'TEXT_COMPLEXITY_INFINITIVE_COUNT', n_part: 'TEXT_COMPLEXITY_PARTICIPLE_COUNT', n_gerund: 'TEXT_COMPLEXITY_GERUND_COUNT', n_abl_abs: 'TEXT_COMPLEXITY_ABLATIVI_ABSOLUTI_COUNT' }; constructor(public navCtrl: NavController, public corpusService: CorpusService, public exerciseService: ExerciseService, public toastCtrl: ToastController, public translateService: TranslateService, public vocService: VocabularyService, public http: HttpClient) { HelperService.waitForConfig().then(() => { this.urlBase = HelperService.config['backendBaseUrl'] + HelperService.config['backendApiFilePath']; }); } generateDownloadLink(fileType: string) { const formData = new FormData(); let content: string = document.querySelector('.text').outerHTML; // add underline elements so we do not need to specify CSS options in the backend's PDF generator content = content.replace(/(oov">)(.+?)(<\/span>)/g, '$1$2$3'); const authorTitle: string = this.corpusService.currentCorpus.author + ', ' + this.corpusService.currentCorpus.title; content = `
${authorTitle} ${this.corpusService.currentUrn.split(':').slice(-1)[0]}
` + content; formData.append('html_content', content); formData.append('file_type', fileType); formData.append('urn', this.corpusService.currentUrn); this.isDownloading = true; this.http.post(this.urlBase, formData).subscribe((response: string) => { this.isDownloading = false; const responseParts: string[] = response.split('.'); const link: HTMLLinkElement = document.querySelector('#download'); link.href = HelperService.config['backendBaseUrl'] + HelperService.config['backendApiFilePath'] + '?id=' + responseParts[0] + '&type=' + responseParts[1]; link.style.display = 'block'; }, async (error: any) => { this.isDownloading = false; HelperService.currentError = error; const toast = await this.toastCtrl.create({ message: HelperService.generalErrorAlertMessage, duration: 3000, position: 'top' }); toast.present().then(); }); } getWhiteSpace(index: number) { if (this.corpusService.annisResponse.nodes[index + 1]) { if ('.,\\/#!$%\\^&\\*;:{}=\\-_`~()'.indexOf(this.corpusService.annisResponse.nodes[index + 1].annis_tok) > -1) { return ''; } return ' '; } return ''; } ngOnInit(): void { this.vocService.currentReferenceVocabulary = this.vocService.currentReferenceVocabulary || VocabularyCorpus.bws; } }