#! /bin/sh
LC_ALL=C
LANG=C
LASTDAY=$(echo $(date +%s) - 86400 | bc)
LASTWEEK=$(echo $(date +%s) - 604800 | bc)
LASTMONTH=$(echo $(date +%s) - 2592000 | bc)
LASTYEAR=$(echo $(date +%s) - 31572135 | bc)
LAST5YEARS=$(echo $(date +%s) - 157860675 | bc)
LAST10YEARS=$(echo $(date +%s) - 315721350 | bc)

GRAPHDAY=nm-time-day.png
GRAPHWEEK=nm-time-week.png
GRAPHMONTH=nm-time-month.png
GRAPHYEAR=nm-time-year.png
GRAPH5YEARS=nm-time-5years.png
GRAPH10YEARS=nm-time-10years.png
STATFILE=nm-time.rrd

get_data() {
./nm-time.py | xargs rrdtool update $STATFILE
}

#DEF:total=$STATFILE:tot:AVERAGE AREA:total#B5CAEA:Total
do_graph() {
rrdtool graph $1 --start $2 --end $(date +%s) \
	--width 600 --height 150 \
	--vertical-label applicants --title "Days passed in the queue: $3" \
	--lower-limit 0 -E \
	${RRDTOOL_ARGS} \
	DEF:advocate=$STATFILE:advocate:AVERAGE \
		VDEF:ladvocate=advocate,LAST \
		VDEF:minadvocate=advocate,MINIMUM \
		VDEF:maxadvocate=advocate,MAXIMUM \
		VDEF:avgadvocate=advocate,AVERAGE \
		AREA:advocate#483D8B:"Waiting for advocate\:          ":STACK \
		GPRINT:ladvocate:"%3.0lf" \
		GPRINT:minadvocate:"\tMin\: %3.0lf" \
		GPRINT:maxadvocate:"\tMax\: %3.0lf" \
		GPRINT:avgadvocate:"\tAvg\: %3.0lf\j" \
	DEF:assign=$STATFILE:assign:AVERAGE \
		VDEF:lassign=assign,LAST \
		VDEF:minassign=assign,MINIMUM \
		VDEF:maxassign=assign,MAXIMUM \
		VDEF:avgassign=assign,AVERAGE \
		AREA:assign#6A5ACD:"Waiting AM assignment\:         ":STACK \
		GPRINT:lassign:"%3.0lf" \
		GPRINT:minassign:"\tMin\: %3.0lf" \
		GPRINT:maxassign:"\tMax\: %3.0lf" \
		GPRINT:avgassign:"\tAvg\: %3.0lf\j" \
	DEF:confirm=$STATFILE:confirm:AVERAGE \
		VDEF:lconfirm=confirm,LAST \
		VDEF:minconfirm=confirm,MINIMUM \
		VDEF:maxconfirm=confirm,MAXIMUM \
		VDEF:avgconfirm=confirm,AVERAGE \
		AREA:confirm#7B68EE:"Waiting for AM to confirm\:     ":STACK \
		GPRINT:lconfirm:"%3.0lf" \
		GPRINT:minconfirm:"\tMin\: %3.0lf" \
		GPRINT:maxconfirm:"\tMax\: %3.0lf" \
		GPRINT:avgconfirm:"\tAvg\: %3.0lf\j" \
	DEF:contact=$STATFILE:contact:AVERAGE \
		VDEF:lcontact=contact,LAST \
		VDEF:mincontact=contact,MINIMUM \
		VDEF:maxcontact=contact,MAXIMUM \
		VDEF:avgcontact=contact,AVERAGE \
		AREA:contact#8470FF:"Waiting for initial AM contact\:":STACK \
		GPRINT:lcontact:"%3.0lf" \
		GPRINT:mincontact:"\tMin\: %3.0lf" \
		GPRINT:maxcontact:"\tMax\: %3.0lf" \
		GPRINT:avgcontact:"\tAvg\: %3.0lf\j" \
	DEF:process=$STATFILE:process:AVERAGE \
		VDEF:lprocess=process,LAST \
		VDEF:minprocess=process,MINIMUM \
		VDEF:maxprocess=process,MAXIMUM \
		VDEF:avgprocess=process,AVERAGE \
		AREA:process#0000CD:"In process\:                    ":STACK \
		GPRINT:lprocess:"%3.0lf" \
		GPRINT:minprocess:"\tMin\: %3.0lf" \
		GPRINT:maxprocess:"\tMax\: %3.0lf" \
		GPRINT:avgprocess:"\tAvg\: %3.0lf\j" \
	DEF:fd=$STATFILE:fd:AVERAGE \
		VDEF:lfd=fd,LAST \
		VDEF:minfd=fd,MINIMUM \
		VDEF:maxfd=fd,MAXIMUM \
		VDEF:avgfd=fd,AVERAGE \
		AREA:fd#4169E1:"Awaiting FD Approval\:          ":STACK \
		GPRINT:lfd:"%3.0lf" \
		GPRINT:minfd:"\tMin\: %3.0lf" \
		GPRINT:maxfd:"\tMax\: %3.0lf" \
		GPRINT:avgfd:"\tAvg\: %3.0lf\j" \
	DEF:dam=$STATFILE:dam:AVERAGE \
		VDEF:ldam=dam,LAST \
		VDEF:mindam=dam,MINIMUM \
		VDEF:maxdam=dam,MAXIMUM \
		VDEF:avgdam=dam,AVERAGE \
		AREA:dam#0000FF:"Awaiting DAM Approval\:         ":STACK \
		GPRINT:ldam:"%3.0lf" \
		GPRINT:mindam:"\tMin\: %3.0lf" \
		GPRINT:maxdam:"\tMax\: %3.0lf" \
		GPRINT:avgdam:"\tAvg\: %3.0lf\j" \
	DEF:tot=$STATFILE:tot:AVERAGE \
		VDEF:ltot=tot,LAST \
		VDEF:mintot=tot,MINIMUM \
		VDEF:maxtot=tot,MAXIMUM \
		VDEF:avgtot=tot,AVERAGE \
		LINE2:tot#B5CAEA:"Total\:                         " \
		GPRINT:ltot:"%3.0lf" \
		GPRINT:mintot:"\tMin\: %3.0lf" \
		GPRINT:maxtot:"\tMax\: %3.0lf" \
		GPRINT:avgtot:"\tAvg\: %3.0lf\j"
}

