get_board_snapshot();
$sections = array(
'generating' => array(
'label' => __( 'Generating', 'prautoblogger' ),
'chip' => 'generating',
'cards' => $snapshot['generating'],
),
'in_review' => array(
'label' => __( 'In review', 'prautoblogger' ),
'chip' => 'in_review',
'cards' => $snapshot['in_review'],
),
'published' => array(
'label' => __( 'Published', 'prautoblogger' ),
'chip' => 'published',
'cards' => $snapshot['published'],
),
'failed' => array(
'label' => __( 'Failed', 'prautoblogger' ),
'chip' => 'failed',
'cards' => $snapshot['failed'],
),
);
$ideas_url = esc_url( admin_url( 'admin.php?page=prautoblogger-ideas' ) );
?>
$card Card data from Board_Data_Provider.
* @param string $section_key Section identifier (generating|in_review|published|failed).
* @return void
*/
function prab_render_board_row( array $card, string $section_key ): void {
$title = ! empty( $card['title'] ) ? esc_html( $card['title'] ) : esc_html__( 'Untitled', 'prautoblogger' );
$run_id = esc_attr( (string) ( $card['run_id'] ?? '' ) );
$post_id = esc_attr( (string) ( $card['post_id'] ?? 0 ) );
$cost = isset( $card['cost_total'] ) ? '$' . esc_html( number_format( (float) $card['cost_total'], 4 ) ) : '';
$is_failed = ( 'failed' === $section_key );
// Elapsed time.
$elapsed = '';
$started_ts = (int) ( $card['started_at'] ?? $card['created_at'] ?? 0 );
if ( $started_ts > 0 ) {
$diff = max( 0, time() - $started_ts );
$elapsed = $diff < 60
? sprintf(
/* translators: %d: seconds */
esc_html__( '%ds', 'prautoblogger' ),
$diff
)
: sprintf(
/* translators: %d: minutes */
esc_html__( '%dm', 'prautoblogger' ),
(int) floor( $diff / 60 )
);
}
$row_class = 'prab-run-row';
if ( $is_failed || 'failed' === ( $card['status'] ?? '' ) ) {
$row_class .= ' prab-run-row--failed';
}
?>
__( 'Generating', 'prautoblogger' ),
'in_review' => __( 'In review', 'prautoblogger' ),
'published' => __( 'Published', 'prautoblogger' ),
'failed' => __( 'Failed', 'prautoblogger' ),
);
echo esc_html( $chip_labels[ $section_key ] ?? ucfirst( $section_key ) );
?>
H