#! /bin/bash
LC_ALL=C
LANG=C


NAME="nm"
LABEL="applicants"
DESCRIPTION="Applicants in the queue"

GRAPHDAY=${NAME}-day.png
GRAPHWEEK=${NAME}-week.png
GRAPHMONTH=${NAME}-month.png
GRAPHYEAR=${NAME}-year.png
GRAPH5YEARS=${NAME}-5years.png
GRAPH10YEARS=${NAME}-10years.png
STATFILE=${NAME}.rrd

#app_new:app_ok:am_rcvd:am_hold:am:am_ok:fd_ok:Total

keys=(
app_new
app_rcvd
app_hold
adv_rcvd
app_ok
am_rcvd
am
am_hold
am_ok
fd_hold
fd_ok
dam_hold
dam_ok
done
cancelled
)

values=(
"Applied  "
"Validated"
"App hold "
"Adv ok   "
"App ok   "
"AM assign"
"AM       "
"AM hold  "
"AM ok    "
"FD hold  "
"FD ok    "
"DAM hold "
"DAM ok   "
"Done     "
"Cancelled"
)

descriptions=(
"Applicant asked to enter the process"
"Applicant replied to initial mail"
"On hold before entering the queue"
"Received enough advocacies"
"Advocacies have been approved"
"Waiting for AM to confirm"
"Interacting with an AM"
"AM hold"
"AM approved"
"FD hold"
"FD approved"
"DAM hold"
"DAM approved"
"Completed"
"Cancelled"
)

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)

get_data() {
./${NAME}.py | xargs rrdtool update ${STATFILE}
}


gen_def() {
  local title=$1
  local desc=$2
  local color=$(echo -n $title |md5sum - | head -c6)

	[ -z "$title" ] || [ -z "$desc" ] || [ -z "$color" ] && return 1

	local def=""
	def="${def} DEF:${title}=${STATFILE}:${title}:AVERAGE"
	def="${def} VDEF:l${title}=${title},LAST"
	def="${def} VDEF:min${title}=${title},MINIMUM"
	def="${def} VDEF:max${title}=${title},MAXIMUM"
	def="${def} VDEF:avg${title}=${title},AVERAGE"
	#def="${def} LINE2:${title}#${color}:\"${desc}\""
	def="${def} AREA:${title}#${color}:\"${desc}\":STACK"
	def="${def} GPRINT:l${title}:\"Cur\: %3.0lf\""
	def="${def} GPRINT:min${title}:\"\tMin\: %3.0lf\""
	def="${def} GPRINT:max${title}:\"\tMax\: %3.0lf\""
	def="${def} GPRINT:avg${title}:\"\tAvg\: %3.0lf\j\""

	echo "$def"
}

#DEF:total=$STATFILE:tot:AVERAGE LINE2:total#B5CAEA:Total
do_graph() {
	local filename=$1
	local start=$2
	local period=$3

	[ -z "$filename" ] || [ -z "$start" ] || [ -z "$period" ] && return 1

	local title="$DESCRIPTION: $period"

	local cmd="rrdtool graph $filename --start $start --end $(date +%s)"
	cmd="${cmd} --width 600 --height 150"
	cmd="${cmd} --vertical-label ${LABEL} --title \"$DESCRIPTION: $period\""
	cmd="${cmd} --lower-limit 0 -E"
	cmd="${cmd} ${RRDTOOL_ARGS}"

	for key in "${!keys[@]}"
	do
		cmd="${cmd} $(gen_def ${keys[$key]} "${values[$key]}")"
	done
	#cmd="${cmd} $(gen_def Total Total)"

	eval "$cmd"
}

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

create_rrd() {

	cmd="rrdtool create ${STATFILE} -s 3600 -b 1234828800"
	for key in "${!keys[@]}"
	do
		cmd="${cmd} DS:${keys[$key]}:GAUGE:7200:0:10000"
	done
	cmd="${cmd} DS:Total:GAUGE:7200:0:10000"
	cmd="${cmd} RRA:AVERAGE:0.5:1:744"
	cmd="${cmd} RRA:AVERAGE:0.5:24:1100"

	$cmd
}

#Script:

#create_rrd
#exit 0
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
