/adei/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/adei/trunk
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;
 }
};

?>