diff --git a/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Scheduled.php b/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Scheduled.php
index adfe3dd5b346b..99e985f813c6d 100644
--- a/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Scheduled.php
+++ b/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Scheduled.php
@@ -5,6 +5,8 @@
*/
namespace Magento\Indexer\Block\Backend\Grid\Column\Renderer;
+use Magento\Customer\Model\Customer;
+
/**
* Renderer for 'Scheduled' column in indexer grid
*/
@@ -18,13 +20,35 @@ class Scheduled extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Abstr
*/
public function render(\Magento\Framework\DataObject $row)
{
+ if ($this->isPreferRealtime($row->getIndexerId())) {
+ $scheduleClass = 'grid-severity-major';
+ $realtimeClass = 'grid-severity-notice';
+ } else {
+ $scheduleClass = 'grid-severity-notice';
+ $realtimeClass = 'grid-severity-major';
+ }
+
if ($this->_getValue($row)) {
- $class = 'grid-severity-notice';
+ $class = $scheduleClass;
$text = __('Update by Schedule');
} else {
- $class = 'grid-severity-major';
+ $class = $realtimeClass;
$text = __('Update on Save');
}
+
return '' . $text . '';
}
+
+ /**
+ * Determine if an indexer is recommended to be in 'realtime' mode
+ *
+ * @param string $indexer
+ * @return bool
+ */
+ public function isPreferRealtime(string $indexer): bool
+ {
+ return in_array($indexer, [
+ Customer::CUSTOMER_GRID_INDEXER_ID,
+ ]);
+ }
}
diff --git a/app/code/Magento/Indexer/Test/Unit/Block/Backend/Grid/Column/Renderer/ScheduledTest.php b/app/code/Magento/Indexer/Test/Unit/Block/Backend/Grid/Column/Renderer/ScheduledTest.php
index c48da82ed3d70..2d83d27a368eb 100644
--- a/app/code/Magento/Indexer/Test/Unit/Block/Backend/Grid/Column/Renderer/ScheduledTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Block/Backend/Grid/Column/Renderer/ScheduledTest.php
@@ -15,12 +15,13 @@
class ScheduledTest extends TestCase
{
/**
+ * @param string $indexer
* @param bool $rowValue
* @param string $class
* @param string $text
* @dataProvider typeProvider
*/
- public function testRender($rowValue, $class, $text)
+ public function testRender($indexer, $rowValue, $class, $text)
{
$html = '' . $text . '';
$row = new DataObject();
@@ -32,6 +33,7 @@ public function testRender($rowValue, $class, $text)
$model = new Scheduled($context);
$column->setGetter('getValue');
$row->setValue($rowValue);
+ $row->setIndexerId($indexer);
$model->setColumn($column);
$result = $model->render($row);
@@ -44,9 +46,12 @@ public function testRender($rowValue, $class, $text)
public function typeProvider()
{
return [
- [true, 'grid-severity-notice', __('Update by Schedule')],
- [false, 'grid-severity-major', __('Update on Save')],
- ['', 'grid-severity-major', __('Update on Save')],
+ ['customer_grid', true, 'grid-severity-major', __('Update by Schedule')],
+ ['customer_grid', false, 'grid-severity-notice', __('Update on Save')],
+ ['customer_grid', '', 'grid-severity-notice', __('Update on Save')],
+ ['catalog_product_price', true, 'grid-severity-notice', __('Update by Schedule')],
+ ['catalog_product_price', false, 'grid-severity-major', __('Update on Save')],
+ ['catalog_product_price', '', 'grid-severity-major', __('Update on Save')],
];
}
}
diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json
index 8cee48610c7ea..6683079cc3da0 100644
--- a/app/code/Magento/Indexer/composer.json
+++ b/app/code/Magento/Indexer/composer.json
@@ -7,7 +7,8 @@
"require": {
"php": "~8.1.0||~8.2.0",
"magento/framework": "*",
- "magento/module-backend": "*"
+ "magento/module-backend": "*",
+ "magento/module-customer": "*"
},
"type": "magento2-module",
"license": [
diff --git a/app/code/Magento/Indexer/etc/module.xml b/app/code/Magento/Indexer/etc/module.xml
index cd84bb9cf2157..4942b5e077e6d 100644
--- a/app/code/Magento/Indexer/etc/module.xml
+++ b/app/code/Magento/Indexer/etc/module.xml
@@ -8,6 +8,7 @@
+