Abstract:
A method is provided for generating reports for a computer monitored or aided environment that has a server-side module, a client-side module and a database, the server-side module, client-side module and database being interconnected, The method includes creating a report layout, the report layout containing a predefined number of dynamic fields at predetermined positions; associating, at the server-side, each dynamic field with a data source; collecting, at the server-side, information for each dynamic field according to the associated data source; storing the information in the database; and displaying the information for each dynamic field on a display according to the report layout. The report layout is shared universally for the generation of a displayed report and a printed report.

Description:
FIELD OF INVENTION 
       [0001]    The present invention resides in the technical field of software generated reports, and more particularly, to the methods of generating reports for computer monitored or aided environments. 
       BACKGROUND 
       [0002]    Traditionally, report generation is a tedious and difficult process in part of software development. Most of the time, the System Integrator (S.I.) engineer has to develop a layout for the viewing screen, link the data source to the viewing screen, and then develop a printing template, and associate the template with the data source to the printout. This printing template creation step is an error prone step, whereby the S.I. engineer may accidentally link the data source (or data variable or tag) wrongly, as the engineer will not be able to review the content of the linked data source before it is printed. 
         [0003]    Even if these two steps were completed without any errors, the S.I. engineer will have to further develop the interface for file saving to save the report and file opening for retrieving previously saved reports, and not to mention the interface for exporting the saved reports into another file format. 
       SUMMARY 
       [0004]    A simple, more comprehensive reporting solution for the S.I. engineer is provided where the engineer only needs to develop a report layout page and include or link the report layout page to the data source. Creation and handling of the database is no longer needed, and no additional programming work will be required to provide for viewing, printing, saving, opening or even exporting the collected data. 
         [0005]    According to one aspect, there is provided a method for generating reports for a computer monitored or aided environment that comprises a server-side module, a client-side module and a database, the server-side module, client-side module and database being interconnected, the method comprising creating a report layout, the report layout containing a predefined number of dynamic fields at predetermined positions; associating, at the server-side, each dynamic field with a data source; collecting, at the server-side, information for each dynamic field according to the associated data source; storing the information in the database; and displaying the information for each dynamic field on a display according to the report layout; wherein said report layout is shared universally for the generation of a displayed report and a printed report. 
         [0006]    In one embodiment, the server-side module parses the report layout, extracts the dynamic field and collects the information for each dynamic field for the report, and stores the information in the database with a time stamp according to a timer. 
         [0007]    In another embodiment of the present invention, the server-side module parses the report layout, extracts the dynamic field and collects the information for each dynamic field for the report, and stores the information in the database upon the user&#39;s command. 
         [0008]    According to one preferred feature, the server-side module assigns storage address to the information for each dynamic field before storing the information into the address. 
         [0009]    According to another embodiment of the present invention, the storage address comprises database name, table name and column name. 
         [0010]    In another embodiment of the present invention, the storage address is predetermined by the report layout. 
         [0011]    According to another embodiment of the present invention, the storage address comprises database name, table name and column name. 
         [0012]    According to a further embodiment of the present invention, the client-side module displays a tool-bar like graphic user interface comprising interactive buttons on the display for report handling. 
         [0013]    In one embodiment, the client-side module polls the collected information for each dynamic field within the database and provides the user with the option to
   a) save a displayed report,   b) open a saved report from said database,   c) close a report on the display,   d) view a real-time dynamic report,   e) print the displayed report,   f) delete a saved report from said database, or   g) export the displayed report to Comma Separated Values (CSV), HTML or XML file formats.   
 
         [0021]    In another embodiment of the present invention, the method further comprising: 
         [0000]    generating said displayed report. 
         [0022]    According to one embodiment of the present invention, 
         [0000]    In one embodiment, the method further comprising:
 
