0 ? round( ( $totals['up'] / $votes ) * 100 ) : 0; $trend = Tracker::trend( 'view', 30 ); AdminUi::header( __( 'How your FAQs are performing.', 'accordion-faq-plugin' ) ); ?>
stat( '👁️', __( 'Views (all time)', 'accordion-faq-plugin' ), number_format_i18n( $totals['view'] ) ); $this->stat( '👍', __( 'Helpful votes', 'accordion-faq-plugin' ), number_format_i18n( $totals['up'] ) ); $this->stat( '👎', __( 'Not helpful', 'accordion-faq-plugin' ), number_format_i18n( $totals['down'] ) ); $this->stat( '⭐', __( 'Helpfulness', 'accordion-faq-plugin' ), $helpful . '%' ); ?>

bar_chart( $trend ); ?>

rank( Tracker::top( Tracker::META_VIEWS, 8 ) ); ?>

rank( Tracker::top( Tracker::META_UP, 8 ) ); ?>

search_rank( Searches::top( 10, 30 ) ); ?>

search_rank( Searches::no_results( 10, 30 ), true ); ?>
' . esc_html__( 'No search data yet.', 'accordion-faq-plugin' ) . '

'; return; } $max = max( array_map( function ( $r ) { return $r['hits']; }, $rows ) ); echo ''; } /** * Stat tile. * * @param string $icon Icon. * @param string $label Label. * @param string $value Value. * @return void */ private function stat( $icon, $label, $value ) { echo '
' . esc_html( $label ) . '' . esc_html( $value ) . '
'; } /** * Render an inline SVG bar chart. * * @param array $series day => hits. * @return void */ private function bar_chart( $series ) { $values = array_values( $series ); $max = max( 1, max( $values ) ); $count = max( 1, count( $values ) ); $w = 1000; $h = 180; $gap = 3; $bw = ( $w - ( $count - 1 ) * $gap ) / $count; echo ''; $i = 0; foreach ( $series as $day => $val ) { $bar_h = ( $val / $max ) * ( $h - 10 ); $x = $i * ( $bw + $gap ); $y = $h - $bar_h; printf( '%5$s: %6$s', esc_attr( round( $x, 2 ) ), esc_attr( round( $y, 2 ) ), esc_attr( round( $bw, 2 ) ), esc_attr( round( max( 1, $bar_h ), 2 ) ), esc_attr( $day ), esc_attr( number_format_i18n( $val ) ) ); $i++; } echo ''; } /** * Ranked list. * * @param array $rows Rows. * @return void */ private function rank( $rows ) { if ( empty( $rows ) ) { echo '

' . esc_html__( 'No data yet.', 'accordion-faq-plugin' ) . '

'; return; } $max = max( array_map( function ( $r ) { return $r['value']; }, $rows ) ); echo ''; } }