Patent Description:
In automotive coating lines, it is important to achieve a color-identical painting of car bodies and attached parts. To ensure compliance regarding batch consistency and production consistency, and to guarantee that the color specifications and tolerances of colorimetric properties are met, software tools have been developed for the support of the quality management of the production process.

An example is the ColorCARE® software developed by BASF Coatings, in particular, the ColorCARE® Toolbox. The software enables ongoing monitoring of the color matching between bodies and add-on parts, such as hatches, rear-view mirrors or door handles. The software combines instrument-based colorimetry with analytical methods and converts this statistical data into graphics and indicates deviations.

The software must generate graphical user interfaces (GUls) that fit within a visual display of the computing device on which it is executed to display information to the application user. Depending on the specific application and the information to be examined by the user, a multitude of different and varying data objects needs to be displayed. There is a need to provide a computer-implemented method and a computer system allowing a user to configure a GUI layout with a maximum of flexibility for a maximum of usability.

<CIT> describes methods, systems, and computer program products for generating user interface layouts. One computer-implemented method includes dividing an available vertical space associated with a graphical user interface into a plurality of allowed vertical space allocations based on a priority of a plurality of data display fields, calculating, by a computer, slack following each data display field expanding to fill an allowed vertical space allocation associated with the data display fields, allocating the slack among the plurality of data display fields, re-calculating, by a computer, slack following allocation of slack among the plurality of data display fields, and finalizing display of the plurality of data display elements in the graphical user interface.

<CIT> discloses a mouse driven splitter program and algorithm. A method of splitting a display window comprises dragging a cursor from a begin point in the display window to an end point in the display window; and dividing the display window into two separate split display windows, each of said separate split display windows having a newly-formed edge substantially aligned with a line that would pass through the begin and end points. A scrollable list box associated with each of the split display windows is provided, each list box containing one or more display options for display in the associated window; and one of the display options is selected for display for each of the split display windows; and a visual display associated with the selected display option is displayed within each of the split display windows.

<CIT> discloses a views management system having a computer display which provides a hideable view bar having pane splitting controls and a list of open views. Through selection of specific ones of the pane splitting controls, a system user can configure the display to show any number and arrangement of tiled views. By simply selecting one of the open views in the list appearing in the view bar, the user can assign that view to the pane currently having focus. The contents of pairs of panes can easily be swapped by a click-drag-drop operation sequence using a cursor- controlling pointing device.

The present disclosure relates to computer-implemented methods, computer-readable media, and computer systems for generating graphical user interface layouts. There is provided a computer-implemented method, a computer-readable medium storing computer-readable instructions, and a system as defined in claims <NUM>, <NUM> and <NUM>. Further embodiments are set forth in the dependent claims.

The present disclosure provides a computer-implemented method for generating a graphical user interface (GUI) for a dashboard software product. The method comprises the steps of:.

In the context of the present disclosure, a dashboard software product is software which needs to display and control a multitude of different and varying data objects. Examples include trading software applications, e.g., for trading stocks, bonds, options, currencies, goods etc.; software applications in the health sector for monitoring a plurality of vital parameters of a patient like pulse rate, blood pressure, breathing frequency, oxygen saturation, heart rhythm, brain waves etc.; and tools for testing and/or monitoring machines; e.g., engines, which monitor and/or control exhaust parameters, pressure, liquid flow, gas flow, voltages, currents, power, torque, temperature, rotational speed etc. In a particular embodiment, the dashboard software is a colorimetry software product.

In one embodiment of the method, the input is received from a user via an input device, such as a keyboard, a computer mouse, a trackball, or a touchscreen. The user selects an available (sub)area on a display associated with the GUI and whether the (sub)area is to be divided horizontally or vertically.

The (sub)area in step a) is selected by navigating a cursor into the (sub)area. In a particular embodiment using a computer mouse or a trackball as an input device, a pointer is moved into the (sub)area to select it. In another particular embodiment using a touchscreen as an input device, the (sub)area in step a) is selected by touching the touchscreen in the respective (sub)area. In a further embodiment, short cuts can be used to navigate to the respective (sub)area.

In step b) of the method, a binary input is received. The binary input consists of a selection whether the (sub)area is to be divided horizontally or vertically. In other words, the binary input is a single piece of information which can only take one of two expressions, one signifying "divide horizontally", the other signifying "divide vertically". The binary input does not comprise information on the position at which the (sub)area is to be divided. In other words, no information on the exact position of the split is contained in the binary input.

