This invention relates generally to computer generated visualizations. More particularly, this invention relates to techniques for creating and consuming custom templates for such visualizations.
Visualization templates are provided by application vendors, restricting a user to what the vendor anticipates their needs to be. The user may end up spending large amounts of time creating similar visualizations that the vendor did not anticipate.
In view of the foregoing, it would be beneficial to provide a system that gives the user more control, flexibility and variety in their template selection. Generating a template consumption guide to go along with each custom template would allow the user to get as much flexibility and usefulness out of custom templates as vendor provided templates. Additionally, allowing users and vendor partners to publish custom templates to a repository would give them more variety in their template options.
The invention includes a computer readable storage medium with executable instructions to access multiple custom templates. A selected custom template is designated for implementation. The selected custom template has a set of associated parameters. A custom template guide corresponding to the selected custom template is initiated.
The invention also includes a computer readable storage medium with executable instructions to access multiple custom templates. A selected custom template is designated for implementation. The selected custom template has a set of associated parameters. A custom template guide corresponding to the selected custom template is initiated. A set of values which correspond to the set of associated parameters are accepted via the custom template guide. An instance of a visualization is rendered in accordance with the set of values.
The invention also includes a computer readable storage medium with executable instructions to access multiple custom templates. A selected custom template is designated for implementation in a report. The selected custom template has a set of associated parameters. A custom template guide corresponding to the selected custom template is initiated. A set of values which correspond to the set of associated parameters is requested via the custom template guide. An instance of a visualization is rendered in accordance with the set of values. The instance of the visualization is then inserted into the report.
The invention is more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, in which:
Like reference numerals refer to corresponding parts throughout the several views of the drawings.
The following terminology is used while disclosing embodiments of the invention:
A custom template is a user specified model or pattern for making multiple copies of a single visualization (e.g., a pie chart, a bar chart, a mashup). A custom template may require object specific parameter specifications on implementation (e.g., data mapping, size, visualization type).
A guide is a form that accepts parameters for an object (e.g., data mapping, size, visualization type). The guide is used to create or edit an object. The guide indicates required parameters and default values. The guide may be organized into multiple tabs in a single pane or a series of single-tabbed panes. The series of single-tabbed panes present the process of creating an object step-by-step, similar to a document creation wizard or a software installation wizard.
A mashup combines content from more than one source. Mashup content is typically sourced from a third party via a public interface or API. Mashups come in many forms including websites, applications and visualizations.
An object is a visualization or document (e.g., a chart, a map, a report). An object maybe generalized to a template format.
A visualization is a graphic display of quantitative information. Types of visualizations include charts, tables and maps. A visualization is a form of mashup.
Each computer 120 includes a central processing unit 102 connected to a set of input/output devices 104 and a network connection circuit 106 via a bus 108. As shown in
The input/output devices 104 may include standard components, such as a keyboard, mouse, display, printer, and the like. The network connection circuit 106 provides connectivity to communication channel 130.
In the client computer 120-A, also connected to the bus 108-A is a memory 140. The memory 140 stores executable instructions to implement operations of the invention. In an embodiment, the memory 140 stores one or more of the following modules: a template creation module 142, a template consumption module 144, a Graphical User Interface (GUI) module 146, and an optional BI module 148.
The template creation module 142 includes executable instructions to aid a user in creating a new custom template. The executable instructions include instructions to navigate the user through a custom template creation guide, accept default or user indicated template specifications and compile a custom template object in accordance with the template specifications. The template creation module 142 also includes executable instructions for publishing the custom template to a repository.
The template consumption module 144 includes executable instructions to aid a user in consuming or implementing an existing custom template. The executable instructions include instructions to accept a default or user selected custom template, run a custom template consumption guide, accept default or user specified parameters and render an instance of the associated visualization.
The GUI module 146 may rely upon standard techniques to produce graphical components of a user interface, e.g., windows, icons, buttons, menus and the like. The user interface may include instructions to receive input from a pointer device and display a cursor on an output device.
The BI module 148 includes executable instructions to perform BI related functions on computers 120-A or 120-B, across network 130 or a wider network. BI related functions include: generating reports (locally or on a server), viewing a report, performing query and analysis, and the like. In an embodiment, the BI module 148 can include sub-modules, such as a report module, a server communications module and the like.
In the server computer 120-B, connected to the bus 108-B is a memory 160. The memory 160 stores executable instructions to implement operations of the invention. In an embodiment, the memory 160 stores one or more of the following modules: a template repository module 162 and a template repository 164.
The template repository module 162 includes executable instructions to interact with the template repository 164, adding, editing and retrieving templates from the template repository 164. The template repository module 162 receives and responds to requests from the client computer 120-A.
The modules stored in memory 140 and 160 are exemplary. Additional modules, such as an operating system can be included. It should be appreciated that the functions of the presented modules may be combined. In addition, a function of a module need not be performed on a single machine, e.g., the first computer or the second computer. Instead, the function may be distributed across system 100 or a wider network, if desired. In an embodiment, the template creation module 142 and the template consumption module 144 reside on separate machines. Indeed, it is possible that a first client machine may only create custom templates and second client machine may only consume custom templates, while a third client machine may perform both actions. In an embodiment of the present invention, the system 100 may operate in a non-client-server architecture. Indeed, the template repository 164 may exist on the client machine 120-A, eliminating the need for a server machine 120-B. In an embodiment, the system 100 may operate in a peer-to-peer architecture.
The first operation 212 of the operations 210 is to create a custom template for a visualization. In an embodiment, this is done via a template creation guide. The template creation module 142 initiates a template creation guide. The guide prompts a user to indicate the specifications of the custom template, including the image used for the visualization and any data mappings. In an embodiment, the image is selected from a vendor repository or user repository, or created by the user. In an embodiment, the user selects multiple data sources for the visualization and provides a data mapping to associate the data sources. In an embodiment, one or more of the specifications are completed by default values. The second operation 214 is to publish the custom template to a repository. In an embodiment, the repository is stored locally. In another embodiment, the repository is located on a server computer linked by a network.
The first operation 222 of the operations 220 is to access a visualization template repository. In an embodiment, the visualization template repository contains both custom templates and vendor provided templates. In an embodiment, the template repository is automatically updated to reflect its current contents without requiring the user to refresh. In the second operation 224, the user selects a custom template and the template consumption module 144 initiates a custom template consumption guide 226. The template consumption guide accepts a set of values 228 that specify the parameters to implement a visualization associated with the template. In an embodiment, a parameter may be specified using a formula. The custom template consumption module 144 renders an instance of the visualization 230 in accordance with the specified parameters, which is displayed by the GUI module 146. The user may opt to format the visualization parameters 232, which reinitiates the custom template guide 226. The user may format the visualization multiple times. In an embodiment, the user may save a version of the visualization before reformatting.
The Requirements tab 304 allows the user to indicate the axes of a chart visualization. In an embodiment, the user may use the custom template creation guide 300 to create a mashup template. The tabs Init 306, Mash 310 and Dispose 314 specify code to run when the mashup is first instantiated, code to run when the mashup parameters are specified and the mashup is rendered, and code to run upon deleting the mashup. In an embodiment, the Themes tab 316 allows the user to indicate parameter options for the template consumption user to select from when using the template and specify a default setting.
An embodiment of the present invention relates to a computer storage product with a computer-readable medium having computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well known and available to those having skill in the computer software arts. Examples of computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute program code, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hardwired circuitry in place of, or in combination with, machine-executable software instructions.
The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that specific details are not required in order to practice the invention. Thus, the foregoing descriptions of specific embodiments of the invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed; obviously, many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, they thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the following claims and their equivalents define the scope of the invention.