DYNAMIC GRAPHICAL CONTROL OF STRUCTURED INPUT DATA

Systems and methods for dynamic graphical control of structured data input are described. A dynamic graphical control may be included in a user interface generated on a user device from a set of data values. User input to shape the dynamic graphical control is received at the user interface such that modified data values may be determined based on the received user input. The modified data values, including the shaped dynamic graphic control, is displayed on the user interface.

TECHNICAL FIELD

The present disclosure generally relates to data systems and, more particularly, to dynamic graphical control of structured input data.

BACKGROUND

Input of data within financial and/or operational planning systems largely relies on manual input of data values into data tables. Often, data is inputted to forecast data for multiple periods, which data should follow certain patterns or have a certain structure. For example, a revenue forecast of $1.2 million for the year is expected to accrue evenly for each month, or expected to grow (linearly, log, repeating pattern, etc.) month on month but still add up to $1.2 million. Or, the planner may know exactly certain values but others are uncertain or should vary according to these patterns.

Existing planning systems rely on direct input and manipulation of data values within data tables. For example, some planning systems may be configured with a series of input screens that ultimately lead to a spread of data within a data table. However, these input screens and direct manual manipulation of data values is cumbersome and time consuming.

Systems and methods for improving the manipulation and creation of input data may be advantageous. A reliable and efficient way of modifying data values for structured input may be needed.

SUMMARY

Various aspects for dynamic graphical control of structured input data for data planning systems are described.

An interactive tool by which planners are able to create their input by manipulating a graphical representation, “sculpting” the shape of the data by manually adjusting the graphical tool in intuitive ways is further described herein. A dynamic graphical control may be included in a user interface generated on a user device from a set of data values. User input to shape the dynamic graphical control is received at the user interface such that modified data values may be determined based on the received user input. The modified data values, including the shaped dynamic graphic control, is displayed on the user interface.

The various embodiments advantageously apply the teachings of computer-based planning systems to improve the functionality of such computer systems. The various embodiments include operations to overcome or at least reduce the issues previously encountered in planning systems and, accordingly, are more effective and/or cost-efficient than other planning systems. That is, the various embodiments disclosed herein include hardware and/or software with functionality to improve dynamic graphical control of structured input data. Accordingly, the embodiments disclosed herein provide various improvements to financial and/or operational planning systems.

It should be understood that language used in the present disclosure has been principally selected for readability and instructional purposes, and not to limit the scope of the subject matter disclosed herein.

DETAILED DESCRIPTION

FIG.1shows an embodiment of an example planning system100with a user device110connected, through a network102, to a data modeling platform130for structured input of data from a user interface104displayed on the user device110. While some example features are illustrated, various other features have not been illustrated for the sake of brevity and so as not to obscure pertinent aspects of the example embodiments disclosed herein. In some embodiments, user device110and data modeling platform130are computer-based components that may be interconnected by a network102. Additional components of an example planning system100, such as data store160, may also be connected to network102.

In some embodiments, one or more networks102may be used to communicatively interconnect various components of planning system100. For example, each component, such as user device110, data modeling platform130and data store160, may include one or more network interfaces and corresponding network protocols for communication over network102. Network102may include a wired and/or wireless network (e.g., public and/or private computer networks in any number and/or configuration) which may be coupled in a suitable way for transferring data. For example, network102may include any means of a conventional data communication network such as a local area network (LAN), a wide area network (WAN), a telephone network, such as the public switched telephone network (PSTN), an intranet, the internet, or any other suitable communication network or combination of communication networks. In some embodiments, network102may comprise a plurality of distinct networks, subnetworks, and/or virtual private networks (VPN) may be used to limit communications among specific components. For example, user device110may be on a limited access network such that control data may only be transmitted between a user device110and data modeling platform130, enabling the data modeling platform130to securely receive structured data input through the user device110and enable real-time manipulation of the structured data through a dynamic graphical control.

User device110may be any suitable computer device, such as a computer, a computer server, a laptop computer, a tablet device, a netbook, an internet kiosk, a personal digital assistant, a mobile phone, a smart phone, a gaming device, or any other computing device. User device110is sometimes called a host, client, or client system. In some embodiments, user device110may host or instantiate one or more applications for interfacing with planning system100. For example, user device110may be a personal computer or mobile device running a financial planning management application configured to provide a user interface for data modeling platform130. In some embodiments, user device110may be configured to access data accessible by the data modeling platform130directly through network102. In some embodiments, one or more functions of data modeling platform130may be instantiated in user device110and/or one or more functions of user device110may be instantiated in data modeling platform130.

