/** * {@inheritdoc} */ public function getItems(BucketInterface $bucket, array $dimensions, EntityStorage $entityStorage) { $range = $this->dataProvider->getRange(); $options = $this->options->get(); if (!$range) { $range = $options['range_step']; } $dbRanges = $this->dataProvider->getAggregation($bucket, $dimensions, $range, $entityStorage); $dbRanges = $this->processRange($dbRanges, $options['max_intervals_number']); $data = $this->dataProvider->prepareData($range, $dbRanges); return $data; }
/** * {@inheritdoc} */ public function getItems(BucketInterface $bucket, array $dimensions, \Magento\Framework\Search\Dynamic\EntityStorage $entityStorage) { $aggregations = $this->dataProvider->getAggregations($entityStorage); $options = $this->options->get(); if ($aggregations['count'] < $options['interval_division_limit']) { return []; } $this->algorithm->setStatistics($aggregations['min'], $aggregations['max'], $aggregations['std'], $aggregations['count']); $this->algorithm->setLimits($aggregations['min'], $aggregations['max'] + 0.01); $interval = $this->dataProvider->getInterval($bucket, $dimensions, $entityStorage); $data = $this->algorithm->calculateSeparators($interval); $data[0]['from'] = ''; // We should not calculate min and max value $data[count($data) - 1]['to'] = ''; $dataSize = count($data); for ($key = 0; $key < $dataSize; $key++) { if (isset($data[$key + 1])) { $data[$key]['to'] = $data[$key + 1]['from']; } } return $data; }
/** * @param DataProviderInterface $dataProvider * @return int */ private function getMinRangePower() { $options = $this->options->get(); return $options['min_range_power']; }