Skip to content

Commit

Permalink
Display the current status of a doc in ES
Browse files Browse the repository at this point in the history
  • Loading branch information
felipeelia committed Feb 26, 2025
1 parent 377fb88 commit 262d71a
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 13 deletions.
22 changes: 22 additions & 0 deletions assets/css/general.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
@import "./global/colors.css";

#wpadminbar .ep-status-indicator {
background-color: var(--ep-c-white-gray);
border-radius: 100%;
display: inline-block;
height: 8px;
margin-right: 6px;
width: 8px;
}

#wpadminbar .ep-status-indicator--success {
background-color: var(--ep-status-ok);
}

#wpadminbar .ep-status-indicator--warning {
background-color: var(--ep-status-warning);
}

#wpadminbar .ep-status-indicator--error {
background-color: var(--ep-status-error);
}
69 changes: 69 additions & 0 deletions includes/classes/Indexable/Post/Post.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ public function setup() {

$this->sync_manager = new SyncManager( $this->slug );
$this->query_integration = new QueryIntegration( $this->slug );

add_action( 'admin_bar_menu', [ $this, 'add_admin_bar_status' ], 500 );
}

/**
Expand Down Expand Up @@ -3013,4 +3015,71 @@ function ( $field ) {

return array_unique( $all_allowed_metas );
}

/**
* Add the document status to the admin bar.
*
* @param \WP_Admin_Bar $admin_bar WP Admin Bar instance
* @return void
*/
public function add_admin_bar_status( \WP_Admin_Bar $admin_bar ) {
global $pagenow;

if ( ! is_admin() || 'post.php' !== $pagenow ) {
return;
}

$document_status = $this->get_es_status( get_the_ID() );

$admin_bar->add_menu(
[
'id' => 'ep-embeddings-status',
'title' => $this->format_es_status_indicator( $document_status ),
'href' => '#',
'meta' => [
'class' => 'ep-embeddings-status',
],
]
);
}

/**
* Get the document status for a post.
*
* @param int $post_id Post ID
* @return array
*/
protected function get_es_status( int $post_id ): array {
$es_doc = $this->get( $post_id );
if ( ! $es_doc ) {
return [
'status' => 'error',
'message' => esc_html__( 'Document not found in Elasticsearch', 'elasticpress' ),
];
}

$wp_post = get_post( $post_id );
if ( $wp_post->post_modified_gmt !== $es_doc['post_modified_gmt'] ) {
return [
'status' => 'warning',
'message' => esc_html__( 'Document out of sync', 'elasticpress' ),
];
}

return [
'status' => 'success',
'message' => esc_html__( 'Document synced', 'elasticpress' ),
];
}

/**
* Format the document status for the admin bar.
*
* @param array $document_status Document status
* @return string
*/
protected function format_es_status_indicator( array $document_status ): string {
$status_indicator = '<span class="ep-status-indicator ep-status-indicator--' . ( $document_status['status'] ?? '' ) . '"></span>';
return $status_indicator . $document_status['message'];
}
}
7 changes: 7 additions & 0 deletions includes/dashboard.php
Original file line number Diff line number Diff line change
Expand Up @@ -584,6 +584,13 @@ function action_admin_enqueue_dashboard_scripts() {
'nonce' => wp_create_nonce( 'ep_admin_nonce' ),
)
);

wp_enqueue_style(
'ep_general_styles',
EP_URL . 'dist/css/general-styles.css',
Utils\get_asset_info( 'general-styles', 'dependencies' ),
Utils\get_asset_info( 'general-styles', 'version' )
);
}

/**
Expand Down
28 changes: 15 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,43 +64,45 @@
},
"10up-toolkit": {
"entry": {
"admin-script": "./assets/js/admin.js",
"autosuggest-script": "./assets/js/autosuggest/index.js",
"blocks-script": "./assets/js/blocks/index.js",
"comments-script": "./assets/js/comments.js",
"comments-block-script": "./assets/js/blocks/comments/index.js",
"dashboard-script": "./assets/js/dashboard.js",
"features-script": "./assets/js/features/index.js",
"facets-script": "./assets/js/facets.js",
"instant-results-script": "./assets/js/instant-results/index.js",
"instant-results-admin-script": "./assets/js/instant-results/admin/index.js",
"notice-script": "./assets/js/notice.js",
"ordering-script": "./assets/js/ordering/index.js",
"facets-block-script": "./assets/js/blocks/facets/taxonomy/index.js",
"facets-date-block-script": "./assets/js/blocks/facets/date/index.js",
"facets-date-block-view-script": "./assets/js/blocks/facets/date/view.js",
"facets-meta-block-script": "./assets/js/blocks/facets/meta/index.js",
"facets-meta-range-block-script": "./assets/js/blocks/facets/meta-range/index.js",
"facets-post-type-block-script": "./assets/js/blocks/facets/post-type/index.js",
"facets-meta-range-block-view-script": "./assets/js/blocks/facets/meta-range/view.js",
"facets-date-block-script": "./assets/js/blocks/facets/date/index.js",
"facets-date-block-view-script": "./assets/js/blocks/facets/date/view.js",
"facets-post-type-block-script": "./assets/js/blocks/facets/post-type/index.js",
"features-script": "./assets/js/features/index.js",
"instant-results-admin-script": "./assets/js/instant-results/admin/index.js",
"instant-results-script": "./assets/js/instant-results/index.js",
"notice-script": "./assets/js/notice.js",
"ordering-script": "./assets/js/ordering/index.js",
"related-posts-block-script": "./assets/js/blocks/related-posts/index.js",
"search-editor-script": "./assets/js/search/editor/index.js",
"settings-script": "./assets/js/settings.js",
"sync-script": "./assets/js/sync-ui/index.js",
"sites-admin-script": "./assets/js/sites-admin.js",
"stats-script": "./assets/js/stats.js",
"status-report-script": "./assets/js/status-report/index.js",
"sync-script": "./assets/js/sync-ui/index.js",
"synonyms-script": "./assets/js/synonyms/index.js",
"woocommerce-order-search-script": "./assets/js/woocommerce/admin/orders/index.js",
"admin-script": "./assets/js/admin.js",
"weighting-script": "./assets/js/weighting/index.js",
"search-editor-script": "./assets/js/search/editor/index.js",
"woocommerce-order-search-script": "./assets/js/woocommerce/admin/orders/index.js",

"autosuggest-styles": "./assets/css/autosuggest.css",
"comments-styles": "./assets/css/comments.css",
"dashboard-styles": "./assets/css/dashboard.css",
"facets-block-styles": "./assets/css/facets-block.css",
"facets-styles": "./assets/css/facets.css",
"general-styles": "./assets/css/general.css",
"highlighting-styles": "./assets/css/highlighting.css",
"instant-results-styles": "./assets/css/instant-results.css",
"ordering-styles": "./assets/css/ordering.css",
"facets-block-styles": "./assets/css/facets-block.css",
"related-posts-block-styles": "./assets/css/related-posts-block.css",
"synonyms-styles": "./assets/css/synonyms.css",
"woocommerce-order-search-styles": "./assets/css/woocommerce/admin/orders.css"
Expand Down

0 comments on commit 262d71a

Please sign in to comment.