#! /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-day.png
GRAPHWEEK=nm-week.png
GRAPHMONTH=nm-month.png
GRAPHYEAR=nm-year.png
GRAPH5YEARS=nm-5years.png
GRAPH10YEARS=nm-10years.png
STATFILE=nm.rrd

get_data() {
./nm.py | xargs rrdtool update nm.rrd
}

#DEF:total=$STATFILE:tot:AVERAGE LINE2:total#B5CAEA:Total
do_graph() {
rrdtool graph $1 --start $2 --end $(date +%s) \
	--width 600 --height 150 \
	--vertical-label applicants --title "Applicants 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 \
		LINE2:advocate#D9382B:"Waiting for advocate\:     " \
		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 \
		LINE2:assign#2B51D9:"Awaiting AM assignment\:   " \
		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 \
		LINE2:confirm#C62BD9:"Waiting for AM to confirm\:" \
		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 \
		LINE2:contact#37AF33:"Initial AM contact\:       " \
		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 \
		LINE2:process#DD7616:"Applicants in process\:    " \
		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 \
		LINE2:fd#6D479B:"Awaiting FD Approval\:     " \
		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 \
		LINE2:dam#000000:"Awaiting DAM Approval\:    " \
		GPRINT:ldam:"%3.0lf" \
		GPRINT:mindam:"\tMin\: %3.0lf" \
		GPRINT:maxdam:"\tMax\: %3.0lf" \
		GPRINT:avgdam:"\tAvg\: %3.0lf\j"
}

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

#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

