1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
<?php
class CHANNELView extends VIEW {
var $title = "Channel Info";
function __construct(REQUEST $req = NULL, $options) {
parent::__construct($req, $options);
}
function ValueFormat($value, $length = 0) {
$avalue = abs($value);
// Fixing buggy 0
if ($avalue < 1E-5) {
if (($avalue * 1E+5) < $length) $value = 0;
}
if (($avalue > 999)||(($value)&&($avalue<0.01))) $format="%.2e";
else $format="%.3g";
return sprintf($format, $value);
}
function GetOptions() {
return array(
"input" => array("label" => _("Filter"), "id" => "filter", "type" => "text")
);
}
function GetView() {
$req = $this->req->CreateDataRequest();
$filter = $req->GetProp("view_filter");
$rdr = $req->CreateReader();
$group = $rdr->CreateGroup();
$caches = $rdr->CreateCacheSet($group, $mask);
$axes = $rdr->CreateAxes();
$caches->EnumerateAxes($axes, CACHESet::CACHE_ITEMS|REQUEST::NEED_AXISINFO);
$iv = $caches->CreateInterval($req, true);
$rescfg = array(
'limit' => 1,
'amount' => 0,
);
$result = array();
foreach ($caches as $key => $cachewrap) {
$cache = $cachewrap->GetCache();
$ivl = $cache->CreateInterval($req->props);
$size = $cachewrap->GetWidth();
$list = $cachewrap->GetItemList(REQUEST::NEED_AXISINFO);
$points = $cachewrap->GetIntervals($iv, $rescfg, CACHE::TRUNCATE_INTERVALS);
$operation_info = $points->GetOperationInfo();
$group_result = array();
$itempositions = array_fill(0, $axes->GetAxesNumber(), 0);
$have_points = false;
foreach($points as $t => $v) {
for ($i=0;$i<$size;$i++) {
$axis = $axes->GetAxis($list[$i]['axis']);
$axispos = $axis->GetPosition();
if (isset($v["mean$i"]))
$itempos = $itempositions[$axispos]++;
if (($filter)&&(!stristr($list[$i]['name'], $filter))) continue;
if (isset($v["mean$i"])) {
array_push($group_result, array(
"id" => $i,
"name" => $list[$i]['name'],
"interval" => array(
"from" => $ivl->GetWindowStart(),
"to" => $ivl->GetWindowEnd(),
"resolution" => $operation_info['resolution']
),
"value" => array(
"min" => $this->ValueFormat($v["min$i"]),
"max" => $this->ValueFormat($v["max$i"]),
"mean" => $this->ValueFormat($v["mean$i"])
),
"color" => $axis->GetChannelColor($itempos)
));
} else {
array_push($group_result, array(
"id" => $i,
"name" => $list[$i]['name'],
"color" => "lightgray"
));
}
}
$have_points = true;
break;
}
unset($points);
if (!$have_points) {
for ($i=0;$i<$size;$i++) {
$axis = $axes->GetAxis($list[$i]['axis']);
$axispos = $axis->GetPosition();
$itempos = $itempositions[$axispos]++;
if (($filter)&&(!stristr($list[$i]['name'], $filter))) continue;
array_push($group_result, array(
"id" => $i,
"name" => $list[$i]['name'],
"interval" => array(
"from" => $ivl->GetWindowStart(),
"to" => $ivl->GetWindowEnd(),
"resolution" => $operation_info['resolution']
),
"color" => $axis->GetChannelColor($itempos)
));
}
}
if ($group_result) {
array_push($result, array(
"title" => $cachewrap->GetGroupTitle(),
"results" => $group_result
));
}
}
return $result;
}
};
?>
|