From 359367c4e3fd28f01d4341633b14ef9776508b2b Mon Sep 17 00:00:00 2001 From: Tykayn Date: Tue, 9 Sep 2025 15:42:23 +0200 Subject: [PATCH] up debounce text pair --- .../translate-texts/translate-texts.html | 10 ++- .../inbox/translate-texts/translate-texts.ts | 64 ++++++++++++++++++- 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.html b/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.html index a54f65b..1477e88 100644 --- a/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.html +++ b/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.html @@ -9,7 +9,8 @@ @if (fromText.length > 0) { } - } + @if (loadingResume) { +
+ loading... +
+ } + diff --git a/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.ts b/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.ts index 9cfe7a3..9cd9781 100644 --- a/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.ts +++ b/my-workspace/projects/sae-lib/inbox/translate-texts/translate-texts.ts @@ -1,4 +1,4 @@ -import {Component} from '@angular/core'; +import {Component, EventEmitter, Output} from '@angular/core'; import {FormsModule} from '@angular/forms'; @Component({ @@ -10,7 +10,67 @@ import {FormsModule} from '@angular/forms'; }) export class TranslateTexts { public fromText: string = '' - public toText: 'fromText' | 'toText' | '' = '' + public toText: string = 'résumé ici' + public loadingResume: boolean = false; + public mode: string = 'demo'; + public debounceEnabled: boolean = false; + public fromTimeout: any; + public debounceDuration: number = 1000; + @Output() updateFilters: EventEmitter = 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); + + } + + } emptyText(someText: 'fromText' | 'toText') { this[someText] = '';