summaryrefslogtreecommitdiff
path: root/client/NOTES
blob: 34b730b60f67201857fba95dd87f534d9ffb68c1 (plain)
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
-*- auto-fill -*-
#############################
# LUA programmer i klienten #
#############################
OnChanged eventen kan som udgangspunkt daekke alle behov for
udfoerelse af LUA kode.

OnChanged lua koden skal returnere en boolean som er true hvis feltet
er valid, eller false hvis det ikke er.

Der skal stilles en raekke metoder til raadighed for programmerne, som
kan interagere med felterne i makroen.
 - getValue(feltnavn)
 - setValue(feltnavn)

Feltets egen vaerdig skal vaere tilknyttet lua variables 'value' saa
det er let at lave simpel validering af feltets vaerdi.

Der skal som udgangspunkt kun vaere et LUA objekt pr. macro, for at
sikre gode svartider. Naar et nyt program skal udfoeres skal stakken
saaledes kunne genbruges (tidligere vaerdier skal fjernes og nye skal
indsaettes).

LUA programmerne i XML'en:
<lineedit name="linse4"
	  regexp="[24]*"
	  map="axis"
	  lua_validator="if( tonumber(value) == 42 ) then return true else return false end"
	  value="90K"/>

eller maaske 

<lineedit name="linse4"
	  regexp="[24]*"
	  map="axis"
	  value="90K">
  if( tonumber(value) == 42 )
  then
    return true
  else
    return false
  end
</lineedit>

eller en loesning inspireret af query/maps paa serveren:
<luaprograms>
  <luaprogram name="dims">
    if( tonumber(value) == 42 )
    then
      return true
    else
      return false
    end
  </luaprogram>
</luaprograms>
<lineedit name="linse4"
	  regexp="[24]*"
	  map="axis"
	  lua="dims"
	  value="90K"/>

Det skal helt klart vaere sidstnaevnte!

Der kan laves sanity checks paa runtime for at sikre at der ikke
opstaar uendelige ulykker.
F.eks kan man checke om man er i gang med setValue paa feltet selv.