Controlled display of dynamic data

A method, apparatus, system, and computer program code for controlling a display of dynamic data updates is provided. A scroll position is determined for a viewport. The viewport chronologically displays a sequence of dynamic data within a graphical user interface. Responsive to determining that the scroll position is a top-of-page, a set of data updates is retrieved from a buffer. The sequence of dynamic data displayed in the viewport is updated with the set of data updates. The viewport is updated only when the scroll position is the top-of-page.

BACKGROUND

The disclosure relates generally to an improved computer system and, more specifically, to a method, apparatus, computer system, and computer program product for controlling the display of dynamic data.

2. Description of the Related Art

Mobile devices, such as mobile phones and personal digital assistants (PDAs) have become ubiquitous and are commonly used as replacements for personal computers. However, the small size of these mobile devices dramatically reduces the available on-screen real estate. Mobile terminals also generally have small screens, often incorporating a user input, such as a keypad or very small keyboard which is often awkward to use. Due to these limitations, accessing and displaying information on a mobile device can be more awkward than on a typical personal computer.

SUMMARY

According to one embodiment of the present invention, a method provides for controlling a display of dynamic data updates. The method comprises determining a scroll position for a viewport. The viewport chronologically displays a sequence of dynamic data within a graphical user interface. Responsive to determining that the scroll position is a top-of-page, a set of data updates is retrieved from a buffer. The sequence of dynamic data displayed in the viewport is updated with the set of data updates. The viewport is updated only when the scroll position is the top-of-page.

According to another embodiment of the present invention, a computer system for controlling a display of dynamic data updates comprises a number of storage devices configured to store program instructions, and a number of processors operably connected to the storage devices. The number of processors are configured to execute the program instructions to cause the system to: determine a scroll position for a viewport, wherein the viewport chronologically displays a sequence of dynamic data within a graphical user interface; responsive to determining that the scroll position is a top-of-page, retrieve a set of data updates from a buffer; and update the sequence of dynamic data displayed in the viewport with the set of data updates, wherein the viewport is updated only when the scroll position is the top-of-page.

According to yet another embodiment of the present invention, a computer program product for controlling a display of dynamic data updates comprises a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a computer system to cause the computer system to perform a method of: determining a scroll position for a viewport, wherein the viewport chronologically displays a sequence of dynamic data within a graphical user interface; responsive to determining that the scroll position is a top-of-page, retrieving a set of data updates from a buffer; and updating the sequence of dynamic data displayed in the viewport with the set of data updates, wherein the viewport is updated only when the scroll position is the top-of-page.

DETAILED DESCRIPTION

The illustrative embodiments recognize and take into account one or more different considerations. For example, the illustrative embodiments recognize and take into account that quickly and efficiently accessing information on computing devices with small screens is problematic. With conventional user interfaces, a user may need to scroll around the page, switching views many times to locate the desired data. When data is streamed, or dynamically updated, the interface itself may also be dynamically updated, shifting a view of the page and disrupting access to a particular data element.

Thus, the illustrative embodiments recognize and take into account that it would be desirable to have a method, apparatus, computer system, and computer program product that takes into account the issues discussed above as well as other possible issues. For example, it would be desirable to have a method, apparatus, computer system, and computer program product that provides for increased comprehension and speed at which information, such as dynamic data, can be accessed and comprehended on a small display as compared with using current systems.

In one illustrative example, a computer system is provided for controlling a display of dynamic data updates comprising a number of storage devices configured to store program instructions, and a number of processors operably connected to the storage devices. The number of processors are configured to execute the program instructions to cause the system to: determine a scroll position for a viewport, wherein the viewport chronologically displays a sequence of dynamic data within a graphical user interface; responsive to determining that the scroll position is a top-of-page, retrieve a set of data updates from a buffer; and update the sequence of dynamic data displayed in the viewport with the set of data updates, wherein the viewport is updated only when the scroll position is the top-of-page.

