# Patent

## Title
Producing a chart

## Abstract

Methods and devices are provided for a computer implemented method of producing a chart, such as, for example, a Gantt chart. The method can include providing a template containing a definition of at least one column of the chart and inserting the template into a basic layout to form a document. An instruction to add a row to the chart is received. The instruction can include at least one type of information pertaining to the first task to be included on the chart contained in the document. The method further includes adding the row pertaining to the first task contained in the document. In one example, the template is an XML template, the basic layout is an XML basic layout and the document is an XML document.

## Background
FIELD
The present application relates generally to the field of formatting and displaying of data. The present application relates more specifically to the creation of charts, e.g. Gantt charts and other charts.
BACKGROUND
Charts have been used to graphically illustrate various activities or tasks over a time line. Various application programs often face difficulty, or introduce a need for extensive, specialized programming, when generating charts. Also, charts produced by various application programs, and even charts produced by a single application program, often have dissimilar formatting. These disadvantages are particularly applicable to the generation of Gantt charts.
The widespread use of the browser has prompted various programming languages and data formats to enable a display of data within the browser. In one example, the extensible mark-up language (XML) is a language used for representing data. An extensible style-sheet language (XSL) may be used to transform XML data or other types of data for purposes of displaying the data. However, each application program typically must process the data and convert the data into an XML description. Each application program requires its own XSL transformation or Simple Transformation. Because each application program is doing its own conversion, the forms and sizes of individual graphics that are shown are encoded in the conversion, precluding adaptation or exchange without programming requirements.
Thus, there is a need to address some of the deficiencies of conventional approaches to producing charts, such as Gantt charts. Further, there is a need to optionally produce Gantt charts that may reduce programming requirements across a variety of application programs. Further, there is a need to produce Gantt charts with similar formatting, including across application programs, regardless of task or activity format, while allowing for variations and customizations of the Gantt chart as desired.
SUMMARY
According to one embodiment, a method of producing a chart is provided. The method can include providing a template containing a definition of at least one column of the chart and inserting the template into a basic layout to form a document. An instruction to add a row to the chart is received. The instruction can include at least one type of information pertaining to the first task to be included on the chart contained in the document. The method further includes adding the row pertaining to the first task contained in the document. In one example, the template is an XML template, the basic layout is an XML basic layout and the document is an XML document.
According to another embodiment, a computer implemented method of producing a Gantt chart is provided. This method also includes providing an XML template containing a definition of at least one column of the Gantt chart and inserting the XML template into an XML basic layout to form an XML document. Instructions to add a plurality of rows to the Gantt chart are received, the instructions including at least one type of information pertaining to a task corresponding to a row of the plurality of rows to be included on the Gantt chart contained in the XML document. The method further includes adding the plurality of rows pertaining to the plurality of tasks contained in the XML document.
According to a further embodiment, computer-readable medium is provided for use with an electronic device. The medium has instructions executable using the electronic device for performing a method of producing a Gantt chart. This method includes providing an XML template containing a definition of at least one column of the Gantt chart and inserting the XML template into an XML basic layout to form an XML document. Instructions to add a plurality of rows to the Gantt chart are received, the instructions including at least one type of information pertaining to a task corresponding to a row of the plurality of rows to be included on the Gantt chart contained in the XML document. The method further includes adding the plurality of rows pertaining to the plurality of tasks contained in the XML document.



BRIEF DESCRIPTION OF THE DRAWINGS
Exemplary embodiments will be apparent from the description herein and the accompanying drawings.
FIG. 1 is an illustration of an example of a method of producing a Gantt chart according to an embodiment of the invention;
FIG. 2 is a schematic illustration of an engine for producing a Gantt chart according to embodiment of the invention; and
FIG. 3 is an illustration of another example method of producing a Gantt chart according to an embodiment of the invention.



