import { __ } from '@wordpress/i18n'; import { speak } from '@wordpress/a11y'; import { SELECTORS } from './constants'; import API from './classes/api'; import ControlSync from './classes/control/control-sync'; import ControlStates from './classes/control/control-states'; import ControlMeta from './classes/control/control-meta'; import OptimizationDetails from './classes/optimization-details'; class OptimizationControl { constructor() { this.controlSyncRequestInProgress = false; this.init(); this.controlSync = new ControlSync(); } init() { this.initEventListeners(); setInterval( () => this.runStatusCheckLoop(), 5000 ); } async runStatusCheckLoop() { if ( this.controlSyncRequestInProgress ) { return; } this.controlSyncRequestInProgress = true; await this.controlSync.run(); this.controlSyncRequestInProgress = false; } initEventListeners() { document.addEventListener( 'click', ( e ) => this.handleOptimizeButtonClick( e ) ); document.addEventListener( 'click', ( e ) => this.handleReoptimizeButtonClick( e ) ); document.addEventListener( 'click', ( e ) => this.handleRestoreButtonClick( e ) ); document.addEventListener( 'click', ( e ) => this.handleOptimizationDetailsOpen( e ) ); document.addEventListener( 'click', ( e ) => this.handleOptimizationDetailsClick( e ) ); } async handleOptimizeButtonClick( e ) { if ( ! e.target.closest( `${ SELECTORS.optimizeButtonSelector }, ${ SELECTORS.tryAgainOptimizeButtonSelector }` ) ) { return; } speak( __( 'Optimization is in progress', 'image-optimization' ), 'assertive' ); const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const states = new ControlStates( controlWrapper ); states.renderLoading( 'optimize' ); try { controlWrapper.dataset.isFrozen = true; await API.optimizeSingleImage( { imageId: new ControlMeta( controlWrapper ).getImageId(), reoptimize: false, } ); } catch ( error ) { states.renderError( error ); } } async handleReoptimizeButtonClick( e ) { if ( ! e.target.closest( `${ SELECTORS.reoptimizeButtonSelector }, ${ SELECTORS.tryAgainReoptimizeButtonSelector }` ) ) { return; } speak( __( 'Reoptimizing is in progress', 'image-optimization' ), 'assertive' ); const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const states = new ControlStates( controlWrapper ); states.renderLoading( 'reoptimize' ); try { controlWrapper.dataset.isFrozen = true; await API.optimizeSingleImage( { imageId: new ControlMeta( controlWrapper ).getImageId(), reoptimize: true, } ); } catch ( error ) { states.renderError( error ); } } async handleRestoreButtonClick( e ) { if ( ! e.target.closest( `${ SELECTORS.restoreButtonSelector }, ${ SELECTORS.tryAgainRestoreButtonSelector }` ) ) { return; } speak( __( 'Image restoring is in progress', 'image-optimization' ), 'assertive' ); const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const states = new ControlStates( controlWrapper ); states.renderLoading( 'restore' ); try { controlWrapper.dataset.isFrozen = true; await API.restoreSingleImage( new ControlMeta( controlWrapper ).getImageId() ); } catch ( error ) { states.renderError( error ); } } async handleOptimizationDetailsOpen( e ) { if ( ! e.target.closest( `${ SELECTORS.optimizationDetailsButtonSelector }` ) ) { return; } const controlWrapper = e.target.closest( SELECTORS.controlWrapperSelector ); const imageId = new ControlMeta( controlWrapper ).getImageId(); try { OptimizationDetails.initModal(); OptimizationDetails.renderLoading(); const details = await API.getOptimizationDetails( imageId ); OptimizationDetails.openModal(); OptimizationDetails.renderData( imageId, details ); } catch ( error ) { OptimizationDetails.openModal(); OptimizationDetails.renderError( error.message ); } } async handleOptimizationDetailsClick( e ) { if ( ! e.target.closest( `${ SELECTORS.optimizationDetailsOptimizeButtonSelector }` ) ) { return; } const imageId = parseInt( e.target.dataset?.imageId, 10 ); await API.optimizeSingleImage( { imageId } ); const controlWrapper = document.querySelector( `.image-optimization-control[data-image-optimization-image-id="${ imageId }"]` ); if ( controlWrapper ) { new ControlStates( controlWrapper ).renderLoading( 'optimize' ); } OptimizationDetails.closeModal(); } } export default OptimizationControl; Les Filles du Thé vous en font voir de toutes les couleurs ! | Les Filles du Thé

Les Filles du Thé vous en font voir de toutes les couleurs… de thé bien sûr !

Bonjour à toutes et à tous !

Atelier n°1 

« Pour bien choisir votre thé, les Filles du Thé vous en font voir de toutes les couleurs ! « 

Comme vous le savez peut-être déjà, le thé se décline en plusieurs couleurs qui lui sont données par sa liqueur.

Nous vous proposons de partir à la découverte des couleurs de Thé le dimanche 3 avril 2016 de 10h à 12h !

L’occasion, pour vous, de déguster des thé servis dans les règles de l’art. Dosage, température, temps d’infusion, le tout sera précisément respecté afin de vous faire découvrir ces thés dans les meilleures conditions !

Tous les éléments seront réunis pour le plus grand plaisir des sens !!

Découvrir des thés que vous n’auriez peut-être jamais eu l’occasion de déguster,  c’est l’envie des Filles du Thé !

Ce premier atelier vous permettra d’apprendre à choisir votre thé en pleine conscience !!

Alors, prêt pour la découverte de votre couleur de thé préférée ?

Rendez-vous le dimanche 3 avril de 10h à 12h à Beuvry la Forêt  au 530 rue de Saulzoir !

Pour réserver vos places, envoyez un email à : lesfillesduthe@gmail.com

Les places au tarif de 15€ sont limitées. Elles seront réservées une fois le paiement effectué.

Tous les thés dégustés lors de l’atelier seront disponibles à la vente. Règlement par chèque ou liquide (de préférence).

A très bientôt,

Juliette et Mylène , Les Filles du Thé.

Laisser un commentaire