WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

OLE with MSIE
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Use DHTML to Create a Dialog to View a Report


Here's a simple use of DHTML to view a sample report. Just change the data file's path in the code. Data file is attached below...
#DefineSubRoutine startMSIE(url)
   Browser = ObjectOpen("InternetExplorer.Application")
   Browser.addressbar = @FALSE
   Browser.statusbar = @FALSE
   Browser.menubar = @FALSE
   Browser.toolbar = @FALSE
   browser.visible = @TRUE
   browser.navigate(url)
   ; wait until page loads...
   While Browser.busy || Browser.readystate <> 4
      TimeDelay(0.5)
   EndWhile
   ; setup the document object...
   browserDoc = Browser.Document
   all = browserdoc.all
   Return(browser)
#EndSubRoutine

#DefineFunction BuildHTMLInputTable(inputList)
;   build an INPUT for each server...
   InputTable = StrCat(`<TABLE border="0" width="200">`, @CRLF)
   For xx = 1 To ItemCount(inputList, @TAB)
      ThisInput = CreateServerInput(ItemExtract(xx, inputList, @TAB))
      InputTable = StrCat(InputTable, `<tr><td>`, ThisInput, `</td></tr>`, @CRLF)
   Next
;   add an EXIT button...
   InputTable = StrCat(InputTable, `<tr><td><INPUT type="button" onclick="ServerSpan.innerText='EXIT'" value="  EXIT  "></td></tr>`, @CRLF)
   InputTable = StrCat(InputTable, `</TABLE>`)
   Return(InputTable)
#EndFunction