The selection in step b) is made by navigating a cursor into the (sub)area as previously described and generating a first predefined binary input to select horizontal division of the (sub)area, or a second predefined binary input to select vertical division of the (sub)area. The predefined binary input is a programmed binary input, such as a mouse click, a touchscreen gesture, a short cut or a combination thereof. In one embodiment, the selection in step b) is made by navigating a cursor into the (sub)area using a computer mouse (or a trackball), and performing a left mouse-click to select horizontal division of the (sub)area or a right mouse-click to select vertical division of the (sub)area. In another embodiment, the selection in step b) is made by navigating a cursor into the (sub)area using a computer mouse (or a trackball), and performing a right mouse-click to select horizontal division of the (sub)area or a left mouse-click to select vertical division of the (sub)area.

In step c), the (sub)area is divided into two subareas having a pre-defined area ratio. The predefined area ratio can be any ratio x:y with <NUM><x<<NUM>, <NUM><y<<NUM> and x+y=<NUM>. In a particular embodiment, the predefined ratio is <NUM>:<NUM>, i.e., the two subareas obtained by the division are commensurate.

Steps a) through c) are repeated until a desired grid for the GUI has been obtained. This allows for the generation of a flexible GUI using a recursive algorithm. Said algorithm allows the user to vertically and/or horizontally divide the GUI as desired, making it possible to divide a display area into an arbitrarily clustered amount of subareas to position arbitrary subwindows (e.g. charts, tables, etc.) within these subareas. A click inserts a subarea which in turn offers the possibility to place two new subareas, and so on. As long as the user continues clicking (left/right), further subareas are created. The final grid is comprised of a plurality of rectangular subareas.

In an embodiment of the method, steps a) through c) can be undone or redone, as long as no data object has been assigned to the (sub)area. Undoing or redoing can triggered by any type of predefined binary input (=back or forth), such as via mouse, touch, short cut. In one embodiment, steps a) through c) can be undone or redone by scrolling on a mouse wheel of a computer mouse. This "history" function tracks the selections made by a user, e.g., the left mouse-clicks and right mouse-clicks, and allows the user to undo any selections that he/she is not satisfied with, by scrolling backwards on the mouse wheel. If the user has moved too far back in the selection history, steps can be redone by scrolling forwards on the mouse wheel. However, once the user has assigned a data object to a (sub)area, the history function is no longer available; and the previous changes to the grid cannot be undone by scrolling on the mouse wheel. This is due to the fact that the generation of the grid is finished. After finishing the grid, it is only possible to assign data object type(s) and/or to change the area ratio.

The grid of the GUI is supposed to be as flexible as possible and its generation requires minimal input from the user; the only information required being: start, divide horizontal/vertical, finish.

In one embodiment of the method, the boundaries of each subarea of the grid obtained in step d) can be moved to modify the grid, i.e., the subareas of the (finished) grid are modifiable in width and length. In a particular embodiment, a boundary of a subarea is moved using a computer mouse (or a trackball) by pointing and clicking on the boundary to select it and then dragging the pointer to the desired position.

After having obtained the desired grid in step d), data object type(s) provided by the dashboard software is/are assigned to subarea(s) of the grid obtained in step d). The data object types can be of the same or different data object type. More than one data object type can be assigned to a subarea. Also, the same data object type can be assigned to more than one subarea. In one embodiment, at least one data object is assigned to each of the subareas of the grid obtained in step d).

In another embodiment, each subarea of the grid obtained is assigned to at least one data object type provided by the dashboard software. Once the grid generation has been completed, all subareas can be used to place data object types. Each and every subarea has a bidirectional information mechanism (having n+<NUM> members in its chain, where n is the depth of the respective subarea) which enables the developer to bundle all information about all subareas in one place and - on the other hand - send information to each of the subareas from any desired location. In one embodiment, an input button is provided in each subarea of the grid for the selection of the at least one data object type to be assigned to and displayed in the respective subarea. A single data object type can be assigned to and displayed in more than one subarea. Once a data object type has been assigned to a subarea, the subarea contains an instance of the respective assigned data object type. This allows assigning data object types of the same type, but with different contents, or data object types with the same content, to either the same or different subareas.

In one embodiment of the method, the data objects types are selected from the group consisting of numbers, text, symbols, tables, diagrams, and pictures. In a further embodiment, the data objects represent measured data obtained by the dashboard software, e.g., a colorimetry software product.

In one embodiment of the method, an assigned data object can be freely moved from one subarea to another subarea, e.g., by drag-and-drop. In a further embodiment, wherein more than one data object is assigned to a single subarea , the order of the data objects displayed in the respective subarea can be altered at will, e.g., by a drag-and-drop mechanism, which moves the respective data object to a different position in the list of data objects assigned to the respective subarea.

In one embodiment of the method, the finished grid is storable, i.e., it can be transferred to another GUI or be reloaded. For this purpose, the input used to generate the grid is stored on a data storage medium and can be retrieved upon reloading of the grid. The input used to generate the grid may be reduced by removing unnecessary inputs, such as redundant inputs performed during generation of the grid, in order to limit the series of inputs which need to be stored to an optimized minimum. This allows reducing the amount of data which needs to be stored for transferring or reloading the finished grid to a minimum. In another embodiment of the method, the finished grid is persistent.