With reference now to the figures and, in particular, with reference toFIG.1, a pictorial representation of a network of data processing systems is depicted in which illustrative embodiments may be implemented. Network data processing system100is a network of computers in which the illustrative embodiments may be implemented. Network data processing system100contains network102, which is the medium used to provide communications links between various devices and computers connected together within network data processing system100. Network102may include connections, such as wire, wireless communication links, or fiber optic cables.

In the depicted example, server computer104and server computer106connect to network102along with storage unit108. In addition, client devices110connect to network102. As depicted, client devices110include client computer112, client computer114, and client computer116. Client devices110can be, for example, computers, workstations, or network computers. In the depicted example, server computer104provides information, such as boot files, operating system images, and applications to client devices110. Further, client devices110can also include other types of client devices such as mobile phone118, tablet computer120, and smart glasses122. In this illustrative example, server computer104, server computer106, storage unit108, and client devices110are network devices that connect to network102in which network102is the communications media for these network devices. Some or all of client devices110may form an Internet of things (IoT) in which these physical devices can connect to network102and exchange information with each other over network102.

Client devices110are clients to server computer104in this example. Network data processing system100may include additional server computers, client computers, and other devices not shown. Client devices110connect to network102utilizing at least one of wired, optical fiber, or wireless connections.

Program code located in network data processing system100can be stored on a computer-recordable storage media and downloaded to a data processing system or other device for use. For example, the program code can be stored on a computer-recordable storage media on server computer104and downloaded to client devices110over network102for use on client devices110.

As used herein, a “number of,” when used with reference to items, means one or more items. For example, a “number of different types of networks” is one or more different types of networks.

In this illustrative example, display controller130can run on client computer114. In another illustrative example, display controller130can be run in a remote location such as on server computer104. In yet other illustrative examples, display controller130can be distributed in multiple locations within network data processing system100. For example, display controller130can run on client computer112and on client computer114or on client computer112and server computer104depending on the particular implementation.

Display controller130can operate to control a display of dynamic data updates. Display controller130overcomes the limitations of other systems by holding data updates in a buffer and updating the viewport only when the scroll position is the top-of-page. Data updates are chronologically stored in the buffer as they are received. Display controller130is configured to retrieve a set of data updates from a buffer in response to determining that the scroll position is a top-of-page, such that the viewport is updated only when the scroll position is the top-of-page. Controlling a display of dynamic data updates in this manner eliminates disruptions to the user experience caused by, for example, the sequence shifting of individual data items within a viewport due to page updates.

With reference now toFIG.2, a block diagram of an application environment is depicted in accordance with an illustrative embodiment. In this illustrative example, application environment200includes components that can be implemented in hardware such as the hardware shown in network data processing system100inFIG.1.

As depicted, display control system202comprises computer system204and display controller206. Display controller206runs in computer system204. Display controller206can be implemented in software, hardware, firmware, or a combination thereof. When software is used, the operations performed by display controller206can be implemented in program code configured to run on hardware, such as a processor unit. When firmware is used, the operations performed by display controller206can be implemented in program code and data and stored in persistent memory to run on a processor unit. When hardware is employed, the hardware may include circuits that operate to perform the operations in display controller206.

As depicted, human machine interface208comprises display system210and input system212. Display system210is a physical hardware system and includes one or more display devices on which graphical user interface214can be displayed. The display devices can include at least one of a light emitting diode (LED) display, a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a computer monitor, a projector, a flat panel display, a heads-up display (HUD), or some other suitable device that can output information for the visual presentation of information.

User216is a person that can interact with graphical user interface214through user input generated by input system212for computer system204. Input system212is a physical hardware system and can be selected from at least one of a mouse, a keyboard, a trackball, a touchscreen, a stylus, a motion sensing input device, a gesture detection device, a cyber glove, or some other suitable type of input device.

