show empty svg if there is no data
[zc] / www / cgi-bin / template.cgi
1 #!/bin/sh
2
3 dir=/home/dpavlin/zc/gnuplot/
4
5 echo "Content-type: image/svg+xml"
6 echo
7
8 pn=$( basename $0 | sed 's/.cgi//' )
9 offset=$( grep "^$pn" $dir/offset.txt )
10 offset_x=$( echo $offset | cut -d' ' -f2 )
11 offset_y=$( echo $offset | cut -d' ' -f3 )
12 test -z "$offset_x" && offset_x=0
13 test -z "$offset_y" && offset_y=0
14
15 test -z "$QUERY_STRING" && QUERY_STRING='.'
16 gnuplot_sed='';
17
18 yrange=$( echo $QUERY_STRING | grep '^yrange=[0-9]*\.[0-9]*$' | cut -d= -f2 )
19 test -z "$yrange" && yrange=0.2
20
21 voltage=0
22 echo $HTTP_REFERER | grep -q voltage && voltage=1
23 echo $QUERY_STRING | grep -q voltage && voltage=1
24
25 set > /dev/shm/$pn.env
26
27 cat $dir/template.sql | sed -e "s/2008050087/$pn/" -e "s/x_axis_angle/x_axis_angle + $offset_x/" -e "s/y_axis_angle/y_axis_angle + $offset_y/" | psql --username=dpavlin -A -F "," -t zc > /dev/shm/$pn.txt
28 if [ -s /dev/shm/$pn.txt ] ; then
29 cat $dir/template.gnuplot | sed -e "s,axes.txt,/dev/shm/$pn.txt," -e "s,^set terminal.*$,set terminal svg," -e "s,^set output.*$,set output," -e "s,-0.3 : 0.3,-$yrange : $yrange," > /dev/shm/$pn.gnuplot
30 gnuplot -e "voltage=$voltage" /dev/shm/$pn.gnuplot
31 else
32 cat << __SVG__
33 <?xml version="1.0" encoding="utf-8"  standalone="no"?>
34 <svg 
35  width="600" height="1"
36  viewBox="0 0 600 480"
37  xmlns="http://www.w3.org/2000/svg"
38  xmlns:xlink="http://www.w3.org/1999/xlink"
39 >
40 </svg>
41 __SVG__
42 fi
43
44 #rm /dev/shm/axes.txt.$$ /dev/shm/axes.gnuplot.$$