#!/bin/sh

. ../common/ajax_common


pie_flowchart()
{
	[ "${CGI_bridge}" = "" ] && CGI_bridge=0

	# appid appname color flowcnt allbytes allper1 allper2 lastbytes lastper1 lastper2
	${FLOWEYE} app stat app=group sort=last bridge=${CGI_bridge} pie shownum | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"appid\":\"%s\",", $1;
		printf "\"name\":\"%s\",", $2;
		printf "\"color\":\"%s\",", $3;
		printf "\"flowcnt\":%s,", $4;
		printf "\"lastbytes\":%s", $8;
		printf "}";
		if(dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


appgroup_detail()
{
	[ "${CGI_bridge}" = "" ] && CGI_bridge=0
	
	#appid appname flow node aup adown all per1 lup ldown lall per2 rup rdown rall nateup natedown theother
	${FLOWEYE} app stat bridge=${CGI_bridge} app=group sort=last shownum showsum | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"appid\":\"%s\",", $1;
		printf "\"appname\":\"%s\",", $2;
		printf "\"flow\":%s,", $3;
		printf "\"rup\":%s,", $13;
		printf "\"rdown\":%s", $14;
		printf "}";
		if(dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


appgroup_chart()
{
	tag=""
	_TYPE_=${1}
	[ "${CGI_hours}" = "" ] && hours=24 || hours=${CGI_hours}
	
	printf "{\"name\":{"

	while read appname appcname color other
	do
		tag="${tag} tag=${appname}.${_TYPE_}"
		printf "${dot}\"${appname}\":{"
		printf "\"name\":\"${appcname}\","
		printf "\"color\":\"${color}\""
		printf "}"
		[ "${dot}" = "" ] && dot=","
	done << EOF
`${FLOWEYE} app stat app=group pie`
EOF
	printf "},\"data\":"

	${FLOWEYE} chart dump json=1 hours=${hours} tmend=`date +%s` bridge=${CGI_bridge} ${tag} 
	
	printf "}"
}


history_chart_dump()
{
	tags=""

	printf "{\"name\":{"

	while read appname appcname color other
	do
		tags="${tags} tag=${appname}.${CGI_tag}"
		printf "${dot}\"${appname}\":{"
		printf "\"name\":\"${appcname}\","
		printf "\"color\":\"${color}\""
		printf "}"
		[ "${dot}" = "" ] && dot=","
	done << EOF
`${FLOWEYE} app stat app=group pie`
EOF
	printf "},\"data\":"
	
	if [ "${CGI_types}" = "3day" ]; then
		hours=24
		tmend1=`date +%s`
		tmend2=$((${tmend1} - ( 60 * 60 * 24 ) ))
		tmend3=$((${tmend1} - ( 60 * 60 * 48 ) ))

		printf "["
		printf "`${FLOWEYE} chart dump json=1 hours=${hours} tmend=${tmend1} bridge=${CGI_bridge} ${tags}`,"
		printf "`${FLOWEYE} chart dump json=1 hours=${hours} tmend=${tmend2} bridge=${CGI_bridge} ${tags}`,"
		printf "`${FLOWEYE} chart dump json=1 hours=${hours} tmend=${tmend3} bridge=${CGI_bridge} ${tags}`"
		printf "]"
	else
		tmend=`date +%s`
		hours1=24
		hours2=$((24*7))
		hours3=$((24*30))

		printf "["
			if [ "${CGI_his}" = "pdf" ]; then
				printf "`${FLOWEYE} chart dump json=1 hours=${CGI_hours} tmend=${CGI_tmend} bridge=${CGI_bridge} ${tags}`,"
				printf "`${FLOWEYE} chart dump json=1 hours=${CGI_hours} tmend=${CGI_tmend} bridge=${CGI_bridge} ${tags}`,"
				printf "`${FLOWEYE} chart dump json=1 hours=${CGI_hours} tmend=${CGI_tmend} bridge=${CGI_bridge} ${tags}`"
			else
				printf "`${FLOWEYE} chart dump json=1 hours=${hours1} tmend=${tmend} bridge=${CGI_bridge} ${tags}`,"
				printf "`${FLOWEYE} chart dump json=1 hours=${hours2} tmend=${tmend} bridge=${CGI_bridge} ${tags}`,"
				printf "`${FLOWEYE} chart dump json=1 hours=${hours3} tmend=${tmend} bridge=${CGI_bridge} ${tags}`"
			fi
		printf "]"
	fi

	printf "}"
}


case "${CGI_action}" in

	"pie_flowchart")
		retjson 0 "OK" "`pie_flowchart`"
		;;

	"appgroup_detail")
		retjson 0 "OK" "`appgroup_detail`"
		;;

	"appgroup_bpsup")
		retjson 0 "OK" "`appgroup_chart bpsout`"
		;;
	"appgroup_tapup")
		retjson 0 "OK" "`appgroup_chart tapout`"
		;;

	"appgroup_bpsdw")
		retjson 0 "OK" "`appgroup_chart bpsin`"
		;;

	"appgroup_flow")
		retjson 0 "OK" "`appgroup_chart flow`"
		;;

	"history_chart_dump")
		retjson 0 "OK" "`history_chart_dump`"
		;;

	*)
		retjson 1 "UNKNOW_ACTION"
		;;
esac
