Method and system for invoking and performing actions from external applications within currently open applications
The method enables quick actions within a primary application window by invoking secondary applications using callback functions, addressing navigation inefficiencies and resource issues in GUI systems, thereby enhancing usability and productivity.
Patent Information
- Application Number
- JP2022568806
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-29
- Filing Date
- 2021-05-10
- Publication Date
- 2026-01-14
- Estimated Expiration
- 2041-05-10
AI Technical Summary
Current GUI systems require users to navigate through multiple application windows and sections to perform actions, leading to increased training needs, reduced productivity, and inefficient resource usage due to frequent HTTP requests, impacting user experience and performance.
A method that allows invoking and executing actions from external applications within a primary application window using callback functions, pausing the primary application to display secondary application windows for quick actions, and automatically resuming the primary application upon completion.
Significantly reduces the need for user training and improves productivity by allowing actions to be performed from any application page without leaving the current interface, minimizing resource usage and enhancing responsiveness.
Smart Images

Figure 0007798797000008 
Figure 0007798797000009 
Figure 0007798797000010
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to co-pending U.S. Provisional Patent Application No. 63 / 022703, filed May 11, 2020, entitled "Method and system for calling / executing an action from an outside application within an existing open application," and U.S. Patent Application No. 17 / 215620, filed March 29, 2021, entitled "Method and system for calling / executing an action from an outside application within an existing open application," the entire contents of which are incorporated herein by reference, including any figures, tables, formulas, or drawings.
[0002] Technical Field The systems and methods disclosed herein relate generally to software improvements, and more specifically, to improving the usability of graphical user interfaces (GUIs) by running another application within a primary application's window and automatically returning to the primary application upon completion. [Background technology]
[0003] Since the innovation of computers and computer user interfaces, the primary effort toward technology adoption has been interface design and operator training. As we enter the modern computing era, computer and computer software design has permeated every aspect of life, but application interface design continues to lag behind, requiring extensive training and user guidance. Currently, application users must navigate or be taken to the appropriate section of an application to perform a specific action.
[0004] The principles disclosed herein eliminate such requirements and empower application builders to provide unlimited functionality to perform any action from any page or section of an application, including the ability to perform actions from one application to another without leaving the current application.
[0005] The principles disclosed herein relate to a technique for invoking and executing actions from external applications within a currently open application to perform the actions in a manner that streamlines a user's experience while performing a task. The method comprises: (a) a running application; (b) a plurality of external actions that can be invoked; (c) application methods and states that can call the external actions; and (d) means for invoking and executing these external actions without leaving the running application state.
[0006] In current applications, such as customer relationship management (CRM), to add a new customer, a user must navigate to the appropriate section of the application or search for the desired action, such as adding a new customer, and then the user is taken to or navigates to the section where the new customer can be added.
[0007] The principles disclosed herein, due to recent advances in computer technology, provide a computer operator within a CRM with the ability to add a new customer from anywhere in the application without leaving the current area of the application. For example, a computer operator using a CRM may be in a reporting area of a CRM application and have the ability to type "add new customer" into a search box and add a new customer without leaving the reporting area of the CRM.
[0008] Thus, the principles disclosed herein can greatly streamline computer operator workflow, largely eliminate the need for application training, and fundamentally change what is currently possible with computer application interfaces. The principles disclosed herein are applicable to a variety of industries and devices, such as automotive screen and voice interfaces, mobile phone platforms, computer-based applications, and other computing devices. Summary of the Invention
[0009] A system and method for running a second application within a primary application window to improve GUI usability is provided. The exemplary method includes running a first application within a primary application window. The primary application window displays multiple GUI elements associated with the first application. The first application is configured to run a second application upon processing an event raised in the primary application window. The first application and the primary application window are then paused, and a secondary application window is displayed within the primary application window. The second application window displays multiple GUI elements associated with the secondary application. After closing the secondary application window, the first application and the primary application window automatically resume.
[0010] According to one aspect of the principles disclosed herein, an input mechanism (text search input, button, link, voice application programming interface (API), web API) is disclosed that searches for matching events. The input mechanism may also simultaneously search multiple types of fields, such as customers, items, etc., in addition to matching events. Matching events may include predefined phrases, user-modifiable phrases, and AI-enhanced phrases based on user activity.
[0011] According to another aspect of the principles disclosed herein, a listening mechanism is disclosed that identifies a matching event in the case of a text search input, a voice API call, or a web API call. If the listening mechanism identifies a matching quick action, a quick action link is returned to be passed in the app method based on an identifiable tag, class, or attribute of the element.
[0012] According to yet another aspect of the principles disclosed herein, an application method based on an identifiable tag, class, or attribute of an element enables the ability to open a window within a currently running application. The application method can also maintain the original running application state upon completion of the quick action by passing a callback function to the application method.
[0013] In accordance with yet another aspect of the principles disclosed herein, a script application, e.g., JavaScript, executing within a running application provides the ability to invoke and execute application methods within the running application. The principles disclosed herein also provide the ability to invoke and execute application methods within the script application.
[0014] In yet another aspect of the principles disclosed herein, the principles disclosed herein provide support for performing actions modally or within a window of a running application, such as displaying a form, adding an event to the form, and adding a specific button or action for the event.
[0015] One or more aspects of the principles disclosed herein provide for quick actions and user interaction and input within a modal or window of a running application.
[0016] Another aspect of the principles disclosed herein provides support for user initiated registration events for an invoked quick action, where once the registration event is initiated, an application specific method is invoked and the original callback function is passed back to the script application within the running application.
[0017] Other advantages and benefits will become apparent to those of ordinary skill in the art upon reading and understand the following detailed description.
[0018] The detailed description will be made with reference to the accompanying drawings. [Brief explanation of the drawings]
[0019] [Figure 1] 1 shows an exemplary prior art GUI. [Figure 2] 1 shows an exemplary block diagram of a computer system according to principles disclosed herein; [Figure 3] 1 shows a block diagram of exemplary components of an application according to the principles disclosed herein; [Figure 4A] 1 is a flowchart illustrating an exemplary process according to principles disclosed herein. [Figure 4B] 1 is a flowchart illustrating an exemplary process according to principles disclosed herein. [Figure 4C] 1 is a flowchart illustrating an exemplary process according to principles disclosed herein. [Figure 5A] 1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 5B] 1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 5C] 1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 6A] 1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 6B] 1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 7A]1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 7B] 1 illustrates an exemplary method for utilizing quick actions to improve GUI usability, according to principles disclosed herein. [Figure 8] 1 shows a block diagram of a vehicle interface system according to principles disclosed herein; [Figure 9A] 1 illustrates an exemplary method for utilizing quick actions to improve the usability of a vehicle interface system GUI, according to principles disclosed herein. [Figure 9B] 1 illustrates an exemplary method for utilizing quick actions to improve the usability of a vehicle interface system GUI, according to principles disclosed herein.
[0020] These drawings are merely intended to facilitate explanation of the principles disclosed herein. These drawings do not depict every aspect of the principles disclosed herein and are not intended to limit the scope of the principles disclosed herein. Other objects, features, and characteristics will become more apparent upon consideration of the following detailed description. DETAILED DESCRIPTION OF THE INVENTION
[0021] Detailed illustrations are disclosed herein. However, the techniques, methods, processes, systems, and operating structures according to the principles disclosed herein may be embodied in a wide variety of forms and modes, some of which may be entirely different from those disclosed herein. Accordingly, specific structural and functional details disclosed herein are merely representative.
[0022] The flowcharts and block diagrams set forth in the following figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the principles disclosed herein. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code, including one or more executable instructions that implement the identified local function. In some alternative implementations, the functions shown in the blocks may occur out of the order shown in the figures. For example, depending on the functionality involved, two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order. Furthermore, each block in the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or operations, or by a combination of dedicated hardware and computer instructions.
[0023] 1 illustrates a problem associated with current GUI systems in which users of exemplary customer relationship management (CRM) web applications must navigate to various separate application windows to perform actions. Exemplary CRMs include, but are not limited to, ZOHO CRM, SUGAR CRM, SALESFORCE, HUBSPOT, and MICROSOFT DYNAMICS 365.
[0024] A window 102 is displayed on a user terminal that executes a web application. The user terminal communicates with a server over a network. As shown in FIG. 1 , the window 102 includes various GUI elements, including a sidebar area 104, a top header area 106, a main area 108, and a footer area 110. Due to the complexity of CRM web applications, known computer-implemented systems and methods present various usability challenges. For example, users must learn the content associated with the CRM web application's user interface before they can effectively utilize various functions and access information.
[0025] In this example, the top header area 106 includes a top navigation menu 112 containing multiple uniform resource location (URL) links that navigate the user to various functions and information in the web application. As shown, the top navigation menu 112 includes a tab-based menu system that requires the user to navigate through various tabs to access the multiple URL links. Additionally, the sidebar area 104 includes a side navigation menu 114 containing multiple additional URL links for accessing the web application's functions and information. As a result, the learning curve for navigating the web application's functions and information can be steep, requiring excessive time and resource demands from the user. Such difficulties can further exacerbate the technology adoption within organizations faced by some businesses. Organizations are currently measuring adoption rates for the technologies they deploy and are typically seeking training solutions to address the low adoption rates. These low adoption rates result in reduced user productivity, incomplete corporate reporting, and users struggling to succeed in their positions.
[0026] Such inherent shortcomings of known systems are not entirely ignored. As shown in FIG. 1, window 102 includes a search bar 116. Search bar 116 is configured to retrieve, for a web application, URL links to various functions and information in the web application. However, as will be explained in more detail below, searching for a function can waste time and system resources because the search requires the user to visit various applications.
[0027] Yet another problem with known methods of navigating web applications is system resource usage. In this example, each URL link generates a Hypertext Transfer Protocol (HTTP) GET request to a server, which downloads Hypertext Markup Language (HTML), images, Cascading Style Sheets (CSS), and JavaScript code into the user's local memory. As a result, the user's device must cache or re-download portions of the web application when the user is unable to efficiently navigate from application to application. This can adversely affect the performance of the web application on the user's device due to system resource limitations, negatively impacting user productivity. Providing solutions to these usability problems has a significant economic impact on various businesses and users of software technologies.
[0028] FIG. 2 shows an exemplary block diagram of a computer system for an exemplary CRM web application according to the principles disclosed herein. The server side 300 can be implemented in hardware or a combination of hardware and software. In this example, the techniques disclosed herein are implemented in a software environment, such as an operating system, or an application running on the operating system. The software may include, but is not limited to, resident software, firmware, etc., or may be implemented in a cloud-based or virtualized network system. The server side 300 includes at least one computer processing unit (CPU) 304 and at least one memory 306 interconnected by a bus 302. A communication module 310 is configured to enable the server side 300 to communicate with the user terminal 202 over the network 400. The computer system architecture further includes a CRM database 308. The CRM database 308 is configured to store CRM data, including, but not limited to, sales, user, and marketing information. The CRM database 308 can store data in one or more databases.
[0029] Those skilled in the art will readily recognize that the system architecture of server side 300 is a simplified diagram and may include additional elements not shown without departing from the principles disclosed herein. For example, although a single standalone server side 300 is shown, multiple servers (or server-like devices) may be connected to one or more data storage systems. Furthermore, server side 300 may be local, remote, or a combination thereof. In this example, server side 300 is configured to communicate over network 400.
[0030] The user terminal 202 communicates with the server side 300 via the network 400. Exemplary user terminals include, but are not limited to, a mobile phone, a cellular phone, a smartphone, a laptop computer, a netbook, a personal digital assistant (PDA), or any other computing device equipped with a display and suitable for network communication. In this example, the user terminal 202 includes a web browser application that supports the execution of JavaScript code, asynchronous JavaScript and XML (AJAX), HTML, and CSS. The application 204 includes computer-executable instructions and is stored in memory located on the user terminal 202. As described in more detail below, the application 204 is configured to perform quick actions that can receive, process, store, and transmit information between the user terminal 202 and the server side 300.
[0031] The network 400 may be a local area network (LAN), a wide area network (WAN), the Internet, a cellular network, a satellite network, or any other network that allows for the transmission and / or reception of data to and / or from the server side 300. Data transmitted to or from the server side 300 via the network 400 may be transmitted and / or received using standard telecommunications or network protocols. In the example shown in FIG. 2, the system utilizes the Transmission Control Protocol / Internet Protocol (TCP / IP), and the network 400 is the Internet. Other examples of protocols for transmitting and / or receiving data include, but are not limited to, Voice over IP (VOIP) protocols, Short Message Service (SMS), and Global System for Mobile Communications (GSM). The network 400 may utilize one or more protocols of the application 204 and the server side 300. Additionally, the network 400 may translate to or from other protocols to one or more protocols of the user terminal 202. As a result, a user can seamlessly transition from one device to another and continue to use a CRM web application according to the principles disclosed herein.
[0032] FIG. 3 illustrates a block diagram of exemplary components of a CRM application executing on a user terminal according to the principles disclosed herein. The application 500 includes an application view 502, an event handler 504, a routing engine 506, an internal state 508, a search engine 510, and a reporting engine 512. The application view 502 is configured to display various GUI elements, including input mechanisms. Exemplary input mechanisms include, but are not limited to, search input, buttons, URL links, and voice or audio input. The search engine 510 is configured to receive input from the user terminal. The event comparator 514 is configured to identify corresponding matching events based on a comparison of the input with predetermined events. The search engine 510 then returns a list of URL links and / or standard URL links corresponding to relevant quick actions. In this example, the quick actions are selected based on identifiable tags, classes, or attributes associated with the input. For example, the event comparator can be configured to return an identifiable tag, class, or attribute definition of addCustomer for inputs related to "add a new customer," "new customer," "new," and / or "add." It will be apparent to one skilled in the art to use a variety of other terms or phrases to match the identifiable tag, class, or attribute definition of addCustomer to user input without departing from the principles disclosed herein.
[0033] The routing engine 506 is configured to receive the information and determine the application 500 and application view 502 of the CRM application to display on the user terminal (shown in FIG. 2). The internal state 508 includes global variables and application state. The event handler 504 is configured to handle events that occur in the user interface of the application view 502.
[0034] 4A-4C illustrate an exemplary process for utilizing quick actions to improve GUI usability in accordance with the principles disclosed herein. As shown in FIG. 4A, a user terminal 602 is a smartphone and includes a display 604 and a microphone 606. Displayed on the display 604 is a web browser application executing an exemplary CRM application that includes JavaScript code, AJAX, HTML, and CSS. Code excerpt 1 illustrates an exemplary code fragment implementing a quick action executed on the user terminal 602. A code fragment is an incomplete collection of instructions in a particular software language, such as JavaScript code, AJAX, HTML, CSS, C#, and / or C++, and may include routines and / or subroutines.
number
[0035] As shown in Code Excerpt 1, quick actions using callback functions are defined for searching and adding customers. The app variable corresponds to the CRM application's main class and defines global functions and variables that are accessible to any application in the CRM application. Therefore, the searchCustomers and addCustomers quick actions are configured to be called from any application in the CRM application. The arguments passed to the searchCustomers method include options, a callback function, and a callback object. The arguments passed to the addCustomer method include options, a callback function, and a callback object. Code Excerpt 1 also includes the configuration of click handlers for identifiable tags, classes, or attributes. These click handlers are configured to call the global methods searchCustomers and addCustomer, respectively. Because the click handlers are defined outside of the app variable, they are only accessible to the specific application in the CRM application in which they are defined.
[0036] Primary application window 608 represents the current application of the CRM web application with which the user is interacting. In this example, primary application window 608 includes multiple GUI elements, including search bar 610, URL link 612, and URL link 614. As shown, URL link 612 includes selectable text, and URL link 614 includes a selectable icon. Furthermore, URL link 612 and URL link 614 include an identifiable tag, class, or attribute definition of addCustomer. As a result, URL link 612 and URL link 614 are configured to invoke a quick action to add a customer in accordance with the principles disclosed herein.
[0037] Additionally, search bar 610 is configured to allow a user to search for and select a quick action in accordance with the principles disclosed herein. A user can enter a text input into search bar 610. Additionally, user terminal 602 is configured to receive voice or audio input via microphone 606. A speech-to-text service or processor is configured to generate a text interpretation of the voice or audio input entered into search bar 610. As described above with reference to FIG. 3 , the CRM application's search engine compares the inputs and returns a list of selectable quick actions and / or standard URLs to a user accessing the CRM application. In this example, a result for "add customer" includes an identifiable tag, class, or attribute of addCustomer. It will be apparent to one skilled in the art that a text input, audio search input, button input, or text input can be selected from anywhere within primary application window 608 and / or the CRM application without departing from the principles disclosed herein.
[0038] In step 616, the user selects the Add Customer quick action, which in turn triggers an onClick event that is processed in step 618 (see FIG. 4B) by the CRM application's event handler. In this example, the event handler determines which quick action to process by comparing the identifiable tag, class, or attribute definition of the element that triggered the onClick event with the predefined quick actions. Code excerpt 2 shows an example code fragment that handles the Add Customer onClick event.
number
[0039] As shown in Code Excerpt 2, the event handler pauses the internal state of the application currently running in the primary application window 608. In this example, the browser is prevented from changing the current application by disabling hypertext reference (HREF) commands and stopping the execution of all other events in the current application. GUI elements of the application currently running in the primary application window 608 remain rendered in the primary application window 608, and their internal state is configured to be paused. Furthermore, any HTML, images, CSS, and JavaScript code associated with the application currently running in the primary application window 608 remain stored in the system's random access memory (RAM). As a result, the user can interact with the quick action and, after completing or canceling the quick action, automatically return to the current state of the application currently running in the primary application window 608. Furthermore, the event handler stores a reference to the clicked element, allowing the quick action to access the value of the clicked element. In Code Excerpt 2, a reference to the application currently paused in the primary application window 608 is stored. As a result, the functions (including the quick action) and variables defined in Code Excerpt 1 are accessible within the quick action. The quick action is processed using a callback function in step 620. Code excerpt 3 shows an example code fragment that processes a quick action to add a customer.
number
[0040] As shown in Code Excerpt 3, the quick action for adding a customer includes a callback function. In this example, the quick action is configured to load various GUI elements for adding a customer into a secondary application window 626. The secondary application window 626 is configured to be rendered within the boundaries of the primary application window 608. In this example, the secondary application window 626 is not an independent window; rather, its contents are displayed within the primary application window 608. Furthermore, the various GUI elements of the secondary application window 626 overlap with multiple GUI elements of the primary application window 608 that are located within the boundaries of the secondary application window 626. As a result, the user terminal 602 does not need to unload the various GUI elements displayed in the primary application window 608 before displaying the GUI elements of the secondary application window 626, thereby improving the responsiveness of the user terminal 602. Furthermore, by maintaining the GUI elements of the primary application window 608, the user terminal 602 can quickly display the primary application window 608 upon completion of the quick action. It will be apparent to one skilled in the art to display a secondary application window in its own independent window, such as a pop-up window, without departing from the principles disclosed herein.
[0041] Secondary application window 626 is a child window of primary application window 608 and is displayed within application window 608. While secondary application window 626 is open, the user is prevented from interacting with primary application window 608. In step 620, the quick action details are returned to the original process that invoked the quick action. The original process then renders application window 626 within primary application window 608. As shown in step 624, secondary application window 626 includes fields for entering the new customer's name, email address, and phone number. Additionally, secondary application window 626 includes a submit button 628.
[0042] Referring now to FIG. 4C , in step 630, the user presses the submit button. Then, in step 632, the CRM application's event handler processes the add customer quick action event. As shown in Code Excerpt 3, first, the submit button's default action of submitting the form is disabled. Then, a form post is executed, and the quick action information, including variables and data, is configured to return the data to the original callback function. Finally, in step 634, the secondary application window 626 is closed, causing the primary application window 608 to return to the application state before the quick action was initiated. In certain examples, this process may include clearing any events queued in the event handler. The primary application window may also notify the user whether the new user was successfully added or use the data for other functions. For example, if the application in the primary window creates a new property listing, the data returned from the create new customer quick action can be used to pop up the owner and contact information for the new property listing.
[0043] The second application can also run a third application. Code excerpt 3 contains an event handler for the callback function that searches for a customer in the secondary application window 626.
number
number
number
number
[0044] As shown in Code Excerpt 4, the search customer quick action includes a callback function. In this example, the quick action is configured to load various GUI elements to search for a customer in a secondary application window. The process of searching for a customer is similar to the steps described above for adding a new customer using a quick action in accordance with the principles disclosed herein.
[0045] 5A-5C illustrate an exemplary method for utilizing quick actions to improve GUI usability in accordance with the principles disclosed herein. In FIG. 5A, screen 700 is an exemplary GUI for a CRM application. Primary application window 702 displays the current application of the CRM application. In this example, the current application is for creating an open house e-card to promote an open house for a real estate listing. Primary application window 702 includes search bar 704. In this example, input into search bar 704 is "send open house e-card" or any other additional phrase related to sending an e-card. As described above with reference to FIG. 3, the CRM application's search engine is configured to receive input from search bar 704 and display a list of URL links and / or standard URL links corresponding to relevant quick actions. In this example, URL link 706 corresponds to a quick action to an email marketing section of the CRM application.
[0046] In a conventional method (without using quick actions), a user must perform various steps to send an e-card. First, the user must navigate to the application using the CRM application's routing engine to create the e-card. In this example, this can be accomplished by navigating to a marketing dashboard and selecting "Create an e-card" or by using the search bar 704. The user must then navigate to the application to send the e-card. Each step sends an HTTP GET request to the server, downloading HTML, images, CSS, and JavaScript code to the user's local memory. As a result, the user's device must cache or re-download portions of the web application when the user cannot efficiently navigate from application to application to send the e-card. This can adversely affect the performance of the web application on the user's device due to system resource limitations. The use of quick actions in accordance with the principles disclosed herein significantly reduces the time, steps, and training required for users to effectively learn to send e-cards.
[0047] Referring to FIG. 5B , after a user selects the quick action link, an event handler in the CRM application processes the quick action corresponding to sending an open house e-card via email. The quick action utilizes a callback function to pause the internal state of the current application running in primary application window 702 and execute another application displayed in secondary application window 708. As shown, secondary application window 708 includes various GUI elements that allow the user to configure the subject, recipient, and date and time for sending the e-card. Submit button 710 is configured to process the sending of the e-card when the user clicks submit button 710, in accordance with the principles disclosed herein. As shown in FIG. 5B , the user can quickly preview the portion of the e-card (currently paused in primary application window 702) while configuring the recipient of the e-card.
[0048] In some examples, the secondary application window can be configured to move within the primary application window, allowing the user to preview different portions of the e-card. Some advantages include the user being able to preview the e-card for any errors without having to navigate to another application in the CRM application. Additionally, the user can quickly determine which e-card was currently working in the event that they navigate away from the CRM application and return to it later.
[0049] 5C, the secondary application window 708 displays an overview of the recipients of the e-card and options to share the e-card on various social media platforms. Additionally, the user can close the secondary application window 708 and be automatically returned to the primary application window 702.
[0050] 6A-6B are an exemplary method of utilizing quick actions to improve GUI usability according to the principles disclosed herein. Screen 800 includes a primary application window 802. Primary application window 802 is configured to display the current application of a CRM application with which a user is interacting. In this example, primary application window 802 shows an exemplary home page of a CRM web application. Primary application window 802 includes a search bar 804. In this example, the input into search bar 804 is "Set up sales reports." Based on this input, a URL link 806 is shown. URL link 806 corresponds to a quick action to an email reports application of the CRM application.
[0051] In a conventional method (without using quick actions), a user must navigate to a CRM application's email marketing engine and perform various steps to set up a new property sales report. First, the user must use a routing engine to navigate to the application with the email reporting engine and perform multiple steps to create a property sales report. Each step the user takes to navigate using the routing engine sends an HTTP GET request to the server, downloading HTML, images, CSS, and JavaScript code to the user's local memory. As a result, the user's device must cache or re-download portions of the web application when the user cannot efficiently navigate from application to application to set up a property sales report. This can adversely affect the performance of the web application on the user's device due to system resource limitations. The use of quick actions in accordance with the principles disclosed herein significantly reduces the time, steps, and training required for a user to effectively learn to submit and set up a property sales report.
[0052] After the user selects the quick action link, an event handler in the CRM application processes the quick action corresponding to creating a seller report. The quick action utilizes a callback function to pause the internal state of the current application running on primary application window 802 and execute another application displayed in secondary application window 808. As shown, secondary application window 808 contains various GUI elements through which the user composes the seller report. A submit button 810 is configured to process the seller report and return to allow the user to continue interacting with the application running on primary application window 802.
[0053] 7A-7B illustrate another exemplary method for utilizing quick actions to improve GUI usability in accordance with the principles disclosed herein. In FIG. 7A, screen 900 is an exemplary GUI for a CRM application. A primary application window 902 displays the CRM application's current application, which is drafting a client email. In this example, the email draft function is part of the CRM application's email marketing engine. The primary application window 902 includes a search bar 904. As shown, the input into search bar 904 is "customer." As described above with reference to FIG. 3, the CRM application's search engine is configured to receive the input from search bar 904 and display a list of URL links and / or standard URL links corresponding to associated quick actions. In this example, URL link 906 corresponds to a quick action that executes the CRM application's customer information application.
[0054] With the traditional method (without using quick actions), a user must save a draft email or leave the email application to run a client information lookup application in a CRM application. In the event that the user is not using the application, the user must open an additional web browser window, navigate to the appropriate section of the CRM application, look up the client information, and then return to the separate web browser window. As described below, quick actions significantly improve user workflow and reduce the need for user training.
[0055] Referring to FIG. 7B , after a user selects a quick action link, an event handler in the CRM application processes the corresponding quick action to look up client information. The quick action utilizes a callback function to pause the internal state of the current application running in primary application window 902 and display secondary application window 908. As shown, secondary application window 908 includes various GUI elements that allow the user to search for client information. Submit button 910 is configured, in accordance with the principles disclosed herein, to search the CRM database for the requested customer information when the user selects submit button 910. Once the user finds the required client information, they can close secondary application window 908 and continue drafting the client email in primary application window 902.
[0056] While the above example relates to the use of quick actions in an exemplary CRM application, it will be apparent to one skilled in the art that quick actions may be utilized to improve the usability of user interfaces in a variety of other areas without departing from the principles disclosed herein. Indeed, the principles disclosed herein may be utilized in any implementation of user interfaces for smartphones, automobiles with interactive screen displays, machine operators with interactive screen displays, and other computing devices.
[0057] For example, when using a vehicle infotainment system, a driver must access vehicle features by opening applications and responding to promotions while performing various driving tasks. Exemplary systems include, but are not limited to, BMW's iDrive interface. In conventional vehicle infotainment systems, a user must navigate through various windows to access some of these features, which can distract the user from driving.
[0058] 8 shows an example block diagram of a vehicle interface system according to the principles disclosed herein. The vehicle interface system 1000 includes a display 1002 connected to a vehicle interface control 1004. The display 1002 includes a touchscreen. The vehicle interface control 1004 includes a central processing unit (CPU) 1006, a graphics processing unit (GPU) 1008, and memory 1010. In this example, the vehicle interface control 1004 is connected to various vehicle controls and subsystems via a controller area network (CAN) transceiver 1012 and a local interconnect network (LIN) transceiver 1014. Example subsystems include a tire pressure monitoring (TPM) subsystem 1016, a climate control subsystem 1018, an audio subsystem 1020, a drivetrain monitoring subsystem 1022, a power management subsystem 1024, and a powertrain subsystem 1026. Vehicle subsystems are configured to be accessed and / or viewed on the display 1002 by a vehicle interface application executing on the vehicle interface controller 1004 in accordance with the principles disclosed herein. The vehicle interface application includes an application view, an event handler, an internal state, and a search engine. The search engine is configured to receive input from the vehicle interface 1004. For example, the vehicle interface 1004 may include an I 2 The vehicle interface application 1004 is configured to communicate with buttons, knobs, and switches via an Inter-Integrated Circuit (C) bus 1028. The vehicle interface application 1004 is also configured to receive input from icons displayed on the display 1002. The vehicle interface application includes an event comparator that identifies corresponding matching events based on a comparison of the input to predetermined events.
[0059] FIG. 9A illustrates an exemplary screen 1100 for the vehicle interface system described in FIG. 8 above. Screen 1100 includes a display 1102 and controls 1104. Controls 1104 include buttons that, when selected, are shortcuts to designated applications that appear on display 1102. Display 1102 includes a touchscreen that displays a primary application window 1106. In accordance with the principles disclosed herein, a user can quickly and easily access various applications of the vehicle interface system. For example, while driving, a user may receive a tire pressure low notification 1106 while primary application window 1106 displays a radio application. In this example, notification 1106 is configured as a quick link in accordance with the principles disclosed herein.
[0060] In conventional vehicle interface systems, a user must navigate to a settings menu to find the application associated with reviewing tire pressure monitoring (TPM) information while performing various driving tasks. Once the user has completed reviewing the information, the user must click multiple buttons or select a shortcut to the radio application (if available) to navigate back to the radio application.
[0061] 9B, after a user selects the quick action link in the TPM notification, the event handler of the vehicle interface application processes the corresponding quick action to review the TPM subsystem. The quick action utilizes a callback function to display a secondary application window 1110 in front of the primary application window 1106. Furthermore, user interaction with the primary application window is paused. When the user is finished reviewing the notification and / or reconfiguring the TPM subsystem, the secondary application window 1108 can be closed. The user can then fully interact with the radio application in the primary application window 1106.
[0062] Item 1. A non-transitory computer-readable storage device storing computer-executable instructions that, when executed by a computer, control the computer to perform a method for executing a second software application within a first software application, the method including: executing, on the computer, the first software application including a code fragment utilizing a callback function to implement a quick action; displaying a plurality of first graphical user interface (GUI) elements in a primary application window; receiving input from the primary application window; pausing the first software application and the primary application window in response to an event from the primary application window; displaying a secondary application window in response to the first software application executing a second software application including a code fragment that stores a reference to the currently paused first software application; closing the secondary application window; and resuming the first software application and the primary application window. The quick action is an action in the first application that can enable a second application while the first application is paused (held).
[0063] [Item 2] A non-transitory computer-readable storage device as described in Item 1, wherein the step of pausing the first software application and the primary application window in response to an event from the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0064] [Item 3] The non-transitory computer-readable storage device of items 1 or 2, further comprising executable instructions for configuring a computer to perform a method including the steps of defining at least one callback function, configuring at least one first GUI element, and configuring a click event, wherein a click event on the at least one first GUI element invokes the at least one callback function.
[0065] [Item 4] A non-transitory computer-readable storage device described in any one of items 1 to 3, wherein the step of displaying a secondary application window in response to the first software application executing the second software application includes the step of displaying a plurality of second graphical user interface (GUI) elements in the second application window.
[0066] [Item 5] A non-transitory computer-readable storage device according to any one of items 1 to 4, further comprising executable instructions for configuring a computer to perform a method including the steps of receiving a user input, comparing the user input to a plurality of events, and selecting an event associated with the user input.
[0067] [Item 6] A non-transitory computer-readable storage device according to any one of items 1 to 5, wherein the step of displaying a plurality of first GUI elements in the primary application window includes the step of displaying a modal window.
[0068] [Item 7] A non-transitory computer-readable storage device according to any one of items 1 to 6, further comprising executable instructions for configuring a computer to perform a method including configuring at least one second GUI element and a click event configured to invoke a second callback function.
[0069] [Item 8] A non-transitory computer-readable storage device described in any one of items 1 to 7, wherein the step of executing the first software application includes a step of executing a reporting application of a customer relationship management (CRM) application.
[0070] [Item 9] A non-transitory computer-readable storage device described in any one of items 1 to 8, further comprising executable instructions for configuring a computer to perform a method including configuring a secondary application window to move within a primary application window.
[0071] [Item 10] A non-transitory computer-readable storage device described in any one of items 1 to 9, further including executable instructions that configure a computer to perform a method including the steps of pausing the second software application and the secondary application window in response to a click event configured to invoke a second callback function, running a third software application, and resuming the second software application after completion of the third software application.
[0072] [Item 11] A non-transitory computer-readable storage device described in any one of items 1 to 10, wherein the step of pausing the second software application and the secondary application window in response to a click event configured to invoke the second callback function includes the steps of preventing changes to the secondary application window and preventing execution of additional events in the secondary application window.
[0073] [Item 12] The non-transitory computer-readable storage device described in any one of items 1 to 11, further comprising the steps of: displaying a plurality of first GUI elements corresponding to the first software application in a primary application window; receiving an event from the primary application window; pausing the first software application and the primary application window; invoking the first software application to run a second software application; displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window.
[0074] [Item 13] A non-transitory computer-readable storage device described in any one of preceding items 1 to 12, wherein the quick action is defined in a global context so that it can be invoked from any software application within the first software application.
[0075] [Item 14] The non-transitory computer-readable storage device described in any one of preceding items 1 to 13, wherein the method further includes a step of comparing the input received by the search engine of the first software application, as shown in, for example, FIG. 3 above, and a step of returning a list of selectable quick actions to the user.
[0076] [Item 15] The non-transitory computer-readable storage device described in any one of preceding items 1 to 14, wherein the method further includes a step of receiving input from a user to arbitrarily select a quick action from a list of selectable quick actions.
[0077] [Item 16] The non-transitory computer-readable storage device described in any one of preceding items 1 to 15, wherein the method further includes a step in which an event handler of the first software application triggers an event, for example as shown in Figure 3 or Figures 4A to 4B above.
[0078] [Item 17] The non-transitory computer-readable storage device described in any one of preceding items 1 to 16, wherein the method further includes a step of suspending the internal state of the first software application, for example as shown in Figures 4A to 4B above.
[0079] Item 18. A method executed by a computing device configured to display a graphical user interface (GUI) on a screen, the method including: executing a first software application running on the computer, the first software application including a code fragment that utilizes a callback function to implement a quick action; displaying a plurality of first GUI elements corresponding to the first software application in a primary application window; receiving an event from the primary application window; pausing the first software application and the primary application window; executing a second software application including a code fragment that invokes the first software application and stores a reference to the currently paused first software application; displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window. The quick action is an action in the first application that can enable the second application while the first application is paused (held).
[0080] [Item 19] The method described in Item 18, further comprising the steps of defining at least one callback function, configuring at least one first GUI element, and configuring a click event, wherein the click event of the first GUI element invokes the at least one callback function.
[0081] [Item 20] A method according to any one of items 18 and 19, wherein the step of pausing the first software application and the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0082] [Item 21] A method executed by a computing device configured to access a database storing customer relationship management (CRM) records including CRM data, the method including: executing a CRM software application; executing a first software application of the CRM software application; displaying a plurality of first GUI elements corresponding to the first software application in a primary application window; configuring at least one callback function; configuring at least one first GUI element; configuring a click event, wherein a click event on the first GUI element invokes the at least one callback function; receiving an event from the primary application window; pausing the first software application and the primary application window; invoking the first software application to run a second software application; displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window.
[0083] [Item 22] The method described in Item 21, wherein the step of pausing the first software application and the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0084] [Item 23] A method according to any one of items 21 and 22, wherein the step of displaying a plurality of second GUI elements corresponding to a second software application in a secondary application window includes the step of displaying a modal window.
[0085] [Item 24] A method according to any one of items 21 to 23, further comprising the steps of receiving a user input, comparing the user input with a plurality of events, and selecting an event associated with the user input.
[0086] [Item 25] The method according to any one of Items 21 to 24, further comprising the step of defining at least one callback function in the global context of the CRM application.
[0087] [Item 26] The method described in Items 21 to 25, further comprising the steps of pausing the second software application and the secondary application window, running the third software application, and resuming the second software application after completion of the third software application.
[0088] [Item 27] The method of any one of Items 21 to 26, wherein the quick action is defined in a global context so that it can be invoked from any software application within the first software application.
[0089] [Item 28] A method according to any one of items 21 to 27, further comprising the steps of comparing the input received by the search engine of the first software application, for example as shown in Figure 3 above, and returning a list of selectable quick actions to the user.
[0090] [Item 29] The method according to any one of Items 21 to 28, further comprising a step of receiving an input from a user to select a quick action from a list of selectable quick actions.
[0091] [Item 30] The method of any one of Items 21 to 29, further comprising a step of an event handler of the first software application triggering an event, for example as shown in Figure 3 or Figures 4A to 4B above.
[0092] [Item 31] The method according to any one of Items 21 to 30, further comprising suspending the internal state of the first software application, for example as shown in Figures 4A to 4B above.
[0093] [Item 32] A customer relationship management (CRM) system, wherein a processor is configured to perform the following steps: executing a first software application, the CRM software application; displaying a plurality of first GUI elements corresponding to the first software application in a primary application window; configuring at least one callback function; configuring at least one first GUI element; configuring a click event, wherein a click event on the first GUI element invokes the at least one callback function; receiving an event from the primary application window; pausing the first software application and the primary application window; calling the first software application to execute a second software application; displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window.
[0094] [Item 33] The CRM described in Item 32, wherein the step of pausing the first software application and the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0095] [Item 34] A CRM described in any one of Items 32 and 33, wherein the step of displaying a plurality of second GUI elements corresponding to a second software application in a secondary application window includes the step of displaying a modal window.
[0096] [Item 35] A CRM described in any one of items 32 to 34, further comprising the steps of receiving user input, comparing the user input with a plurality of events, and selecting an event associated with the user input.
[0097] [Item 36] A CRM according to any one of Items 32 to 35, further comprising a step of defining at least one callback function in the global context of the CRM application.
[0098] [Item 37] The CRM described in Items 32 to 36, further including the steps of pausing the second software application and the secondary application window, executing the third software application, and resuming the second software application after completion of the third software application.
[0099] [Item 38] A CRM according to any one of Items 32 to 37, wherein the quick action is defined in a global context so that it can be invoked from any software application within the first software application.
[0100] [Item 39] A CRM described in any one of items 32 to 38, wherein the method further includes a step of comparing the input received by a search engine of the first software application, as shown in, for example, Figure 3 above, and a step of returning a list of selectable quick actions to the user.
[0101] [Item 40] The CRM according to any one of items 32 to 39, wherein the method further includes a step of receiving an input from a user to select a quick action from a list of selectable quick actions.
[0102] Item 41. A method for executing a second software application within a first software application, the method including: executing, on a computer, the first software application including a code fragment that utilizes a callback function to implement a quick action; displaying a plurality of first graphical user interface (GUI) elements in a primary application window; receiving input from the primary application window; pausing the first software application and the primary application window in response to an event from the primary application window; displaying a secondary application window in response to the first software application executing a second software application including a code fragment that stores a reference to the currently paused first software application; closing the secondary application window; and resuming the first software application and the primary application window. A quick action is an action in the first application that can enable a second application while the first application is paused (held).
[0103] [Item 42] The method described in Item 41, wherein the step of pausing the first software application and the primary application window in response to an event from the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0104] [Item 43] The method of Item 41 or 42, further comprising executable instructions for configuring a computer to perform a method including the steps of defining at least one callback function, configuring at least one first GUI element, and configuring a click event, wherein a click event on the at least one first GUI element invokes the at least one callback function.
[0105] [Item 44] A method according to any one of Items 41 to 43, wherein the step of displaying a secondary application window in response to the first software application executing the second software application includes the step of displaying a plurality of second graphical user interface (GUI) elements in the second application window.
[0106] [Item 45] A method according to any one of Items 41 to 44, further comprising executable instructions for configuring a computer to perform a method including the steps of receiving a user input, comparing the user input to a plurality of events, and selecting an event associated with the user input.
[0107] [Item 46] A method according to any one of Items 41 to 45, wherein the step of displaying a plurality of first GUI elements in the primary application window includes the step of displaying a modal window.
[0108] [Item 47] A method according to any one of Items 41 to 46, further comprising executable instructions for configuring a computer to execute the method, including the step of configuring at least one second GUI element and a click event configured to invoke a second callback function.
[0109] [Item 48] The method of any one of Items 41 to 47, wherein the step of executing the first software application includes a step of executing a reporting application of a customer relationship management (CRM) application.
[0110] [Item 49] A method according to any one of Items 41 to 48, further comprising executable instructions for configuring a computer to perform the method, including the step of configuring a secondary application window to move within a primary application window.
[0111] [Item 50] A method according to any one of Items 41 to 49, further comprising executable instructions for configuring a computer to perform a method including the steps of pausing the second software application and the secondary application window in response to a click event configured to invoke a second callback function, running a third software application, and resuming the second software application after completion of the third software application.
[0112] [Item 51] A method according to any one of Items 41 to 50, wherein the step of pausing the second software application and the secondary application window in response to a click event configured to call the second callback function includes the steps of preventing changes to the secondary application window and preventing execution of additional events in the secondary application window.
[0113] [Item 52] A method according to any one of Items 41 to 51, further comprising the steps of: displaying a plurality of first GUI elements corresponding to the first software application in the primary application window; receiving an event from the primary application window; pausing the first software application and the primary application window; calling the first software application to run a second software application; displaying a plurality of second GUI elements corresponding to the second software application in the secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window.
[0114] [Item 53] The method according to any one of preceding items 41 to 52, wherein the quick action is defined in a global context so that it can be invoked from any software application within the first software application.
[0115] [Item 54] A method according to any one of the preceding items 41 to 53, further comprising the steps of: comparing the input received by the search engine of the first software application, as shown in, for example, FIG. 3 above; and returning a list of selectable quick actions to the user.
[0116] [Item 55] A method according to any one of preceding items 41 to 54, further comprising a step of receiving an input from the user to arbitrarily select a quick action from a list of selectable quick actions.
[0117] [Item 56] A method according to any one of preceding items 41 to 55, further comprising a step in which an event handler of the first software application triggers an event, for example as shown in Figure 3 or Figures 4A to 4B above.
[0118] [Item 57] The method according to any one of the preceding items 41 to 56, further comprising suspending the internal state of the first software application, for example as shown in Figures 4A to 4B above.
[0119] Item 58. A computer device configured to execute a method including: executing a first software application within a first software application, the computer executing the first software application including a code fragment utilizing a callback function to implement a quick action; displaying a plurality of first graphical user interface (GUI) elements in a primary application window; receiving input from the primary application window; pausing the first software application and the primary application window in response to an event from the primary application window; displaying a secondary application window in response to the first software application executing a second software application including a code fragment that stores a reference to the currently paused first software application; closing the secondary application window; and resuming the first software application and the primary application window. A quick action is an action in the first application that can enable a second application while the first application is paused (held).
[0120] [Item 59] A computer device as described in Item 58, wherein the step of pausing the first software application and the primary application window in response to an event from the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0121] [Item 60] A computer device as described in Item 58 or 59, further including executable instructions that configure a computer to perform a method including the steps of defining at least one callback function, configuring at least one first GUI element, and configuring a click event, wherein a click event of the at least one first GUI element invokes at least one callback function.
[0122] [Item 61] A computer device described in any one of Items 58 to 60, wherein the step of displaying a secondary application window in response to a first software application executing a second software application includes the step of displaying a plurality of second graphical user interface (GUI) elements in the second application window.
[0123] [Item 62] A computer device described in any one of Items 58 to 61, further comprising executable instructions that configure the computer to perform a method including the steps of receiving user input, comparing the user input to a plurality of events, and selecting an event associated with the user input.
[0124] [Item 63] A computer device according to any one of Items 58 to 62, wherein the step of displaying a plurality of first GUI elements in the primary application window includes the step of displaying a modal window.
[0125] [Item 64] A computer device described in any one of Items 58 to 63, further including executable instructions that configure a computer to perform a method including the step of configuring at least one second GUI element and a click event configured to call a second callback function.
[0126] [Item 65] A computer device described in any one of Items 58 to 64, wherein the step of executing the first software application includes a step of executing a reporting application of a customer relationship management (CRM) application.
[0127] [Item 66] A computer device described in any one of Items 58 to 65, further comprising executable instructions for configuring a computer to perform a method including a step of configuring a secondary application window to move within a primary application window.
[0128] [Item 67] A computer device described in any one of Items 58 to 66, further including executable instructions that configure the computer to perform a method including the steps of pausing the second software application and the secondary application window in response to a click event configured to call a second callback function, running a third software application, and resuming the second software application after completion of the third software application.
[0129] [Item 68] A computer device described in any one of Items 58 to 67, wherein the step of pausing the second software application and the secondary application window in response to a click event configured to call the second callback function includes the steps of preventing changes to the secondary application window and preventing execution of additional events in the secondary application window.
[0130] [Item 69] The method of any one of items 58 to 68, further comprising the steps of displaying a plurality of first GUI elements corresponding to the first software application in a primary application window, receiving an event from the primary application window, pausing the first software application and the primary application window, calling the first software application to run a second software application, displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window, and automatically resuming the first software application and the primary application window after closing the second application window.
[0131] [Item 70] A computer device described in any one of preceding items 58 to 69, wherein the quick action is defined in a global context so that it can be invoked from any software application within the first software application.
[0132] [Item 71] The method of any one of the preceding items 58 to 70, further comprising the steps of comparing the input received by the search engine of the first software application, as shown, for example, in FIG. 3 above, and returning a list of selectable quick actions to the user.
[0133] [Item 72] A computer device described in any one of preceding items 58 to 71, wherein the method further includes a step of receiving input from a user to arbitrarily select a quick action from a list of selectable quick actions.
[0134] [Item 73] A computer device described in any one of preceding items 58 to 72, wherein the method further includes a step in which an event handler of the first software application triggers an event, as shown, for example, in Figure 3 or Figures 4A to 4B above.
[0135] [Item 74] A computer device described in any one of preceding items 58 to 73, wherein the method further includes a step of suspending the internal state of the first software application, for example as shown in Figures 4A to 4B above.
[0136] Item 75. A non-transitory computer-readable storage device storing computer-executable instructions that, when executed by a computer, control the computer to perform a method for displaying a graphical user interface (GUI) on a screen, the method including: executing, on the computer, a first software application including a code fragment that utilizes a callback function to implement a quick action; displaying a plurality of first GUI elements corresponding to the first software application in a primary application window; receiving an event from the primary application window; pausing the first software application and the primary application window; calling the first software application to execute a second software application including a code fragment that stores a reference to the currently paused first software application; displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window. The quick action is an action in the first application that can enable a second application while the first application is paused (held).
[0137] [Item 76] A non-transitory computer-readable storage device as described in Item 75, further comprising steps of defining at least one callback function, configuring at least one first GUI element, and configuring a click event, wherein a click event on the first GUI element invokes the at least one callback function.
[0138] [Item 77] A non-transitory computer-readable storage device described in any one of Items 75 and 76, wherein the step of pausing the first software application and the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0139] [Item 78] A non-transitory computer-readable storage device storing computer-executable instructions that, when executed by a computer, control the computer to perform a method for accessing a database that stores customer relationship management (CRM) records including CRM data, the method including the steps of: running a CRM software application; running a first software application of the CRM software application; displaying a plurality of first GUI elements corresponding to the first software application in a primary application window; configuring at least one callback function; configuring at least one first GUI element; configuring a click event, wherein a click event on the first GUI element invokes the at least one callback function; receiving an event from the primary application window; pausing the first software application and the primary application window; invoking the first software application to run a second software application; displaying a plurality of second GUI elements corresponding to the second software application in a secondary application window; and automatically resuming the first software application and the primary application window after closing the second application window.
[0140] [Item 79] A non-transitory computer-readable storage device as described in Item 78, wherein the step of pausing the first software application and the primary application window includes the steps of preventing the primary application window from being changed and preventing additional events from being executed.
[0141] [Item 80] A non-transitory computer-readable storage device described in any one of items 78 and 79, wherein the step of displaying a plurality of second GUI elements corresponding to a second software application in a secondary application window includes the step of displaying a modal window.
[0142] [Item 81] A non-transitory computer-readable storage device described in any one of Items 78 to 80, further comprising steps of receiving user input, comparing the user input to a plurality of events, and selecting an event associated with the user input.
[0143] [Item 82] A non-transitory computer-readable storage device described in any one of Items 78 to 81, further comprising a step of defining at least one callback function in the global context of the CRM application.
[0144] [Item 83] A non-transitory computer-readable storage device as described in Items 78 to 82, further comprising steps of pausing the second software application and the secondary application window, executing a third software application, and resuming the second software application after completion of the third software application.
[0145] [Item 84] A non-transitory computer-readable storage device described in any one of Items 78 to 83, wherein the quick action is defined in a global context so that it can be invoked from any software application within the first software application.
[0146] [Item 85] A non-transitory computer-readable storage device described in any one of items 78 to 84, wherein the method further includes a step of comparing the input received by the search engine of the first software application, as shown in, for example, Figure 3 above, and a step of returning a list of selectable quick actions to the user.
[0147] [Item 86] A non-transitory computer-readable storage device described in any one of Items 78 to 85, wherein the method further includes a step of receiving input from a user selecting a quick action from a list of selectable quick actions.
[0148] [Item 87] A non-transitory computer-readable storage device described in any one of items 78 to 86, wherein the method further includes a step in which an event handler of the first software application triggers an event, for example as shown in Figure 3 or Figures 4A to 4B above.
[0149] [Item 88] A non-transitory computer-readable storage device described in any one of Items 78 to 87, wherein the method further includes a step of suspending the internal state of the first software application, for example as shown in Figures 4A to 4B above.
[0150] Various embodiments have been described above. It will be apparent to those skilled in the art that changes and modifications can be made to the above-described methods and apparatus without departing from the general scope of the present teachings. It is intended to include all such modifications and substitutions insofar as they come within the scope of the appended claims or their equivalents. While the above description contains much specificity, this should not be construed as limiting the scope of the present teachings, but merely as providing examples of some of the aspects of the present teachings. Various other embodiments and modifications are possible within that scope.
[0151] Further, notwithstanding that the numerical ranges and parameters setting forth the broad scope of the present teachings are approximations, the numerical values set forth in each specific example are reported as precisely as possible, however, any numerical values inherently contain certain errors necessarily resulting from the standard deviation found in their respective testing measurements.
Claims
1. 1. A method executed by a computing device configured to display a graphical user interface (GUI) on a screen, comprising: defining a plurality of global functions including at least one callback function, wherein a plurality of software applications are configured to execute said at least one callback function; executing at least a first software application of the plurality of software applications by a processor of the computing device; the processor of the computing device displaying a plurality of first GUI elements corresponding to at least the first software application of the plurality of software applications in a primary application window; configuring at least one first GUI element with a click event, wherein the click event on the at least one first GUI element invokes the at least one callback function; utilizing the at least one callback function, the processor of the computing device suspending at least the first software application of the plurality of software applications and the primary application window in response to execution of the click event from the primary application window; using the at least one callback function, the processor of the computing device calling at least the first software application of the plurality of software applications to execute at least a second software application of the plurality of software applications; utilizing the at least one callback function, the processor of the computing device displaying a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in a secondary application window; passing parameters to the secondary application window using an event handler; configuring at least the second software application of the plurality of software applications to return data to the at least one callback function; utilizing the at least one callback function, after closing the secondary application window, the processor of the computing device automatically reopening at least the first software application and the primary application window of the plurality of software applications.
2. The step of the processor of the computing device pausing at least the first software application of the plurality of software applications and the primary application window in response to execution of the click event from the primary application window utilizing the at least one callback function comprises: the processor of the computing device preventing modification of at least the first software application of the plurality of software applications; the processor of the computing device preventing execution of an additional event by at least the first software application of the plurality of software applications; 2. The method of claim 1, further comprising: utilizing the at least one callback function upon termination, wherein the secondary application window passes results from at least the second software application to the primary application window.
3. 1. A method executed by a computing device configured to access a database storing customer relationship management (CRM) records including CRM data, the method comprising: defining a plurality of global functions including at least one callback function; executing a CRM software application having a plurality of software applications; executing at least a first one of the CRM software applications; displaying a first plurality of GUI elements corresponding to at least the first software application in a primary application window; configuring at least one first GUI element with a click event, wherein the click event on the at least one first GUI element invokes the at least one callback function; receiving an event from the primary application window; utilizing the at least one callback function to pause at least the first software application and the primary application window; calling at least the first software application to execute at least a second software application using the at least one callback function; utilizing the at least one callback function to display a plurality of second GUI elements corresponding to at least the second software application in a secondary application window located within the primary application window; passing parameters to the secondary application window using an event handler; utilizing the at least one callback function to automatically reopen at least the first software application and the primary application window after closing the secondary application window.
4. The step of pausing at least the first software application and the primary application window of the plurality of software applications utilizing the at least one callback function comprises: preventing modification of at least the first software application of the plurality of software applications; preventing execution of an additional event by at least the first software application of the plurality of software applications; 4. The method of claim 3, further comprising: utilizing the at least one callback function upon termination, the secondary application window passing results from at least the second software application to the primary application window.
5. The method of claim 3 or 4, wherein displaying a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in a secondary application window comprises displaying a modal window.
6. receiving a user input; comparing the user input to a plurality of events; The method of any one of claims 3 to 5, further comprising the step of: selecting an event associated with the user input.
7. defining said at least one callback function in a global context of a CRM application; utilizing the at least one callback function to pause at least the second software application and the secondary application window of the plurality of software applications; executing at least a third software application of the plurality of software applications utilizing the at least one callback function; and resuming at least the second software application of the plurality of software applications after completion of at least the third software application of the plurality of software applications using the at least one callback function.
8. 1. A method executed by a computing device configured to access a database storing customer relationship management (CRM) records including CRM data, the method comprising: executing a CRM software application that includes a plurality of software applications; executing at least a first software application of the plurality of software applications of the CRM software application; displaying a plurality of first GUI elements corresponding to at least the first software application of the plurality of software applications in a primary application window; configuring at least one callback function for each of the plurality of software a software application configured to execute the at least one callback function; and configuring at least one first GUI element with a click event, wherein the click event on the first GUI element invokes the at least one callback function; utilizing the at least one callback function to pause at least the first software application and the primary application window of the plurality of software applications; calling at least the first software application of the plurality of software applications to execute at least a second software application of the plurality of software applications using the at least one callback function; utilizing the at least one callback function to display a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in a secondary application window distinct from the primary application window; passing parameters to the secondary application window using an event handler; utilizing the at least one callback function to automatically reopen at least the first software application and the primary application window of the plurality of software applications after closing the secondary application window.
9. 9. The method of claim 8, wherein pausing at least the first software application and the primary application window of the plurality of software applications includes preventing the primary application window from being changed and preventing additional events from being executed.
10. 10. The method of claim 8, wherein displaying a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in a secondary application window comprises displaying a modal window.
11. The method of any one of claims 8 to 10, further comprising the steps of receiving a user input, comparing the user input to a plurality of events, and selecting an event associated with the user input.
12. defining said at least one callback function in a global context of a CRM application; utilizing the at least one callback function to pause at least the second software application and the secondary application window of the plurality of software applications; executing at least a third software application of the plurality of software applications utilizing the at least one callback function; 12. The method of claim 8, further comprising: resuming at least the second software application of the plurality of software applications after completion of at least the third software application of the plurality of software applications using the at least one callback function.
13. The method of any one of claims 8 to 12, wherein the quick action is defined in a global context so as to be invoked from any software application within at least the first software application of the plurality of software applications.
14. 14. The method of claim 8, further comprising: comparing the input received by a search engine of at least the first software application of the plurality of software applications; and returning a list of selectable quick actions to the user.
15. The method of any one of claims 8 to 14, further comprising receiving an input from a user selecting a quick action from a list of selectable quick actions.
16. The method of any one of claims 8 to 15, further comprising the step of an event handler of at least the first software application of the plurality of software applications triggering an event.
17. The method of any one of claims 8 to 16, further comprising suspending the internal state of at least the first software application of the plurality of software applications.
18. The processor executing at least a first software application of a CRM software application including a plurality of software applications; displaying a plurality of first GUI elements corresponding to at least the first software application of the plurality of software applications in a primary application window; configuring at least one first GUI element with a click event, wherein the click event on the at least one first GUI element invokes the at least one callback function; utilizing the at least one callback function to pause at least the first software application and the primary application window of the plurality of software applications; calling at least the first software application of the plurality of software applications to execute at least a second software application of the plurality of software applications using the at least one callback function; utilizing the at least one callback function to display in a secondary application window a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications; passing parameters to the secondary application window using an event handler; and automatically reopening at least the first software application and the primary application window of the plurality of software applications after closing the secondary application window using the at least one callback function.
19. 20. The CRM program of claim 18, wherein pausing at least the first software application and the primary application window of the plurality of software applications includes preventing the primary application window from being changed and preventing additional events from being executed.
20. 20. The CRM program of claim 18 or 19, wherein displaying a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in a secondary application window includes displaying a modal window.
21. receiving a user input; comparing the user input to a plurality of events; The CRM program of any one of claims 18 to 20, further comprising the step of: selecting an event associated with the user input.
22. defining said at least one callback function in a global context of a CRM application; utilizing the at least one callback function to pause at least the second software application and the secondary application window of the plurality of software applications; executing at least a third software application of the plurality of software applications utilizing the at least one callback function; and resuming at least the second software application of the plurality of software applications using the at least one callback function after completion of at least the third software application of the plurality of software applications.
23. 23. The CRM program of claim 18, wherein the quick action is defined in a global context so that the quick action can be invoked from any software application within at least the first software application of the plurality of software applications.
24. 24. The CRM program of claim 18, further comprising the steps of: comparing inputs received by a search engine of at least the first software application of the plurality of software applications; and returning a list of selectable quick actions to the user.
25. The CRM program of any one of claims 18 to 24, further comprising the step of receiving an input from a user selecting a quick action from a list of selectable quick actions.
26. 1. A computing device that executes a second software application within at least a first software application of a plurality of software applications, comprising: executing at least the first software application of the plurality of software applications, the first software application including a code fragment that utilizes a callback function to implement a quick action, on a computer; utilizing the at least one callback function to display a first plurality of graphical user interface (GUI) elements in a primary application window; receiving input from the primary application window; utilizing the at least one callback function to pause at least the first software application of the plurality of software applications and the primary application window in response to an event from the primary application window; calling at least a first software application of the plurality of software applications using the at least one callback function, and displaying a secondary application window in response to the first software application executing at least a second software application of the plurality of software applications, the second software application including a code fragment that stores a reference to the at least first software application of the plurality of software applications that is currently paused; passing parameters to the secondary application window using an event handler; utilizing the at least one callback function to close the secondary application window; utilizing the at least one callback function to resume at least the first software application and the primary application window of the plurality of software applications.
27. Pausing at least the first software application of the plurality of software applications and the primary application window in response to an event from the primary application window includes: preventing the primary application window from being changed; and preventing execution of the additional event.
28. defining at least one callback function; configuring at least one first GUI element; 28. The computing device of claim 26 or 27, further comprising executable instructions for configuring a computer to perform a method comprising: configuring a click event on the at least one first GUI element, wherein the click event on the at least one first GUI element invokes the at least one callback function.
29. 29. The computing device of claim 26, wherein displaying a secondary application window in response to at least the first software application of the plurality of software applications executing at least a second software application of the plurality of software applications includes displaying a plurality of second graphical user interface (GUI) elements in the secondary application window.
30. receiving a user input; comparing the user input to a plurality of events; and selecting an event associated with the user input.
31. The computing device of any one of claims 26 to 30, wherein displaying a plurality of first GUI elements in a primary application window comprises displaying a modal window.
32. 32. The computing device of claim 26, further comprising executable instructions for configuring the computer to perform a method comprising configuring at least one second GUI element and a click event configured to invoke a second callback function.
33. 33. The computing device of any one of claims 26 to 32, wherein executing at least a first software application of the plurality of software applications comprises executing a reporting application of a customer relationship management (CRM) application.
34. 34. A computing device according to any one of claims 26 to 33, further comprising executable instructions for configuring a computer to perform a method comprising configuring the secondary application window to move within the primary application window.
35. utilizing the at least one callback function to pause at least the second software application and the secondary application window of the plurality of software applications in response to a click event configured to invoke a second callback function; executing at least a third software application of the plurality of software applications utilizing the at least one callback function; Utilizing the at least one callback function to resume at least the second software application of the plurality of software applications after completion of at least the third software application of the plurality of software applications.
36. Pausing at least the second software application and the secondary application window of the plurality of software applications in response to a click event configured to invoke a second callback function includes: preventing modification of the secondary application window; and preventing execution of additional events in the secondary application window.
37. The method comprises:
37. The computing device of claim 26, further comprising utilizing the at least one callback function to display a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in the secondary application window.
38. 38. The computing device of claim 26, wherein the quick action is defined in a global context so as to be invoked from any software application within at least the first software application of the plurality of software applications.
39. The method includes comparing input received by a search engine of at least the first software application of the plurality of software applications; and returning a list of selectable quick actions to the user. receiving an input from a user selecting a quick action from a list of selectable quick actions; an event handler of at least the first software application of the plurality of software applications triggering an event; Utilizing the at least one callback function to suspend an internal state of at least the first software application of the plurality of software applications.
40. 1. A non-transitory computer-readable storage device storing computer-executable instructions that, when executed by a computer, control the computer to perform a method for displaying a graphical user interface (GUI) on a screen, the method comprising: defining a plurality of global functions including at least one callback function, wherein a plurality of software applications are configured to execute said at least one callback function; executing, on the computer, a code fragment that utilizes at least one callback function to implement a quick action in at least a first software application of the plurality of software applications; displaying a plurality of first GUI elements corresponding to at least the first software application of the plurality of software applications in a primary application window; receiving an event from the primary application window; utilizing the at least one callback function to pause at least the first software application and the primary application window of the plurality of software applications; utilizing the at least one callback function to call at least the first software application of the plurality of software applications to execute at least a second software application of the plurality of software applications, the second software application including a code fragment that stores a reference to the at least the first software application of the plurality of software applications that is currently paused; utilizing the at least one callback function to display in a secondary application window a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications; passing parameters to the secondary application window using an event handler; and utilizing the at least one callback function to automatically reopen at least the first software application and the primary application window of the plurality of software applications after closing the secondary application window.
41. defining at least one callback function; configuring at least one first GUI element; 41. The non-transitory computer-readable storage of claim 40, further comprising: configuring a click event, wherein the click event on the first GUI element invokes the at least one callback function.
42. Pausing at least the first software application and the primary application window of the plurality of software applications includes: preventing the primary application window from being changed; and preventing execution of additional events.
43. 1. A non-transitory computer-readable storage device storing computer-executable instructions that, when executed by a computer, control the computer to perform a method for accessing a database storing customer relationship management (CRM) records including CRM data, the method comprising: defining a plurality of global functions including at least one callback function; executing a CRM software application having a plurality of software applications configured to execute the at least one callback function; executing at least a first software application of the plurality of software applications of the CRM software application; displaying a plurality of first GUI elements corresponding to at least the first software application of the plurality of software applications in a primary application window; configuring at least one first GUI element with a click event, the click event of the at least one first GUI element including the at least one callback function; receiving an event from the primary application window; utilizing the at least one callback function to pause at least the first software application and the primary application window of the plurality of software applications; calling at least the first software application of the plurality of software applications to execute at least a second software application of the plurality of software applications using the at least one callback function; utilizing the at least one callback function to display in a secondary application window a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications; passing parameters to the secondary application window using an event handler; and utilizing the at least one callback function to automatically reopen at least the first software application and the primary application window of the plurality of software applications after closing the secondary application window.
44. Pausing at least the first software application and the primary application window of the plurality of software applications includes: preventing the primary application window from being changed; and preventing execution of additional events.
45. 45. The non-transitory computer-readable storage device of claim 43 or 44, wherein displaying a plurality of second GUI elements corresponding to at least the second software application of the plurality of software applications in a secondary application window includes displaying a modal window.
46. receiving a user input; and comparing the user input to a plurality of events; and selecting an event associated with the user input.
47. defining said at least one callback function in a global context of a CRM application; utilizing the at least one callback function to pause at least the second software application and the secondary application window of the plurality of software applications; executing at least a third software application of the plurality of software applications utilizing the at least one callback function; and resuming at least the second software application of the plurality of software applications utilizing the at least one callback function after completion of at least the third software application of the plurality of software applications.
48. 48. The non-transitory computer-readable storage device of claim 43, wherein the quick action is defined in a global context so as to be invoked from any software application within at least the first software application of the plurality of software applications.
49. The method includes comparing input received by a search engine of at least the first software application of the plurality of software applications; and returning a list of selectable quick actions to the user. receiving input from a user selecting a quick action from a list of selectable quick actions; an event handler of at least the first software application of the plurality of software applications triggering an event; and utilizing the at least one callback function to suspend an internal state of at least the first software application of the plurality of software applications.
Citation Information
Patent Citations
System and method for supporting virtual conversation being participation possible by users in shared virtual space constructed and provided on computer network and medium storing program
JP2001154966A
Providing modal window views for widgets on web pages
US20100077344A1
Embedded experience through bidirectional integration of CRM applications and spreadsheet applications
US20140380139A1