show date in therapy; handle touchscreens
[confetti] / templates / therapy.html.sh
1 # Copyright 2016 Paul Hänsch
2 #
3 # This file is part of Confetti.
4
5 # Confetti is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9
10 # Confetti is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU Affero General Public License for more details.
14
15 # You should have received a copy of the GNU Affero General Public License
16 # along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
17
18 t_session_note(){
19   session_n="$1"
20   note_n="$2"
21   
22   color=session${session_n}_note${note_n}_color
23   unset c0 c1 c2 c3 c4 c5 c6 c7
24   
25   case "$tpy[$color]" in
26     \#888) c0=checked;;
27     \#00A) c1=checked;;
28     \#0A0) c2=checked;;
29     \#0AA) c3=checked;;
30     \#A00) c4=checked;;
31     \#A0A) c5=checked;;
32     \#AA0) c6=checked;;
33     *)    c7=checked;;
34   esac
35
36 cat <<EOF
37   <fieldset class=note>
38     <input class=color type=radio name="$color" value="#888" id=${color}_000 $c0><label for=${color}_000></label>
39     <input class=color type=radio name="$color" value="#00A" id=${color}_001 $c1><label for=${color}_001></label>
40     <input class=color type=radio name="$color" value="#0A0" id=${color}_010 $c2><label for=${color}_010></label>
41     <input class=color type=radio name="$color" value="#0AA" id=${color}_011 $c3><label for=${color}_011></label>
42     <input class=color type=radio name="$color" value="#A00" id=${color}_100 $c4><label for=${color}_100></label>
43     <input class=color type=radio name="$color" value="#A0A" id=${color}_101 $c5><label for=${color}_101></label>
44     <input class=color type=radio name="$color" value="#AA0" id=${color}_110 $c6><label for=${color}_110></label>
45     <input class=color type=radio name="$color" value="#FFF" id=${color}_111 $c7><label for=${color}_111></label>
46     <textarea name="session${session_n}_note${note_n}">${tpy[session${session_n}_note${note_n}]}</textarea>
47   </fieldset>
48 EOF
49 }
50
51 t_session(){
52   session_n="$1"
53
54   sid=session${session_n}
55
56   if [ "$tpy[${sid}_sigset]" = pos ]; then
57     sig=neg
58     sigcheck=checked
59   elif [ "$tpy[${sid}_sigset]" = neg ]; then
60     sig=pos
61     unset sigcheck
62   elif [ "$tpy[${sid}_signature]" = pos ]; then
63     sig=neg
64     sigcheck=checked
65   else
66     sig=pos
67     unset sigcheck
68   fi
69
70 cat <<EOF
71   <input type=hidden name=$sid value=exists>
72   <input class="tab" type="checkbox" id=${sid}_open name="${sid}_open" value="checked" ${tpy[${sid}_open]}>
73   <label class="tab" for="${sid}_open">
74     <span class=no>${session_n}.</span><!--
75  --><span class=date>${tpy[${sid}_date]}</span><!--
76  --><input class="date" name="${sid}_date" value="${tpy[${sid}_date]}" placeholder="$(l10n date)"><!--
77  --><span class=therapist>${tpy[${sid}_therapist]}</span><!--
78  --><input class="therapist" name="${sid}_therapist" value="${tpy[${sid}_therapist]}" placeholder="$(l10n therapist)"><!--
79  --><span class=signature><input type=checkbox name="${sid}_signature" value=pos $sigcheck><button type=submit name=${sid}_sigset value=$sig></button></span>
80   </label>
81   <div class=tab>
82     <input class="dotmark ov" type="image" name=dotmark value="$sid" src="/therapies/${id%.tpy}_${sid}.png" alt="">
83     $(n=1; while [ -n "${tpy[${sid}_note${n}]+x}" ]; do
84       t_session_note $session_n $n
85       n=$(($n+1))
86     done
87     printf '<button type=submit name=%s_note%s value="">+</button>' "$sid" "$n"
88     )
89
90     <button class=delete type=submit name=delete_session value=${session_n}>$(l10n delete_session)</button>
91     <button type=submit>$(l10n save)</button>
92   </div>
93 EOF
94 }
95
96 therapy_sessions(){
97   n=1; while [ -n "${tpy[session${n}]}" ]; do
98     t_session $n
99     n=$(($n+1))
100   done
101
102   sid=session$n
103
104 cat <<EOF
105   <fieldset class="tab">
106     <span class=no>…</span><!--
107  --><input class=date name=${sid}_date value="" placeholder="$(l10n date)" /><!--
108  --><input class=therapist name=${sid}_therapist value="" placeholder="$(l10n therapist)" /><!--
109  --><button type=submit name=new_session value=$sid>+</button></span>
110     <input type=hidden name="${sid}_note1" value="">
111   </fieldset>
112 EOF
113 }
114
115 unset c0 c1 c2 c3 c4 c5 c6 c7
116 case "$tpy[color]" in
117   \#00A) c1="checked";;
118   \#0A0) c2="checked";;
119   \#0AA) c3="checked";;
120   \#A00) c4="checked";;
121   \#A0A) c5="checked";;
122   \#AA0) c6="checked";;
123   \#FFF) c7="checked";;
124       *) c0="checked";;
125 esac
126
127 cat <<EOF
128   <h1>Behandlungen</h1>
129
130   <div class="patient">
131     <h2>$client_name</h2>
132     <a href="?p=prescriptions&amp;client=${id%%.*}.vcf">&lt; $(l10n prescriptionlist)</a>
133   </div>
134
135   <div class="prescription">
136     <h2>$(l10n therapy_prescription)</h2>
137     <span class="insurance">${mpx[insurance]}</span>
138     <span class="date">${mpx[date]}</span>
139     <label class="checkbox ${mpx[prescreviewed]:+checked}" for="prescreviewed">
140       $([ -n "${mpx[prescreviewed]}" ] && printf %s "$(l10n prescreviewed)" \
141                                        || printf %s "$(l10n prescreview)" )
142     </label>
143     <ul>
144       ${mpx[remidy]:+ <li>${mpx[quantity]}  ${mpx[remidy]}</li>}
145       ${mpx[remidy1]:+<li>${mpx[quantity1]} ${mpx[remidy1]}</li>}
146     </ul>
147
148     ${mpx[addcontrib]:+
149     <label class='checkbox ${mpx[contribconfirm]:+checked}' for="addcontrib">
150       $([ -n "${mpx[contribconfirm]}" ] && printf %s "$(l10n contribconfirm)" ${mpx[contribconfirm]} \
151                                         || printf %s "$(l10n addcontrib)" )
152     </label>
153     }
154   </div>
155
156 <form method="POST" action="?action=update_therapy">
157   <input type="hidden" name="id" value="${id}">
158
159   <label class="tab heading">
160     <span class=no>Nr.</span><!--
161  --><span class=date>Datum</span><!--
162  --><span class=therapist>Therapeut</span><!--
163  --><span class=signature>Sig.</span>
164   </label>
165
166   $(therapy_sessions)
167
168   <fieldset class=color>
169     <input class=color type=radio name=color onclick="javascript:setcol('#000')" value="#000" id=c000 $c0><label for=c000></label>
170     <input class=color type=radio name=color onclick="javascript:setcol('#00A')" value="#00A" id=c001 $c1><label for=c001></label>
171     <input class=color type=radio name=color onclick="javascript:setcol('#0A0')" value="#0A0" id=c010 $c2><label for=c010></label>
172     <input class=color type=radio name=color onclick="javascript:setcol('#0AA')" value="#0AA" id=c011 $c3><label for=c011></label>
173     <input class=color type=radio name=color onclick="javascript:setcol('#A00')" value="#A00" id=c100 $c4><label for=c100></label>
174     <input class=color type=radio name=color onclick="javascript:setcol('#A0A')" value="#A0A" id=c101 $c5><label for=c101></label>
175     <input class=color type=radio name=color onclick="javascript:setcol('#AA0')" value="#AA0" id=c110 $c6><label for=c110></label>
176     <input class=color type=radio name=color onclick="javascript:setcol('#FFF')" value="#FFF" id=c111 $c7><label for=c111></label>
177   </fieldset>
178   <img class="dotmark bg" src="?action=static_file&amp;name=therapy_background.png" alt="">
179   <canvas id="canvas" class="dotmark ov" width="${bg_dim%x*}" height="${bg_dim#*x}"></canvas>
180
181   <input type=hidden id=image_serialize name=imagedata value="">
182   <span id="jsdebug" style="display: none; position: fixed; right:0; bottom:0">Debug</span>
183
184   <script><!--
185   body = document.body
186   canvas = document.getElementById("canvas")
187   dbg = document.getElementById("jsdebug")
188   image = canvas.getContext("2d")
189   mouse = 0
190   image_serialize=""
191   data=document.getElementById("image_serialize")
192
193   function setcol(c) {
194     image.fillStyle = c
195     image_serialize += " fill " + c
196   }
197
198   setcol("$tpy[color]")
199
200   function circle(x, y) {
201     if ( mouse == 1){
202       if ( body.clientWidth >= 800 ){
203         sx=Math.floor(cscaleW * (x - canvas.offsetLeft))
204         sy=Math.floor(cscaleH * (y - canvas.offsetTop))
205       } else { 
206         sx=Math.floor(cscaleW * (x - canvas.offsetLeft + body.scrollLeft))
207         sy=Math.floor(cscaleH * (y - canvas.offsetTop + body.scrollTop))
208       }
209       image.beginPath()
210       image.arc( sx, sy, 5, 0, 2 * Math.PI )
211       image.fill()
212       image.closePath()
213
214       image_serialize += " circle " + sx + "," + sy + " " + (sx-5) + "," + sy
215     }
216   }
217
218   function drawstart(x, y) {
219     mouse = 1
220
221     cscaleW = canvas.width / canvas.clientWidth
222     cscaleH = canvas.height / canvas.clientHeight
223
224     circle(x, y)
225   }
226   function drawstop() {
227    mouse = 0
228    dbg.innerHTML = image_serialize
229    data.value = image_serialize
230   }
231
232   window.addEventListener( 'mouseup', function() { drawstop() } )
233   canvas.addEventListener( 'mousedown', function(e) { drawstart(e.clientX, e.clientY) } )
234   canvas.addEventListener( 'mousemove', function(e) { circle(e.clientX, e.clientY)    } )
235
236   window.addEventListener( 'touchend', function() { drawstop() } )
237   canvas.addEventListener( 'touchstart', function(e) { drawstart(e.touches[0].clientX, e.touches[0].clientY) } )
238   canvas.addEventListener( 'touchmove', function(e) { circle(e.touches[0].clientX, e.touches[0].clientY)    } )
239
240   --></script>
241 </form>
242
243 EOF
244 # vi:set filetype=html: