AWK program to Report Video Use
# 2009-08-27
# Takes dumped item data from III and formats it for the web
# Part of a pipeline that starts with the data sorted by using sort command
BEGIN { FS = " \t "
OFS = " \t " ;
indexes = "count,circs,uses"
split(indexes , cd , ",")
split(indexes , dvd , ",")
split(indexes , video , ",")
print startDtml() > "c_cds.html"
print startTable() > "c_cds.html"
print startDtml() > "c_dvds.html"
print startTable() > "c_dvds.html"
print startDtml() > "c_videos.html"
print startTable() > "c_videos.html"
}
function startHtml(title) {
s = "<html> \n <head> \n <title>" title "</title> \n "
s = s "<link rel= \" stylesheet \" type= \" text/css \" href= \" /bk.css \" /> \n <link rel= \" stylesheet \" type= \" text/css \" href= \" style_sheet \" />"
s = s "</head> \n <body> \n <img src= \" /images/2rf.gif \" align= \" middle \" hspace= \" 10 \" ><h1>" title "</h1> \n "
return s
}
function endHtml() {
s = "</body> \n </html>"
return s
}
function startDtml(title) {
s = "<dtml-var standard_html_header> \n <img src= \" /images/2rf.gif \" align= \" middle \" hspace= \" 10 \" ><h1>"title "</h1>"
return s
}
function endDtml() {
s = "<dtml-var standard_html_footer>"
return s
}
function startTable() {
s = "<table> \n "
return s
}
function endTable() {
s = "</table> \n "
return s
}
function printRow(count , title) {
s = "<tr><td>"count "</td><td>"title "</td></tr>"
return s
}
function commas(n) {
gsub( /,/ , "" ,n)
point = index(n , ".") - 1
if (point < 0) point = length(n)
while (point > 3) {
point -= 3
n = substr(n , 1 ,point) "," substr(n ,point + 1)
}
return n
}
function outputResults(type , counter) {
totalcnt = counter[ "count"]
tc = commas(totalcnt)
circs = counter[ "circs"]
noncirccount = counter[ "count"] - counter[ "uses"]
noncircpercent = (noncirccount / totalcnt) * 100
s = "<h1>Report for " type "</h1> \n "
s = s "<h3>Total Item Count: " commas(totalcnt) " </h3> \n "
s = s "<h3>Count of Non Circulating Items: " commas(noncirccount) "</h3> \n "
s = s "<h3>Percent Non Circulating Items: " noncircpercent "</h3> \n "
s = s "<h3>Total Circs: " commas(circs) "</h3> \n "
return s
}
$3 ~ /whcd/ {
cd[ "count"]++
cd[ "circs"]+= $2
if ( $2 > 0)
cd[ "uses"]++
print printRow( $2 , $1) > "c_cds.html"
}
$3 ~ /whdvd/ {
dvd[ "count"]++
dvd[ "circs"]+= $2
if ( $2 > 0)
dvd[ "uses"]++
print printRow( $2 , $1) > "c_dvds.html"
}
$3 ~ /whv/ {
video[ "count"]++
video[ "circs"]+= $2
if ( $2 > 0)
video[ "uses"]++
print printRow( $2 , $1) > "c_videos.html"
}
END {
print startDtml() > "c_summary.html"
print outputResults( "CDs" , cd) > "c_summary.html"
print "<a href= \" c_cds.html \" >View CD Data</a> (in decending order) \n\n " > "c_summary.html"
print outputResults( "DVDs" , dvd) > "c_summary.html"
print "<a href= \" c_dvds.html \" >View DVD Data</a> (in decending order) \n\n " > "c_summary.html"
print outputResults( "Videos" , video) > "c_summary.html"
print "<a href= \" c_videos.html \" >View Video Tape Data</a> (in decending order) \n\n " > "c_summary.html"
print endDtml() > "c_summary.html"
print endTable() > "c_cds.html"
print endDtml() > "c_cds.html"
print endTable() > "c_dvds.html"
print endDtml() > "c_dvds.html"
print endTable() > "c_videos.html"
print endDtml() > "c_videos.html"
}