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
|
\section{Preudfyldning}
Inden en makro sendes til klienten sker der en preudfyldningsprocess
p� serveren.\\
Et givet inputfelt kan blive preudfyldt med
\begin{itemize}
\item en m�lt v�rdi via Pentominos.
\item en tidligere lagret v�rdi i databasen.
\item en defaultv�rdi.
\end{itemize}
Pr�cis hvilken af de tre metoder som vil blive brugt til det enkeklte
felt afh�nger af tidskoder.
\subsection{Pentominos}
I headeren p� en makro forefindes en r�kke queries til pentominos
serveren. Disse udf�res samlet inden makroen behandles, og producerer
et namespace hvor navnene er dikteret af deres nesting i svaret fra
pentominos serveren.\\
En query kan f.eks se s�dan ud:
\begin{verbatim}
<queries>
<query class="lensmeter" ttl="10000"/>
</queries>
\end{verbatim}
Et svar kan f.eks se s�dan ud:
\begin{verbatim}
<results>
<result class="lensmeter" timestamp="1211808877">
<group name="right">
<value name="sphere" value="-4.75"/>
<value name="cyl" value="-0.25"/>
<value name="axis" value="56"/>
</group>
<group name="left">
<value name="sphere" value="-4.76"/>
<value name="cyl" value="-0.23"/>
<value name="axis" value="32"/>
</group>
</result>
</results>
\end{verbatim}
For hvert resultat produceres en \texttt{result} knude med tilh�rende
tidkode som beskriver hvorn�r den givne m�ling er indrapporteret.\\
Disse knuder overs�ttes til et namespace med nesting, separeret med
\texttt{.} (punktum), best�ende af f�rst klassenavnet p� querien,
dernest alle grupper og sidst navnet p� v�rdien, f.eks
\texttt{lensmeter.right.axis}.\\
Hver af disse v�rdier indeholder en value og en timestamp som sat
iflg. svaret.\\
Svaret bliver nu filtreret igennem en r�kke LUA mapper programmer som
hver is�r returnerer en v�rdi og en tidskode.\\
Mapper programmerne kan f.eks se s�dan ud:
\begin{verbatim}
<maps>
<map name="axis">
-- LUA program, returning explicit values
return math.pi, 1234567890
</map>
<map name="sphere">
-- LUA program, returning a value and its timestamp
return lensmeter.right.sphere.value, lensmeter.right.sphere.timestamp
</map>
<map name="cyl">
-- LUA program, returning an average, with oldest timestamp
timestamp = lensmeter.right.cyl.timestamp
if( timestamp > lensmeter.right.axis.timestamp ) timestamp = lensmeter.right.axis.timestamp
value = ( lensmeter.right.cyl.value + lensmeter.right.axis.value ) / 2.0
return value, timestamp
</map>
</maps>
\end{verbatim}
Et inputfelt angiver at det skal (eller kan) udfyldes via s�dan et
map, ved hj�lp af et \texttt{map} tag. Hvis dette tag ikke findes, eller hvis
det er tomt, eller refererer til et ikke-eksisterende map, ignoreres
det.
\subsection{Pracro}
Alle input felter i makroen har et navn tilknyttet. Disse navne
benyttes til at lave opslag i pracro databasen for at finde ud af om
der er tidligere indtastede v�rdier.\\
Disse eventuelle v�rdier har ligesom v�rdierne fra pentominos
tidskoder.\\
Ved opslaget benyttes en fast defineret (i configurationsfilen)
ttl. Overskrides denne af en v�rdi, ignoreres den i opslaget.\\
Hvis pentominos svaret ikke har givet anledning til en konkret v�rdi,
eller hvis v�rdiens tidskode er �ldre end den pracro opslaget giver,
s� har pracro v�rdien precedens over pentominos. Hvis det modsatte er
tilf�ldet, benyttes v�rdien fra pentominos.\\
Hvis hverken pentominos eller pracro giver noget bugbart resultat,
benyttes default v�rdien.
\subsection{Default v�rdi}
Alle inputfelter har en predefineret v�rdi, i kraft af et value felt.\\
Et ikke eksisterende value felt resulterer i en default v�rdi v�rende
den tomme streng.
|