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; Commentaires sur : Bonne année et surtout bonne sant(h)é ! https://les-filles-du-the.com/bonne-annee-et-surtout-bonne-santhe/?utm_source=rss&utm_medium=rss&utm_campaign=bonne-annee-et-surtout-bonne-santhe Apprenez facilement à choisir, préparer et déguster votre Thé ! Sat, 10 Dec 2016 21:14:56 +0000 hourly 1 https://wordpress.org/?v=5.7.21 Par : Juliette et Mylène https://les-filles-du-the.com/bonne-annee-et-surtout-bonne-santhe/#comment-21 Tue, 12 Apr 2016 08:32:26 +0000 http://les-filles-du-the.com/?p=536#comment-21 En réponse à lecubin.

Merci Jean Marc pour ce commentaire !

Ce fut un plaisir pour moi d’échanger avec vous !

Merci à vous pour ce conseil de salon de thé, il est noté et fera parti d’une de nos prochaines dégustations !

A très bientôt et merci de nous suivre !

]]>
Par : lecubin https://les-filles-du-the.com/bonne-annee-et-surtout-bonne-santhe/#comment-17 Mon, 04 Apr 2016 16:04:35 +0000 http://les-filles-du-the.com/?p=536#comment-17 Bonjour,
j’ai eu le plaisir d’échanger avec l’une d’entre vous cet après-midi chez Unami à Lille, en dégustant un Matcha Impérial.
Je viens de découvrir votre blog, et j’y retournerais régulièrement pour me tenir informer de vos actions.
Si vous passez du côté de Paris, et que vous souhaitez consacrer un « petit budget » pour un grand moment gourmet et très raffiné, surtout ne manquez pas le salon de thé TORAYA situé 10, rue Saint Florentin dans le 1er arrondissement. C’est de la pâtisserie Japonaise « haute couture » et une belle carte de thé servi à la perfection. Tout y est, le cadre, l’accueil, les produits…
Comme chez Unami mais à Paris…
A suivre

]]>
Par : alexandralesage@outlook.com https://les-filles-du-the.com/bonne-annee-et-surtout-bonne-santhe/#comment-6 Wed, 13 Jan 2016 14:32:50 +0000 http://les-filles-du-the.com/?p=536#comment-6 Une très belle année 2016 aux Filles du thé, avec 366 jours de dégustation !
Merci pour tous vos conseils précieux. J’ai choisi ma couleur : Bleu-Vert ! Le Tie Guan Yin est un délice. J’en ai offert à Noël à de nombreuses personnes, en leur précisant la température (facile, c’est 95°C, donc même pas besoin d’une boulloire avec contrôle de la température!) et le temps d’infusion. Et en leur conseillant de prendre le temps de regarder les feuilles s’ouvrir. Petit bonus pour 2016 : j’ai profité des soldes pour m’offrir une boulloire avec contrôle de la température ! A très bientôt et encore bravo pour la chronique France 3.

]]>