DETAILED DESCRIPTION
According to various embodiments of the invention, methods and devices are provided for producing Gantt charts using an engine that can use an XML template in combination with an XML basic layout, along with an ability to add rows to the Gantt chart representative of tasks, as instructed by the application program. Although embodiments are described with respect to Gantt charts, other types of charts can utilize the principles of the invention without departing from the scope of the claims.
As used herein, the term “task” is meant to refer to any type of task, milestone, category title, event or activity that may be included in a chart, such as a Gantt chart. Tasks may have a duration and may have associations with one or more other tasks. Types of information pertaining to a task may include, but are not limited to, task name, start date and/or time, end date and/or time, duration, resource assigned to the task, location of the task, associations with other tasks, hierarchy level, schedule restrictions on the task and a task identifier. As used herein, the term “Gantt chart” is meant to refer to any type of chart that depicts one or more tasks relative to a timeline.
With reference to FIG. 1, a method 100 according to an exemplary embodiment is illustrated by way of example. The examples and implementations are provided using XML as an illustrative language. However, various embodiments are not so limited, and may be implemented in other versions of XML, including subsequent versions, as well as in other languages or other computer-executable instruction formats, such as, for example Java and HTML. The method 100 is a computer implemented method of producing a chart, e.g. a Gantt chart. The method includes providing 110 an XML template containing a definition of at least one column of the Gantt chart and inserting 120 the XML template into an XML basic layout to form an XML document. Columns of the Gantt chart can optionally be specified and display task information pertaining to the tasks, such as the task name, duration, etc., as desired. An instruction to add a row to the Gantt chart is received 130, the instruction including at least one type of information pertaining to the first task to be included on the Gantt chart contained in the XML document. The method further includes adding 140 the row pertaining to the first task contained in the XML document.
According to an example implementation as illustrated by the schematic 200 of FIG. 2, an engine 210 is provided. An XML template 220 may contain the definition(s) for one or more columns corresponding to the tasks. Therefore, the layout need not be encoded in the application program 230 so that company- or group-specific adaptation of the layout may be standardized within the group or company, and/or by a single user. In the example implementation, the XML template 220 includes processing instructions to identify the graphic output of the duration of the timeline in the Gantt chart as a template. In the example implementation, each application program 230 would have its own XML template 220, although the invention includes implementations where an XML template is used for multiple application programs.
An example XML template 220 for a task is as follows. Every expression beginning with “SAP” is understood by the engine as a signal word. However, various other expressions can be signal words. In the example, the engine will handle signal words as special instructions and not as XML-instructions. For the signal words XML-processing instructions are used e.g. <? . . . ?>.












<?SAP begin template task?> <!--Definition of the processing instruction


for a template-->


 <header>


  <label>My first task</label> <!--Definition of the title of the


  first column -->


  <!--If additional columns are needed then the titles of these columns


   can be added using the normal XML-syntax-->


 </header>


 <row>


  <label>SAP name of the task</label> <!-- “SAP name of the task”


will be interpreted by the engine as a variable. The engine will replace


this variable using the add row date method 250 or add row


date time method 260-->


  <!--If additional columns are needed then they can be added


   using the normal XML-syntax-->


 </row>


<?SAP begin template task?>









The XML basic layout 240 can contain all XML definitions and declarations for showing GANTT charts with JNet, a software product available from SAP AG of Germany, or an extension of JNet like JGANTT, a software product available from Knowledge Relay of Los Alamitos, Calif. The instructions of the XML template 220 passed to the engine 210 can be inserted in the appropriate parts in the XML basic layout 240. The XML template 220 may contain the definition of the columns for the tasks. Additional features can be added to the XML template 220 because the XML template 220 uses the XML language and the engine 210 inserts the XML template 220 in the XML basic layout 240. By way of non-limiting example, to include functionality to perform an action by double clicking on a specified row, appropriate code can be added in the XML template 220, such as by normal XML language and processing instructions. For example the additional coding could begin with the processing instruction <?SAP begin additional coding?> and end it with <?SAP end additional coding?>. In the example implementation, the engine 210 will add the coding to the appropriate part in the XML template 220. In the XML basic layout 240, control data may be stored in order to insert the XML template 220 at the appropriate part in the XML basic layout 240. The engine 210 searches this control data and inserts the XML template 220. The XML template 220 may be marked with processing instructions. XML processing instructions are ignored by application programs if not understood.
Optionally, customization 225 may be provided. In the example implementation, customization 225 may include color definitions and various other custom variables to replace variables in the XML basic layout 240, as desired.
Various methods may be provided to initiate the addition of task information to the Gantt chart. In the example implementation, an add row date 250 method is provided. Optionally or alternatively, an add row date time 260 method may be provided, or other methods corresponding to the task information may be provided. The add row date 250 may be used where display of time is not desired or required, while the add row date time 260 may optionally be used to provide and/or display the time information on the Gantt chart. When either of the methods are called, the engine 210 receives the instruction and generates XML coding for adding a row based on the values passed to the methods add row date 250 and add row date time 260. Internally, in the example implementation, this means the engine 210 inserts the lines and modify existing lines in a ROW-XML document 270.
In the XML basic layout 240, all layout data that could be influenced either by customizing 225 or the input data from the methods add row date 250/add row date time 260 is defined in variables in the example implementation. The engine 210 can replace the customizing variables and write the ROW-XML document 270. This ROW-XML document 270 can contain additional control data for the engine 210 like the XML template 220 definition. The engine 210 may then remove some or all of the control data to produce an XML output document 280.
Another example method 300 is illustrated in FIG. 3. The method 300 provides a computer implemented method of producing a Gantt chart. This method 300 includes providing 310 an XML template containing a definition of at least one column of the Gantt chart and inserting 320 the XML template into an XML basic layout to form an XML document. Instructions to add a plurality of rows to the Gantt chart are received 330. The instructions include at least one type of information pertaining to a task corresponding to a row of the plurality of rows to be included on the Gantt chart contained in the XML document. The method further includes adding 340 the plurality of rows pertaining to the plurality of tasks contained in the XML document. It is contemplated that various embodiments of the invention may be provided on a computer-readable medium.
Embodiments within the scope of the present invention include program products comprising computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, such computer-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above are also to be included within the scope of computer-readable media. Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
Various embodiments of the invention are described in the general context of a process, which may be implemented in one embodiment by a program product including computer-executable instructions, such as program code, executed by computers in networked environments. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
The present invention, in some embodiments, may be operated in a networked environment using logical connections to one or more remote computers having processors. Logical connections may include a local area network (LAN) and a wide area network (WAN) that are presented here by way of example and not limitation. Such networking environments are commonplace in office-wide or enterprise-wide computer networks, intranets and the Internet. Those skilled in the art will appreciate that such network computing environments will typically encompass many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Embodiments of the invention may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination of hardwired or wireless links) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
An exemplary system for implementing the overall system or portions of the invention might include a general purpose computing device in the form of a conventional computer, including a processing unit, a system memory, and a system bus that couples various system components including the system memory to the processing unit. The system memory may include read only memory (ROM) and random access memory (RAM). The computer may also include a magnetic hard disk drive for reading from and writing to a magnetic hard disk, a magnetic disk drive for reading from or writing to a removable magnetic disk, and an optical disk drive for reading from or writing to removable optical disk such as a CD-ROM or other optical media. The drives and their associated computer-readable media provide nonvolatile storage of computer-executable instructions, data structures, program modules and other data for the computer.
The illustrative embodiments, implementations and examples herein are meant to be illustrative and not limiting. The present invention has been described by way of example, and modifications and variations of the exemplary embodiments will suggest themselves to skilled artisans in this field without departing from the spirit of the invention. For example, although specific chart types, programming languages and subroutines are discussed, they are not discussed in a limiting fashion. Features and characteristics of the above-described embodiments may be used in combination. The preferred embodiments are merely illustrative and should not be considered restrictive in any way.

## Claims

1. A computer-implemented method of producing a Gantt chart, comprising:
providing an XML template defining at least one column of the Gantt chart and a non-XML code instruction including functionality to add a row;
inserting the definition of the at least one column and the non-XML code instruction to add the row into an XML basic layout;
calling a method to perform the non-XML code instruction to add the row to the Gantt chart, the row representing a first task to be included on the Gantt chart;
generating XML coding for adding the row representing the first task based on the non-XML code instruction and the called method;
adding the XML coding for adding the row to a ROW-XML document, the ROW-XML document including control data; and
removing the control data from the ROW-XML document to produce an XML output document.

