Changeset View
Changeset View
Standalone View
Standalone View
src/applications/fact/engine/PhabricatorChartRenderingEngine.php
Show First 20 Lines • Show All 139 Lines • ▼ Show 20 Lines | $axis = id(new PhabricatorChartAxis()) | ||||
->setMaximumValue($domain->getMax()); | ->setMaximumValue($domain->getMax()); | ||||
$data_query = id(new PhabricatorChartDataQuery()) | $data_query = id(new PhabricatorChartDataQuery()) | ||||
->setMinimumValue($domain->getMin()) | ->setMinimumValue($domain->getMin()) | ||||
->setMaximumValue($domain->getMax()) | ->setMaximumValue($domain->getMax()) | ||||
->setLimit(2000); | ->setLimit(2000); | ||||
$wire_datasets = array(); | $wire_datasets = array(); | ||||
$ranges = array(); | |||||
foreach ($datasets as $dataset) { | foreach ($datasets as $dataset) { | ||||
$wire_datasets[] = $dataset->getWireFormat($data_query); | $display_data = $dataset->getChartDisplayData($data_query); | ||||
$ranges[] = $display_data->getRange(); | |||||
$wire_datasets[] = $display_data->getWireData(); | |||||
} | } | ||||
// TODO: Figure these out from the datasets again. | $range = $this->getRange($ranges); | ||||
$y_min = -2; | |||||
$y_max = 20; | |||||
$chart_data = array( | $chart_data = array( | ||||
'datasets' => $wire_datasets, | 'datasets' => $wire_datasets, | ||||
'xMin' => $domain->getMin(), | 'xMin' => $domain->getMin(), | ||||
'xMax' => $domain->getMax(), | 'xMax' => $domain->getMax(), | ||||
'yMin' => $y_min, | 'yMin' => $range->getMin(), | ||||
'yMax' => $y_max, | 'yMax' => $range->getMax(), | ||||
); | ); | ||||
return $chart_data; | return $chart_data; | ||||
} | } | ||||
private function getDomain(array $functions) { | private function getDomain(array $functions) { | ||||
$domains = array(); | $domains = array(); | ||||
foreach ($functions as $function) { | foreach ($functions as $function) { | ||||
Show All 11 Lines | private function getDomain(array $functions) { | ||||
if ($domain->getMin() === null) { | if ($domain->getMin() === null) { | ||||
$domain->setMin($domain->getMax() - phutil_units('365 days in seconds')); | $domain->setMin($domain->getMax() - phutil_units('365 days in seconds')); | ||||
} | } | ||||
return $domain; | return $domain; | ||||
} | } | ||||
private function getRange(array $ranges) { | |||||
$range = PhabricatorChartInterval::newFromIntervalList($ranges); | |||||
// Start the Y axis at 0 unless the chart has negative values. | |||||
$min = $range->getMin(); | |||||
if ($min === null || $min >= 0) { | |||||
$range->setMin(0); | |||||
} | |||||
// If there's no maximum value, just pick a plausible default. | |||||
$max = $range->getMax(); | |||||
if ($max === null) { | |||||
$range->setMax($range->getMin() + 100); | |||||
} | |||||
return $range; | |||||
} | |||||
} | } |