User device110may include one or more processors112for executing compute operations or instructions stored in memory114for accessing planning data and other functions of data modeling platform130through network102. In some embodiments, processor112may be associated with memory114and input/output device116for executing both data display operations and planning system management operations. Processor112may include any type of processor or microprocessor that interprets and executes instructions or operations. Memory114may include a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor112and/or a read only memory (ROM) or another type of static storage device that stores static information and instructions for use by processor112and/or any suitable storage element. In some embodiments, user device110may allocate a portion of memory114and/or another local storage device (in or attached to user device110) for storing planning data for user device110. In some embodiments, user device110may include one or more input/output (I/O) devices116. For example, a graphical display, such as a monitor and/or touch screen display, and/or other user interface components such as a keyboard, a mouse, function buttons, speakers, vibration motor, a track-pad, a pen, voice recognition, biometric mechanisms, and/or any number of supplemental devices to add functionality to user device110. Network interface118may include one or more wired or wireless network connections to network102. Network interface118may include a physical interface, such as an ethernet port, and/or related hardware and software protocols for communication over network102, such as a network interface card, wireless network adapter, and/or cellular data interface.

User device110may include a plurality of modules or subsystems that are stored and/or instantiated in memory114for execution by processor112as instructions or operations. For example, memory114may include a data manager120configured to provide a user interface for selectively creating, manipulating, and displaying real-time, near real-time, and/or stored structured data for planning in the data modeling platform130. Memory114may include dynamic curve generator122configured to dynamically render curves responsive to user input received at a user interface104. Memory114may include a user interface manager124configured to provide a user interface104for generating, modifying, and shaping data received through user device110. Memory114may include other modules, not illustrated, configured to perform functionality of the user interface104, including rendering data values as graphical user interface elements such as control points, toggles, sliders, and graphical control curves using traditional Bezier curve mathematical formulas.

Data modeling platform130may include a housing and a bus interconnecting at least one processor132, at least one memory134, at least one storage device140, and at least one interface, such as application programming interface136and/or network interface138. The housing (not shown) may include an enclosure for mounting the various subcomponents of data modeling platform130, locating any physical connectors for the interfaces, and protecting the subcomponents. Some housings may be configured for mounting within a rack system. The bus (not shown) may include one or more conductors that permit communication among the components of data modeling platform130. Processor132may include any type of processor or microprocessor that interprets and executes instructions or operations. Memory134may include a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor132and/or a read only memory (ROM) or another type of static storage device that stores static information and instructions for use by processor132and/or any suitable storage element.

In some embodiments, data modeling platform130may include application programming interface136configured to transfer data between the data modeling platform130, data store160, and/or a user device110through network102. For example, application programming interface136may include functionality for data to be easily transferred between components of the planning system100. In some embodiments, data modeling platform130may include multiple application programming interfaces136for communication with different types of applications on user devices110and/or data stores160over network102.

Network interface138may include one or more wired or wireless network connections to network102. Network interface138may include a physical interface, such as an ethernet port, and related hardware and software protocols for communication over network102, such as a network interface card.

Storage devices140may include one or more non-volatile memory devices configured to store data, such as a hard disk drive (HDD), solid state drive (SSD), flash memory-based removable storage (e.g., secure data (SD) card), embedded memory chips, etc. In some embodiments, storage device140is, or includes, a plurality of solid-state drives.

In some embodiments, a respective data storage device140may include a single medium device, while in other embodiments the respective data storage device140includes a plurality of media devices. In some embodiments, media devices include NAND-type flash memory or NOR-type flash memory. In some embodiments, storage device140may include one or more hard disk drives. In some embodiments, storage devices140may include a flash memory device, which in turn includes one or more flash memory die, one or more flash memory packages, one or more flash memory channels or the like. However, in some embodiments, one or more of the data storage devices140may have other types of non-volatile data storage media (e.g., phase-change random access memory (PCRAM), resistive random access memory (ReRAM), spin-transfer torque random access memory (STT-RAM), magneto-resistive random access memory (MRAM), etc.).

Data modeling platform130may include a plurality of modules or subsystems that are stored and/or instantiated in memory134for execution by processor132as instructions or operations. For example, memory134may include a user interface (UI) control subsystem150configured to control user interfaces104operating on user devices110. Memory134may include a data capture subsystem152configured to receive data generated from user devices110. Memory134may include a data storage subsystem154configured to store received data in storage device(s)140and/or data store160over the network102. Memory134may include a data analysis subsystem156configured to analyze data for defined patterns, such as repeating data values, recognized mathematical curves, such as linear, logarithmic, and exponential growth, and combinations thereof. Memory134may include a data display subsystem158configured to selectively display data on user device110, which may be attached to data modeling platform130or remotely connected via network102. In some embodiments, the functions of dynamic curve generator122may be integrated in data modeling platform130and instantiated in memory134as a dynamic curve generating subsystem and/or a subset of functions of analysis subsystem156.

