| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /**
- * @link http://www.yiiframework.com/
- * @copyright Copyright (c) 2008 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- namespace yii\debug\models\timeline;
- use yii\debug\components\search\Filter;
- use yii\debug\components\search\matchers\GreaterThanOrEqual;
- use yii\debug\models\search\Base;
- use yii\debug\panels\TimelinePanel;
- /**
- * Search model for timeline data.
- *
- * @author Dmitriy Bashkarev <dmitriy@bashkarev.com>
- * @since 2.0.8
- */
- class Search extends Base
- {
- /**
- * @var string attribute search
- */
- public $category;
- /**
- * @var integer attribute search
- */
- public $duration = 0;
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['category', 'duration'], 'safe'],
- ];
- }
- /**
- * @inheritdoc
- */
- public function attributeLabels()
- {
- return [
- 'duration' => 'Duration ≥'
- ];
- }
- /**
- * Returns data provider with filled models. Filter applied if needed.
- *
- * @param array $params $params an array of parameter values indexed by parameter names
- * @param TimeLinePanel $panel
- * @return DataProvider
- */
- public function search($params, $panel)
- {
- $models = $panel->models;
- $dataProvider = new DataProvider($panel, [
- 'allModels' => $models,
- 'sort' => [
- 'attributes' => ['category', 'timestamp']
- ],
- ]);
- if (!($this->load($params) && $this->validate())) {
- return $dataProvider;
- }
- $filter = new Filter();
- $this->addCondition($filter, 'category', true);
- if ($this->duration > 0) {
- $filter->addMatcher('duration', new GreaterThanOrEqual(['value' => $this->duration / 1000]));
- }
- $dataProvider->allModels = $filter->filter($models);
- return $dataProvider;
- }
- }
|