In one or more illustrative embodiments, graphical user interface214solves problems of prior graphical user interface devices (GUIs), in the context of dynamically updated data, relating to speed, accuracy, and usability. Rather than reciting a mathematical algorithm, a fundamental economic or longstanding commercial practice, or a challenge in business, graphical user interface214improves on existing graphical user interface devices that do not have no pre-electronic trading analog. The embodiments of graphical user interface214provide significantly more than prior graphical user interface devices that merely allow for setting, displaying, and selecting data or information that is visible on a graphical user interface device. Instead, graphical user interface214utilizes a specific, structured interface directly related to a prescribed functionality that resolves a specifically identified problem of controlling the display of dynamic data updates.

Furthermore, the specific structure and concordant functionality of graphical user interface214distinguishes this system as compared to conventional computer implementations of known procedures. The function of graphical user interface214is not simply the generalized use of computer system204as a tool to conduct a known or obvious process. Instead, graphical user interface214provides an inventive concept that allows for controlling the display of dynamic data updates based on the determined state of a graphical user interface. Rather than the routine or conventional use of computers or the Internet, graphical user interface214overcomes problems that are necessarily rooted in computer technology and that specifically arise in the realm of computer networks, resulting in an improvement to the capabilities of display control system202.

In this illustrative example, human machine interface208can enable user216to interact with one or more computers or other types of computing devices in computer system204. For example, these computing devices can be client devices such as client devices110inFIG.1.

In this illustrative example, display controller206in computer system204is configured to determine scroll position218of page220displayed in viewport222. The viewport222chronologically displays sequence224of dynamic data226within graphical user interface214.

As used herein, a “viewport” is the visual area of a page as it is displayed on a device screen or monitor, such as display system210. Pages that include large amounts of data are often too large to fit on smaller screens. To see the additional content on the page, a user needs to scroll the viewport, either vertically or horizontally.

As used herein, “dynamic data,” also sometimes referred to as streaming data, is information that is periodically updated, changing asynchronously over time as new information becomes available different from one or more different sources. With dynamic data226, sequence224of page220is updated to reflect the chronology of the data events. As new content is received, sequence224is shifted downward, and new data is inserted into sequence224at the top of page220.

In existing systems, these data updates can be disruptive to the user experience, especially when scrolling the viewport to viewing data. For example, as the sequence is shifted due to page updates, individual data items may move within the viewport. This movement can be especially troublesome when viewing rapidly changing data streams that are frequently updated, such as commodity indices and prices.

Display controller206overcomes the limitations of other systems by holding data updates228in buffer230and updating viewport222only when the scroll position218is top-of-page232. In this illustrative example, data updates228are chronologically stored in buffer230as they are received. Display controller206is configured to retrieve the set of data updates228from buffer230in response to determining that scroll position218is top-of-page232. Display controller updates sequence224of dynamic data226displayed in viewport222with the set of data updates228retrieved from buffer230. The viewport222is updated only when scroll position218is top-of-page232.

In one illustrative example, receiving the set of data updates228into buffer230and updating the sequence224of dynamic data226displayed in viewport222is performed asynchronously by determining mutations within document object model234. Mutations can be observed using one or more reactive programming libraries, such as Reactive Extensions for JavaScript (RXJS).

Reactive Extensions (Rx) is an application programming interface (API) for asynchronous and event-based programs using observable sequences and LINQ-style query operators. Rather than actively poll for events, applications subscribe to observable sequences to receive asynchronous notifications of new data and events. Applications then react to events that are pushed from a subscribed observable source.

The Rx push model is represented by the observable pattern of Observable/Observer, wherein the Observable automatically notifies subscribed Observers of any state changes in the observable sequences. These observable sequences represent data sequences, such as a stream of data from a file or web service, web services requests, system notifications, or a series of events such as user input.

In one illustrative example, display controller206determines scroll position218for viewport222by generating document object model234from page assets236used to display sequence224of dynamic data226. Page assets can include any images, CSS, HTML files, and JavaScript, as well as other suitable resources that are necessary to render and display page220.