In some embodiments, planning system100may include one or more remote and/or cloud-based resources for supporting the functions of data modeling platform130and/or user device110. For example, planning system100may include a data store160configured to host some, all, or select portions of the storage functions of data modeling platform130, such as a cloud-based network attached storage system, distributed storage system, or on-premise data storage system. In some embodiments, the majority of functions described above for data modeling platform130may reside in data modeling platform130and select functions may be configured to leverage additional resources in a network server (not pictured) and/or data store160. For example, a network server may be configured to support specialized and/or processing intensive numerical algorithms to supplement data analysis subsystem156, and/or data store160may be configured to support archiving of data for longer term storage.

FIGS.2a-2fshows example user interfaces that during normal operation that may be implemented in a computer-based planning system200, such as planning system100inFIG.1. InFIG.2a, an example user interface includes a slider user interface element202that enables a user to increase a forecasted projection of data by a certain percentage, such as +20%, over the prior year's data. The slider user interface element202may include a numeric value that represents the increase, such as +12,000.FIG.2aalso illustrates a control point user interface (UI) element204that appear as dots on a line user interface element208. Each control point UI element204may be dragged upwards or downwards, in the same direction as the slider user interface element202that indicates a percentage increase or decrease. A locking toggle user interface element206may be indicated by a lock symbol on a control point UI element204and differentiated by color, in an embodiment. Below the control interface that includes the control points204and line208drawn between the control points, an interactive data table210may be displayed that provides numeric data values corresponding to the underlying data being planned. InFIG.2A, an example of 1000 per month, totally 12000 for year to date (YTD) is shown for illustration purposes. In an embodiment, this baseline forecast may be generated to provide a user a basis for beginning the process of “sculpting” the data based on the uploaded data in the planning system200.

InFIG.2b, the control point UI element204above the last month in the data table210, December, has been dragged upwards to +50% or +4,000. This has caused a linear increase across the line UI element208with a straight line upward. The slider UI element202reflects the change in the underlying data, +25% or +14,000. The data values in the interactive data table210are similarly updated, according to data values uploaded to the planning system200and the various formulas and algorithms implemented in the system200.

InFIG.2c, a curved line modifier212is dragged leftwards to introduce a curve in the line user interface element208. The curved line modifier212is represented by a blue diamond inFIG.2c, as an example, but other symbols or differentiating attributes may be used. The curved line modifier212may rely on Bezier curve calculations to determine the curvature of the line, in an embodiment. The slider UI element202indicates the effect of the curved line modifier212, showing a +28% increase, or +16,000. Additionally, the interactive data table210reflects updated data values, showing the impact of the curved line modifier212.

InFIG.2d, a second curved line modifier214is dragged downward to introduce a new curve in the line UI element208. The slider UI element202indicates the effect of the curved line modifier214, showing a +19% increase, or +11,000. Similarly, the interactive data table210reflects updated data values, showing the impact of the curved line modifier214.

InFIG.2e, a known value is introduced through the control point UI element204over the month of August. This may correspond to the user inputting the known value for that month, or known decrease in percentage, here −50% or −1,200. However, because the slider UI element202has been toggled to a “lock,” the expected overall increase of +19% or +11,000 fromFIG.2dremains the same. The interactive data table210is updated to show the impact of the known value in August.

InFIG.2f, a line smoothing user element216is used to smooth the line UI element208. For example, the user may identify the known data value in August, but may identify that the growth in the value for the next month, September, may be more gradual than shown inFIG.2e. Thus, the data may be “sculpted” using Bezier curve calculations to introduce more curvatures in the line UI element208by dragging one or more diamond icons outwards horizontally from the control point UI element204at the known value. The interactive data table210is updated with new values that reflect the impact of the user input on the line smoothing UI element216.

FIG.3schematically shows a dynamic control interaction stage that during normal operation that may be implemented in a computer-based planning system300, such as planning system100inFIG.1. At block302, a data planning graphical user interface (GUI) is loaded. For example, upon operation of planning system200, the data planning GUI is loaded on an application operating on a user device connected to the data modeling platform. In some embodiments, the GUI is loaded with data from an existing project in the planning system300.