update_page() {
NOW=$(date -R)
sed 's/\$id\$/'"$NOW"'/' index.tmpl > index.html
}

create_rrd() {
rrdtool create nm-time.rrd -s 3600 \ 
	DS:advocate:GAUGE:7200:0:1000 \
	DS:assign:GAUGE:7200:0:1000 \
	DS:confirm:GAUGE:7200:0:1000 \
	DS:contact:GAUGE:7200:0:1000 \
	DS:process:GAUGE:7200:0:1000 \
	DS:fd:GAUGE:7200:0:1000 \
	DS:dam:GAUGE:7200:0:1000 \
	DS:tot:GAUGE:7200:0:1000 \
	RRA:AVERAGE:0.5:1:744 \
	RRA:AVERAGE:0.5:24:1100
}

#Script:

get_data
do_graph $GRAPHDAY $LASTDAY day
do_graph $GRAPHWEEK $LASTWEEK week
do_graph $GRAPHMONTH $LASTMONTH month
do_graph $GRAPHYEAR $LASTYEAR year
RRDTOOL_ARGS="--x-grid MONTH:1:YEAR:1:YEAR:1:31536000:%Y"
do_graph $GRAPH5YEARS $LAST5YEARS "5 years"
do_graph $GRAPH10YEARS $LAST10YEARS "10 years"
update_page