The Document Object Model (DOM) is an application programming interface (API) for valid HTML and well-formed XML documents. It defines the logical structure of documents, illustrating the logical relationships among page assets. The document object model encompasses not only the structure of the page, but also the behavior of page and the assets that compose the page. Rather than merely persisting page assets, the document object model expresses how page assets are represented, accessed, and manipulated in a graphical user interface.

In this illustrative example, display controller206can then observe a state238of document object model234associated with scroll position218. Display controller206may observe state238of document object model234for example, by calling a get-position function, observing a scroll event, or combinations thereof.

In one illustrative example, display controller206updating sequence224of dynamic data226in near real-time when scroll position218is top-of-page232. As used herein, “near real-time” refers to the time delay, introduced by automated data processing or network transmission, between the occurrence of an event and the use of the processed data, such as for display or feedback and control purposes.

In response to determining that scroll position218is top-of-page232, display controller206retrieving the set of data updates228from buffer230in near real-time as the set of data updates228is received. Display controller206updates sequence224of dynamic data226displayed in viewport222in near real-time as the set of data updates228are received.

In one illustrative example, display controller206may display notification240that the set of data updates228have been received. Display controller206may display notification240in response to determining that scroll position218is not top-of-page232.

In one illustrative example, notification240is a control element that is overlain atop sequence224of dynamic data226in viewport222. As used herein, a “control element” is a graphical and/or functional object that can be manipulated by the user to perform some action. The control element can be, for example, a button, or pop-up, as well as other suitable elements. The control element may be rendered from page assets236.

In this illustrative example, display controller206receives an interaction242with notification240. The interaction242can be received from input system212. Responsive to receiving interaction242, display controller206sets scroll position218to top-of-page232.

In one illustrative example, one or more solutions are present that overcome a problem with controlling a display of dynamic data226updates. As a result, one or more illustrative examples may overcome the limitations of other systems by holding data updates228in buffer230and updating viewport222only when scroll position218is top-of-page232. Data updates are chronologically stored the set of in buffer230as they are received. Display controller206is configured to retrieve a set of data updates228from buffer230in response to determining that scroll position218is top-of-page232, such that viewport222is updated only when scroll position218is top-of-page232. Controlling a display of dynamic data226updates in this manner eliminates disruptions to the user experience caused by, for example, sequence224shifting of individual data items within viewport222when page220is updated.

Computer system204can be configured to perform at least one of the steps, operations, or actions described in the different illustrative examples using software, hardware, firmware, or a combination thereof. As a result, computer system204operates as a special purpose computer system in display controller206in computer system204. In particular, display controller206transforms computer system204into a special purpose computer system as compared to currently available general computer systems that do not have display controller206. In this example, computer system204operates as a tool that can increase at least one of speed, accuracy, or usability of computer system204. In particular, this increase in performance of computer system204can be for the use of graphical user interface214by user216. In one illustrative example, display controller206provides for increased comprehension and speed at which information, such as dynamic data226, can be accessed and comprehended by user216as compared with using current systems.

With reference toFIG.3, a graphical user interface displaying a page of dynamic data is depicted in accordance with an illustrative embodiment. As depicted, graphical user interface300is an example one implementation for graphical user interface140inFIG.1and graphical user interface214inFIG.2.

As depicted, graphical user interface includes sequence310of dynamic data. Sequence310is an example of sequence224ofFIG.2. Dynamic data is displayed chronologically, with newer data items being inserted at the top of sequence310.

With reference toFIG.4, a graphical user interface displaying an updated page of dynamic data is depicted in accordance with an illustrative embodiment. As depicted, data update400has been received and inserted into sequence310of dynamic data.

As depicted, a top the page of dynamic data is viewable within the viewport of graphical user interface300. As dynamic data is received, the sequence310is shifted downward, and data update400is inserted into the sequence310at the top of the page.

With reference toFIG.5, a graphical user interface displaying a page of dynamic data with controlled data updates is depicted in accordance with an illustrative embodiment. As depicted, the viewport of graphical user interface300has been scrolled to display a different portion of the sequence310.