In some embodiments, a dynamic control interaction stage304may be initiated during or after the data planning GUI has been loaded. For example, a data modeling platform may be connected to planning system300and/or instantiated in one of the components thereof. In some embodiments, the timing and length of dynamic control interaction stage304may be continuous based on the user input interactions with the user interface connected to the data modeling platform.

In some embodiments, dynamic control interaction stage304may be completed only once. In some embodiments, dynamic control interaction stage304may be re-executed in response to events, changes, or updates that may change the data planning (e.g., known data values, unexpected events, data patterns emerging, etc.) that require a modification to an existing data spreading plan.

During dynamic control interaction stage304, data may be retrieved at block310. For example, the planning system300may include data from an existing project that may be retrieved during or after the data planning GUI is loaded. At block312, an initial planning control GUI may be generated. For example, the control GUI may include control points corresponding to data values, a line connecting the control points, and a slider GUI corresponding to an aggregated data value.

After the initial planning control GUI generation at block312, the GUI may be displayed at block314. For example, the GUI may include an interactive data table that shows the data values being created by interacting with the control points, line connecting the control points, and the slider GUI by a user through the user interface on a user device connected to the planning system300or instantiated in an interconnected data modeling platform.

After the display of the GUI at block314, GUI input may be received at block316. For example, a control point may be dragged upwards or downwards to indicate an increase or decrease in the corresponding data value, as described above and illustrated with respect toFIGS.2a-2f, where the control point may be selected via the user interface at the user device connected to the planning system300or instantiated in an interconnected data modeling platform. Additionally, other GUI input may be received at block316, such as a slider GUI receiving user input to slide an element upwards or downwards that corresponds to increasing or decreasing an aggregate data value. Further, curvature may be added to the line GUI element connecting the control points as GUI input that may be received at block316. By adding curvature to the line through dragging an icon connected to the line GUI element in any direction, the “shape” of the data may be “sculpted” such that data values may be modified in the interactive data table. In some embodiments, the curvature may be a “smoothing” type of user interaction in which the line or curve is smoothed or flattened by dragging an icon outwards. Another type of GUI input that may be received at block316includes “locking” an element at a certain data value. For example, a slider GUI element may be locked to ensure that the aggregate data value remains at a certain percentage increase, such as 19%, or data value increase, such as +11,000. A toggle or other user interaction may be used to “lock” in a certain data value for an element. As another example of “locking,” a control point may be locked in at a particular data value, where the user knows a certain value or percentage increase or decrease may occur.

After receiving GUI input at block316, mathematical calculations may be executed at block318to help render a control GUI at block328. In some embodiments, mathematical calculations318may include Bezier curve analysis320. For example, Bezier curve analysis may use traditional Bezier curve calculations to determine a curvature of a line between at least two control points. The Bezier curve analysis320may include one or more modules to determine data values corresponding to the curvature of the line.

In some embodiments, mathematical calculations318may include line generation322. For example, line generation322may include a graphical method that draws the line between control points in the GUI based on the GUI input received and the data values retrieved at block310.

In some embodiments, mathematical calculations318may include a control point manager324. For example, the control points correspond to a created data value in the interactive data table. In an embodiment, the retrieved data at block310may serve as a baseline value for the control points, but as the user interacts with the control GUI, the control points may shift upwards or downwards, consequently changing the corresponding created data value in the interactive data table. The control point manager324may track the data values associated with the control points in the GUI.

In some embodiments, mathematical calculations318may include a data lookup table326. For example, a data lookup table may be instantiated with data retrieved at block310to provide a baseline data set. In an embodiment, the data lookup table326may receive uploaded data at block306. The data lookup table326may also be used to store various mathematical calculations318, such as linear, logarithmic, exponential, and other increases or decreases of the data values. Additionally, various constants and formulas may be used and stored with respect to the data lookup table326to work in conjunction with Bezier curve analysis320, line generation322, and/or control point manager324.

Based on the mathematical calculations318, a control GUI may be rendered at block328. For example, the control GUI may include at least one of the following: the control points corresponding to the calculated data values based on the received GUI input at block316, the line drawn between those control points, a curve modifier icon for introducing curvature to the line between control points, a locking toggle element for enabling a user to lock in a certain value or percentage, and a slider GUI associated with the aggregate data value.

After the control GUI is rendered at block328, the dynamic GUI is presented at block330. This includes an updated data values corresponding to the control points on the line that have been modified based on the received GUI input at block316. The dynamic control interaction stage304may repeat continuously as additional GUI input is received.

