There are currently a wide variety of different types of software systems or applications that allow users to provide inputs to create and edit content. For example, a word processing application allows a user to input text to create a document. A spreadsheet program allows a user to configure cells in a grid in order to create a spreadsheet and fill it with content. Note taking applications (including collaborative note taking applications) allow one or more individual users to set up notebooks (such as notebooks corresponding to different subjects) and to put information, such as notes, figures, etc. into each of the notebooks. Drawing programs allow users create various drawings or diagrams, and other systems allow users to input content in various forms as well. Each of these types of systems also allows a user to add new content, modify the content once it is input, or even to delete it.
Once the content in such a system has been created, the user often wishes to go back and review the content. There is currently almost no way for a user to go back and review the chronology in which content was added, deleted or in which edits were made. Many times, however, reviewing the order of the flow of thoughts (such as the chronology in which the content was added and edited) can be almost as important as thoughts (e.g., the content) themselves.
By way of example, assume that a student is taking notes in a note taking application for a class. Assume that the student then adds a figure or drawing, provided by a professor during a lecture, to the notes and then takes notes on the drawing, as the professor continues to lecture. Assume that the professor is deliberately lecturing on different parts of the drawing, in a specific chronology or order. That is, the instructor may describe the last part of the drawing first, and then go back and fill in a description of the remaining parts of the drawing. It may be helpful to be able to recount the order in which the instructor described the drawing, as well as to see what the instructor actually said (i.e., as well as to be able to read the notes that the student took, themselves). This problem has not been well addressed in conventional systems.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
A user opens a tracked system and provides edit inputs into the system. The edit inputs are logically grouped to create an edit instance. User interface elements in the edit instance are given a sequential identifier to distinguish them from previous and subsequent edit instances. The user can view the edit instances, in chronological order, based upon the sequential identifiers assigned to the different edit instances. The user can also make changes to the edit instances or write comments or otherwise enhance the quality of the content in the system.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
In addition, tracked system 108-110 could include a business data system, such as a customer relations management (CRM) system, an enterprise resource planning (ERP) system a line-of-business (LOB) application or another business data system. These types of business data systems often include business data records for entities, such as customers, accounts, products, inventory, sales, personnel, invoices, quotes, proposals, and other business data. Tracked systems 108-110 could include consumer data systems such as a social network or a news portal or even a user's hard drive, for example. These are described in greater detail below.
In the embodiment discussed herein, tracked system 108 is illustratively a note taking application that enables user 102 to generate, through user interface displays 104, a plurality of different notebooks each corresponding, for example, to a different subject. User 102 can then navigate to the individual notebooks and take notes and also add other content, such as video clips, drawings, or other content provided by an instructor, etc. The note taking application can be a collaborative note taking application in which a plurality of different users can all access the same notebooks. Therefore, while the present discussion will proceed with respect to tracked system 108 being a note taking application, it will be appreciated that this is described by way of example only, and it could be a wide variety of other applications or software systems as well.
Also, in one embodiment, processor 118 is illustratively a computer processor with associated memory and timing circuitry (not separately shown). Processor 118 is illustratively a functional part of edit tracking system 100 and facilitates the functionality of other components or systems in edit tracking system 100. In addition, it will be noted that only a single processor 118 is shown by way of example. However, processor 118 could also be a plurality of different processors, in each of the different components or items in edit tracking system 100. Further, all of the items could be implemented as a system on a chip, or otherwise reduced to hardware, and they are shown as separate items for the sake of example only.
Before describing the operation of system 100 in more detail, a brief overview will be given for the sake of enhanced understanding. User 102 illustratively opens one of tracked systems 108-110. For the sake of example, the particular tracked system opened by user 102 will be described as a note taking application that comprises tracked system 108. It will be noted that system 100 can have multiple users of a tracked system, such as collaborative note taking systems or document management systems as well.
User 102 then makes edits within note taking application 108. User 102 can illustratively do this through user interface displays 104 that provide user input mechanisms that allow user 102 to access and manipulate system 100 and tracked systems 108-110. The user input mechanisms can be any of a wide variety of user input mechanisms, such as buttons, links, text boxes, dropdown menus, etc., and they can receive inputs from user 102 in a variety of different ways. For instance, user 102 can provide inputs with a point and click device (such as a track ball or mouse) using a hardware or soft keyboard or keypad, or using voice inputs, etc. In addition, where the display device used to display user interface displays 104 is a touch sensitive screen, user 102 can provide inputs using touch gestures with the user's finger, a stylus, a pen, or another input device. These are described by way of example only.
Once the user makes edits to the note taking application 108, edit instance generator 114 (in sequential UI tracking component 112) logically groups the edit inputs into an edit instance and assigns the edit instance a sequential identifier (e.g., a time stamp) and stores it as an edit instance in data store 122. This is repeated as edit inputs are received to obtain a plurality of edit instances. When the user later wishes to view a sequential reconstruction of how the edits were made within note taking application 108, the user 102 illustratively accesses edit instance navigator 116 in sequential UI tracking component 112 to view the edit instances 126-128 in data store 122 in a sequential order, or otherwise based on the sequential identifier given to each of the edit instances. In this way, the user can easily see how the content in note taking application 108 was generated, added, deleted, modified, or otherwise changed over time (e.g., based on the sequential identifier).
The view is a collection of all UI elements that are rendered (shown to the user 102) for a particular instant of time. For example, if a user creates two text boxes, one on Mar. 19, 2012 at 1:00 pm PST and a second on Mar. 19, 2012 at 1:01 pm PST, the user may wish to open the document and see both text boxes in a current view. However, if the user flips back to the view created on Mar. 19, 2012 at 1:00 pm, the user sees only the first text box. This is described in greater detail below with respect to
It may happen that the note taking application 152 was created before the edit instances were being tracked by edit tracking system 100. Therefore, component 112 first determines whether any of the UI elements in note taking application 152 are without a sequential identifier (such as a time stamp). This is indicated by block 162 in
Once component 112 determines that all of the UI elements in note taking application 152 have a sequential identifier, then user interface component 106 renders a current view of note taking application 152. This is indicated by block 166 in
In response to the editing inputs, edit instance generator 114 logically groups the edit inputs to create a new edit instance. This is indicated by block 170 in
For instance, in one embodiment, edit instance generator 114 can treat the addition of any new UI element as an event (based on rules 115) indicating that a new edit instance is to be generated. This is indicated by block 172 in
Edit instance generator 114 can also access a rule 115 that indicates that a new edit instance should be generated if any of the UI elements on the current view are deleted. This is indicated by block 178. Of course, a wide variety of other rules for generating new edit instances can be used as well, and this is indicated by block 180 in
Once the UI elements and edits are grouped into a new UI edit instance, edit instance generator 114 gives each UI element in the edit instance the current sequential identifier (such as the current time stamp). This is indicated by block 182 in
It can also be seen in user interface display 200 that the time travel user input mechanism is illustrated generally at 212, as a menu or ribbon that includes a display of a timeline 214, slider 215 (that can be actuated by the user and moved to slide along timeline 214) previous and next buttons 216 and 218, respectively, and current view identifier 220.
Once display 200 is shown, edit instance navigator 116 illustratively receives a user input manipulating the time travel user input mechanisms 212 to a given time or sequence or instance identifier. This is indicated by block 250 in
The user can illustratively actuate or manipulate the time travel user input mechanism 212 in a wide variety of different ways. For instance, if the display screen displaying the user interface that contains the time travel user input mechanism 212 is a touch sensitive screen, the user can simply use touch gestures with the user's finger, with a stylus, with a pen, or in other ways. Of course, the user can also use a point and click device such as a trackball or computer mouse. Similarly, the user can illustratively use a soft or hardware keyboard or keypad. The user can also illustratively use voice inputs or other mechanisms for manipulating the time travel input mechanism 212. These are given by way of example only.
In the embodiment shown in
The user can navigate among the edits instances in other ways as well. When the past end actuator 213 is actuated by the user, slider 215 automatically moves all the way to the left on timeline 214. When actuator 217 is actuated, slider 215 is automatically moved all the way to the right on timeline 214. Based upon the position of slider 215 on timeline 214, the corresponding view (containing the edit instance corresponding to that position on timeline 214) is displayed on pane 206. Also, in one embodiment, the date and time (or other sequential identifier) that the currently-displayed edit instance was generated are displayed in display element 220, so that the user knows the date and time (or other sequential identifier) corresponding to the edit instance that is currently being viewed in pane 206.
User 102 can also manipulate the time travel user input mechanism 212 using the previous and next button 216 and 218. For instance, when the user is viewing a current view and clicks the previous buttons 216, edit instance navigator 116 will display the view corresponding to the previous edit instance, in sequential order. As the user continues to press the previous button 216, edit instance navigator 116 displays the next previous edit instance, with each click. The same is true as user 102 clicks the next button 218. That is, edit instance navigator 116 displays the next subsequent edit instance with each click.
In addition, in one embodiment, user 102 can change what view is being presented by entering, textually, a date and time in a user input mechanism comprising time display UI element 220. In that case, edit instance navigator 116 identifies the edit instance closest to the input date and time and displays that edit instance. Similarly, the user can illustratively use other means of navigating through the edit instances. For instance, in one embodiment, a dropdown menu is provided that lists the edit instances in sequential order. The user can simply select an edit instance from the dropdown menu and the corresponding view will be displayed. The other types of manipulating the time travel user input mechanism 212 are indicated by block 222 in
Once the user 102 has manipulated the time travel user input mechanism 212, edit instance navigator 116 retrieves the appropriate edit instance from the appropriate data store in data store system 120 and the edit instance, and the corresponding time and date on which the edit instance was created, are displayed. This is indicated by block 224 in
A number of additional things should be noted. For instance, the sequential edit instances can be generated for a single page displayed in the tracked system (such as a single page in note taking application 154). This is indicated by block 226 in
However, it may also be that user 102 is flipping between pages in note taking application 152, or in another tracked system, and making edits. In that case, sequential edit instances may reside on different pages. Therefore, as the user navigates among the edit instances, the tracked system is controlled so that it displays different pages that correspond to the edits made by the user, in sequential order. For instance, if the user was first editing page 1 of the notes and then flipped to page 5 of the notes (or even a different section in a different notebook) then as the user navigates among the edit instances created in the note taking application 152, the different pages or sections can be displayed, as the user navigates among the edit instances. Switching pages in this fashion, as the user navigates through edit instances, is indicated by block 228 in
It may also be that the user is making changes among a variety of different documents. It may also be that edit instance generator 114 generates edit instances for each of the multiple different documents in a single tracked system and groups them together. For instance, where the tracked system is a word processing application, it may be that user 102 is opening and closing (or navigating back and forth between) two or more different documents and making changes. In one embodiment, edit instance generator 114 sequentially identifies the edit instances generated for all of the different documents accessed by the user. Therefore, as the user navigates among the various edit instances, the different documents can be opened and displayed, as corresponding to a selected edit instance which the user 102 has selected for viewing. Multiple documents are indicated by block 230 in
Of course, the edit instances may be generated for other tracked systems, such as for an operating system. For example, the user may change settings on an operating system over time. An edit instance can be generated each time the user changes settings. As the user navigates among the edit instances created for the operating system, the settings can change back and forth and be displayed, as desired. In the embodiment where an operation system is used, the user can navigate through edit instances to determine which programs were open in which sequence and at what times. This is indicated by block 232 in
It will be appreciated, of course, that if the user deletes a UI element, it is marked as deleted so that it does not appear in subsequent views. The UI element is not deleted, itself, so that it can be viewed when the appropriate prior edit instances (ones created while it existed) are displayed.
It may also be that a user wishes to remove all timeline information from a document. In that embodiment, the user is provided with a suitable user interface mechanism which, when actuated, flattens the document by removing all timestamp information from the UI elements. This may be, for instance, in order to enhance privacy or due to size constraints or for another reason.
As briefly mentioned above, tracked system 108 can be a social network system. Such a system allows the user to make edits to profile information, add or delete friends, send messages, etc. In that embodiment, system 100 allows the user to group logical user actions into edit instances. The user can then enter a date and view the status of the user's wall as of the entered date. Similarly, the tracked system 108 can be a news portal. The user can enter a date and see the status and contents of the news portal home page as of the entered date. If the tracked system 108 is a user's hard drive, the user can enter a date and see the status and contents of a folder, the desktop or other portion of the hard drive as of the entered date. These are exemplary only.
The description is intended to include both public cloud computing and private cloud computing. Cloud computing (both public and private) provides substantially seamless pooling of resources, as well as a reduced need to manage and configure underlying hardware infrastructure.
A public cloud is managed by a vendor and typically supports multiple consumers using the same infrastructure. Also, a public cloud, as opposed to a private cloud, can free up the end users from managing the hardware. A private cloud may be managed by the organization itself and the infrastructure is typically not shared with other organizations. The organization still maintains the hardware to some extent, such as installations and repairs, etc.
In the embodiment shown in
It will also be noted that system 100, or portions of it, can be disposed on a wide variety of different devices. Some of those devices include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as palm top computers, cell phones, smart phones, multimedia players, personal digital assistants, etc.
Under other embodiments, applications or systems (like system 100) are received on a removable Secure Digital (SD) card that is connected to a SD card interface 15. SD card interface 15 and communication links 13 communicate with a processor 17 (which can also embody processors 108 from
I/O components 23, in one embodiment, are provided to facilitate input and output operations. I/O components 23 for various embodiments of the device 16 can include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touch screens, proximity sensors, microphones, tilt sensors, and gravity switches and output components such as a display device, a speaker, and or a printer port. Other I/O components 23 can be used as well.
Clock 25 illustratively comprises a real time clock component that outputs a time and date. It can also, illustratively, provide timing functions for processor 17.
Location system 27 illustratively includes a component that outputs a current geographical location of device 16. This can include, for instance, a global positioning system (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning system. It can also include, for example, mapping software or navigation software that generates desired maps, navigation routes and other geographic functions.
Memory 21 stores operating system 29, network settings 31, applications 33, application configuration settings 35, data store 37, communication drivers 39, and communication configuration settings 41. Memory 21 can include all types of tangible volatile and non-volatile computer-readable memory devices. It can also include computer storage media (described below). Memory 21 stores computer readable instructions that, when executed by processor 17, cause the processor to perform computer-implemented steps or functions according to the instructions. System 100 or the items in data store system 120, for example, can reside in memory 21. Similarly, device 16 can have a client business system 24 which can run various business applications or embody parts or all of system 100. Processor 17 can be activated by other components to facilitate their functionality as well.
Examples of the network settings 31 include things such as proxy information, Internet connection information, and mappings. Application configuration settings 35 include settings that tailor the application for a specific enterprise or user. Communication configuration settings 41 provide parameters for communicating with other computers and include items such as GPRS parameters, SMS parameters, connection user names and passwords.
Applications 33 can be applications that have previously been stored on the device 16 or applications that are installed during use, although these can be part of operating system 29, or hosted external to device 16, as well.
The mobile device of
Note that other forms of the devices 16 are possible.
Computer 810 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 810 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media is different from, and does not include, a modulated data signal or carrier wave. It includes hardware storage media including both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 810. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to the monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
The computer 810 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810. The logical connections depicted in
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.