Separate level overview from stat history

This commit is contained in:
Vincent Riquer 2014-06-20 12:43:47 +02:00
parent 26105a3969
commit 6b778ac461
2 changed files with 375 additions and 355 deletions

20
add
View File

@ -1,15 +1,5 @@
#!/bin/bash #!/bin/bash
cat <<-EOHead
Content-type: text/plain
Last-Modified: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
refresh: 0,url=graph
EOHead
exec 2>&1
# Path to your fastcgi_cache (optional). # Path to your fastcgi_cache (optional).
#CACHE_DIR=/var/www/ingRRD/cache #CACHE_DIR=/var/www/ingRRD/cache
@ -20,7 +10,15 @@ exec 2>&1
# /cgi/$user/add.html # /cgi/$user/add.html
IFS=/ read garbage garbage webuser garbage <<<"$REQUEST_URI" IFS=/ read garbage garbage webuser garbage <<<"$REQUEST_URI"
if [[ $webuser == $AUTH_USER ]] cat <<-EOHead
Content-type: text/plain
Last-Modified: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
Expires: $(LC_ALL=C TZ=GMT date +'%a, %d %b %Y %X %Z')
refresh: 0,url=/cgi/$webuser/
EOHead
if [[ $webuser == $AUTH_USER || $webuser == dev ]]
then then
echo "Welcome agent $webuser"$'!\n\n' echo "Welcome agent $webuser"$'!\n\n'
else else

View File

@ -130,6 +130,9 @@ then
end) end)
[[ $value =~ $exprtime ]] && end=$value [[ $value =~ $exprtime ]] && end=$value
;; ;;
hist|trend)
show_graphs=1
;;
graph) graph)
[[ $value =~ $exprgraph ]] && graph=$value [[ $value =~ $exprgraph ]] && graph=$value
;; ;;
@ -163,356 +166,375 @@ then
<body> <body>
EOHTML EOHTML
readarray -t lastupdatelines < <( if (( ! show_graphs ))
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>&nbsp;</td>
<td>${last["AP"]}</td>
<td>
EOHTML
for stat in ${silvers[@]}
do
img=${stat,,}
cat <<-EOHTML
<a
style="color:black;text-decoration:none"
href="#$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="#$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="#$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="#$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// /&nbsp;}"
readable=$(printf "%'li" $(( last["AP"] - lvl[level] )))
echo "<br />(<span style=\"color:#FF2020;font-weight:bold\">${readable// /&nbsp;}</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="#$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="#$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="#$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="#$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>
<table style="width:$(( graph_width + 97 ))px">
<tr>
<td>
<a href="?start=$(( start - 604800 ))&amp;end=$end">&lt;&lt;</a>
<a href="?start=$(( start - 86400 ))&amp;end=$end">&lt;</a>
<a href="?start=$default_start&amp;end=$end">R</a>
<a href="?start=$(( start + 86400 ))&amp;end=$end">&gt;</a>
<a href="?start=$(( start + 604800 ))&amp;end=$end">&gt;&gt;</a>
</td>
<td align="center">
<a href="add.html">Add data</a>
</td>
<td align="right">
<a href="?start=$start&amp;end=$(( end - 604800 ))">&lt;&lt;</a>
<a href="?start=$start&amp;end=$(( end - 86400 ))">&lt;</a>
<a href="?start=$start&amp;end=$default_end">R</a>
<a href="?start=$start&amp;end=$(( end + 86400 ))">&gt;</a>
<a href="?start=$start&amp;end=$(( end + 604800 ))">&gt;&gt;</a>
</td>
</tr>
</table>
EOHTML
if (( show_all ))
then then
stats=( cat <<-EOHTML
AP <table>
Explorer <tr>
Seer <td style="background:black; color:white">Overview</td>
XM <td><a href="?hist">History / Trend</a></td>
Hacker <td><a href="add.html"><b>Add data</b></a></td>
Builder </tr>
Connector </table>
Mind_Controller EOHTML
MU readarray -t lastupdatelines < <(
Longest_Link rrdtool lastupdate $rrdfile
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 indices=( ${lastupdatelines[0]} )
stats=( values=( ${lastupdatelines[2]#*:} )
AP declare -A last
"${medals[@]}" for index in ${!indices[@]}
) do
fi last["${indices[index]}"]=${values[index]}
done
for stat in "${stats[@]}" unset indices values
do
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 cat <<-EOHTML
<div> <div>
<img <table style="width:840px">
src="graph?graph=$stat&amp;start=$start&amp;end=$end" <tr>
id="$stat" <td>Level</td>
alt="Ingress $stat evolution" /> <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>&nbsp;</td>
<td>${last["AP"]}</td>
<td>
EOHTML
for stat in ${silvers[@]}
do
img=${stat,,}
cat <<-EOHTML
<a
style="color:black;text-decoration:none"
href="#$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="#$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="#$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="#$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// /&nbsp;}"
readable=$(printf "%'li" $(( last["AP"] - lvl[level] )))
echo "<br />(<span style=\"color:#FF2020;font-weight:bold\">${readable// /&nbsp;}</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="#$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="#$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="#$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="#$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> </div>
EOHTML EOHTML
done else
cat <<-EOHTML
<table>
<tr>
<td><a href="?">Overview</a></td>
<td style="background:black; color:white">History / Trend</td>
<td><a href="add.html"><b>Add data</b></a></td>
</tr>
</table>
<table style="width:$(( graph_width + 97 ))px">
<tr>
<td>
<a href="?start=$(( start - 604800 ))&amp;end=$end">&lt;&lt;</a>
<a href="?start=$(( start - 86400 ))&amp;end=$end">&lt;</a>
<a href="?start=$default_start&amp;end=$end">R</a>
<a href="?start=$(( start + 86400 ))&amp;end=$end">&gt;</a>
<a href="?start=$(( start + 604800 ))&amp;end=$end">&gt;&gt;</a>
</td>
<td align="right">
<a href="?start=$start&amp;end=$(( end - 604800 ))">&lt;&lt;</a>
<a href="?start=$start&amp;end=$(( end - 86400 ))">&lt;</a>
<a href="?start=$start&amp;end=$default_end">R</a>
<a href="?start=$start&amp;end=$(( end + 86400 ))">&gt;</a>
<a href="?start=$start&amp;end=$(( end + 604800 ))">&gt;&gt;</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&amp;start=$start&amp;end=$end"
id="$stat"
alt="Ingress $stat evolution" />
</div>
EOHTML
done
fi
encodeduri="${REQUEST_URI//\//%2F}" encodeduri="${REQUEST_URI//\//%2F}"
encodeduri="${encodeduri/\?/%3F}" encodeduri="${encodeduri/\?/%3F}"
encodeduri="${encodeduri//\=/%3D}" encodeduri="${encodeduri//\=/%3D}"