FIG.4schematically shows selected modules of a planning system400configured for dynamic graphical control for structured data input. Planning system400may incorporate elements and configurations similar to those shown inFIGS.1-3. For example, planning system400may be configured in a data modeling platform similar to data modeling platform130. In some embodiments, one or more of the selected modules may access or be instantiated in the processors, memories, and other resources of user devices similar to user device110. For example, a user device110and its embedded or attached compute resources may be configured with some or all functions of UI controller430to provide real-time user interface control of data values in a distributed fashion at the edge of planning system400before selectively providing the data values to other system components, such as a data modeling platform, for additional analysis and/or use in a planning application.

Surveillance system400may include a bus410interconnecting at least one processor412, at least one memory414, and at least one interface, such as application programming interface416and network interface418. Bus410may include one or more conductors that permit communication among the components of planning system400. Processor412may include any type of processor or microprocessor that interprets and executes instructions or operations. Memory414may include a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor412and/or a read only memory (ROM) or another type of static storage device that stores static information and instructions for use by processor412and/or any suitable storage element such as a hard disk or a solid state storage element. In some embodiments, processor412and memory414may be compute resources available for execution of logic or software instructions stored in memory414and computation intensive tasks, such as UI rendering engine436, may be configured to monitor and share these resources.

Application programming interface416may be configured for connection with one or more user devices and/or data modeling platforms. For example, application programming interface416may include a software interface that enables data transfer and/or communications between applications operating on user devices110and/or data modeling platform130.

Network interface418may include one or more wired or wireless network connections to network, similar to network102. Network interface418may include a physical interface, such as an ethernet port, and related hardware and software protocols for communication over the network, such as a network interface card or wireless adapter.

Surveillance system400may include one or more non-volatile memory devices420configured to store data. For example, non-volatile memory devices420may include a plurality of flash memory packages organized as an addressable memory array and/or one or more solid state drives or hard disk drives. In some embodiments, non-volatile memory devices420may include a plurality of storage devices within, attached to, or accessible by a data modeling platform for storing and accessing data.

Planning system400may include a plurality of modules or subsystems that are stored and/or instantiated in memory414for execution by processor412as instructions or operations. For example, memory414may include a UI controller430configured to control at least one user interface operating on a user device110, capture and store user input from that user device, provide real-time analysis, and enable user access, such as through data display application450. Memory414may include a data storage estimator configured to calculate an estimate of storage requirements based on usage. Memory414may include a data display application configured to provide a user interface for displaying and managing data values and/or planning system400.

User interface (UI) controller430may include interface protocols, functions, parameters, and data structures for connecting to and controlling user interfaces operating on user devices, capturing and storing data from those user interfaces, and interfacing with data analysis module442and data display application450. For example, user interface controller430may be an application and/or corresponding hardware in a data modeling platform configured for network and/or direct communication with a set of associated user devices. UI controller430may be configured as a central point for data planning from the associated user devices that enables analysis of captured user input by analytics engines and presentation of transformed data to a user through data display application450. In some embodiments, UI controller430may be divided among one or more data modeling platforms, server, and/or user device.

In some embodiments, UI controller430may include a plurality of hardware and/or software modules configured to use processor412and memory414to handle or manage defined operations of UI controller430. For example, UI controller430may include a UI control interface432, a UI event capture interface434, a UI rendering engine436, and a UI template designer438.

UI control interface432may include UI interface protocols and a set of functions, parameters, and data structures for using, configuring, communicating with, and providing command messages to user interfaces on applications operating on user devices through application programming interface416and/or network interface418. For example, UI control interface432may include an API and command set for interacting with applications in each user device to access one or more UI functions. In some embodiments, UI control interface432may be configured to set UI configuration parameters for UI elements, such as sliders, toggles, control points, lines connecting control points, and/or otherwise manage operation of user interfaces. For example, UI control interface432may maintain a UI configuration table, pages, or similar data structures that includes entries for each user interface being managed and their respective user device-specific configuration parameters, active control features, and other configuration and control information for managing the user interfaces.

UI event capture interface434may include interface protocols and a set of functions, parameters, and data structures for receiving UI event data from associated user devices and/or user interfaces. For example, UI event capture interface434may include data channels and related data buffers for managing a plurality of user interface events. In some embodiments, each user interface may a dedicated data channel for continuously and/or selectively sending its event data to UI event capture interface434. For example, received UI event data may be buffered by UI event capture interface434before being transported to UI rendering engine436, UI template designer438, and data analysis module442. In some embodiments, UI event capture interface434may be configured to transport data to the data analysis module442during a dynamic control interaction stage. In some embodiments, UI event capture interface434may receive or generate data based on received data analysis.

