Skip to content

Commit e3df7d3

Browse files
authored
Adding Queue log grid (#929)
1 parent b39d567 commit e3df7d3

File tree

10 files changed

+375
-0
lines changed

10 files changed

+375
-0
lines changed

Api/Data/RunInterface.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Api\Data;
4+
5+
/**
6+
* Run Data Interface
7+
*
8+
* @api
9+
*/
10+
interface RunInterface
11+
{
12+
const TABLE_NAME = 'algoliasearch_queue_log';
13+
14+
/**#@+
15+
* Constants for keys of data array. Identical to the name of the getter in snake case
16+
*/
17+
const FIELD_RUN_ID = 'id';
18+
const FIELD_STARTED = 'started';
19+
const FIELD_DURATION = 'duration';
20+
const FIELD_PROCESSED_JOBS = 'processed_jobs';
21+
const FIELD_WITH_EMPTY_QUEUE = 'with_empty_queue';
22+
/**#@-*/
23+
}

Controller/Adminhtml/Queue/Log.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Controller\Adminhtml\Queue;
4+
5+
use Magento\Framework\Controller\ResultFactory;
6+
7+
class Log extends \Magento\Backend\App\Action
8+
{
9+
/** @return \Magento\Framework\View\Result\Page */
10+
public function execute()
11+
{
12+
$breadMain = __('Algolia | Indexing Queue Logs');
13+
14+
/** @var \Magento\Framework\View\Result\Page $resultPage */
15+
$resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
16+
$resultPage->setActiveMenu('Algolia_AlgoliaSearch::manage');
17+
$resultPage->getConfig()->getTitle()->prepend($breadMain);
18+
19+
return $resultPage;
20+
}
21+
}

Model/ResourceModel/Run.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Model\ResourceModel;
4+
5+
use Algolia\AlgoliaSearch\Api\Data\RunInterface;
6+
7+
class Run extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
8+
{
9+
protected function _construct()
10+
{
11+
$this->_init(RunInterface::TABLE_NAME, RunInterface::FIELD_RUN_ID);
12+
}
13+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Model\ResourceModel\Run;
4+
5+
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
6+
{
7+
protected $_idFieldName = 'id';
8+
9+
protected $_eventPrefix = 'algoliasearch_queue_run_collection';
10+
11+
protected $_eventObject = 'run_collection';
12+
13+
/**
14+
* Define resource model
15+
*
16+
* @return void
17+
*/
18+
protected function _construct()
19+
{
20+
$this->_init(
21+
'Algolia\AlgoliaSearch\Model\Run',
22+
'Algolia\AlgoliaSearch\Model\ResourceModel\Run'
23+
);
24+
}
25+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Model\ResourceModel\Run\Grid;
4+
5+
use Algolia\AlgoliaSearch\Model\ResourceModel\Run\Collection as RunCollection;
6+
use Magento\Framework\Api\Search\AggregationInterface;
7+
use Magento\Framework\Api\Search\SearchResultInterface;
8+
9+
class Collection extends RunCollection implements SearchResultInterface
10+
{
11+
/** @var AggregationInterface */
12+
protected $aggregations;
13+
14+
/**
15+
* @param \Magento\Framework\Data\Collection\EntityFactoryInterface $entityFactory
16+
* @param \Psr\Log\LoggerInterface $logger
17+
* @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
18+
* @param \Magento\Framework\Event\ManagerInterface $eventManager
19+
* @param mixed|null $mainTable
20+
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $eventPrefix
21+
* @param mixed $eventObject
22+
* @param mixed $resourceModel
23+
* @param string $model
24+
* @param null $connection
25+
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb|null $resource
26+
*
27+
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
28+
*/
29+
public function __construct(
30+
\Magento\Framework\Data\Collection\EntityFactoryInterface $entityFactory,
31+
\Psr\Log\LoggerInterface $logger,
32+
\Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy,
33+
\Magento\Framework\Event\ManagerInterface $eventManager,
34+
$mainTable,
35+
$eventPrefix,
36+
$eventObject,
37+
$resourceModel,
38+
$model = 'Magento\Framework\View\Element\UiComponent\DataProvider\Document',
39+
$connection = null,
40+
\Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource = null
41+
) {
42+
parent::__construct(
43+
$entityFactory,
44+
$logger,
45+
$fetchStrategy,
46+
$eventManager,
47+
$connection,
48+
$resource
49+
);
50+
$this->_eventPrefix = $eventPrefix;
51+
$this->_eventObject = $eventObject;
52+
$this->_init($model, $resourceModel);
53+
$this->setMainTable($mainTable);
54+
}
55+
56+
/** @return AggregationInterface */
57+
public function getAggregations()
58+
{
59+
return $this->aggregations;
60+
}
61+
62+
/**
63+
* @param AggregationInterface $aggregations
64+
*
65+
* @return $this
66+
*/
67+
public function setAggregations($aggregations)
68+
{
69+
$this->aggregations = $aggregations;
70+
}
71+
72+
/** @return \Magento\Framework\Api\SearchCriteriaInterface|null */
73+
public function getSearchCriteria()
74+
{
75+
return null;
76+
}
77+
78+
/**
79+
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
80+
*
81+
* @return $this
82+
*
83+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
84+
*/
85+
public function setSearchCriteria(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria = null)
86+
{
87+
return $this;
88+
}
89+
90+
/** @return int */
91+
public function getTotalCount()
92+
{
93+
return $this->getSize();
94+
}
95+
96+
/**
97+
* @param int $totalCount
98+
*
99+
* @return $this
100+
*
101+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
102+
*/
103+
public function setTotalCount($totalCount)
104+
{
105+
return $this;
106+
}
107+
108+
/**
109+
* @param \Magento\Framework\Api\ExtensibleDataInterface[] $items
110+
*
111+
* @return $this
112+
*
113+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
114+
*/
115+
public function setItems(array $items = null)
116+
{
117+
return $this;
118+
}
119+
}

Model/Run.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Algolia\AlgoliaSearch\Model;
4+
5+
use Algolia\AlgoliaSearch\Api\Data\RunInterface;
6+
use Magento\Framework\DataObject\IdentityInterface;
7+
8+
class Run extends \Magento\Framework\Model\AbstractModel implements IdentityInterface, RunInterface
9+
{
10+
const CACHE_TAG = 'algoliasearch_queue_run';
11+
12+
protected $_cacheTag = 'algoliasearch_queue_run';
13+
14+
protected $_eventPrefix = 'algoliasearch_queue_run';
15+
16+
/**
17+
* Magento Constructor
18+
*
19+
* @return void
20+
*/
21+
protected function _construct()
22+
{
23+
$this->_init('Algolia\AlgoliaSearch\Model\ResourceModel\Run');
24+
}
25+
26+
/**
27+
* @return array|string[]
28+
*/
29+
public function getIdentities()
30+
{
31+
return [self::CACHE_TAG . '_' . $this->getId()];
32+
}
33+
}

etc/di.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<arguments>
3030
<argument name="collections" xsi:type="array">
3131
<item name="algolia_algoliasearch_job_listing_data_source" xsi:type="string">Algolia\AlgoliaSearch\Model\ResourceModel\Job\Grid\Collection</item>
32+
<item name="algolia_algoliasearch_log_listing_data_source" xsi:type="string">Algolia\AlgoliaSearch\Model\ResourceModel\Run\Grid\Collection</item>
3233
<item name="algolia_algoliasearch_landingpage_listing_data_source" xsi:type="string">Algolia\AlgoliaSearch\Model\ResourceModel\LandingPage\Grid\Collection</item>
3334
<item name="algolia_algoliasearch_query_listing_data_source" xsi:type="string">Algolia\AlgoliaSearch\Model\ResourceModel\Query\Grid\Collection</item>
3435
</argument>
@@ -42,6 +43,14 @@
4243
<argument name="resourceModel" xsi:type="string">Algolia\AlgoliaSearch\Model\ResourceModel\Job</argument>
4344
</arguments>
4445
</type>
46+
<type name="Algolia\AlgoliaSearch\Model\ResourceModel\Run\Grid\Collection">
47+
<arguments>
48+
<argument name="mainTable" xsi:type="string">algoliasearch_queue_log</argument>
49+
<argument name="eventPrefix" xsi:type="string">algoliasearch_log_grid_collection</argument>
50+
<argument name="eventObject" xsi:type="string">algoliasearch_log_grid_collection</argument>
51+
<argument name="resourceModel" xsi:type="string">Algolia\AlgoliaSearch\Model\ResourceModel\Run</argument>
52+
</arguments>
53+
</type>
4554
<type name="Algolia\AlgoliaSearch\Model\ResourceModel\LandingPage\Grid\Collection">
4655
<arguments>
4756
<argument name="mainTable" xsi:type="string">algoliasearch_landing_page</argument>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0"?>
2+
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
4+
<body>
5+
<referenceContainer name="content">
6+
<uiComponent name="algolia_algoliasearch_indexing_log_listing"/>
7+
</referenceContainer>
8+
</body>
9+
</page>
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
2+
<argument name="data" xsi:type="array">
3+
<item name="js_config" xsi:type="array">
4+
<item name="provider" xsi:type="string">algolia_algoliasearch_indexing_log_listing.algolia_algoliasearch_log_listing_data_source</item>
5+
<item name="deps" xsi:type="string">algolia_algoliasearch_indexing_log_listing.algolia_algoliasearch_log_listing_data_source</item>
6+
</item>
7+
<item name="spinner" xsi:type="string">algolia_algoliasearch_log_columns</item>
8+
<item name="buttons" xsi:type="array">
9+
<item name="back" xsi:type="array">
10+
<item name="name" xsi:type="string">logs</item>
11+
<item name="label" xsi:type="string" translate="true">Back to Indexing Queue</item>
12+
<item name="class" xsi:type="string">secondary</item>
13+
<item name="url" xsi:type="string">*/*/index</item>
14+
</item>
15+
</item>
16+
</argument>
17+
18+
<dataSource name="nameOfDataSource">
19+
<argument name="dataProvider" xsi:type="configurableObject">
20+
<argument name="class" xsi:type="string">Algolia\AlgoliaSearch\Ui\Component\Listing\DataProvider</argument>
21+
<argument name="name" xsi:type="string">algolia_algoliasearch_log_listing_data_source</argument>
22+
<argument name="primaryFieldName" xsi:type="string">id</argument>
23+
<argument name="requestFieldName" xsi:type="string">id</argument>
24+
<argument name="data" xsi:type="array">
25+
<item name="config" xsi:type="array">
26+
<item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
27+
<item name="update_url" xsi:type="url" path="mui/index/render"/>
28+
<item name="storageConfig" xsi:type="array">
29+
<item name="indexField" xsi:type="string">id</item>
30+
</item>
31+
</item>
32+
</argument>
33+
</argument>
34+
</dataSource>
35+
36+
<listingToolbar name="listing_top">
37+
<argument name="data" xsi:type="array">
38+
<item name="config" xsi:type="array">
39+
<item name="sticky" xsi:type="boolean">true</item>
40+
</item>
41+
</argument>
42+
<bookmark name="bookmarks"/>
43+
<columnsControls name="columns_controls"/>
44+
<filterSearch name="fulltext"/>
45+
<filters name="listing_filters">
46+
<argument name="data" xsi:type="array">
47+
<item name="config" xsi:type="array">
48+
<item name="templates" xsi:type="array">
49+
<item name="filters" xsi:type="array">
50+
<item name="select" xsi:type="array">
51+
<item name="component" xsi:type="string">Magento_Ui/js/form/element/ui-select</item>
52+
<item name="template" xsi:type="string">ui/grid/filters/elements/ui-select</item>
53+
</item>
54+
</item>
55+
</item>
56+
</item>
57+
</argument>
58+
</filters>
59+
<paging name="listing_paging"/>
60+
<exportButton name="export_button"/>
61+
</listingToolbar>
62+
63+
<columns name="algolia_algoliasearch_log_columns">
64+
<column name="id">
65+
<argument name="data" xsi:type="array">
66+
<item name="config" xsi:type="array">
67+
<item name="filter" xsi:type="string">textRange</item>
68+
<item name="sorting" xsi:type="string">asc</item>
69+
<item name="label" xsi:type="string" translate="true">Run Id</item>
70+
</item>
71+
</argument>
72+
</column>
73+
<column name="started" class="Magento\Ui\Component\Listing\Columns\Date">
74+
<argument name="data" xsi:type="array">
75+
<item name="config" xsi:type="array">
76+
<item name="filter" xsi:type="string">dateRange</item>
77+
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
78+
<item name="dataType" xsi:type="string">date</item>
79+
<item name="label" xsi:type="string" translate="true">Started</item>
80+
</item>
81+
</argument>
82+
</column>
83+
<column name="duration">
84+
<argument name="data" xsi:type="array">
85+
<item name="config" xsi:type="array">
86+
<item name="filter" xsi:type="string">int</item>
87+
<item name="editor" xsi:type="array">
88+
<item name="editorType" xsi:type="string">text</item>
89+
</item>
90+
<item name="label" xsi:type="string" translate="true">Duration (in seconds)</item>
91+
</item>
92+
</argument>
93+
</column>
94+
<column name="processed_jobs">
95+
<argument name="data" xsi:type="array">
96+
<item name="config" xsi:type="array">
97+
<item name="filter" xsi:type="string">int</item>
98+
<item name="editor" xsi:type="array">
99+
<item name="editorType" xsi:type="string">text</item>
100+
</item>
101+
<item name="label" xsi:type="string" translate="true">Processed Jobs</item>
102+
</item>
103+
</argument>
104+
</column>
105+
<column name="with_empty_queue">
106+
<argument name="data" xsi:type="array">
107+
<item name="config" xsi:type="array">
108+
<item name="filter" xsi:type="string">int</item>
109+
<item name="editor" xsi:type="array">
110+
<item name="editorType" xsi:type="string">text</item>
111+
</item>
112+
<item name="label" xsi:type="string" translate="true">With empty queue</item>
113+
</item>
114+
</argument>
115+
</column>
116+
</columns>
117+
</listing>

0 commit comments

Comments
 (0)