When data updates are received, notification520is displayed overlain atop the sequence310. Notification520is an interactive control element that sets the scroll position to top of page in response to a user interaction with the control.

With reference toFIG.6, a graphical user interface displaying a page of dynamic data with controlled data updates is depicted in accordance with an illustrative embodiment. As depicted, the viewport of graphical user interface300includes pause/play button610. Pause/play button610is an interactive control element that sets the scroll position to top of page in response to a user interaction with the control.

When pause/play button610is set to a pause state, users can scroll through sequence310while preserving a visible holding area at the top of graphical user interface300where new content is published and stacked. When pause/play button610is set to a play state, the holding area releases the newly published content into the sequence310and the user is returned to the top of graphical user interface300.

The illustrations of graphical user interface inFIGS.3-6are provided as one illustrative example of an implementation for controlling a display of dynamic data updates and are not meant to limit the manner in which the display of dynamic data updates can be generated and presented in other illustrative examples. In one example, the viewport of graphical user interface300can be minimized, resized, or closed to enable viewing of other applications and hidden portions of graphical user interface300.

Turning next toFIG.7, a flowchart of a process for controlling a display of dynamic data updates is depicted in accordance with an illustrative embodiment. The process inFIG.7can be implemented in hardware, software, or both. When implemented in software, the process can take the form of program code that is run by one or more processor units located in one or more hardware devices in one or more computer systems. For example, the process can be implemented in display controller206in computer system204inFIG.2.

The process begins by determining a scroll position for a viewport (step710). The viewport chronologically displays a sequence of dynamic data within a graphical user interface.

In responsive to determining that the scroll position is a top-of-page (“yes” at step720), the process retrieves a set of data updates from a buffer (step730). The process updates the sequence of dynamic data displayed in the viewport with the set of data updates (step740). Thereafter, the process terminates. Receiving the set of data updates and updating the sequence of dynamic data displayed in the viewport is performed asynchronously. In this manner, the viewport is updated only when the scroll position is the top-of-page.

With reference next toFIG.8, a flowchart of a process for controlling a display of dynamic data updates is depicted in accordance with an illustrative embodiment. The process inFIG.8is an example of additional processing steps that can be implemented in conjunction with the process ofFIG.7.

The process begins by chronologically storing a set of data updates in a buffer as they are received (step810). Thereafter, the process continues to step710to determine a scroll position for a viewport.

In this illustrative example, step710includes generating a document object model from page assets used to display the sequence of dynamic data (step820). The process observes a state of the document object model associated with the scroll position (step830). Thereafter, the process continues to step720to determining whether the scroll position is a top-of-page.

In responsive to determining that the scroll position is not a top-of-page (“no” at step720), the process displays a notification that the set of data updates have been received (step840). The notification can be a control element that is overlain atop the sequence of dynamic data in the viewport.

Sometime thereafter, a process receives an interaction with the notification (step850). In response, the process sets the scroll position to the top-of-page (step860). Thereafter, the process returns to step720.

Returning now to step720, responsive to determining that the scroll position is a top-of-page (“yes” at step720), the process proceeds to step730to update the sequence of dynamic data. In this illustrative example, the process retrieves the set of data updates from the buffer in near real-time as the set of data updates is received (step870), and thereafter proceeds to step740.

In this illustrative example, step640includes updating the sequence of dynamic data displayed in the viewport in near real-time as the set of data updates is retrieved from the buffer open parentheses step880). Thereafter, the process terminates.

Turning now toFIG.9, a block diagram of a data processing system is depicted in accordance with an illustrative embodiment. Data processing system900can be used to implement server computer104, server computer106, client devices110, inFIG.1. Data processing system900can also be used to implement computer system204inFIG.2. In this illustrative example, data processing system900includes communications framework902, which provides communications between processor unit904, memory906, persistent storage908, communications unit910, input/output (I/O) unit912, and display914. In this example, communications framework902takes the form of a bus system.

