/** * @param BucketInterface $bucket * @param array $dimensions * @param int[] $entityIds * @return number */ private function getRange($bucket, array $dimensions, EntityStorage $entityStorage) { $maxPrice = $this->getMaxPriceInt($entityStorage); $index = 1; do { $range = pow(10, strlen(floor($maxPrice)) - $index); $items = $this->dataProvider->getAggregation($bucket, $dimensions, $range, $entityStorage); $index++; } while ($range > $this->getMinRangePower() && count($items) < 2); return $range; }
/** * {@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; }