Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/fact/chart/PhabricatorHigherOrderChartFunction.php
12256 views
1
<?php
2
3
abstract class PhabricatorHigherOrderChartFunction
4
extends PhabricatorChartFunction {
5
6
public function getDomain() {
7
$domains = array();
8
foreach ($this->getFunctionArguments() as $function) {
9
$domains[] = $function->getDomain();
10
}
11
12
return PhabricatorChartInterval::newFromIntervalList($domains);
13
}
14
15
public function newInputValues(PhabricatorChartDataQuery $query) {
16
$map = array();
17
foreach ($this->getFunctionArguments() as $function) {
18
$xv = $function->newInputValues($query);
19
if ($xv !== null) {
20
foreach ($xv as $x) {
21
$map[$x] = true;
22
}
23
}
24
}
25
26
if (!$map) {
27
return null;
28
}
29
30
ksort($map);
31
32
return array_keys($map);
33
}
34
35
public function getDataRefs(array $xv) {
36
$refs = array();
37
38
foreach ($this->getFunctionArguments() as $function) {
39
$function_refs = $function->getDataRefs($xv);
40
41
$function_refs = array_select_keys($function_refs, $xv);
42
if (!$function_refs) {
43
continue;
44
}
45
46
foreach ($function_refs as $x => $ref_list) {
47
if (!isset($refs[$x])) {
48
$refs[$x] = array();
49
}
50
foreach ($ref_list as $ref) {
51
$refs[$x][] = $ref;
52
}
53
}
54
}
55
56
return $refs;
57
}
58
59
public function loadRefs(array $refs) {
60
$results = array();
61
62
foreach ($this->getFunctionArguments() as $function) {
63
$results += $function->loadRefs($refs);
64
}
65
66
return $results;
67
}
68
69
}
70
71