IHMPlotContextFileClass.php
5.79 KB
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
class IHMPlotContextFileClass
{
public static function parse($filePath)
{
if (!file_exists($filePath))
return array("success" => false, "message" => "Cannot load plot context file");
$doc = new DOMDocument("1.0", "UTF-8");
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
if (!$doc->load($filePath))
return array("success" => false, "message" => "Cannot load plot context file");
//<page>
$pageNodes = $doc->getElementsByTagName('page');
if ($pageNodes->length <= 0)
return array("success" => false, "message" => "Cannot load context page node");
$pageNode = $pageNodes->item(0);
$isPortrait = $pageNode->getAttribute('portrait') == "true";
$pageContext = array(
'startTime' => $pageNode->getAttribute('startTime'),
'stopTime' => $pageNode->getAttribute('stopTime'),
'superposeMode' => ($pageNode->getAttribute('superposeMode') == "true"),
'ttName' => $pageNode->getAttribute('ttName'),
'ttIndex' => ($pageNode->getAttribute('ttIndex') == '') ? 0 : intval($pageNode->getAttribute('ttIndex')),
'ttNbIntervals' => ($pageNode->getAttribute('ttNbIntervals') == '') ? 0 : intval($pageNode->getAttribute('ttNbIntervals')),
'portrait' => $isPortrait,
//An image rotation of 90 deg. is done after request execution if a page is in "portrait" mode
'width' => ($isPortrait ? intval($pageNode->getAttribute('height')) : intval($pageNode->getAttribute('width'))),
'height' => ($isPortrait ? intval($pageNode->getAttribute('width')) : intval($pageNode->getAttribute('height'))),
'panels' => array()
);
//<panel>
$panelNodes = $pageNode->getElementsByTagName('panel');
foreach ($panelNodes as $panelNode) {
$panelContext = array(
'id' => $panelNode->getAttribute('id')
);
if ($isPortrait) {
$panelContext['x'] = intval($panelNode->getAttribute('y'));
$panelContext['width'] = intval($panelNode->getAttribute('height'));
$panelContext['height'] = intval($panelNode->getAttribute('width'));
$panelContext['y'] = $pageContext['height'] - intval($panelNode->getAttribute('x')) - $panelContext['height'];
} else {
$panelContext['x'] = intval($panelNode->getAttribute('x'));
$panelContext['height'] = intval($panelNode->getAttribute('height'));
$panelContext['y'] = $pageContext['height'] - intval($panelNode->getAttribute('y')) - $panelContext['height'];
$panelContext['width'] = intval($panelNode->getAttribute('width'));
}
//Parameters
$PARAMETERS_TAG = 'parameters';
$parametersNodes = $panelNode->getElementsByTagName($PARAMETERS_TAG);
$PARAMETER_TAG = 'parameter';
if ($parametersNodes->length > 0) {
$panelContext[$PARAMETERS_TAG] = array();
$parametersNode = $parametersNodes->item(0);
$items = $parametersNode->getElementsByTagName($PARAMETER_TAG);
foreach ($items as $item) {
$pContext = array(
'id' => $item->getAttribute('id'),
'MinSampling' => $item->getAttribute('MinSampling')
);
$panelContext[$PARAMETERS_TAG][] = $pContext;
}
}
//<intervals>
$intervalsNodes = $panelNode->getElementsByTagName('intervals');
if ($intervalsNodes->length > 0) {
$panelContext['intervals'] = array();
foreach ($intervalsNodes as $intervalsNode) {
$intervalsContext = array(
'name' => $intervalsNode->getAttribute('name'),
'id' => $intervalsNode->getAttribute('id'),
'startTime' => $intervalsNode->getAttribute('startTime'),
'stopTime' => $intervalsNode->getAttribute('stopTime'),
'params' => $intervalsNode->getAttribute('params')
);
$panelContext['intervals'][] = $intervalsContext;
}
}
//<plotArea>
$plotAreaNodes = $panelNode->getElementsByTagName('plotArea');
if ($plotAreaNodes->length > 0) {
$panelContext['plotArea'] = array();
$plotAreaNode = $plotAreaNodes->item(0);
if ($isPortrait) {
$panelContext['plotArea']['x'] = intval($plotAreaNode->getAttribute('y'));
$panelContext['plotArea']['width'] = intval($plotAreaNode->getAttribute('height'));
$panelContext['plotArea']['height'] = intval($plotAreaNode->getAttribute('width'));
$panelContext['plotArea']['y'] = $pageContext['height'] - intval($plotAreaNode->getAttribute('x')) - $panelContext['plotArea']['height'];
} else {
$panelContext['plotArea']['x'] = intval($plotAreaNode->getAttribute('x'));
$panelContext['plotArea']['height'] = intval($plotAreaNode->getAttribute('height'));
$panelContext['plotArea']['y'] = $pageContext['height'] - intval($plotAreaNode->getAttribute('y')) - $panelContext['plotArea']['height'];
$panelContext['plotArea']['width'] = intval($plotAreaNode->getAttribute('width'));
}
//hasSpectro
$panelContext['plotArea']['hasSpectro'] = ($plotAreaNode->getAttribute('hasSpectro') == "true");
//<axis>
$panelContext['plotArea']['axes'] = array();
$axisNodes = $plotAreaNode->getElementsByTagName('axis');
foreach ($axisNodes as $axisNode) {
$axisContext = array(
'id' => $axisNode->getAttribute('id'),
'logarithmic' => ($axisNode->getAttribute('logarithmic') == "true"),
'min' => floatval($axisNode->getAttribute('min')),
'max' => floatval($axisNode->getAttribute('max'))
);
$panelContext['plotArea']['axes'][] = $axisContext;
}
}
$pageContext['panels'][] = $panelContext;
}
$instantTimeNavNodes = $pageNode->getElementsByTagName('instantTimeNav');
foreach($instantTimeNavNodes as $instantTimeNavNode){
if ($instantTimeNavNode != "")
{
$instantTimeNavContext = array(
'prevTime' => $instantTimeNavNode->getAttribute('prevTime'),
'nextTime' => $instantTimeNavNode->getAttribute('nextTime'),
);
$pageContext['instantTimeNav']= $instantTimeNavContext;
}
}
return array("success" => true, "page" => $pageContext);
}
}