In one embodiment of the method further involves.

Grouping of data objects allows displaying different data objects related to the same topic in different subareas. This provides a better overview of all data available for a specific topic.

In one embodiment, the GUI comprises, in addition to the grid of subareas, a quick start button bar which can get pinned at an arbitrary position at an edge of the display. In a particular embodiment, the quick start button bar can also float in and float out from the position when it's not pinned. In a further embodiment, buttons activating different functions can be added and removed to the quick start button bar via drag and drop.

In one embodiment, the GUI includes a standard header, a standard footer, and the two main components in terms of flexibility, i.e., a quick start button bar and a custom grid which includes views like charts, tables and reports (etc.). The grid meets the need to design arbitrary rectangular subareas where different views can be positioned, the size of the subareas being customizable.

The present disclosure also provides a non-transitory, computer-readable medium storing computer-readable instructions executable by a computer and operable to:.

Computer-readable media (transitory or non-transitory, as appropriate) suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g. erasable programmable read-only memory (EPROM), electrically-erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM, DVD+/-R. DVD-RAM, and DVD-ROM disks. The memory may store various objects or data, including caches, classes, frameworks, applications, backup data, jobs, web pages, web page templates, database tables, repositories storing business and/or dynamic information, and any other appropriate information including any parameters, variables, algorithms, instructions, rules, constraints, or references thereto. Additionally, the memory may include any other appropriate data, such as logs, policies, security or access data, reporting files, as well as others.

A program software, a software application, a module, a software module, a script, or code, can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. In one embodiment, the computer-executable instructions of the present disclosure are written in HTML, TS (TypeScript), and CSS (Cascading Style Sheets). These are particularly suited to handle angular frameworks.

While portions of the programs illustrated in the various figures are shown as individual modules that implement the various features and functionality through various objects, methods, or other processes, the programs may instead include a number of sub-modules, third-party services, components, libraries, and such, as appropriate. Conversely, the features and functionality of various components can be combined into single components as appropriate.

The present disclosure also provides a system, comprising:.

In one embodiment, the input device comprises a computer mouse or a trackball. In a further embodiment, the at least one input device comprises a computer keyboard.

In one embodiment, the at least one display comprises a touchscreen. The touchscreen also acts as an input device.

Systems suitable for the execution of the method of the present disclosure can be based on general or special purpose microprocessors, both, or any other kind of CPU. Generally, a CPU will receive instructions and data from a read-only memory (ROM) or a random access memory (RAM) or both. Essential elements of the system are a CPU for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, the system will also include, or be operatively coupled to, receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, the system need not have such devices. Moreover, the system can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a game console, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.

Implementations of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible, non-transitory computer-storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer-storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.

The details of one or more implementations of the subject matter of this specification are set forth in the accompanying drawings and the description.

<FIG> is a first example screenshot of a GUI <NUM> generated using the method of the present disclosure. The GUI <NUM> comprises multiple subareas <NUM>. Exactly one assigned data object is displayed in each subarea <NUM>. A link button <NUM> is provided in each subarea <NUM> for selecting the data object to be displayed in the subarea <NUM>. In the embodiment shown in <FIG>, an indicator <NUM> of the type of the data object assigned and displayed is provided in the subarea <NUM>.

Claim 1:
A computer-implemented method for generating a graphical user interface (<NUM>), GUI, for a dashboard software, comprising:
a) receiving an input selecting an available subarea or area (<NUM>) on a display associated with the GUI (<NUM>), wherein the subarea or area (<NUM>) is selected by navigating a cursor into the subarea or area (<NUM>);
b) receiving a binary input consisting of a selection whether the subarea or area (<NUM>) is to be divided horizontally (<NUM>) or vertically (<NUM>), the binary input being a single piece of information which can only take one of two expressions, one signifying "divide horizontally", the other signifying "divide vertically", wherein the selection is made by navigating a cursor into the subarea or area (<NUM>) using a computer mouse, and performing a left mouse-click to select horizontal division (<NUM>) of the subarea or area or a right mouse-click to select vertical division (<NUM>) of the subarea or area (<NUM>), or the selection is made by navigating a cursor into the subarea or area (<NUM>) using a computer mouse, and performing a right mouse-click to select horizontal division (<NUM>) of the subarea or area or a left mouse-click to select vertical division (<NUM>) of the subarea or area (<NUM>);
c) depending on the selection made in step b), dividing the subarea or area (<NUM>) either horizontally (<NUM>) or vertically (<NUM>) into two subareas (<NUM>) having a pre-defined area ratio;
d) repeating steps a) through c) until a desired grid has been obtained;
e) assigning at least one data object type provided by the dashboard software to at least one subarea (<NUM>) of the grid obtained in step d);
f) displaying the assigned data objects in the subareas (<NUM>).