#DefineFunction BuildHTMLDataTable(list, id)
;   build a table for each server and place the ID as the CAPTION...
   DataTable = StrCat(`<TABLE class="frame" id="`, id, `" style="border-collapse: collapse" border="1" width="200">`, @CRLF)
   DataTable = StrCat(DataTable, `<caption>`, id, `</caption>`, @CRLF)
   DataTable = StrCat(DataTable, `<th>Share</th><th>Free Space</th>`, @CRLF)
   For xx = 2 To ItemCount(list, ",")
      ThisData = ItemExtract(xx, list, ",")
      ThisShare = ItemExtract(1, ThisData, "\")
      ThisSpace = ItemExtract(2, ThisData, "\")
      class = ""
;   look only at MB entries and color code accordingly...
      If StrIndexNC(ThisSpace, " MB ", 1, @FWDSCAN)
         If NumbersOnly(ThisSpace) < 100 Then class = "yellow"
         If NumbersOnly(ThisSpace) < 20  Then class = "red"
      EndIf
      DataTable = StrCat(DataTable, `<tr><td align="center" class="`, class, `">`, ThisShare , `</td><td align="center" class="`, class, `">`, ThisSpace, `</td></tr>`, @CRLF)
   Next
   DataTable = StrCat(DataTable, `</TABLE>`)
   Return(DataTable)
#EndFunction

#DefineFunction CreateServerInput(ServerName)
   sinput = StrCat(`<INPUT type="button" onclick="ServerSpan.innerText='`, ServerName, `'" value="`, ServerName, `" >`)
   Return(sinput)
#EndFunction

#DefineFunction NumbersOnly(str)
;   this won't work with decimals...
   Return(StrClean(str, "0123456789", "", @FALSE, 2))
#EndFunction

serverfile = "c:\temp\Server Data.txt"

;gosub GenerateServerData
GoSub BuildReport

Exit

:GenerateServerData
;   generate Server data...

letters = StrUpper("abcdefghijklmnopqrstuvwxyz")

ServerData = ""

;   build 20 fake servers...
For xx = 1 To 20
   ThisData = ""
   ServerName = StrCat("Server", xx)
   ThisData = StrCat(ThisData, ServerName, ",")
   ThisShare = ""
;   next generate shares
   For yy = 1 To StrLen(letters)
      If Random(99)+1 > 55
         ThisShare = StrCat(StrSub(letters, yy, 1), ":\ ")
         ShareSize = Random(699)+1
         If Random(1)
;   half are MB, the other half are GB...
            ThisShare = StrCat(ThisShare, ShareSize, " MB Free,")
         Else
            ThisShare = StrCat(ThisShare, ShareSize, " GB Free,")
         EndIf
         ThisData = StrCat(ThisData, ThisShare)
      EndIf
   Next
;   get rid of the extra comma on the end...
   If StrSub(ThisData, StrLen(ThisData), 1) == "," Then ThisData = StrSub(ThisData, 1, StrLen(ThisData)-1)
   ServerData = StrCat(ServerData, ThisData, @CRLF)
Next

;   write the data to a file...
FilePut(serverfile, ServerData)
Message("Debug", "All Done")

Return


:BuildReport

;   get the CSV data...
sdata = FileGet(serverfile)
sdata = StrReplace(sdata, @CRLF, @LF)

;   first build a list of servers...
serverList = ""
For xx = 1 To ItemCount(sdata, @LF)
   ThisLine = ItemExtract(xx, sdata, @LF)
   servername = ItemExtract(1, ThisLine, ",")
   If StrTrim(servername) <> "" Then serverList = ItemInsert(servername, -1, serverList, @TAB)
Next
;   submit the list and get back a table of INPUTs with each server's name on it...
InputTable = BuildHTMLInputTable(serverList)

;   setup the list to hold each server's table data...
MasterData = ""

For xx = 1 To ItemCount(sdata, @LF)
   ThisLine = ItemExtract(xx, sdata, @LF)
   tableid  = ItemExtract(1, ThisLine, ",")
   If StrTrim(tableid) <> "" Then MasterData = ItemInsert(BuildHTMLDataTable(ThisLine, tableid), -1, MasterData, @TAB)
Next

;   start the browser...
br = startMSIE("about:blank")
;   build a STYLE section...
style = `<style> .yellow {background-color: yellow;} .red {background-color: red;} .hidden {display: none;} .frame {border: .25mm solid black}`
style = StrCat(style, ` th {background-color: black; font-weight: bold; color: gold} caption {background-color: black; font-weight: bold; color: gold} </style>`)

;   build a display table to hold the report
displayTable = `<TABLE border="0"><tr><td id="ButtonCell"></td><td id="DataCell"></td></tr></TABLE>`
displayTable = StrCat(displayTable, @CRLF, `<span id="ServerSpan" class="hidden"></span>`)

;   write the style, table and set the title...
browserdoc.writeln(style)
browserdoc.writeln(displayTable)
browserdoc.title = "Server Space Report"

;   ref the left/right table cells
BC = browserdoc.all("ButtonCell")
;   place the buttons onscreen...
BC.innerHTML = InputTable
;   ref the data cell to display the server's table info...
DC = browserdoc.all("DataCell")

;   ref the hidden span, so we know which button the user clicked on...
SS = browserdoc.all("ServerSpan")

;   loop until the EXIT button is clicked...
While @TRUE
   Yields(2000)
   If SS.innerText <> ""
      If SS.innerText == "EXIT" Then Break
;   this strips the word "server" off the span's contents and leaves us
;   with the list position of the server's table...
      s = NumbersOnly(SS.innerText)
      SS.innerText = ""
;   display the table...
      DC.innerHTML = ItemExtract(s, MasterData, @TAB)
   EndIf
EndWhile

;   close up, go home...
ObjectClose(DC)
ObjectClose(SS)

br.quit

Exit


Data File: Server Data.txt

Server1,A:\ 216 GB Free,K:\ 381 MB Free,L:\ 436 GB Free,O:\ 358 GB Free,P:\ 58 MB Free,S:\ 496 MB Free,T:\ 11 MB Free,V:\ 492 GB Free,X:\ 333 GB Free,Y:\ 353 GB Free
Server2,C:\ 94 MB Free,D:\ 254 MB Free,F:\ 219 MB Free,G:\ 138 MB Free,I:\ 684 MB Free,J:\ 444 GB Free,P:\ 457 MB Free,R:\ 588 MB Free,S:\ 466 GB Free,T:\ 23 GB Free,U:\ 483 MB Free,W:\ 3 GB Free,X:\ 652 GB Free,Z:\ 276 GB Free
Server3,B:\ 145 GB Free,E:\ 395 GB Free,H:\ 140 MB Free,L:\ 140 MB Free,M:\ 307 GB Free,O:\ 139 GB Free,U:\ 159 MB Free,V:\ 452 MB Free,X:\ 128 MB Free,Y:\ 391 GB Free,Z:\ 31 MB Free
Server4,A:\ 682 MB Free,C:\ 607 MB Free,E:\ 346 GB Free,L:\ 243 MB Free,P:\ 588 GB Free,R:\ 504 GB Free,V:\ 364 MB Free,W:\ 361 GB Free,X:\ 515 MB Free,Y:\ 651 GB Free
Server5,B:\ 668 MB Free,E:\ 436 GB Free,K:\ 442 GB Free,M:\ 109 GB Free,N:\ 531 MB Free,O:\ 152 MB Free,P:\ 482 MB Free,S:\ 679 MB Free,V:\ 257 MB Free,W:\ 636 MB Free,Y:\ 103 GB Free
Server6,B:\ 79 MB Free,F:\ 580 MB Free,I:\ 52 MB Free,L:\ 89 MB Free,O:\ 553 GB Free,Q:\ 577 MB Free,S:\ 580 MB Free,V:\ 650 MB Free,X:\ 46 MB Free,Z:\ 116 MB Free
Server7,A:\ 327 GB Free,C:\ 118 MB Free,F:\ 321 GB Free,I:\ 540 GB Free,N:\ 373 GB Free,R:\ 285 MB Free,X:\ 571 GB Free,Z:\ 480 MB Free
Server8,C:\ 376 GB Free,F:\ 4 GB Free,G:\ 527 GB Free,M:\ 377 GB Free,O:\ 286 MB Free,Q:\ 7 MB Free,S:\ 396 MB Free,U:\ 212 GB Free,V:\ 547 GB Free,Y:\ 282 MB Free,Z:\ 122 GB Free
Server9,A:\ 138 MB Free,D:\ 539 MB Free,E:\ 254 GB Free,H:\ 449 GB Free,I:\ 384 MB Free,K:\ 326 GB Free,L:\ 353 GB Free,N:\ 68 MB Free,P:\ 17 GB Free,Q:\ 374 GB Free,R:\ 210 MB Free,U:\ 131 MB Free,W:\ 366 MB Free
Server10,E:\ 481 MB Free,F:\ 622 MB Free,G:\ 96 GB Free,H:\ 157 GB Free,I:\ 203 GB Free,J:\ 354 GB Free,K:\ 18 GB Free,N:\ 22 MB Free,O:\ 138 MB Free,S:\ 503 GB Free,T:\ 120 MB Free,U:\ 277 MB Free,W:\ 398 GB Free,X:\ 665 GB Free,Z:\ 285 GB Free
Server11,A:\ 303 MB Free,C:\ 374 MB Free,E:\ 224 MB Free,F:\ 111 MB Free,G:\ 523 MB Free,H:\ 37 GB Free,I:\ 74 MB Free,L:\ 477 GB Free,N:\ 618 GB Free,P:\ 291 GB Free,Q:\ 496 MB Free,S:\ 621 GB Free,U:\ 596 MB Free,Y:\ 71 GB Free
Server12,C:\ 505 GB Free,F:\ 648 GB Free,H:\ 112 MB Free,K:\ 530 GB Free,M:\ 201 GB Free,O:\ 404 GB Free,P:\ 341 MB Free,Q:\ 92 GB Free,U:\ 192 GB Free,X:\ 554 MB Free,Y:\ 503 GB Free,Z:\ 639 GB Free
Server13,C:\ 6 GB Free,H:\ 353 MB Free,I:\ 597 MB Free,J:\ 50 MB Free,K:\ 514 MB Free,M:\ 347 MB Free,O:\ 55 GB Free,Q:\ 73 GB Free,S:\ 279 GB Free,U:\ 548 GB Free,V:\ 601 MB Free,W:\ 302 GB Free,X:\ 551 MB Free,Y:\ 268 MB Free
Server14,A:\ 612 MB Free,B:\ 642 GB Free,C:\ 344 MB Free,D:\ 420 GB Free,F:\ 43 GB Free,G:\ 172 MB Free,H:\ 545 GB Free,I:\ 615 GB Free,J:\ 3 MB Free,O:\ 100 MB Free,P:\ 552 MB Free,Q:\ 82 GB Free,R:\ 178 MB Free,T:\ 149 GB Free,U:\ 375 GB Free,V:\ 404 MB Free,W:\ 496 MB Free
Server15,A:\ 199 GB Free,B:\ 560 GB Free,C:\ 327 MB Free,K:\ 646 MB Free,P:\ 34 MB Free,R:\ 629 MB Free,S:\ 485 GB Free,U:\ 38 MB Free,W:\ 363 MB Free,Y:\ 167 MB Free
Server16,C:\ 605 MB Free,H:\ 451 MB Free,J:\ 213 GB Free,M:\ 256 GB Free,N:\ 340 GB Free,Q:\ 20 GB Free,R:\ 192 MB Free,U:\ 618 GB Free,Z:\ 464 GB Free
Server17,A:\ 117 MB Free,B:\ 555 GB Free,E:\ 124 MB Free,G:\ 584 MB Free,H:\ 118 MB Free,J:\ 370 GB Free,N:\ 478 MB Free,R:\ 651 MB Free,U:\ 663 GB Free,V:\ 117 GB Free,Z:\ 72 GB Free
Server18,A:\ 306 MB Free,B:\ 480 GB Free,D:\ 321 MB Free,F:\ 82 GB Free,H:\ 267 MB Free,J:\ 318 GB Free,L:\ 288 GB Free,O:\ 113 MB Free,P:\ 13 GB Free,R:\ 585 MB Free,V:\ 289 GB Free,Z:\ 534 GB Free
Server19,C:\ 407 MB Free,D:\ 357 GB Free,E:\ 100 GB Free,H:\ 9 MB Free,L:\ 242 GB Free,M:\ 141 GB Free,N:\ 313 GB Free,O:\ 153 MB Free,R:\ 149 GB Free,T:\ 415 MB Free,U:\ 221 GB Free,W:\ 678 GB Free
Server20,D:\ 542 MB Free,E:\ 478 MB Free,G:\ 228 GB Free,H:\ 560 MB Free,J:\ 450 MB Free,K:\ 444 GB Free,M:\ 195 MB Free,N:\ 124 GB Free,O:\ 615 GB Free,P:\ 216 MB Free,R:\ 563 GB Free,T:\ 489 GB Free,X:\ 274 MB Free,Y:\ 617 MB Free,Z:\ 183 GB Free


Article ID:   W16642
File Created: 2005:04:28:08:28:38
Last Updated: 2005:04:28:08:28:38