In some embodiments, UI event capture interface434may include a UI element manager434.1configured to identify and manage the UI elements sending UI event data from the user devices. For example, UI element manager434.1may manage status and state of each UI element. In some embodiments, UI element manager434.1may selectively send data to data analysis module442for data analysis to identify data value patterns and/or provide a notification to data analysis module442of the availability and storage location of data for analysis in non-volatile memory420. In some embodiments, UI element manager334.1may include configurable UI elements. For example, a slider GUI, a control point, a line connecting multiple control points, a curve modifier, and other UI elements may each be configured for specific processing, priority, and timing, including selective allocation of compute resources to support each UI element.

UI rendering engine436may include one or more rendering algorithms and a set of functions, parameters, and data structures for processing user input received from associated user devices and/or user interfaces to enable real-time or near-real-time response to received user input, where the response is a graphical rendering of the UI element responsive to the received user input. In some embodiments, UI rendering engine436may include a data handler436.1configured to determine different types of data represented by UI elements and incorporate methods of handling the data accordingly.

In some embodiments, data handler436.1may be configured for one or more data types, sometimes referred to as a data class, such as inventory, currency, operational metrics, etc. Data handler436.1may interact with a UI control manager436.2, such as a software module to track and manage status of UI controls. In some embodiments, UI rendering engine436may be configured for a plurality of data types and include data handlers trained to each data type. Data handler436.1may be configured to interact with other data including platform data436.3. For example, platform data436.3may include position information of UI elements, such as rendering canvas coordinates, graphical information regarding icons and other visual elements, and data type or class. UI event logic436.4may include a plurality of event conditions based on detected data objects and whether other systems or subsystems should be notified of the UI event. These event conditions may include logical evaluation of one or more parameters from the output data, generally comparing output data parameters to corresponding UI event threshold parameters for determining a UI event. As another example, UI event logic436.4may include descriptive information of a UI event occurring, such as a recognized hand gesture, a recognized user input on a UI control, such as dragging a UI element upwards, downwards, or in other directions. In some embodiments, UI control manager436.2may interact with control UI data420.2stored in non-volatile memory420, such as graphical icon data for rendering purposes. In some embodiments, platform data436.3may be stored as configuration values420.3in non-volatile memory420, such as a data table of metadata tags associated with uploaded data420.1.

UI template designer438may enable the template design of a user interface (UI) to represent data table values438.1corresponding to the baseline control values438.2from a data table420.4stored in non-volatile memory420. For example, uploaded data420.1may be copied to a data table420.4such that baseline control values438.2may be generated, such as an increase by 20% of product sales for the year. The baseline control values438.2may be generated by data analysis module442having a data calculating engine446to create baseline data values446.1. For example, the uploaded data420.1may include data representing product sales for the past year by month. Using system configuration values438.3, which may, in some embodiments, correspond to configuration values420.3stored in non-volatile memory420, the UI template designer438may identify an initial data planning shape of an overall increase of sales by 20%, resulting in the flat control line depicted inFIG.2a. In some embodiments, display format values438.4may be received via a user device connected through a network interface418and stored in configuration values420.3in non-volatile memory420. For example, different user devices have display format values438.4, such as screen resolution, number of pixels, screen dimensions, etc.

In some embodiments, UI template designer438may be configured to data spread values438.5as calculated by data calculating engine446in the data analysis module442to determine data adjustment values438.6, such as the values of data adjustment that has occurred based on the template design. For example, the 20% increase in product sales may be reflected as an actual data value and spread amongst a number of divisions, such as 12 months in a year. Thus, the data spread values438.5may be reflected in an interactive data table420.4, as stored in the non-volatile memory420. Data adjustment values438.6, in this example, may refer to the numerical value of the number of increased product sales, such as +12,000, as shown inFIG.2a.

