From 995d0566537584feaedf88022774ad890f284b61 Mon Sep 17 00:00:00 2001
From: deva <deva>
Date: Tue, 27 May 2008 10:11:25 +0000
Subject: Added section about prefill.

---
 design/preudfyldning.tex | 94 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)
 create mode 100644 design/preudfyldning.tex

(limited to 'design/preudfyldning.tex')

diff --git a/design/preudfyldning.tex b/design/preudfyldning.tex
new file mode 100644
index 0000000..f7b2b7e
--- /dev/null
+++ b/design/preudfyldning.tex
@@ -0,0 +1,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.
-- 
cgit v1.2.3