generating said printed report.
 
         [0023]    In another embodiment of the present invention, a format of said printed report is in correspondence to a format of said displayed report. 
         [0024]    In another aspect, there is provided a system for generating reports for a computer monitored or aided environment that comprises a server-side module, a client-side module, and a database, the server-side module, client-side module and database being interconnected, the system comprising: a tool for creating a report layout, the report layout containing a predefined number of dynamic fields at predetermined positions; a storage device containing computer code to associate each dynamic field with a data source; and a logger in the server-side module for collecting information for each dynamic field according to the associated data source; wherein said report layout is shared universally for the generation of a displayed report and a printed report, using a graphical user interface in the client-side module. 
         [0025]    Thus, the invention allows an engineer to quickly develop a report generation software for any system or environment. Even an experienced S.I. engineer will find the simplified approach to generate a report to be less time consuming. The “one-time” layout creation reduces the possibility of printing an erroneous report. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0026]    The invention is illustrated, but not limited, by the following description of preferred embodiments, that is given by way of example only with reference to the accompanying drawings, in which: 
           [0027]      FIG. 1A  is a table illustrating the differences between a conventional reporting system and a reporting system according to an embodiment of the present invention. 
           [0028]      FIG. 1B  is a table illustrating the differences of what an S.I. engineer needs to perform in order to manipulate the data collected with a conventional reporting system as opposed to what an S.I. engineer is required to perform with an embodiment of the present invention. 
           [0029]      FIG. 1C  illustrates the basic steps required by an S.I. engineer to generate a report according to an embodiment of the present invention. 
           [0030]      FIG. 1D  illustrates the connections between the three major components involved in displaying, collecting and storing live data according to an embodiment of the present invention. 
           [0031]      FIG. 1E  is a flow chart illustrating the operation of the report generating system according to an embodiment of the present invention. 
           [0032]      FIG. 2A  is a flow chart illustrating the function to save a current report into a storage medium according to an embodiment of the present invention. 
           [0033]      FIG. 2B  is a flow chart illustrating the function to save a current report using a user selected name into a storage medium according to an embodiment of the present invention. 
           [0034]      FIG. 2C  is a flow chart illustrating the function to open a previously-saved report from the storage medium according to an embodiment of the present invention. 
           [0035]      FIG. 3A  is a flow chart illustrating the function to close the current report and return the view to real time mode according to an embodiment of the present invention. 
           [0036]      FIG. 3B  is a flow chart illustrating the function to delete the current saved or open report and return the view to real time mode according to an embodiment of the present invention. 
           [0037]      FIG. 3C  is a flow chart illustrating the function to export the current saved or open report into HTML, CSV or XML format according to an embodiment of the present invention. 
           [0038]      FIG. 3D  is a flow chart illustrating the function to print the current saved or open report according to an embodiment of the present invention. 
           [0039]      FIG. 4  is a flow chart illustrating the steps taken by the server-side module while the report generating software is running according to an embodiment of the present invention. 
           [0040]      FIG. 5  is a flow chart illustrating the steps taken by the server-side module to periodically collect information based on pre-configured timer from the system or environment according to an embodiment of the present invention. 
           [0041]      FIG. 6  is a screen shot of the data collected in one instant of time presented in the report according to an embodiment of the present invention. 
           [0042]      FIG. 7  is a screen shot of a blank report screen according to an embodiment of the present invention. 
           [0043]      FIG. 8  is a screen shot of the graphic user interface of the server-side module according to an embodiment of the present invention. 
           [0044]      FIG. 9  is a screen shot of another report screen according to an embodiment of the present invention. 
           [0045]      FIG. 10  is a screen shot of another report screen according to an embodiment of the present invention. 
           [0046]      FIG. 11  is a screen shot of the graphic user interface of the server-side module according to an embodiment of the present invention. 
           [0047]      FIG. 12  is a screen shot of the graphic user interface of the client-side module according to an embodiment of the present invention. 
           [0048]      FIG. 13  is a screen shot of the graphic user interface of the client-side module according to an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0049]    According to an embodiment of the present invention, there are fundamentally three steps to build a report generating system into a software application, as illustrated in  FIG. 1A . 
         [0050]    For the conventional report generating system, the engineer is required to create one report layout for report printout. As for the present invention, the engineer is also required to create a report layout for report printout. However, this report layout is also used for on screen viewing. 
         [0051]    Therefore, instead of creating two report layouts, one for printing and then another for viewing the report on screen, the engineer is only required to create one universal layout for use for report printing and report viewing on screen. So instead of creating the same report layout twice, the engineer saves time and reduces the possibility of making mistakes by doing the same work twice. Also, the embodiment of the present invention further incorporates a plug-in tool-bar, or a plug-in graphic user interface that allows the engineer to manipulate the reports readily, rather than having to create mechanisms to save and retrieve the data for the reports from the database. Normally, the engineer has to store the data as SQL statements or common flat files. The plug-in tool-bar or plug-in graphic user interface is presented to the engineer once the client-side module is linked to the display. 
         [0052]    In the conventional reporting system, a mechanism is created to save and restore data from the database. Normally, this is done by way of a database oriented approach. A data source storage path or storage address must be prepared in advance in order for the reporting system to save and later extract the data to be displayed. 
         [0053]    In an embodiment of the present invention, the above step was done by way of tag oriented approach. With this approach, no storage path or storage address needs to be prepared in advance. Instead, the system will create the storage path or storage address automatically based on the tag name. The tag name will be used for extraction of the data source for display. 
         [0054]    In the present invention, the S.I. engineer can also choose to or not fine-tune the system and it would have all its default values/setting. 
         [0055]    The fundamental three steps to build a report generating system into a software application are:
   1) Create a report layout to be shared between screen viewing and printout.   2) Associate data field with the data source, and   3) Set the auto-logging rate (server side configuration).   
 
         [0059]    Details for performing each of the above steps are elaborated within the description. 
         [0060]      FIGS. 1B and 1C  further illustrate the differences between the existing system and a report generating system according to an embodiment of the present invention. 
         [0061]    For both systems, the S.I engineer creates tag and link to data source or prepares logic to calculate its data. The S.I. engineer then creates report layout or formatting (tables, etc) and adds in the tags. 
         [0062]    The engineer then specifies the logging rate for archiving, i.e. a timer to collect information from the data source and store the information into a storage medium, such as a hard drive or a server. 
         [0063]    From this point onward, the two systems begin to diverge in terms of operation. 
         [0064]    For the conventional report generating system, the S.I engineer is required to repeat inputting tags for archiving, for viewing on screen and for viewing live or fixed (saved) data. 
         [0065]    For the present invention however, one can use the same tag input from the report layout steps and for archiving, viewing on screen and for viewing live or fixed (saved) data. The client-side module further inserts a plug-in tool-bar, or a plug-in graphic user interface that allows the engineer to use or access the data readily. 
         [0066]    The system is split into client-side module and server-side module, as indicated in  FIG. 1D . The database may be a hard drive with a massive storage, or any device that can store huge amounts of digital data. 
         [0067]    For the client-side, the System Integrator (S.I.) Engineer needs to first create a standard compliant report layout, which can be in HTML format, or a file type that is XML compliant. The engineer then associates the relevant HTML element&#39;s (e.g. table cell &lt;td&gt;, span &lt;span&gt;, or division &lt;div&gt;) ID with data source. The engineer then includes the client-side module, which can be a Java Script that is commonly known as a Scriptlet. Once the script is included and the HTML page is loaded, the plug-in tool-bar will be automatically inserted and displayed on top of the HTML report layout. With that the user shall be able to view real time data, and then choose to save the data with any filename with associated timestamps, open saved data from the storage medium such as a hard drive, close the viewing of archived data, export the archived data into another HTML file, XML or Comma Separated Values (C.S.V.) and print any currently on screen or archived data. The data can be saved into any one of several file formats such as fixed HTML pages or eXtensible Markup Language (XML) pages. The stored data can be copied, deleted or maintained individually. Alternatively, the data can also be saved into an SQL compliant database. 
         [0068]    For the server-side, the S.I. Engineer will need to perform calculation with their concerned data, such as data averaging, and set the data into tags. Then, the server-side module will automatically read (parse) the report layout and when it detects the tag for one particular field (data cell), it will read the tag from the server memory, and then save the data into the database. The engineer will also need to configure the server side configuration file to tell the server-side module which report layout file and the time to trigger it. The triggering time is meant for archiving time, for instance, an hourly timer is configured to generate hourly reports, daily timer for daily reports, weekly timer on specific day for weekly reports, etc. The S.I. engineer may also turn on the auto print function if desired, and the report will be printed automatically after it has been archived by the timer. 
         [0069]    For automatic calculation or data manipulation, the syntax (or code) within the layout is written based on JSON (Java Script Object Notation) format. This syntax or code can be placed as an ID or any attribute for an field element. It allows the S.I. engineer to link a field (data cell) to data source (tag/variable), or even further enhance or control the data source association. Below is a sample of the said syntax (or code). 
         [0070]    {attr: ‘get’, tag: ‘tagname’} 
         [0071]    However, the number of decimal point or format of the floating point data will be controlled directly from within the element content, for instance &lt;td&gt; (table data cell in HTML) value of ##.# shall display a numerical data with one decimal point. 
         [0072]    Very often a report may have content that logged with different data in repeated rows. Best real life examples of such print out is statement printing for banking account and phone bills. No special instruction or additional programming is needed for repeated content printing. All the S.I. engineer needs to do is to create a table with Header Row and a single Data row. The report generating system will automatically extract and iterate through all logged data and tabulate them accordingly. If a report footer is needed, one more row can be added at the end of the Data row, and additional syntax attribute can be added for more data calculation. For instance, ‘sum’, ‘avg’, ‘max’ and ‘min’. 
         [0073]    The list of available syntax is as follows: 
         [0000]    
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 {attr:’get’, tag:’tagname’} 
               
               
                   
                 {attr:’log’, tag:’tagname’} 
               
               
                   
                 {attr:’avg’, tag:’tagname’} 
               
               
                   
                 {attr:’max’, tag:’tagname’} 
               
               
                   
                 {attr:’min’, tag:’tagname’} 
               
               
                   
                 {attr:’sum’, tag:’tagname’} 
               
               
                   
                   
               
             
          
         
       
     
         [0074]    The flowchart in  FIG. 1E  describes how the system functions once it is launched. The report generating system begins by parsing the layout and linking the data source as defined by the S.I. engineer. The report generating system then inserts the plug-in tool-bar (or graphic user interface) as described earlier into the display linked to the client-module. The plug-in tool-bar is shown in  FIGS. 6 through 7 ,  9  and  10 . The system then enables the mouse and then further enables the following buttons on the plug-in tool-bar: Save, Save As and Open. The system then enters the real-time mode and loops through every table inputted by the engineer. 
         [0075]    The system goes through the codes inputted by the engineer to see if there are any tables containing syntax with “log” attribute. If none is found, the system then goes to confirm that there are no more tables containing syntax with “log” attribute. 
         [0076]    If syntax with “log” attribute is found, the system confirms whether it is in real-time mode. If the system is in real time mode, it retrieves any latest logged batch value from the database server and inserts them into the report page. Otherwise, it retrieves the open archived batch value from the database server and inserts them into the report page. For either case, the system will then make sure that there are no further tables in the codes containing syntax with “log” attribute before refreshing the data on the screen. 
         [0077]    The flowchart in  FIG. 2A  shows the steps taken by the system when the user wants to save a current report on display. Upon receiving a mouse click from the user (clicking the Save button), the system saves the current report on display with predefined name and time stamp. Upon saving the report, the system enters the archive mode and then enables the Close, Delete, Export and Print buttons. It disables the Save button so the user does not save a duplicate report. 
         [0078]    Flowchart in  FIG. 2B  shows the steps taken by the system when the user wants to save a current report on display with a predefined name. Upon receiving a mouse click from the user (clicking the Save As button), the system launches a text box to prompt the user to enter a file name. It then saves the current report on display together with the associated time stamp. The system then enters the archive mode and then enables the Close, Delete, Export and Print buttons. It disables the Save button so the user does not save a duplicate report. 
         [0079]    The flowchart in  FIG. 2C  shows the steps taken by the system when the user wants to open an archived report from the database server. Upon receiving a mouse click from the user (clicking the Open button), the system launches a text box that displays the 10 most recent reports for the user&#39;s selection, or allows the user to search for older reports. After that, the system enters the archive mode and then enables the Close, Delete, Export and Print buttons. It disables the Save button so the user does not save a duplicate report. 
         [0080]    Flowchart in  FIG. 3A  shows the steps taken by the system when the user wants to close a report currently on display. Upon receiving a mouse click from the user (clicking the Close button), the system closes the current report on display (whether it is a saved report or an opened report from the database server). The system then enters the real time mode, and then enables the Save, Save As and Open buttons. The system disables the Close, Delete, Export and Print buttons. 
         [0081]    Flowchart in  FIG. 3B  shows the steps taken by the system when the user wants to delete a currently saved report or a report on display. Upon receiving a mouse click from the user (clicking the Delete button), the system deletes the saved report or the report on display and then enters the real time mode. The system enables the Save, Save As and Open buttons and disables the Close, Delete, Export and Print buttons. 
         [0082]    The flowchart in  FIG. 3C  shows the steps taken by the system when the user wants to export a currently saved report or a report on display. Upon receiving a mouse click from the user (clicking the Export button), the system exports the saved report or the report on display into either HTML, CSV or XML format according to the user. 
         [0083]    The flowchart in  FIG. 3D  shows the steps taken by the system when the user wants to print a currently saved report or a report on display. Upon receiving a mouse click from the user (clicking the Print button), the system prints the saved report or the report on display. 
         [0084]    The flowchart in  FIG. 4  describes the functioning of the system, particularly of the server-side module. Once the system is launched, the system begins to check whether it is time to log information from the monitored system or environment. The system will not open and parse the inputted report page until it is time for the system to log. Once the time to log has been reached, the system checks the report page for any syntax with the “get” attribute. 
         [0085]    If the “get” attribute is found, the system gets the tag name from the syntax and retrieves the tag value from the server memory. The system then proceeds to save the tag and its associated value into the database with the associated time stamp. The system then checks the report page for any remaining syntax with the “get” attribute. If further “get” attributes are found, the system will continue to fetch tag names from syntax and retrieve tag values from server memory and save them into the database with the associated time stamp. 
         [0086]    After the system has gone through every “get” attribute in the report page, it proceeds to scan the table in the report page for any “log” attribute. If a “log” attribute is found, the system creates a new data array with the inputted report file name and the current time stamp. The system then saves the data array into the database. If there is more table to parse in the report page, the system will go back into the report page to look for more syntax with “log” attribute. 
         [0087]    Once the script has finished parsing all tables, the system will proceed to open the latest data batch which is associated with the inputted report name from the database. The system then inserts the new data into batch memory, and then saves the content of the batch memory with the new data into the database. 
         [0088]    The flow chart in  FIG. 5  illustrates how the interval logging function operates for an embodiment of the present invention. The system checks whether it is time to log information from the monitored system or environment. Once it is time, the system starts parsing the inputted report page when it is time for the system to log. The system checks the table within the report page to look for syntax with the “log” attribute. 
         [0089]    If the “log” attribute is found, the system retrieves the tag name from the syntax and reads the tag value from the server. It then proceeds to save the value into a temporary memory with the time stamp. If there are more tables to parse, the system will proceed to retrieve more tag names from other tables and place them into the temporary memory with the associated time stamp. Once all the tables have been parsed, the system opens the latest data batch which is associated with the inputted report name from the database. The system then inserts the new data into batch memory, and then saves the content of the batch memory with the new data into the database. 
         [0090]      FIG. 6  is a typical snapshot report collecting all data in an instant of time. The first step to produce a report is to create a report layout. The user needs to ensure that the HTML report layout file is XML compliant, or in another word, XHTML compliant. All HTML element must be written in lowercase and closed accordingly. For instance, &lt;td&gt; musts be followed by &lt;/td&gt; after typing its content. The user must not leave &lt;td&gt; open and insert another &lt;td&gt;. A line break shall be &lt;br/&gt; and a horizontal break shall be &lt;hr/&gt;. 
         [0091]    The second step is the linking process that involves adding tags into the layout, and adding links to the report module. 
         [0092]    The third and final step is the configuration of the server side, which involves calculating data and specifying the timer for archiving. It is the user or the S.I. engineer&#39;s responsibility to make the data available in the server memory, whether to poll the data from external sources or collect the result of a set of calculations. 
         [0093]    Archiving and saving the data onto a disk is a common needed feature. It can be done manually by the user on the graphic user interface (GUI) as shown in  FIG. 1D  during runtime, or automatically based on a timer. Manual archiving will not be necessary. 
         [0094]    Creating Layout 
         [0095]    The following is a sample of a standard compliant HTML layout for a production report. It was named as rpt.htm. The bolded script&#39;s inclusion of igr8.js and rpt_ui.js is needed to add in the reporting tool-bar (plug-in graphic user interface) and also perform XML Http Request technique to transfer data between client and server. 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                 &lt;html xmlns=”http://www.w3.org/1999/xhtml”&gt; 
               
               
                  &lt;head&gt; 
               
               
                   &lt;title&gt;IntegraXor Report&lt;/title&gt; 
               
               
                   &lt;style type=”text/css”&gt; 
               
               
                    th    {text-align: left} 
               
               
                    td    {text-align: left} 
               
               
                   &lt;/style&gt; 
               
               
                  &lt;/head&gt; 
               
               
                  &lt;body&gt; 
               
               
                   &lt;h2&gt;High Plant Production Report&lt;/h2&gt; 
               
               
                   &lt;table width=50%&gt; 
               
               
                    &lt;tr&gt; 
               
               
                     &lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt; 
               
               
                    &lt;/tr&gt; 
               
               
                    &lt;tr&gt; 
               
               
                     &lt;td&gt;1&lt;/td&gt;&lt;td&gt;Part A&lt;/td&gt;&lt;td&gt;&lt;/td&gt; 
               
               
                    &lt;/tr&gt; 
               
               
                    &lt;tr&gt; 
               
               
                     &lt;td&gt;2&lt;/td&gt;&lt;td&gt;Part B&lt;/td&gt;&lt;td&gt;&lt;/td&gt; 
               
               
                    &lt;/tr&gt; 
               
               
                    &lt;tr&gt; 
               
               
                     &lt;td&gt;3&lt;/td&gt;&lt;td&gt;Part C&lt;/td&gt;&lt;td&gt;&lt;/td&gt; 
               
               
                    &lt;/tr&gt; 
               
               
                    &lt;tr&gt; 
               
               
                     &lt;td&gt;4&lt;/td&gt;&lt;td&gt;Part D&lt;/td&gt;&lt;td&gt;&lt;/td&gt; 
               
               
                    &lt;/tr&gt; 
               
               
                    &lt;tr&gt; 
               
               
                     &lt;td&gt;5&lt;/td&gt;&lt;td&gt;Part E&lt;/td&gt;&lt;td&gt;&lt;/td&gt; 
               
               
                    &lt;/tr&gt; 
               
               
                   &lt;/table&gt; 
               
               
                  &lt;body&gt; 
               
               
                 
                   &lt;script language=″text/javascript″ src=″./system/scripts/igr8.js″&gt;&lt;/script&gt; 
                 
               
               
                   &lt;script language=″text/javascript″ src=″./system/scripts/rpt _ ui.js″&gt;   
               
               
                 
                   &lt;/script&gt; 
                 
               
               
                 &lt;/html&gt;. 
               
               
                   
               
             
          
         
       
     
         [0096]    The output of the browser from the above codes is shown in  FIG. 7 . 
         [0097]    Link to Data Source 
         [0098]    Once a layout is created, the S.I. engineer needs to associate a dynamic field with the desired tag. To associate a data field with a tag, the engineer needs to add in a JSON (Java Script Object Notation) compliant syntax as its ID like this: {attr:‘get’,tag:‘tagname’}. The bolded section below is an example of the earlier script after adding in the tag links. 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                  &lt;html xmlns=“http://www.w3.org/1999/xhtml”&gt; 
               
               
                 &lt;head&gt; 
               
               
                   &lt;title&gt;IntegraXor Report&lt;/title&gt; 
               
               
                   &lt;style type=“text/css”&gt; 
               
               
                    th {text-align: left} 
               
               
                    td {text-align: left} 
               
               
                   &lt;/style&gt; 
               
               
                 &lt;/head&gt; 
               
               
                 &lt;body&gt; 
               
               
                  &lt;h2&gt;High Plant Production Report&lt;/h2&gt; 
               
               
                  &lt;table width=“50%”&gt; 
               
               
                  &lt;tr&gt; 
               
               
                  &lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;1&lt;/td&gt;&lt;td&gt;Part A&lt;/td&gt;&lt;td  id=“{attr: ‘get’ , tag: ‘part _ a’ }” &gt;&lt;/ 
               
               
                   td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;2&lt;/td&gt;&lt;td&gt;Part B&lt;/td&gt;&lt;td  id=“{attr: ‘get’ , tag: ‘part _ b’ }” &gt;&lt;/ 
               
               
                   td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;3&lt;/td&gt;&lt;td&gt;Part C&lt;/td&gt;&lt;td  id=“{attr: ‘get’ , tag: ‘part _ c’ }” &gt;&lt;/ 
               
               
                   td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;4&lt;/td&gt;&lt;td&gt;Part D&lt;/td&gt;&lt;td  id=“{attr: ‘get’, tag: ‘part _ d’ }” &gt;&lt;/ 
               
               
                   td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;5&lt;/td&gt;&lt;td&gt;Part E&lt;/td&gt;&lt;td  id=“{attr: ‘get’, tag: ‘part _ e’ }” &gt;&lt;/ 
               
               
                   td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;/table&gt; 
               
               
                 &lt;/body&gt; 
               
               
                 &lt;script language=“text/javascript” src=“./system/scripts/igr8.js”&gt;&lt;/script&gt; 
               
               
                 &lt;script language=“text/javascript” src=“./system/scripts/rpt_ui.js”&gt;&lt;/ 
               
               
                 script&gt; 
               
               
                 &lt;/html&gt; 
               
               
                   
               
             
          
         
       
     
         [0099]    If the HTML editor in use does not allow duplicated ID string, the engineer can simply add in one more attribute with any number, preferably number in sequence for systematic sake. For instance, {attr:‘get’, tag:‘tagname’, dum: ‘NNN’}, where NNN is a series of numbers that plays the role to differentiate the element ID. 
         [0100]    Server Side Configuration 
         [0101]    The following step is not necessary for manual archiving. Automatic archiving based on a timer will require this configuration. This example is to cause the system to generate a daily production report at 6 a.m. All data shall be calculated by 6 a.m. for use. If there is a server script for this process, the script shall be triggered by a timer at 6 a.m. In this example, the tags for ‘part_a’, ‘part_b’, ‘part_c’, ‘part_d’ and ‘part_e’ shall have its data furnished by 6 a.m. 
         [0102]    Auto archiving is normally completed with a slight delay after the calculation triggering time. Depending on external factors like communication delays or time synchronization problem between the PC and the connected devices, the delay can range from a few seconds to 5 minutes, or even more in certain extreme cases. In this example it is assumed that the data will be ready in at most 5 seconds, so a timer can be created at 06:00:05, and trigger the report that was named rpt.htm above daily. The engineer can also choose to have the report printed automatically if required by the user. 
         [0103]      FIG. 8  shows the graphic user interface of the server-side module. The user will be able to easily enable or disable and configure the timer using the interface. 
         [0104]    Statement Printing Configuration 
         [0105]    The present invention also allows data accumulation in a growing table like a statement report. Common examples of a statement report are phone bills, which contains call logging; banking statements, with transaction listing; and credit card statements. However, for industrial automation, a statement report normally contains batch of processes that span through a certain duration of the production time. 
         [0106]    To insert accumulation data into a report, the syntax must be entered into a table, so that the data will grow within the table. The bolded portion of the script below is the section that caters for this purpose. 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                   &lt;html xmlns=“http://www.w3.org/1999/xhtml”&gt; 
               
               
                  &lt;head&gt; 
               
               
                   &lt;title&gt;IntegraXor Report&lt;/title&gt; 
               
               
                   &lt;style type=“text/ess”&gt; 
               
               
                    th {text-align: left} 
               
               
                    td {text-align: left} 
               
               
                   &lt;/style&gt; 
               
               
                  &lt;/head&gt; 
               
               
                  &lt;body&gt; 
               
               
                  &lt;h2&gt;High Plant Production Report&lt;/h2&gt; 
               
               
                  &lt;table width=“60%”&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;1&lt;/td&gt;&lt;td&gt;Part A&lt;/td&gt;&lt;td id=“{attr: ‘get’, 
               
               
                   tag: ‘part_a’ }”&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;2&lt;/td&gt;&lt;td&gt;Part B&lt;/td&gt;&lt;td id=“{attr: ‘get’, 
               
               
                   tag: ‘part_b’ }”&gt;# .##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;3&lt;/td&gt;&lt;td&gt;Part C&lt;/td&gt;&lt;td id=“{attr: ‘get’, 
               
               
                   tag: ‘part_c’ }”&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;4&lt;/td&gt;&lt;td&gt;Part D&lt;/td&gt;&lt;td id=“{attr: ‘get’,tag: 
               
               
                   ‘part_d’ }”&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;5&lt;/td&gt;&lt;td&gt;Part E&lt;/td&gt;&lt;td id=”{attr: ‘get’,tag: 
               
               
                   ‘part_e’ }”&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                 &lt;/table&gt; 
               
               
                 
                   &lt;h3&gt;Production Log&lt;/h3&gt; 
                 
               
               
                 
                   &lt;table width=“100%”&gt; 
                 
               
               
                   &lt;tr&gt;   
               
               
                    &lt;th&gt;Description&lt;/th&gt;   
               
               
                    &lt;th&gt;Density&lt;/th&gt;   
               
               
                    &lt;th&gt;Pressure&lt;/th&gt;   
               
               
                    &lt;th&gt;Level&lt;/th&gt;   
               
               
                    &lt;th&gt;Weight&lt;/th&gt;   
               
               
                   &lt;/tr&gt;   
               
               
                   &lt;tr&gt;   
               
               
                    &lt;td&gt;Time/Unit&lt;/td&gt;   
               
               
                    &lt;td&gt;(kg/m3)&lt;/td&gt;   
               
               
                    &lt;td&gt;(bar g)&lt;/td&gt;   
               
               
                    &lt;td&gt;(m)&lt;/td&gt;   
               
               
                    &lt;td&gt;(kg)&lt;/td&gt;   
               
               
                   &lt;/tr&gt;   
               
               
                   &lt;tr&gt;   
               
               
                    &lt;td&gt;&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                   &lt;/tr&gt;   
               
               
                   &lt;tr&gt;   
               
               
                    &lt;td colspan=“5”&gt;&lt;hr /&gt;&lt;/td&gt;   
               
               
                   &lt;/tr&gt;   
               
               
                   &lt;tr&gt;   
               
               
                    &lt;td&gt;Summary&lt;/td&gt;   
               
               
                    &lt;td&gt;Average&lt;/td&gt;   
               
               
                    &lt;td&gt;Maximum&lt;/td&gt;   
               
               
                    &lt;td&gt;Minimum&lt;/td&gt;   
               
               
                    &lt;td&gt;Total&lt;/td&gt;   
               
               
                   &lt;/tr&gt;   
               
               
                   &lt;tr&gt;   
               
               
                    &lt;td&gt;Data&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                    &lt;td&gt;#.##&lt;/td&gt;   
               
               
                   &lt;/tr&gt;   
               
               
                   &lt;/table&gt;   
               
               
                  &lt;/body&gt; 
               
               
                  &lt;script type=“text/javascript” src=“system/scripts/igr8.js”&gt;&lt;/script&gt; 
               
               
                  &lt;script type=“text/javascript” src=“system/scripts/rpt_ui.js”&gt;&lt;/script&gt; 
               
               
                 &lt;/html&gt; 
               
               
                   
               
             
          
         
       
     
         [0107]    The output of the above script is as indicated in  FIG. 9 . 
         [0108]    Once a table is created, the S.I. engineer needs to associate a dynamic field with the desired tag. To associate a data field with a tag for growing table row entry, the engineer will have to add in the syntax as its ID in the following manner: {attr:‘log’,tag:‘tagname’}. 
         [0109]    The following is what the above script will look like after the tag links have been added into it. 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                   &lt;html xmlns=″http://www.w3.org/1999/xhtml”&gt; 
               
               
                  &lt;head&gt; 
               
               
                   &lt;title&gt;IntegraXor Report&lt;/title&gt; 
               
               
                   &lt;style type=″text/ess″&gt; 
               
               
                    th {text-align: left} 
               
               
                    td {text-align: left} 
               
               
                   &lt;/style&gt; 
               
               
                  &lt;/head&gt; 
               
               
                  &lt;body&gt; 
               
               
                  &lt;h2&gt;High Plant Production Report&lt;/h2&gt; 
               
               
                  &lt;table width=″60%″&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;1&lt;/td&gt;&lt;td&gt;Part A&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_a’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;2&lt;/td&gt;&lt;td&gt;Part B&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_b’ }″&gt;# .##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;3&lt;/td&gt;&lt;td&gt;Part C&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_c’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;4&lt;/td&gt;&lt;td&gt;Part D&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_d’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;5&lt;/td&gt;&lt;td&gt;Part E&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_e’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                 &lt;/table&gt; 
               
               
                 &lt;h3&gt;Production Log&lt;/h3&gt; 
               
               
                 &lt;table width=″100%″&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;th&gt;Description&lt;/th&gt; 
               
               
                   &lt;th&gt;Density&lt;/th&gt; 
               
               
                   &lt;th&gt;Pressure&lt;/th&gt; 
               
               
                   &lt;th&gt;Level&lt;/th&gt; 
               
               
                   &lt;th&gt;Weight&lt;/th&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;Time/Unit&lt;/td&gt; 
               
               
                   &lt;td&gt;(kg/m3)&lt;/td&gt; 
               
               
                   &lt;td&gt;(bar g)&lt;/td&gt; 
               
               
                   &lt;td&gt;(m)&lt;/td&gt; 
               
               
                   &lt;td&gt;(kg)&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td  id=”{attr:’log’,tag:’time’}” &gt;&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’log’,tag:’part _ a’}” &gt;#.##&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’log’,tag:’part _ b’}” &gt;#.##&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’log’,tag:’part _ c’}” &gt;#.##&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’log’,tag:’part _ d’}” &gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td colspan=″5″&gt;&lt;hr /&gt;&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;Summary&lt;/td&gt; 
               
               
                   &lt;td&gt;Average&lt;/td&gt; 
               
               
                   &lt;td&gt;Maximum&lt;/td&gt; 
               
               
                   &lt;td&gt;Minimum&lt;/td&gt; 
               
               
                   &lt;td&gt;Total&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;Data&lt;/td&gt; 
               
               
                   &lt;td&gt;#.##&lt;/td&gt; 
               
               
                   &lt;td&gt;#.##&lt;/td&gt; 
               
               
                   &lt;td&gt;#.##&lt;/td&gt; 
               
               
                   &lt;td&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;/table&gt; 
               
               
                  &lt;/body&gt; 
               
               
                  &lt;script type=″text/javascript″ src=″system/scripts/igr8.js″&gt;&lt;/script&gt; 
               
               
                  &lt;script type=″text/javascript″ src=″system/scripts/rpt_ui.js″&gt;&lt;/script&gt; 
               
               
                 &lt;/html&gt; 
               
               
                   
               
             
          
         
       
     
         [0110]    It is common to have additional summary at the last row of the statement report. Built-in calculations that are available for user are average (avg), maximum (max), minimum (min) &amp; summation (sum). Set the attribute (attr) to the desired calculation syntax in the bracket above. 
         [0111]    The following is what the above script will look like after the additional summary row configured with the summary syntax has been added to it. 
         [0000]    
       
         
               
             
           
               
                   
               
             
             
               
                   &lt;html xmlns=″http://www.w3.org/1999/xhtml″&gt; 
               
               
                  &lt;head&gt; 
               
               
                   &lt;title&gt;IntegraXor Report&lt;/title&gt; 
               
               
                   &lt;style type=″text/ess″&gt; 
               
               
                    th {text-align: left} 
               
               
                    td {text-align: left} 
               
               
                   &lt;/style&gt; 
               
               
                  &lt;/head&gt; 
               
               
                  &lt;body&gt; 
               
               
                  &lt;h2&gt;High Plant Production Report&lt;/h2&gt; 
               
               
                  &lt;table width=″60%″&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;1&lt;/td&gt;&lt;td&gt;Part A&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_a’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;2&lt;/td&gt;&lt;td&gt;Part B&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_b’ }″&gt;# .##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;3&lt;/td&gt;&lt;td&gt;Part C&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_c’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;4&lt;/td&gt;&lt;td&gt;Part D&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_d’ }″&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;5&lt;/td&gt;&lt;td&gt;Part E&lt;/td&gt;&lt;td id=″{attr: ‘get’, 
               
               
                   tag: ‘part_e’ }″&gt;#.##&lt;/td&gt; 
               
               
                 &lt;/tr&gt; 
               
               
                 &lt;/table&gt; 
               
               
                 &lt;h3&gt;Production Log&lt;/h3&gt; 
               
               
                 &lt;table width=″100%″&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;th&gt;Description&lt;/th&gt; 
               
               
                   &lt;th&gt;Density&lt;/th&gt; 
               
               
                   &lt;th&gt;Pressure&lt;/th&gt; 
               
               
                   &lt;th&gt;Level&lt;/th&gt; 
               
               
                   &lt;th&gt;Weight&lt;/th&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;Time/Unit&lt;/td&gt; 
               
               
                   &lt; td&gt;(kg/m3)&lt;/td&gt; 
               
               
                   &lt;td&gt;(bar g)&lt;/td&gt; 
               
               
                   &lt;td&gt;(m)&lt;/td&gt; 
               
               
                   &lt;td&gt;(kg)&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td id=”{attr:’log’,tag:’time’}”&gt;&lt;/td&gt; 
               
               
                   &lt;td id=”{attr:’log’,tag:’part_a’}”&gt;#.##&lt;/td&gt; 
               
               
                   &lt;td id=”{attr:’log’,tag:’part_b’}”&gt;#.##&lt;/td&gt; 
               
               
                   &lt;td id=”{attr:’log’,tag:’part_c’}”&gt;#.##&lt;/td&gt; 
               
               
                   &lt;td id=”{attr:’log’,tag:’part_d’}”&gt;#.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td colspan=″5″&gt;&lt;hr /&gt;&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;Summary&lt;/td&gt; 
               
               
                   &lt;td&gt;Average&lt;/td&gt; 
               
               
                   &lt;td&gt;Maximum&lt;/td&gt; 
               
               
                   &lt;td&gt;Minimum&lt;/td&gt; 
               
               
                   &lt;td&gt;Total&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;tr&gt; 
               
               
                   &lt;td&gt;Data&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’avg’,tag:’part _ a’}” &gt;#.##&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’max’,tag:’part _ b’}”&gt; #.##&lt;/td&gt; 
               
               
                   &lt;td  id=”{attr:’min’,tag:’part _ c’}”&gt; #.##&lt;/td&gt; 
               
               
                   &lt;td  id=“{attr:’sum’,tag:’part _ d’}”&gt; #.##&lt;/td&gt; 
               
               
                  &lt;/tr&gt; 
               
               
                  &lt;/table&gt; 
               
               
                  &lt;/body&gt; 
               
               
                  &lt;script type=″text/javascript″ src=″system/scripts/igr8.js″&gt;&lt;/script&gt; 
               
               
                  &lt;script type=″text/javascript″ src=″system/scripts/rpt_ui.js″&gt;&lt;/script&gt; 
               
               
                 &lt;/html&gt; 
               
               
                   
               
             
          
         
       
     
         [0112]    When the report generation system is running with the above script with data being fed into the system, the output of the above script will be as shown in  FIG. 10 . 
         [0113]    On top of existing report triggering, interval log or accumulation data must be triggered by another (additional) sequence of timer. 
         [0114]    For instance, a daily hour-based logging will have 24 times of interval logging. In this case, the layout file of rpt.htm will be parsed for archiving daily, and being parsed and log in hourly interval.  FIG. 11  is the server side screen shot for the configuration. One standard entry is to link to rpt_save.js. As compared to snapshot report, another additional entry for interval log is to link to rpt_add.js, which is meant for statement report. 
         [0115]    Report Toolbar Menu 
         [0116]    As mentioned earlier in the description, the script &lt;script type=“text/javascript” src=“system/scripts/rpt_ui.js”&gt;&lt;/script&gt; loads the Java Script “rpt_ui.js” at the top of the browser page as shown in  FIGS. 6 ,  7 ,  9  and  10 . The Java Script “rpt_ui.js” displays a graphical user interface comprising several file management buttons. They are Save, Save As, Open, Close, Print, Export and Delete. 
         [0117]    As shown in  FIG. 12 , the buttons Save, Save As and Open are enabled during real time mode, while all buttons are enabled except for the Save button in the archive mode, as shown in  FIG. 13 . 
         [0118]    As shown in  FIG. 13 , the Save button is disabled in archive mode. When the Save button is clicked in real-time mode, all live data will be archived into the database instantly with timestamps, and then automatically loaded onto the display. The system then enters the archive mode showing the latest batch of saved data. The Close button is enabled in the archive mode so the user could go back to real-time mode by closing the display of the latest batch of saved data. 
         [0119]    The Save As button provides the user with the option to save the live data with a user-defined name. 
         [0120]    The Open button is enabled at all times. When the button is clicked either in real-time mode or archive mode, a dialog box will pop up and display the default directory, prompting the user to select an archived data for viewing. Once an archived data is open, the message bar shall display information to indicate that the report viewer (browser) has entered into the archive mode. The data on the screen will also stop updating. 
         [0121]    Clicking the Close button shall put the system back to the real-time mode. 
         [0122]    When the Print button is clicked, a dialog box shall pop up, so user can print the on screen data to the desired printer. The Print button is available in the archive mode. The printing function prints the data as displayed on screen. 
         [0123]    When the Export button is clicked, a dialog box like Save As shall pop up with additional option, so the user can pick to export the current data on display into HTML file, Comma Separated Values or XML file. The Export button is available in the archive mode. 
         [0124]    The Delete button is available in the archive mode, when an archived data is being viewed. When the Delete button is clicked, the currently viewed data will be prompted for deletion. The system will go back to the real-time mode after the data has been deleted. 
         [0125]    Therefore, it is obvious from the description that a simple, less time consuming, more straight forward method of generating reports can be achieved without strenuous programming and debugging. 
         [0126]    Although the above description has described the invention when used primarily with a computer monitoring system with an HTML browser, the same invention can easily be adapted for use in other types of monitoring systems and interfaces such as normal desktop application, PDA screens or cellular phone displays. 
         [0127]    It is understood that the invention may be embodied in numerous other ways without departing from the scope of the invention.