Processor unit904serves to execute instructions for software that can be loaded into memory906. Processor unit904includes one or more processors. For example, processor unit904can be selected from at least one of a multicore processor, a central processing unit (CPU), a graphics processing unit (GPU), a physics processing unit (PPU), a digital signal processor (DSP), a network processor, or some other suitable type of processor. Further, processor unit904can may be implemented using one or more heterogeneous processor systems in which a main processor is present with secondary processors on a single chip. As another illustrative example, processor unit904can be a symmetric multi-processor system containing multiple processors of the same type on a single chip.

Memory906and persistent storage908are examples of storage devices916. A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, at least one of data, program code in functional form, or other suitable information either on a temporary basis, a permanent basis, or both on a temporary basis and a permanent basis. Storage devices916may also be referred to as computer-readable storage devices in these illustrative examples. Memory906, in these examples, can be, for example, a random-access memory or any other suitable volatile or non-volatile storage device. Persistent storage908may take various forms, depending on the particular implementation.

For example, persistent storage908may contain one or more components or devices. For example, persistent storage908can be a hard drive, a solid-state drive (SSD), a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage908also can be removable. For example, a removable hard drive can be used for persistent storage908.

Communications unit910, in these illustrative examples, provides for communications with other data processing systems or devices. In these illustrative examples, communications unit910is a network interface card.

Input/output unit912allows for input and output of data with other devices that can be connected to data processing system900. For example, input/output unit912may provide a connection for user input through at least one of a keyboard, a mouse, or some other suitable input device. Further, input/output unit912may send output to a printer. Display914provides a mechanism to display information to a user.

Instructions for at least one of the operating system, applications, or programs can be located in storage devices916, which are in communication with processor unit904through communications framework902. The processes of the different embodiments can be performed by processor unit904using computer-implemented instructions, which may be located in a memory, such as memory906.

These instructions are program instructions and are also referred are referred to as program code, computer usable program code, or computer-readable program code that can be read and executed by a processor in processor unit904. The program code in the different embodiments can be embodied on different physical or computer-readable storage media, such as memory906or persistent storage908.

Program code918is located in a functional form on computer-readable media920that is selectively removable and can be loaded onto or transferred to data processing system900for execution by processor unit904. Program code918and computer-readable media920form computer program product922in these illustrative examples. In the illustrative example, computer-readable media920is computer-readable storage media924.

In these illustrative examples, computer-readable storage media924is a physical or tangible storage device used to store program code918rather than a medium that propagates or transmits program code918. Computer-readable storage media924, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. The term “non-transitory” or “tangible”, as used herein, is a limitation of the medium itself (i.e., tangible, not a signal) as opposed to a limitation on data storage persistency (e.g., RAM vs. ROM).

Alternatively, program code918can be transferred to data processing system900using a computer-readable signal media. The computer-readable signal media are signals and can be, for example, a propagated data signal containing program code918. For example, the computer-readable signal media can be at least one of an electromagnetic signal, an optical signal, or any other suitable type of signal. These signals can be transmitted over connections, such as wireless connections, optical fiber cable, coaxial cable, a wire, or any other suitable type of connection.

Further, as used herein, “computer-readable media” can be singular or plural. For example, program code918can be located in computer-readable media920in the form of a single storage device or system. In another example, program code918can be located in computer-readable media920that is distributed in multiple data processing systems. In other words, some instructions in program code918can be located in one data processing system while other instructions in program code918can be located in one data processing system. For example, a portion of program code918can be located in computer-readable media920in a server computer while another portion of program code918can be located in computer-readable media920located in a set of client computers.

The different components illustrated for data processing system900are not meant to provide architectural limitations to the manner in which different embodiments can be implemented. In some illustrative examples, one or more of the components may be incorporated in or otherwise form a portion of, another component. For example, memory906, or portions thereof, may be incorporated in processor unit904in some illustrative examples. The different illustrative embodiments can be implemented in a data processing system including components in addition to or in place of those illustrated for data processing system900. Other components shown inFIG.9can be varied from the illustrative examples shown. The different embodiments can be implemented using any hardware device or system capable of running program code918.