/** * WordPress dependencies */ import { useSelect } from '@safe-wordpress/data'; import { addQueryArgs } from '@safe-wordpress/url'; import { _x } from '@safe-wordpress/i18n'; /** * External dependencies */ import { Preview } from '@nab/components'; import { store as NAB_DATA } from '@nab/data'; import { store as NAB_EXPERIMENTS } from '@nab/experiments'; import { formatNumber } from '@nab/i18n'; import type { ExperimentId, ExperimentTypeName } from '@nab/types'; /** * Internal dependencies */ import './style.scss'; export type HeatmapExperimentProps = { readonly id: ExperimentId; readonly name: string; }; export const HeatmapExperiment = ( { id, name, }: HeatmapExperimentProps ): JSX.Element => { const preview = usePreviewUrl( id ); const areViewsUnique = useAreViewsUnique( id ); const views = usePageViews( id ); const daysRunning = useDaysRunning( id ); const experimentType = useExperimentType( 'nab/heatmap' ); const Icon = experimentType?.icon ?? ( () => <> ); return (

{ Icon && ( ) } { name }

{ _x( 'Collected data about this test:', 'text', 'nelio-ab-testing' ) }

  • { areViewsUnique ? _x( 'Unique Page Views', 'text (overview)', 'nelio-ab-testing' ) : _x( 'Page Views', 'text (overview)', 'nelio-ab-testing' ) } : { formatNumber( views ) }
  • { _x( 'Days running', 'text', 'nelio-ab-testing' ) } : { formatNumber( daysRunning ) }
{ _x( 'View', 'command', 'nelio-ab-testing' ) }
); }; // ===== // HOOKS // ===== const useExperimentType = ( type: ExperimentTypeName ) => useSelect( ( select ) => select( NAB_EXPERIMENTS ).getExperimentType( type ), [ type ] ); const usePreviewUrl = ( id: ExperimentId ) => useSelect( ( select ) => select( NAB_DATA ).getExperiment( id )?.links.preview, [ id ] ); const useAreViewsUnique = ( id: ExperimentId ) => useSelect( ( select ) => select( NAB_DATA ).areUniqueResultsVisible( id ), [ id ] ); const usePageViews = ( id: ExperimentId ) => useSelect( ( select ) => select( NAB_DATA ).getPageViews( id ), [ id ] ); const useDaysRunning = ( id: ExperimentId ) => useSelect( ( select ) => select( NAB_DATA ).getDaysRunning( id ), [ id ] );