2. The method of claim 1, wherein:
the control data includes a definition of the XML template.

3. The method of claim 1, further comprising modifying existing lines of XML code in the ROW-XML document based on receiving the instruction to add the row.

4. The method of claim 1, wherein the instruction to add the row includes date information associated with the first task.

5. The method of claim 1, further comprising customizing the XML basic layout by replacing at least one variable in the XML basic layout with a customized value.

6. The method of claim 5, wherein the customized value is a color definition.

7. The method of claim 1, wherein:
the non-XML code instruction including functionality to add the row includes a non-XML code instruction including functionality to add the row upon receiving a user input during interaction with the ROW-XML document.

8. A computer-implemented method of producing a Gantt chart, comprising:
providing an XML template defining at least one column of the Gantt chart and including a non-XML code instruction including functionality to add a row;
inserting the definition of the at least one column and the non-XML code instruction to add the row into an XML basic layout, the XML basic layout containing information regarding a layout of the Gantt chart;
calling a method to perform the non-XML code instruction to add the row to the Gantt chart, the method including at least one type of information associated with a task corresponding to the row to be included in the Gantt chart;
generating XML coding for adding the row to the Gantt chart based on the non-XML code instruction and the called method;
adding the XML coding for adding the row to a ROW-XML document, the ROW-XML document including control data; and
removing the control data from the ROW-XML document to produce an XML output document.

9. A non-transitory computer-readable storage medium for use with an electronic device, the computer-readable storage medium having instructions stored thereon which are configured to cause the electronic device to perform at least:
providing an XML template defining at least one column of a Gantt chart and including a non-XML code instruction including functionality to add a row;
inserting the definition of the at least one column and the non-XML code instruction to add the row into an XML basic layout;
calling a method to perform the non-XML code instruction to add the row to the Gantt chart, the row representing a first task to be included in the Gantt chart;
generating XML coding for adding the row representing the first task to the Gantt chart based on the received non-XML code instruction and the called method;
adding the XML coding for adding the row to a ROW-XML document, the ROW-XML document including control data; and
removing the control data from the ROW-XML document to produce an XML output document.

10. The computer-readable storage medium of claim 9, wherein:
the control data includes a definition of the XML template.

11. The computer-readable storage medium of claim 9, wherein the instructions are further configured to cause the electronic device to modify existing lines of XML code in the ROW-XML document based on the non-XML code instruction including functionality to add the row to the Gantt chart.

12. The computer-readable storage medium of claim 9, wherein the non-XML code instruction including functionality to add the row includes date information associated with the first task.

13. The computer-readable storage medium of claim 9, wherein the non-XML code instruction including functionality to add the row includes date and time information associated with the first task.

14. The computer-readable storage medium of claim 9, wherein the non-XML code instruction including functionality to add the row includes task name information associated with the first task.

15. The computer-readable storage medium of claim 9, wherein the non-XML code instruction including functionality to add the row includes instructions to display information associated with the first task in a first column and information associated with the first task in a second column.

16. The computer-readable storage medium of claim 9, wherein the instructions are further configured to cause the electronic device to replace at least one variable in the XML basic layout with a customized value.

17. The method of claim 1, wherein the XML template includes processing instructions to identify a graphic output of a duration of a timeline in the Gantt chart.

18. The method of claim 17, wherein the XML basic layout contains XML definitions for showing the Gantt chart.

19. The method of claim 1, wherein the XML template defining at least one column defines a title of the at least one column of the Gantt chart and a name of a second task associated with the at least one column.

20. The method of claim 1, wherein the XML template defining at least one column defines at least a first column of the Gantt chart and a second column of the Gantt chart.

21. The method of claim 1, wherein:
the XML basic layout includes control data for inserting the XML code defining at least one column into an appropriate part of the XML basic layout; and
the inserting includes inserting the XML code defining at least one column into the appropriate part of the XML basic layout based on the control data included in the XML basic layout.

22. The method of claim 1, wherein the non-XML code instruction including functionality to add the row includes non-XML code including functionality to add the row by double clicking on a specified row.