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; { "name": "woocommerce/product-image", "title": "Product Image", "description": "Display the main product image.", "category": "woocommerce-product-elements", "attributes": { "showProductLink": { "type": "boolean", "default": true }, "showSaleBadge": { "type": "boolean", "default": true }, "saleBadgeAlign": { "type": "string", "default": "right" }, "imageSizing": { "type": "string", "default": "single" }, "productId": { "type": "number", "default": 0 }, "isDescendentOfQueryLoop": { "type": "boolean", "default": false }, "isDescendentOfSingleProductBlock": { "type": "boolean", "default": false }, "width": { "type": "string" }, "height": { "type": "string" }, "scale": { "type": "string", "default": "cover" }, "aspectRatio": { "type": "string" } }, "supports": { "interactivity": { "clientNavigation": true }, "html": false, "__experimentalBorder": { "radius": true, "__experimentalSkipSerialization": true }, "typography": { "fontSize": true, "__experimentalSkipSerialization": true }, "spacing": { "margin": true, "padding": true }, "dimensions": { "aspectRatio": true, "__experimentalSkipSerialization": true }, "email": true }, "selectors": { "root": ".wp-block-woocommerce-product-image.wc-block-components-product-image, .wp-block-woocommerce-product-image .wc-block-components-product-image" }, "ancestor": [ "woocommerce/all-products", "woocommerce/single-product", "woocommerce/product-template", "core/post-template" ], "usesContext": [ "imageId", "postId", "query", "queryId" ], "keywords": [ "WooCommerce" ], "textdomain": "woocommerce", "apiVersion": 3, "$schema": "https://schemas.wp.org/trunk/block.json" } Commentaires sur : Le Pop-up store Les Jardins d’Osmane – Jouez et gagnez le thé de votre choix avec les Filles du Thé ! https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/?utm_source=rss&utm_medium=rss&utm_campaign=le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th Apprenez facilement à choisir, préparer et déguster votre Thé ! Mon, 21 Nov 2016 22:45:07 +0000 hourly 1 Par : Juliette et Mylène https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-431 Mon, 21 Nov 2016 22:45:07 +0000 http://les-filles-du-the.com/?p=1319#comment-431 En réponse à Adriana.

Bonjour Adriana, nous venons d’ajouter l’image du flyer dans l’article, il suffit de l’imprimer pour avoir les 10% de remise au pop up store ! 🙂

]]>
Par : Lionel https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-429 Sun, 20 Nov 2016 15:18:53 +0000 http://les-filles-du-the.com/?p=1319#comment-429 Les yeux de la princesse Osmane sont bleus au coin du feu.

]]>
Par : salomé https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-428 Sun, 20 Nov 2016 14:37:06 +0000 http://les-filles-du-the.com/?p=1319#comment-428 Salomé :

Les yeux bleus!

]]>
Par : VANTRIMPONT https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-426 Sat, 19 Nov 2016 13:25:24 +0000 http://les-filles-du-the.com/?p=1319#comment-426 Ses yeux sont bleus

]]>
Par : Robert https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-425 Sat, 19 Nov 2016 09:29:23 +0000 http://les-filles-du-the.com/?p=1319#comment-425 Bleus, bleus, bleus, ses yeux sont bleus.

]]>
Par : lulu https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-423 Fri, 18 Nov 2016 23:27:32 +0000 http://les-filles-du-the.com/?p=1319#comment-423 oui, la princesse a les yeux bleus^^toujours bleus

]]>
Par : Adriana https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-422 Fri, 18 Nov 2016 20:00:21 +0000 http://les-filles-du-the.com/?p=1319#comment-422 Les yeux de la princesse Osmane sont bleus. Petite question où on se procure le flyer pour le 10% de réduction. Mercii!!!

]]>
Par : Thierry https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-421 Fri, 18 Nov 2016 18:24:38 +0000 http://les-filles-du-the.com/?p=1319#comment-421 Osmane a les yeux bleus
Bleus les yeux Osmane a

Sympa le concours. Merci !

]]>
Par : seffals https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-419 Fri, 18 Nov 2016 15:12:09 +0000 http://les-filles-du-the.com/?p=1319#comment-419 Je tente ma chance, les yeux de la princesse Osmane sont bleus, un très beau bleu. Merci pour ce concours.

]]>
Par : CETANI https://les-filles-du-the.com/le-pop-up-store-les-jardins-dosmane-jouez-et-gagnez-le-the-de-votre-choix-avec-les-filles-du-th/#comment-418 Fri, 18 Nov 2016 15:11:52 +0000 http://les-filles-du-the.com/?p=1319#comment-418 Ses Yeux sont bleus! <3
Merci pour ce concours !
Hélas le POP UP est à Paris je ne m'y rend pas en ce moment 🙁
Mais je suis de Lille et je vais encore bientôt revenir en boutique 😀

]]>