ng-implementation/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.ts

120 lines
3.2 KiB
TypeScript
Raw Normal View History

2025-09-09 15:42:23 +02:00
import {Component, EventEmitter, Output} from '@angular/core';
2025-08-08 10:57:00 +02:00
import {FormsModule} from '@angular/forms';
2025-09-15 13:03:21 +02:00
import {NgClass} from '@angular/common';
2025-08-08 10:57:00 +02:00
@Component({
selector: 'sae-translate-texts',
standalone: true,
2025-09-15 13:03:21 +02:00
imports: [FormsModule, NgClass],
2025-08-08 10:57:00 +02:00
templateUrl: './translate-texts.html',
2025-08-22 11:57:56 +02:00
styleUrl: './translate-texts.scss'
2025-08-08 10:57:00 +02:00
})
export class TranslateTexts {
public fromText: string = ''
2025-09-09 15:42:23 +02:00
public toText: string = 'résumé ici'
public loadingResume: boolean = false;
public mode: string = 'demo';
2025-09-15 13:03:21 +02:00
public debounceEnabled: boolean = true;
public textFocused: boolean = false;
public fileIsUploaded: boolean = false;
public filePath: string = '';
public fileWeight: string = '';
// testing display of file selector
// public fileIsUploaded: boolean = true;
// public filePath: string = 'abcd.csv';
// public fileWeight: string = '12 kb';
2025-09-09 15:42:23 +02:00
public fromTimeout: any;
public debounceDuration: number = 1000;
@Output() updateFilters: EventEmitter<any> = new EventEmitter();
onToTextChanged(e: any): void {
console.log('text changed toText', e)
// launch request
// in demo mode, fill some filters
if (this.mode !== 'production') {
// Clear any existing timeout to reset the debounce
if (this.fromTimeout) {
clearTimeout(this.fromTimeout);
}
// Set a new timeout
this.fromTimeout = setTimeout(() => {
// in demo mode, load demo filters
console.log('demo mode')
const newFilters = [
['filter demo 1', 'filter demo 2'],
['filter demo 3'],
['filter demo 4', 'filter demo ABCD'],
['filter demo 5'],
]
this.updateFilters.emit(newFilters);
this.loadingResume = false;
}, this.debounceDuration);
}
}
onFromTextChanged(e?: any): void {
console.log('text changed fromText', e)
// run research after a delay
if (this.mode !== 'production') {
this.loadingResume = true;
// Clear any existing timeout to reset the debounce
if (this.fromTimeout) {
clearTimeout(this.fromTimeout);
}
// Set a new timeout
this.fromTimeout = setTimeout(() => {
// in demo mode, make a fake resume
console.log('demo mode')
this.toText = "Résumé de démo à titre d'exemple"
this.loadingResume = false;
},
this.debounceDuration);
}
}
2025-08-08 10:57:00 +02:00
emptyText(someText: 'fromText' | 'toText') {
this[someText] = '';
}
2025-08-22 11:57:56 +02:00
2025-09-15 13:03:21 +02:00
onFileSelected($event: any) {
console.log('file selected', $event, $event.target.value)
if ($event.target.value) {
this.fileIsUploaded = true;
this.filePath = $event.target.value;
this.fileWeight = $event.target.value;
}
}
2025-08-22 11:57:56 +02:00
2025-09-15 13:03:21 +02:00
onRemoveFileSelected() {
this.fileIsUploaded = false;
this.filePath = '';
this.fileWeight = '';
// document.getElementById('fromText')?.focus();
2025-08-22 11:57:56 +02:00
}
clickFileUpload(fileUpload: HTMLInputElement) {
fileUpload.click();
2025-09-15 13:03:21 +02:00
console.log('click file upload', fileUpload)
}
2025-08-22 11:57:56 +02:00
2025-09-15 13:03:21 +02:00
focusFromText(e?: any) {
console.log('focus from text', e)
console.log('focus from text')
this.onRemoveFileSelected()
// this.fromText = ' '
this.textFocused = true
2025-08-22 11:57:56 +02:00
}
2025-08-08 10:57:00 +02:00
}