In some embodiments, UI event logic436.4may include logical rules configured to trigger data analysis from the data analysis module442. For example, UI event logic436.4may be embodied in a rules engine that receives and/or maintains state information for UI elements and data analysis of data table values438.1, data spread values438.5, data adjustment values438.6and/or baseline data values446.1to determine patterns, curves, and/or other data analysis responsive to user input at the UI event capture interface434. In some embodiments, UI event logic436.4may be configured to determine events that are used as triggers for generating various recognized patterns, such as linear growth curve, logarithmic growth curve, and exponential growth curve. For example, user input received at the UI event capture interface434may indicate the user “sculpting” the data to form an exponential curve by dragging control points in an exponential curve shape on the user interface. The UI event logic436.4may recognize such an exponential curve and, through the UI event analyzer446.3from the data analysis module442, generate baseline data values446.1that correspond to the recognized exponential curve. Additionally, the Bezier curve generator446.2may be used to modify a line connecting control points to add curvature. For example, a user may wish to add a sharper exponential curve between two control points by dragging a modifier icon to create a sharper, more exponential curve. The data analysis module442would, based on this user input captured at the UI event capture interface434, be triggered to generate data that corresponds to the sharper exponential curve. In some embodiments, UI event logic436.4may generate an event notification and send it over a network to data display application450to automatically execute one or more user-defined operations, such as implementing a known exponential curve on the UI display module452using calculated data values452.1and graphical UI values452.2for the known exponential curve.

In some embodiments, data analysis module442may include a data calculating engine446for generating data calculations in collaboration with the received user input from the UI event capture interface434. For example, data calculating engine446may rely on baseline data values446.1to calculate related graphical data points for a Bezier curve as determined by a Bezier curve generator446.2based on the system configuration values438.3and display format values438.4. In some embodiments, data calculating engine446may include a UI event analyzer446.3for analyzing the status of UI elements from the UI element manager434.1and use UI event logic436.4to determine recognized curves and patterns, as described above. In an embodiment, the amount of distance of received user input and the directionality of the received user input are data points captured by the UI event capture interface434and are used in by the Bezier curve generator446.2to render the amount of curvature in a new line. Additionally, various templates may include data table values438.1that include data spread values438.5and data adjustment values438.6associated with recognized curves and patterns for use by the data analysis module442. For example, a known logarithmic curve may be used in response to user input indicating the user's desire to smooth out or flatten a curve between control points. The known logarithmic curve may be associated with data spread values438.5and/or UI event data420.5.

Data display application450may include data interface protocols and a set of functions, parameters, and data structures for managing display of data at a user device through a user interface for a viewing user to continue shaping or manipulating structured data for planning purposes. For example, data display application450may operate a user interface upon which a UI controller430generates a UI control interface432and uses a UI event capture interface434to record user input. In some embodiments, uploaded data420.1appears on the data display application450as an interactive data table. Additionally, the UI rendering engine436manages the rendering of the user interface on the data display application450. For example, planning system400may support continuous display and/or capture of user input at the user interface on a user device operating the data display application450. The UI display module includes, in some embodiments, calculated data values452.1from the data calculating engine446and graphical UI values452.2from the UI rendering engine. In some embodiments, configuration values420.3are used by the data display application450to generate a user interface that is correctly formatted for the user device.

Data display application450may include interface protocols, functions, parameters, and data structures for providing a user interface for generating and modifying data planning and/or displaying data in the planning system300, such as through UI controller430. For example, data display application450may be a software application running on a user device integral to, connected to, or in network communication with UI controller430and/or a data modeling platform. In some embodiments, data display application450may run on a separate computing device from UI controller430, such as a personal computer, mobile device, or other user device. In some embodiments, data display application450may be configured to interact with APIs presented by an access/display manager.

In some embodiments, data display application450may include a plurality of hardware and/or software modules configured to use processor412and memory414to handle or manage defined operations of data display application450. For example, data display application450may include a UI display module452.

The UI display module452may include a set of functions, parameters, and data structures for navigating and displaying data generated through UI controller430. For example, the UI display module452may include a graphical user interface and interactive controls for displaying lists, tables, thumbnails, or similar interface elements for selecting and displaying data planning for various purposes. In some embodiments, the UI display module452may enable split screen display of multiple planning operations. This would enable a viewing user to identify different scenarios with different manipulations of the underlying data, as illustrated inFIGS.2a-2f.

As shown inFIG.5, planning system400may be operated according to an example method of generating a set of data values through a data planning graphical control, i.e., according to method500illustrated by blocks510-516inFIG.5.

At block510, a user interface including a data planning graphical control element and a set of data values may be generated. For example, a user interface may be generated based on uploaded data, where the user interface includes various UI control elements.

At block512, user input is received to modify the data planning graphical control element. For example, a viewing user of the user interface may generate user input, such as dragging a control point upwards or downwards in the user interface, to modify the UI control element(s). Various UI control elements may be included in the user interface as described above with respect toFIGS.2a-2f, such as control points, lines connecting the control points, a slider GUI, a locking toggle element on other control elements, and a curve modifying icon.

At block514, modified data values may be determined based on the received user input. For example, based on the received user input, a data analysis module may determine modified data values using the uploaded data as a basis.

