Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.adminSite.macros.databaseInfo
on databaseInfo () {
<<Changes
<<8/14/02; 5:43:24 PM by JES
<<Created.
local (htmltext);
on add (s) {
htmltext = htmltext + (s + "\r");};
local (pta = html.getPageTableAddress ());
local (bgcolors = {pta^.trbg1, pta^.trbg2});
local (t); new (tableType, @t);
bundle { //build sorted table of databases
local (adr);
for adr in @system.compiler.files {
local (f = nameOf (adr^));
local (dbname = file.fileFromPath (f));
local (dbsize = file.size (f));
local (modified = file.modified (f));
local (folder = file.folderFromPath (f));
local (foldername = file.fileFromPath (folder));
local (adrdb = @[f] );
local (dbtables = sizeOf (adrdb^));
local (adrfolder = @t.[foldername]);
if not defined (adrfolder^) {
new (tableType, adrfolder)};
local (adrdbinfo = @adrfolder^.[dbname]);
new (tableType, adrdbinfo);
adrdbinfo^.size = dbsize;
adrdbinfo^.modified = modified;
adrdbinfo^.tables = dbtables};
local (rootpath = window.getFile (@root));
local (adrrootfolder = @t.[" "]);
new (tableType, adrrootfolder);
local (rootname = file.fileFromPath (rootpath));
local (adrroot = @adrrootfolder^.[rootname] );
new (tableType, adrroot);
adrroot^.size = file.size (rootpath);
adrroot^.modified = file.modified (rootpath);
adrroot^.tables = sizeOf (root)};
add ("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"92%\">");
bundle { //headers
add ("<tr><td><b>Folder</b></td><td><b>Database</b></td><td align=\"right\"><b>Size</b></td><td align=\"right\"><b>Tables</b></td><td align=\"right\"><b>Modified</b></td></tr>")};
on datestring (d) {
on pad (n) {
return (string.padWithZeros (n, 2))};
local (day, month, year, hour, minute, second);
date.get (d, @day, @month, @year, @hour, @minute, @second);
local (meridian);
if hour > 12 {
hour = hour - 12;
meridian = " PM"}
else {
if hour == 0 {
hour = 12};
meridian = " AM"};
return (pad (month) + "/" + pad (day) + "/" + string.mid (year, 2, 2) + "; " + pad (hour) + ":" + pad (minute) + ":" + pad (second) + meridian)};
local (ct = 0, adrfolder, adrdb);
for adrfolder in @t {
local (folder = nameOf (adrfolder^));
for adrdb in adrfolder {
add ("<tr bgcolor=\"" + bgcolors[(ct++% 2) + 1] + "\">");
add ("<td class=\"small\">" + folder + "</td>");
folder = ""; //only display the folder once
add ("<td class=\"small\">" + nameOf (adrdb^) + "</td>");
add ("<td class=\"small\" align=\"right\">" + string.gigabyteString (adrdb^.size) + "</td>");
add ("<td class=\"small\" align=\"right\">" + adrdb^.tables + "</td>");
add ("<td class=\"small\" align=\"right\">" + datestring (adrdb^.modified) + "</td>");
add ("</tr>")};
add ("<tr><td> </td></tr>"); ct = 0};
add ("</table>");
return (htmltext)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.