635 lines
17 KiB
Bash
Executable File
635 lines
17 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
. settings
|
|
|
|
if [ -n "$QUERY_STRING" ]
|
|
then
|
|
query_data="${QUERY_STRING//&/
|
|
}"
|
|
exprtime='[[:alnum:]-]+'
|
|
exprgraph='[[:alpha:]_]+'
|
|
while read name value
|
|
do
|
|
case $name in
|
|
start)
|
|
[[ $value =~ $exprtime ]] && start=$value
|
|
;;
|
|
end)
|
|
[[ $value =~ $exprtime ]] && end=$value
|
|
;;
|
|
hist|trend)
|
|
show_graphs=1
|
|
;;
|
|
graph)
|
|
[[ $value =~ $exprgraph ]] && graph=$value
|
|
;;
|
|
show)
|
|
[[ $value == all ]] && show_all=1
|
|
;;
|
|
esac
|
|
done <<<"${query_data//=/ }"
|
|
fi
|
|
(( start >= end)) && (( end = start + 604800 ))
|
|
|
|
if [ -z "$graph" ]
|
|
then
|
|
cat <<-EOHTML
|
|
content-type: application/xhtml+xml
|
|
Last-Modified: $(
|
|
LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' \
|
|
-d @$(rrdtool last ingress.rrd)
|
|
)
|
|
Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '1 hour')
|
|
Cache-Control: max-age=0, must-revalidate
|
|
refresh: 600
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
|
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>IngRRD - Graph</title>
|
|
</head>
|
|
<body>
|
|
EOHTML
|
|
|
|
if (( ! show_graphs ))
|
|
then
|
|
cat <<-EOHTML
|
|
<table style="border:1px solid black; border-collapse:collapse">
|
|
<tr>
|
|
<td style="background:black; color:white">Overview</td>
|
|
<td style="border:1px solid black">
|
|
<table>
|
|
<tr>
|
|
<td rowspan="2"><a href="?hist&start=$start&end=$end">History /</a></td>
|
|
<td>
|
|
<a href="?hist&start=$start&end=$end">Medals</a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="?hist&show=all&start=$start&end=$end">All</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td style="border:1px solid black"><a href="add.html?start=$start&end=$end"><b>Add data</b></a></td>
|
|
</tr>
|
|
</table>
|
|
EOHTML
|
|
readarray -t lastupdatelines < <(
|
|
rrdtool lastupdate $rrdfile
|
|
)
|
|
indices=( ${lastupdatelines[0]} )
|
|
values=( ${lastupdatelines[2]#*:} )
|
|
declare -A last
|
|
for index in ${!indices[@]}
|
|
do
|
|
last["${indices[index]}"]=${values[index]}
|
|
done
|
|
unset indices values
|
|
|
|
for stat in "${medals[@]}"
|
|
do
|
|
if (( last["$stat"] >= bronze["$stat"] ))
|
|
then
|
|
(( bronzecount++ ))
|
|
bronzes+=( "$stat" )
|
|
else
|
|
upbronze[last["$stat"] * 100 / bronze["$stat"]]+="$stat "
|
|
fi
|
|
if (( last["$stat"] >= silver["$stat"] ))
|
|
then
|
|
(( silvercount++ ))
|
|
silvers+=( "$stat" )
|
|
else
|
|
upsilver[last["$stat"] * 100 / silver["$stat"]]+="$stat "
|
|
fi
|
|
if (( last["$stat"] >= gold["$stat"] ))
|
|
then
|
|
(( goldcount++ ))
|
|
golds+=( "$stat" )
|
|
else
|
|
upgold[last["$stat"] * 100 / gold["$stat"]]+="$stat "
|
|
fi
|
|
if (( last["$stat"] >= platinum["$stat"] ))
|
|
then
|
|
(( platinumcount++ ))
|
|
platinums+=( "$stat" )
|
|
else
|
|
upplatinum[last["$stat"] * 100 / platinum["$stat"]]+="$stat "
|
|
fi
|
|
if (( last["$stat"] >= black["$stat"] ))
|
|
then
|
|
(( blackcount++ ))
|
|
blacks+=( "$stat" )
|
|
else
|
|
upblack[last["$stat"] * 100 / black["$stat"]]+="$stat "
|
|
fi
|
|
done
|
|
cat <<-EOHTML
|
|
<div>
|
|
<table style="width:840px">
|
|
<tr>
|
|
<td>Level</td>
|
|
<td>AP</td>
|
|
<td style="width:170px">Silver</td>
|
|
<td style="width:170px">Gold</td>
|
|
<td style="width:170px">Platinum</td>
|
|
<td style="width:170px">Black</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>${last["AP"]}</td>
|
|
<td>
|
|
EOHTML
|
|
for stat in ${silvers[@]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-silver.png"
|
|
title="$stat"
|
|
alt="$stat silver" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
cat <<-EOHTML
|
|
</td>
|
|
<td>
|
|
EOHTML
|
|
for stat in ${golds[@]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-gold.png"
|
|
title="$stat"
|
|
alt="$stat gold" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
cat <<-EOHTML
|
|
</td>
|
|
<td>
|
|
EOHTML
|
|
for stat in ${platinums[@]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-platinum.png"
|
|
title="$stat"
|
|
alt="$stat platinum" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
cat <<-EOHTML
|
|
</td>
|
|
<td>
|
|
EOHTML
|
|
for stat in ${blacks[@]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-black.png"
|
|
title="$stat"
|
|
alt="$stat black" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
cat <<-EOHTML
|
|
</td>
|
|
</tr>
|
|
EOHTML
|
|
for level in {1..16}
|
|
do
|
|
echo "<tr><td>$level</td>"
|
|
if (( last["AP"] >= lvl[level] ))
|
|
then
|
|
echo '<td style="background:lightgreen">'
|
|
printf "%'li" ${lvl[level]}
|
|
echo '</td>'
|
|
else
|
|
readable=$(printf "%'li" ${lvl[level]})
|
|
echo '<td style="background:lightgrey">'"${readable// / }"
|
|
readable=$(printf "%'li" $(( last["AP"] - lvl[level] )))
|
|
echo "<br />(<span style=\"color:#FF2020;font-weight:bold\">${readable// / }</span>)</td>"
|
|
fi
|
|
if (( silvercount >= lvlsilver[level] ))
|
|
then
|
|
echo '<td style="background:lightgreen">'${lvlsilver[level]}'</td>'
|
|
else
|
|
echo "<td style=\"background:lightgrey\">${lvlsilver[level]} (<span style=\"color:#FF2020;font-weight:bold\">$(( silvercount - lvlsilver[level] ))</span>)<br />"
|
|
for id in {100..0}
|
|
do
|
|
[ -z "${upsilver[id]}" ] && continue
|
|
(( greenlevel = id * 255 / 100 ))
|
|
(( redlevel = 255 - greenlevel ))
|
|
for stat in ${upsilver[id]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-silver.png"
|
|
title="$stat $id%"
|
|
alt="$stat silver" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
done
|
|
echo '</td>'
|
|
fi
|
|
if (( goldcount >= lvlgold[level] ))
|
|
then
|
|
echo '<td style="background:lightgreen">'${lvlgold[level]}'</td>'
|
|
else
|
|
echo "<td style=\"background:lightgrey\">${lvlgold[level]} (<span style=\"color:#FF2020;font-weight:bold\">$(( goldcount - lvlgold[level] ))</span>)<br />"
|
|
for id in {100..0}
|
|
do
|
|
[ -z "${upgold[id]}" ] && continue
|
|
(( greenlevel = id * 255 / 100 ))
|
|
(( redlevel = 255 - greenlevel ))
|
|
for stat in ${upgold[id]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-gold.png"
|
|
title="$stat $id%"
|
|
alt="$stat gold" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
done
|
|
echo '</td>'
|
|
fi
|
|
if (( platinumcount >= lvlplatinum[level] ))
|
|
then
|
|
echo '<td style="background:lightgreen">'${lvlplatinum[level]}'</td>'
|
|
else
|
|
echo "<td style=\"background:lightgrey\">${lvlplatinum[level]} (<span style=\"color:#FF2020;font-weight:bold\">$(( platinumcount - lvlplatinum[level] ))</span>)<br />"
|
|
for id in {100..0}
|
|
do
|
|
[ -z "${upplatinum[id]}" ] && continue
|
|
(( greenlevel = id * 255 / 100 ))
|
|
(( redlevel = 255 - greenlevel ))
|
|
for stat in ${upplatinum[id]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-platinum.png"
|
|
title="$stat $id%"
|
|
alt="$stat platinum" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
done
|
|
echo '</td>'
|
|
fi
|
|
if (( blackcount >= lvlblack[level] ))
|
|
then
|
|
echo '<td style="background:lightgreen">'${lvlblack[level]}'</td>'
|
|
else
|
|
echo "<td style=\"background:lightgrey\">${lvlblack[level]} (<span style=\"color:#FF2020;font-weight:bold\">$(( blackcount - lvlblack[level] ))</span>)<br />"
|
|
for id in {100..0}
|
|
do
|
|
[ -z "${upblack[id]}" ] && continue
|
|
(( greenlevel = id * 255 / 100 ))
|
|
(( redlevel = 255 - greenlevel ))
|
|
for stat in ${upblack[id]}
|
|
do
|
|
img=${stat,,}
|
|
cat <<-EOHTML
|
|
<a
|
|
style="background:#$(printf %02x%02x $redlevel $greenlevel )00;color:black;text-decoration:none"
|
|
href="?hist&start=$start&end=$end#$stat">
|
|
<img
|
|
width="30"
|
|
height="30"
|
|
src="/${img//_/-}-black.png"
|
|
title="$stat $id%"
|
|
alt="$stat black" />
|
|
</a>
|
|
EOHTML
|
|
done
|
|
done
|
|
echo '</td>'
|
|
fi
|
|
echo '</tr>'
|
|
done
|
|
cat <<-EOHTML
|
|
</table>
|
|
</div>
|
|
EOHTML
|
|
else
|
|
cat <<-EOHTML
|
|
<table style="border:1px solid black; border-collapse:collapse">
|
|
<tr>
|
|
<td><a href="?start=$start&end=$end">Overview</a></td>
|
|
<td style="background:black; color:white">
|
|
<table>
|
|
<tr>
|
|
<td rowspan="2">History /</td>
|
|
EOHTML
|
|
if (( show_all ))
|
|
then
|
|
cat <<-EOHTML
|
|
<td style="background:white; color:black">
|
|
<a href="?hist&start=$start&end=$end">Medals</a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="background:#505050; color:white">All</td>
|
|
</tr>
|
|
EOHTML
|
|
else
|
|
cat <<-EOHTML
|
|
<td style="background:#505050; color:white">Medals</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="background:white; color:black">
|
|
<a href="?hist&show=all&start=$start&end=$end">All</a>
|
|
</td>
|
|
</tr>
|
|
EOHTML
|
|
fi
|
|
cat <<-EOHTML
|
|
</table>
|
|
</td>
|
|
<td><a href="add.html?start=$start&end=$end"><b>Add data</b></a></td>
|
|
</tr>
|
|
</table>
|
|
<table style="width:$(( graph_width + 97 ))px">
|
|
<tr>
|
|
<td>
|
|
<a href="?start=$(( start - 604800 ))&end=$end"><<</a>
|
|
<a href="?start=$(( start - 86400 ))&end=$end"><</a>
|
|
<a href="?start=$default_start&end=$end">R</a>
|
|
<a href="?start=$(( start + 86400 ))&end=$end">></a>
|
|
<a href="?start=$(( start + 604800 ))&end=$end">>></a>
|
|
</td>
|
|
<td align="right">
|
|
<a href="?start=$start&end=$(( end - 604800 ))"><<</a>
|
|
<a href="?start=$start&end=$(( end - 86400 ))"><</a>
|
|
<a href="?start=$start&end=$default_end">R</a>
|
|
<a href="?start=$start&end=$(( end + 86400 ))">></a>
|
|
<a href="?start=$start&end=$(( end + 604800 ))">>></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
EOHTML
|
|
|
|
if (( show_all ))
|
|
then
|
|
stats=(
|
|
AP
|
|
Explorer
|
|
Seer
|
|
XM
|
|
Hacker
|
|
Builder
|
|
Connector
|
|
Mind_Controller
|
|
MU
|
|
Longest_Link
|
|
Largest_Field
|
|
Recharger
|
|
Liberator
|
|
Pioneer
|
|
Purifier
|
|
Neutralized
|
|
Links_Destroyed
|
|
Fields_Destroyed
|
|
Walked
|
|
Guardian
|
|
Link_Maintained
|
|
Link_Length_x_Days
|
|
Field_Held
|
|
Field_x_Days
|
|
)
|
|
else
|
|
stats=(
|
|
AP
|
|
"${medals[@]}"
|
|
)
|
|
fi
|
|
|
|
for stat in "${stats[@]}"
|
|
do
|
|
cat <<-EOHTML
|
|
<div>
|
|
<img
|
|
src="?graph=$stat&start=$start&end=$end"
|
|
id="$stat"
|
|
alt="Ingress $stat evolution" />
|
|
</div>
|
|
EOHTML
|
|
done
|
|
fi
|
|
encodeduri="${REQUEST_URI//\//%2F}"
|
|
encodeduri="${encodeduri/\?/%3F}"
|
|
encodeduri="${encodeduri//\=/%3D}"
|
|
encodeduri="${encodeduri//\&/%26}"
|
|
cat <<-EOHTML
|
|
<p>
|
|
<a
|
|
href="http://validator.w3.org/check?uri=https%3A%2F%2F$SERVER_NAME$encodeduri">
|
|
<img
|
|
src="/valid-xhtml11"
|
|
alt="Valid XHTML 1.1"
|
|
height="31"
|
|
width="88" />
|
|
</a>
|
|
</p>
|
|
</body></html>
|
|
EOHTML
|
|
else
|
|
now=$(date +%s)
|
|
cat <<-EOHEAD
|
|
content-type: image/png
|
|
Last-Modified: $(
|
|
LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' \
|
|
-d @$(rrdtool last ingress.rrd)
|
|
)
|
|
Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z' -d '1 hour')
|
|
Cache-Control: max-age=0, must-revalidate
|
|
|
|
EOHEAD
|
|
|
|
if [[ $graph == AP ]]
|
|
then
|
|
thresholds=(
|
|
COMMENT:'Levels\:'
|
|
HRULE:${lvl[2]}#$L1color:1
|
|
HRULE:${lvl[2]}#$L2color:2
|
|
HRULE:${lvl[3]}#$L3color:3
|
|
HRULE:${lvl[4]}#$L4color:4
|
|
HRULE:${lvl[5]}#$L5color:5
|
|
HRULE:${lvl[6]}#$L6color:6
|
|
HRULE:${lvl[7]}#$L7color:7
|
|
HRULE:${lvl[8]}#$L8color:8
|
|
HRULE:${lvl[9]}#$L9color:9
|
|
HRULE:${lvl[10]}#$L10color:10
|
|
HRULE:${lvl[11]}#$L11color:11
|
|
HRULE:${lvl[12]}#$L12color:12
|
|
HRULE:${lvl[13]}#$L13color:13
|
|
HRULE:${lvl[14]}#$L14color:14
|
|
HRULE:${lvl[15]}#$L15color:15
|
|
HRULE:${lvl[16]}#$L16color:16\\n
|
|
)
|
|
draw=(
|
|
CDEF:arealvl1=data,${lvl[2]},LT,data,UNKN,IF
|
|
CDEF:arealvl2=data,${lvl[2]},${lvl[3]},LIMIT
|
|
CDEF:arealvl3=data,${lvl[3]},${lvl[4]},LIMIT
|
|
CDEF:arealvl4=data,${lvl[4]},${lvl[5]},LIMIT
|
|
CDEF:arealvl5=data,${lvl[5]},${lvl[6]},LIMIT
|
|
CDEF:arealvl6=data,${lvl[6]},${lvl[7]},LIMIT
|
|
CDEF:arealvl7=data,${lvl[7]},${lvl[8]},LIMIT
|
|
CDEF:arealvl8=data,${lvl[8]},${lvl[9]},LIMIT
|
|
CDEF:arealvl9=data,${lvl[9]},${lvl[10]},LIMIT
|
|
CDEF:arealvl10=data,${lvl[10]},${lvl[11]},LIMIT
|
|
CDEF:arealvl11=data,${lvl[11]},${lvl[12]},LIMIT
|
|
CDEF:arealvl12=data,${lvl[12]},${lvl[13]},LIMIT
|
|
CDEF:arealvl13=data,${lvl[13]},${lvl[14]},LIMIT
|
|
CDEF:arealvl14=data,${lvl[14]},${lvl[15]},LIMIT
|
|
CDEF:arealvl15=data,${lvl[15]},${lvl[16]},LIMIT
|
|
CDEF:arealvl16=data,${lvl[16]},GE,data,UNKN,IF
|
|
AREA:arealvl1#$L1color
|
|
AREA:arealvl2#$L2color
|
|
AREA:arealvl3#$L3color
|
|
AREA:arealvl4#$L4color
|
|
AREA:arealvl5#$L5color
|
|
AREA:arealvl6#$L6color
|
|
AREA:arealvl7#$L7color
|
|
AREA:arealvl8#$L8color
|
|
AREA:arealvl9#$L9color
|
|
AREA:arealvl10#$L10color
|
|
AREA:arealvl11#$L11color
|
|
AREA:arealvl12#$L12color
|
|
AREA:arealvl13#$L13color
|
|
AREA:arealvl14#$L14color
|
|
AREA:arealvl15#$L15color
|
|
AREA:arealvl16#$L16color
|
|
)
|
|
next=(
|
|
CDEF:next=data,POP,last,${lvl[2]},LT,${lvl[2]},last,${lvl[3]},LT,${lvl[3]},last,${lvl[4]},LT,${lvl[4]},last,${lvl[5]},LT,${lvl[5]},last,${lvl[6]},LT,${lvl[6]},last,${lvl[7]},LT,${lvl[7]},last,${lvl[8]},LT,${lvl[8]},last,${lvl[9]},LT,${lvl[9]},last,${lvl[10]},LT,${lvl[10]},last,${lvl[11]},LT,${lvl[11]},last,${lvl[12]},LT,${lvl[12]},last,${lvl[13]},LT,${lvl[13]},last,${lvl[14]},LT,${lvl[14]},last,${lvl[15]},LT,${lvl[15]},last,${lvl[16]},LT,${lvl[16]},UNKN,IF,IF,IF,IF,IF,IF,IF,IF,IF,IF,IF,IF,IF,IF,IF
|
|
CDEF:nextcross=pred,next,GE,pred,UNKN,IF
|
|
VDEF:nexttime=nextcross,FIRST
|
|
'GPRINT:next:LAST:\tnext %6.2lf%s'
|
|
'GPRINT:nexttime:(%Y-%m-%d)\n:strftime'
|
|
)
|
|
elif (( bronze["$graph"] ))
|
|
then
|
|
thresholds=(
|
|
COMMENT:'Medals\:'
|
|
HRULE:${bronze["$graph"]}#A02020:${bronze["$graph"]}
|
|
HRULE:${silver["$graph"]}#808080:${silver["$graph"]}
|
|
HRULE:${gold["$graph"]}#A0A020:${gold["$graph"]}
|
|
HRULE:${platinum["$graph"]}#505050:${platinum["$graph"]}
|
|
HRULE:${black["$graph"]}#101010:${black["$graph"]}\\n
|
|
)
|
|
draw=(
|
|
CDEF:areanone=data,${bronze["$graph"]},LT,data,UNKN,IF
|
|
CDEF:areabronze=data,${bronze["$graph"]},${silver["$graph"]},LIMIT
|
|
CDEF:areasilver=data,${silver["$graph"]},${gold["$graph"]},LIMIT
|
|
CDEF:areagold=data,${gold["$graph"]},${platinum["$graph"]},LIMIT
|
|
CDEF:areaplatinum=data,${platinum["$graph"]},${black["$graph"]},LIMIT
|
|
CDEF:areablack=data,${black["$graph"]},GE,data,UNKN,IF
|
|
CDEF:tickbronze=pred,${bronze["$graph"]},0.995,*,${bronze["$graph"]},1.005,*,LIMIT
|
|
CDEF:ticksilver=pred,${silver["$graph"]},0.995,*,${silver["$graph"]},1.005,*,LIMIT
|
|
CDEF:tickgold=pred,${gold["$graph"]},0.995,*,${gold["$graph"]},1.005,*,LIMIT
|
|
CDEF:tickplatinum=pred,${platinum["$graph"]},0.995,*,${platinum["$graph"]},1.005,*,LIMIT
|
|
CDEF:tickblack=pred,${black["$graph"]},0.995,*,${black["$graph"]},1.005,*,LIMIT
|
|
TICK:tickbronze#0000FF50:1
|
|
TICK:ticksilver#0000FF50:1
|
|
TICK:tickgold#0000FF50:1
|
|
TICK:tickplatinum#0000FF50:1
|
|
TICK:tickblack#0000FF50:1
|
|
AREA:areanone#E0E0E0
|
|
AREA:areabronze#A02020
|
|
AREA:areasilver#808080
|
|
AREA:areagold#A0A020
|
|
AREA:areaplatinum#505050
|
|
AREA:areablack#101010
|
|
)
|
|
next=(
|
|
CDEF:next=data,POP,last,${bronze["$graph"]},LT,${bronze["$graph"]},last,${silver["$graph"]},LT,${silver["$graph"]},last,${gold["$graph"]},LT,${gold["$graph"]},last,${platinum["$graph"]},LT,${platinum["$graph"]},last,${black["$graph"]},LT,${black["$graph"]},UNKN,IF,IF,IF,IF,IF
|
|
CDEF:nextcross=pred,next,GE,pred,UNKN,IF
|
|
VDEF:nexttime=nextcross,FIRST
|
|
'GPRINT:next:LAST:\tnext %6.2lf%s'
|
|
'GPRINT:nexttime:(%Y-%m-%d)\n:strftime'
|
|
)
|
|
else
|
|
thresholds=()
|
|
draw=()
|
|
next=('COMMENT:\n')
|
|
fi
|
|
|
|
(( start > -1209600 )) && datastart=-1209600
|
|
(( end < 157680001 )) && dataend="+157680001"
|
|
(( start > 0 )) && start="+$start"
|
|
(( end > 0 )) && end="+$end"
|
|
(( datastart > 0 )) && datastart="+$datastart"
|
|
|
|
rrdtool graph - \
|
|
-a PNG \
|
|
-w $graph_width \
|
|
-v $graph \
|
|
-s $start -e $end \
|
|
DEF:data=$rrdfile:$graph:AVERAGE:step=3600${datastart+:start=$datastart}${dataend+:end=$dataend} \
|
|
DEF:fail=$rrdfile:$graph:FAILURES \
|
|
VDEF:last=data,LAST \
|
|
VDEF:intercept=data,LSLINT \
|
|
VDEF:growth=data,LSLSLOPE \
|
|
CDEF:trend=data,POP,COUNT,growth,*,intercept,+ \
|
|
CDEF:trendline=trend,0,GT,trend,UNKN,IF \
|
|
CDEF:pred=TIME,NOW,GE,trend,UNKN,IF \
|
|
LINE1:trendline#FFFF00:Trend\\t \
|
|
"${draw[@]:-AREA:data#00BD27}" \
|
|
"${thresholds[@]}" \
|
|
TICK:fail#ffffa0:1.0 \
|
|
VRULE:$now#000000 \
|
|
'GPRINT:data:MIN:min %6.2lf%S' \
|
|
'GPRINT:data:MAX:\tmax %6.2lf%S' \
|
|
"${next[@]}"
|
|
fi
|