At block516, a display of the modified data values is generated, the display including the modified data planning graphical control element on the user interface as the set of data values. For example, the modified data values are used to generate the graphical control element as the set of data values, as described at block510. The method500then continues to block510and repeats for additional user input.

While at least one exemplary embodiment has been presented in the foregoing detailed description of the technology, it should be appreciated that a vast number of variations may exist. It should also be appreciated that an exemplary embodiment or exemplary embodiments are examples, and are not intended to limit the scope, applicability, or configuration of the technology in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing an exemplary embodiment of the technology, it being understood that various modifications may be made in a function and/or arrangement of elements described in an exemplary embodiment without departing from the scope of the technology, as set forth in the appended claims and their legal equivalents.

As will be appreciated by one of ordinary skill in the art, various aspects of the present technology may be embodied as a system, method, or computer program product. Accordingly, some aspects of the present technology may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or a combination of hardware and software aspects that may all generally be referred to herein as a circuit, module, system, and/or network. Furthermore, various aspects of the present technology may take the form of a computer program product embodied in one or more computer-readable mediums including computer-readable program code embodied thereon.

Any combination of one or more computer-readable mediums may be utilized. A computer-readable medium may be a computer-readable signal medium or a physical computer-readable storage medium. A physical computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, crystal, polymer, electromagnetic, infrared, or semiconductor system, apparatus, or device, etc., or any suitable combination of the foregoing. Non-limiting examples of a physical computer-readable storage medium may include, but are not limited to, an electrical connection including one or more wires, a portable computer diskette, a hard disk, random access memory (RAM), read-only memory (ROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a Flash memory, an optical fiber, a compact disk read-only memory (CD-ROM), an optical processor, a magnetic processor, etc., or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium may be any tangible medium that can contain or store a program or data for use by or in connection with an instruction execution system, apparatus, and/or device.

Computer code embodied on a computer-readable medium may be transmitted using any appropriate medium, including but not limited to, wireless, wired, optical fiber cable, radio frequency (RF), etc., or any suitable combination of the foregoing. Computer code for carrying out operations for aspects of the present technology may be written in any static language, such as the C programming language or other similar programming language. The computer code may execute entirely on a user's computing device, partly on a user's computing device, as a stand-alone software package, partly on a user's computing device and partly on a remote computing device, or entirely on the remote computing device or a server. In the latter scenario, a remote computing device may be connected to a user's computing device through any type of network, or communication system, including, but not limited to, a local area network (LAN) or a wide area network (WAN), Converged Network, or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider).

Various aspects of the present technology may be described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus, systems, and computer program products. It will be understood that each block of a flowchart illustration and/or a block diagram, and combinations of blocks in a flowchart illustration and/or block diagram, can be implemented by computer program instructions. These computer program instructions may be provided to a processing device (processor) of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which can execute via the processing device or other programmable data processing apparatus, create means for implementing the operations/acts specified in a flowchart and/or block(s) of a block diagram.

Some computer program instructions may also be stored in a computer-readable medium that can direct a computer, other programmable data processing apparatus, or other device(s) to operate in a particular manner, such that the instructions stored in a computer-readable medium to produce an article of manufacture including instructions that implement the operation/act specified in a flowchart and/or block(s) of a block diagram. Some computer program instructions may also be loaded onto a computing device, other programmable data processing apparatus, or other device(s) to cause a series of operational steps to be performed on the computing device, other programmable apparatus or other device(s) to produce a computer-implemented process such that the instructions executed by the computer or other programmable apparatus provide one or more processes for implementing the operation(s)/act(s) specified in a flowchart and/or block(s) of a block diagram.

A flowchart and/or block diagram in the above figures may illustrate an architecture, functionality, and/or operation of possible implementations of apparatus, systems, methods, and/or computer program products according to various aspects of the present technology. In this regard, a block in a flowchart or block diagram may represent a module, segment, or portion of code, which may comprise one or more executable instructions for implementing one or more specified logical functions. It should also be noted that, in some alternative aspects, some functions noted in a block may occur out of an order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or blocks may at times be executed in a reverse order, depending upon the operations involved. It will also be noted that a block of a block diagram and/or flowchart illustration or a combination of blocks in a block diagram and/or flowchart illustration, can be implemented by special purpose hardware-based systems that may perform one or more specified operations or acts, or combinations of special purpose hardware and computer instructions.

While one or more aspects of the present technology have been illustrated and discussed in detail, one of ordinary skill in the art will appreciate that modifications and/or adaptations to the various aspects may be made without departing from the scope of the present technology, as set forth in the following claims.