FIELDThe systems and methods described herein generally relate to organizing, displaying, and managing revision history information associated with electronic documents, such as text documents, spreadsheets, presentations, multimedia files, or other types of documents.
BACKGROUNDThe rapid advancement of networking and computer technology has allowed people to communicate and work together even if they are located in different parts of the world. Often, multiple editors may need to collaboratively create and edit a shared common electronic document. Because multiple editors may make many revisions to the document over a long period of time, existing document editing applications often assist a user in managing the revision history information of the document. For example, some document editing applications maintain and display a complete list of revisions made to the document for viewing by a user. Each revision in the list of revisions may include information about the name of the editor who made the revision, the time that the revision was made, and the content of revision.
Unfortunately, in many situations, it is not desirable for a document editing application to display a complete list of revisions made to a document because it may result in information overload. For example, if a document editing application must display a very long list of revisions, a user may have difficulty visually determining how a particular revision affected a particular section of the document. Similarly, the user may have difficulty determining the identity of the editor of a particular revision or set of revisions. In addition, the user may have difficulty viewing only the revisions made to a particular section of the document.
SUMMARYThus, systems and methods are disclosed that allow a user to easily view only a subset of the revisions made to a document based on a context selected by the user. A context refers to any subset of the document, such as a word, an image, a phrase, a sentence, a paragraph, or other portion of the document.
The user selects a context by selecting a section of the electronic document in a document editing application. The context is used to change the behavior of the application, such as changing the specific revision history information that is displayed by the application. Using the selected context as input, the application filters and displays only information about revisions associated with the selected section of the electronic document. The application omits information about revisions made to other unselected sections of the electronic document from display.
According to one aspect, the present disclosure relates to a method of presenting revision history information of an electronic document. The method includes detecting a selection of a section of the electronic document by a user. In response to detecting the selection of the section of the electronic document, first menu is displayed having a command to display a subset of the revision history information of the electronic document. The subset includes revision history information corresponding to the selected section of the electronic document and omits revision history information unassociated with the selected section of the electronic document. The method further includes detecting a selection by the user of the command to display the subset of the revision history information of the electronic document. In response to detecting the selection by the user of the command to display the subset of the revision history information of the electronic document, a list is displayed via a second menu. The list has a revision entry associated with a revision to the selected section of the electronic document. The revision entry includes identification information identifying an editor having made the revision to the selected section of the electronic document, and timestamp information indicating the time that the revision was made.
In some embodiments, the identification information includes a name corresponding to the editor and an image corresponding to the editor. In some embodiments, the identification information is displayed in a color associated with the editor. In some embodiments, the method includes displaying, in the electronic document, text corresponding to the revision entry in the color associated with the editor identified in the revision entry. In some embodiments, the displaying text includes displaying text added to the electronic document and not displaying text removed from the electronic document. In some embodiments, the method includes displaying, in a vertical margin of a visual display of the electronic document, a vertical line having a segment. A first end of the segment is aligned vertically with a beginning of the text corresponding to the revision entry. A second end of the segment is aligned vertically with an end of the text, and the segment is displayed in the color of the text. In some embodiments, the first end of the segment comprises a user interface configured to be selected by the user. In some embodiments, the method includes detecting a selection by the user of the first end of the segment. In response to detecting the selection of the first end of the segment, the revision entry is displayed next to the first end of the segment.
According to another aspect, the present disclosure relates to a system for presenting revision history information of an electronic document. The system includes an electronic document editing application. The application includes a model process for managing application data associated with the electronic document and a context revision history process for receiving commands from a user. The context revision history process is configured to detect a selection of a section of the electronic document by a user. The application also includes a revision database for storing revision history information of the electronic document and a view process for displaying the electronic document in a visual display. The view process is configured to display a menu including a list having a revision entry associated with a revision to the selected section of the electronic document. The revision entry is retrieved from the revision database, and the revision entry includes identification information identifying an editor having made the revision to the selected section of the electronic document. The revision entry also includes timestamp information indicating the time that the revision was made.
In some embodiments, the identification information includes a name corresponding to the editor and an image corresponding to the editor. In some embodiments, the identification information is displayed in a color associated with the editor. In some embodiments, the view process is further configured to display text corresponding to the revision entry in the color associated with the editor identified in the revision entry. In some embodiments, the view process is further configured to display text added to the electronic document and not text removed from the electronic document. In some embodiments, the view process is further configured to display, in a vertical margin of a visual display of the electronic document, a vertical line comprising a segment. A first end of the segment is aligned vertically with a beginning of the text corresponding to the revision entry. A second end of the segment is aligned vertically with an end of the text, and the segment is displayed in the color of the text. In some embodiments, the first end of the segment comprises a user interface element configured to be selectable by the user. In some embodiments, the controller process is further configured to detect a selection by the user via the controller logic of the first end of the segment. In response to detecting the selection of the first end of the segment, the view process is configured to display the revision entry next to the first end of the segment.
BRIEF DESCRIPTION OF THE DRAWINGSFurther features of the present disclosure, its nature and various advantages, will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
FIG. 1 shows an illustrative system for providing and displaying contextual revision history, according to an embodiment;
FIG. 2 shows in more detail the revision database ofFIG. 1, according to an embodiment;
FIG. 3 shows in more detail thedocument model114 ofFIG. 1, according to an embodiment;
FIG. 4A shows an illustrative screenshot of the system ofFIG. 1, according to an embodiment;
FIG. 4B shows the document model ofFIGS. 1 and 3, according to an embodiment;
FIG. 4C shows the revision table ofFIG. 2, according to an embodiment;
FIG. 5A is a pictorial representation of a display screen of the system ofFIG. 1, according to an embodiment;
FIG. 5B shows another view of the document model ofFIGS. 1 and 3, according to an embodiment;
FIG. 5C shows in more detail the revision table210 ofFIG. 2 in operation with the screenshot ofFIG. 5A, according to an embodiment;
FIG. 6 shows an illustrative process for displaying the revision history information of a section of an electronic document based on the selection of a section or context, according to an embodiment;
FIG. 7 shows an illustrative process for displaying the revision history information of a section of an electronic document using a revision history bar, according to an embodiment; and
FIG. 8 is a block diagram of a computing device for presenting the revision history information of an electronic document, according to an embodiment.
DESCRIPTION OF CERTAIN EMBODIMENTSTo provide an overall understanding of the systems and methods described herein, certain implementations will now be described, including systems and methods for displaying contextual revision history. However, it will be understood by one of ordinary skill in the art that the systems and methods described herein may be adapted and modified as is appropriate for the application being addressed. For example, the systems and methods described herein may be adapted for other uses, such as for displaying the revision history of portions of a picture, a sound clip, a movie clip, or an email thread. Similarly, the systems and methods described herein may be adapted for other platforms such as online web applications (e.g. Google Documents), mobile devices such as smartphones or tablets, or collaborative web frameworks such as a wiki. Thus, the systems and methods described herein may be employed in other suitable applications, and that such other additions and modifications will not depart from the scope thereof.
FIG. 1 shows an illustrative system for providing and displaying contextual revision history, according to an embodiment. Asystem100 includes adocument editor110, a contextrevision history process120, arevision database130, auser140, and anelectronic document150. Thedocument editor110 includes an application programming interface (API)112, adocument model114, and aview component116. The contextrevision history process120 includes acontext detector122, a revision filter/reverter124, and arevision list builder126. As described in detail further below, thesystem100 allows theuser140 to view the revision history of theelectronic document150, which is being edited and/or viewed in thedocument editor110. In particular, theuser140 selects a context, such as a sentence or a paragraph, within thedocument150 in order to view revision history information corresponding only to the selected context within thedocument150.
Thedocument editor110 may be any type of electronic document editing or viewing application, such as a text editor, a spreadsheet application, an email application, or an integrated development environment (IDE) program. The depicteddocument editor110 includes an application programming interface (API)112, adocument model114, and aview component116.
TheAPI112 provides an interface for the contextrevision history process120 to interact with and send commands to thedocument editor110. For example, theAPI112 may provide functions that may be called by the contextrevision history process120 to send commands to thedocument model114 and theview component116.
Thedocument model114 is a data structure that contains one or more structured data sets representing the data stored in thedocument150. Thedocument editor110 generates thedocument model114 from the data stored in thedocument150 when it loads thedocument150 into memory. Thedocument model114 stores data and metadata associated with thedocument150. This data and metadata may include information such as text, formatting, images, sound, and authorship information. For example, thedocument model114 may store the data and metadata associated with thedocument150 inside a markup language tree structure such as an Extensible Markup Language (XML) Document Object Model (DOM). The systems and methods disclosed herein do not depend on any particular implementation of thedocument model114, and any suitable document model may be employed.
Theview component116 renders the data stored in thedocument model114 to a screen, such as a computer monitor, for viewing by theuser140. Thus, theview component116 may display thedocument150 in an interactive editor for viewing and editing by the user. For example, theview component116 may be a canonical document display process. Theview component116 may provide a What You See Is What You Get (WYSIWYG) graphical user interface that displays the formatted text of thedocument150 as an editable document.
The depicted contextrevision history process120 includes acontext detector122, a revision filter/reverter124, and arevision list builder126. The contextrevision history process120 detects the selection of a context within thedocument150 by theuser140 and provides theview component116 with a filtered list of revisions made to that context of thedocument150 for display to theuser140. Thecontext detector122 detects the selection of a context within thedocument150 by theuser140. A context is a subset of the text in thedocument150, such as a particular portion or section of the text of thedocument150. For example, a subset of the text could be a particular word, sentence, or paragraph in the text of thedocument150. A subset of the text may also be a particular part of a sentence, a particular part of a paragraph, a particular set of multiple paragraphs, or particular parts of multiple paragraphs. The subset does not need to be continuous and may include, for example, sentences from different paragraphs of the text. Thus, a context represents a subset of the whole text of thedocument150.
In thesystem100, the revision history information of thedocument150 is represented as a list of revision entries. Each revision entry in the list is associated with a revision to thedocument150. Thus, the revision history information of a particular context of thedocument150 is represented as a list of revision entries associated with revisions to that particular context.
Thecontext detector122 detects the selection of a context by looking and responding to certain actions taken by theuser140. For example, theuser140 may use an input device such as a mouse to select a section of text in thedocument150, open a menu, and select a command in the menu to the contextrevision history process120 to display revisions made to the selected section of text. Thecontext detector122 may include a listener process that specifically looks for and detects the selection of text by theuser140.
After thecontext detector122 has detected the selection of a context, the revision filter/reverter124 uses the selected context to obtain a subset of the revision history information of thedocument150 from therevision database130. The subset of the revision history information includes revision history information corresponding to the selected context and omits revision history information unassociated with the selected context. For example, the selected context may be a particular sentence within thedocument150. In this example, the revision filter/reverter124 queries therevision database130 for revisions made to that sentence within thedocument150. In response, therevision database130 returns revision data pertaining to the revisions made to that sentence within thedocument150.
After the revision filter/reverter124 has received the subset of the revision history information corresponding to the selected context, therevision list builder126 uses the subset to build a list of revision entries corresponding to the selected context. Each revision entry in the list is associated with a revision made to the selected context. For example, each revision entry may include identification information identifying the editor who made the revision, timestamp information corresponding to the time that the revision was made, and the content of the revision. The identification information may include a name or username and an image associated with the editor.
After therevision list builder126 builds the list of revision entries corresponding to the selected context, theview component116 displays the list to theuser140 via a display, such as a computer monitor or other visual interface.
In some embodiments, the revision filter/reverter124 allows theuser140 to revert or “undo” a revision made to the selected context. For example, theuser140 may choose a revision entry in the list of revision entries constructed by therevision list builder126. Theuser140 may issue a command to the contextualrevision history process120 to revert the revision associated with the chosen revision entry. In response, the revision filter/reverter124 updates therevision database130 to undo that revision in thedocument150.
In some embodiments, thesystem100 may be implemented in a computer system. For example, thedocument editor110, the contextrevision history process120, and therevision database130 may be implemented as separate software applications on the computer system or as one integrated software application. In some embodiments, thedocument editor110 and the contextrevision history process120 may be implemented on a server and provided to theuser140 over the internet via a web browser. Therevision database130 may also be implemented on a server separate from thedocument editor110 and the contextrevision history process120. Therevision database130 may be distributed among multiple servers over the internet.
FIG. 2 shows in detail therevision database130 ofFIG. 1, according to an embodiment. Therevision database130 may be a flat file, an SQL database or other type of relational database or distributed database suitable for storing revision history information. Therevision database130 includes a revision table210. The revision table210 stores the revision history information of thedocument150 ofFIG. 1. The revision table210 includes aneditor column212, atimestamp column214, acontent column216, and acontext column218. The revision table210 also includes a number of revision entry rows, such asrevision entry rows220,222, and224. Each revision of thedocument150 is represented by a revision entry row in the revision table210. For a revision entry row, such as therevision entry row220, theeditor column212 contains information identifying the editor who made the revision, and thetimestamp column214 contains timestamp information indicating the time that the revision was made. Similarly, thecontent column216 contains information about the content of the revision, such as the text that was added or removed or the formatting information that was changed. Thecontext column218 contains information about the context that the revision corresponds to. For example, inFIG. 2, therevision entry row220 represents a revision made by a user “User1” (225) at 8:45 am on Mar. 1, 2012 (226) associated with a context named “Sentence1” (227). The following discussion ofFIG. 3 will explain how the context is mapped to the underlying electronic document and document model.
FIG. 3 shows in more detail a graphical depiction of thedocument model114 ofFIG. 1, according to an embodiment. The depicteddocument model114 is represents thedocument150 as a hierarchical tree structure containing aroot document node310,paragraph nodes320,330, and340, andsentence nodes322,324,326,332, and342. For example, the hierarchical tree structure may be an XML DOM structure commonly used for web applications.
Each node corresponds to a section of thedocument150. For example, theparagraph nodes320,330, and340 correspond to a first, a second, and a third text paragraph in thedocument150. Theparagraph node320 has three children nodes—thesentence nodes322,324, and326, which correspond to a first, a second, and a third sentence in the first paragraph. Theparagraph node330 has one child node—thesentence node332, which corresponds to a sentence in the second paragraph, and theparagraph node342 has one child node—thesentence node342, which corresponds to a sentence in the third paragraph. The discussion ofFIGS. 4A and 4B below will illustrate how the nodes map to the text of thedocument150.
Each node also contains information associated with its corresponding section of thedocument150. The information may include data regarding the font style, font size, formatting, and textual content of the corresponding section of thedocument150. For example, theparagraph node320 may contain formatting and font information regarding the first paragraph in thedocument150. Similarly, thesentence node322 may contain the text of the sentence that it corresponds to. Each node also has a label or name for identifying itself. For example, theparagraph node320 has the name “Paragraph1,” and thesentence node322 has the name “Sentence1.”
The hierarchical tree of nodes in thedocument model114 provides a way to structurally divide thedocument150 into sections. Because a node corresponds to a section of thedocument150, a node may represent a section, and thus a context within thedocument150. Each revision to thedocument150 is associated with a node to identify the context that the revision is associated with. For example, turning back toFIG. 2, therevision entry row220 is associated with a context “Sentence1,” which corresponds to thesentence node322. Accordingly, the revision represented byrevision entry row220 may be mapped to a particular section of thedocument150 as represented by thesentence node322 in thedocument model114.
The hierarchical structure of thedocument model114 inFIG. 3 is explained by way of example only. Thedocument model114 may be divided into different types of subsections without departing from the principles of the present disclosure. In addition, thedocument model114 is represented as a tree structure by way of example only. Any suitable data structure known in the art may be used to represent thedocument model114.
FIGS. 4A,4B, and4C illustrate the presentation of revision history information of an electronic document in thesystem100 ofFIG. 1, according to an embodiment.FIG. 4A shows anillustrative screenshot400 containingsentence410, acommand menu420, and arevision history menu430. Therevision history menu430 contains arevision entry432 and arevision entry434.FIG. 4B shows another view of thedocument model114 ofFIGS. 1 and 3, according to an embodiment.FIG. 4C shows the revision table210 ofFIG. 2, according to an embodiment.
InFIG. 4A, thescreenshot400 shows a view of the depicteddocument150 ofFIG. 1. As seen in thescreenshot400, thedocument150 contains a firstparagraph containing sentences410,412, and414, a second paragraph containing asentence416, and a third paragraph containing asentence418. A user, such as theuser140 ofFIG. 1, selects thesentence410 with a mouse and opens thecommand menu420. For example, thecommand menu140 may be opened by right clicking on the selectedsentence410 with the mouse. Thecommand menu140 contains a command to display a subset of the revision history information of the electronic document corresponding to the selected context. InFIG. 4A, theuser140 selects the command “History of Selection” to view the revisions made to the selectedsentence410.
In response to theuser140's selection of the command, thecontext detector122 ofFIG. 1 detects the context selected by theuser140 by identifying the appropriate node or nodes in thedocument model114 that corresponds to the selectedsentence410. As shown inFIG. 4B, the sentences inFIG. 4A correspond to the nodes inFIG. 4B. For example, thesentence nodes322,324, and325 correspond to thesentences410,412, and414 respectively. Similarly, thesentence nodes330 and340 correspond to thesentences416 and418 respectively. As shown inFIG. 4B, thecontext detector122 determines that the selectedsentence410 corresponds to thesentence node322 in thedocument model114. Turning back toFIG. 1, thecontext detector122 instructs the revision filter/reverter124 to search therevision database130 for revisions corresponding to a context represented by thesentence node322.
FIG. 4C shows the revision table210 stored in therevision database130 ofFIGS. 1 and 2. The revision filter/reverter124 queries therevision database130 for revision entry rows in the revision table210 that match the context represented by thesentence node322. Thesentence node322 has the name “Sentence1,” so therevision database130 searches the revision table210 for any revision entry rows that match the value “Sentence1” under thecontext column218. As seen inFIG. 4C, therevision entry row220 and therevision entry row222 match the value “Sentence1” under thecontext column218. Accordingly, in response to the query made by the revision filter/reverter124, therevision database130 will return the revision data in therevision entry rows220 and222 to the revision filter/reverter124, as shown inFIG. 1.
After the revision filter/reverter124 receives the revision data in therevision entry rows220 and222, it communicates the revision data to therevision list builder126, as shown inFIG. 1. Therevision list builder126 constructs a list containing two revision entries sorted in chronological order by timestamp information. Thus, the first revision entry corresponds to therevision entry row220, and the second revision entry corresponds to therevision entry row222. Therevision list builder126 transmits the list of revision entries to theview component116 in thedocument editor110. Theview component116 renders the list of revision entries for display to theuser140 to provide a response to theuser140's command to view the revisions made to the selectedsentence410. As seen inFIG. 4A, therevision history menu430 displays the list of revision entries. Therevision entry432 displays the information in therevision entry row220 in order to tell theuser140 that the selectedsentence410 was edited by an editor with the username “User1” at 3/1/122012 at 8:45 am. Similarly, the revision entry displays the information in therevision entry row222 to tell theuser140 that the selectedsentence410 was also edited by another editor with the username “User2” at Mar. 2, 2012 at 12:00 pm.
As depicted inFIGS. 4A,4B, and4C, thesystem100 presents to a user revisions made to a particular section of an electronic document based on a context selected by the user. In addition to selecting a single sentence, theuser140 may optimally select any subset of the text in thedocument150, including any portion of a sentence or group of sentences or any portion of a paragraph or group of paragraphs.
In some embodiments, each different editor in therevision history menu430 may be associated with a different color. Revisions in the selectedsentence410 made by a particular editor may be displayed in the editor's associated color to assist theuser140 in distinguishing between revisions made by different editors. For example, the editor “User1” may be associated with the color green, and the editor “User2” may be associated with the color blue. Thus, the portions of the selectedsentence410 edited by “User1” may be displayed in green, and the portions of the selectedsentence410 edited by “User2” may be displayed in blue.
In some embodiments, theuser140 may select a revision entry in therevision history menu430 and send a command to the contextualrevision history process120 to revert the revision associated with the revision entry. For example, theuser140 may choose therevision entry432 and send a command to the revision filter/reverter124 to revert the revision associated with therevision entry432. In response, the revision filter/reverter124 may send a command to the revision table210 to remove therevision entry row220, which corresponds to therevision entry432. In addition, thedocument150 may be updated to remove the changes introduced in the revision associated with therevision entry432.
FIGS. 5A,5B, and5C illustrate the presentation of revision history information of an electronic document in thesystem100 ofFIG. 1 using a revision history bar, according to an embodiment.FIG. 5A shows anillustrative screenshot500 containingsentences410,412,414,416, and418, a revision history bar515 containingrevision line segments521 and531 anduser interface elements520 and530, and arevision entry532.FIG. 5B shows another view of thedocument model114 ofFIGS. 1 and 3, according to an embodiment.FIG. 5C shows the revision table210 ofFIG. 2, according to an embodiment.
InFIG. 5A, thescreenshot500 shows a view of thedocument150 ofFIG. 1. As seen in thescreenshot500 and as discussed previously, thedocument150 contains a first paragraph containing thesentences410,412, and414, a second paragraph containing thesentence416, and a third paragraph containing thesentence418. Thescreenshot500 also shows a revision history bar515. The revision history bar515 is a user interface element implemented as a fixed vertical line in the margin of thescreenshot500 containing therevision line segments521 and531. The revision history bar515 provides an unobtrusive way to show how the revisions made to thedocument150 line up with the text of thedocument150. Thus, the revision history bar515 provides dynamic, unobtrusive access to revision history information of thedocument150.
To show how the revisions made to thedocument150 line up with the text of thedocument150, the revision history bar515 contains therevision line segments521 and531. Therevision line segments521 and531 correspond to different contexts within thedocument150 that contain revisions, and therevision line segments521 and531 align vertically with those contexts. For example, therevision line segment521 corresponds to the first paragraph of thedocument150. As seen inFIG. 5A, therevision line segment521 aligns vertically with the first paragraph of thedocument150 so that the top end of therevision line segment521 aligns vertically with the beginning of the paragraph, and the bottom end of therevision line segment521 aligns vertically with the end of the paragraph. The first paragraph of thedocument150 corresponds to the “Paragraph1” context, as shown inFIG. 5B. Thus the first paragraph of thedocument150 has two associated revisions in the “Sentence1” context as seen inFIGS. 5B and 5C. Similarly, therevision line segment531 corresponds to the second paragraph of the document150 (i.e. the “Paragraph2” context).
Each revision line segment contains a user interface element at the top end of the revision line segment. As shown inFIG. 5A, therevision line segment521 contains theuser interface element520, and therevision line segment531 contains theuser interface element530. Theuser interface elements520 and530 may be buttons or any other suitable user interface element. When theuser140 interacts with a user interface element, therevision entry532 provides theuser140 with revision history information corresponding to the context associated with the revision line segment containing that user interface element. For example, when theuser140 interacts (i.e. clicks or hovers over with a mouse pointer) with theuser interface element530, therevision entry532 provides the user with revision history information corresponding to the context associated with therevision line segment531, which contains theuser interface element530. In this example, therevision line segment531 is associated with the “Paragraph2” context. Following the steps similar to those described previously, thecontext detector122 determines that that the selected context is theparagraph node320 shown inFIG. 5B. Thecontext detector122 determines that theparagraph node320 has only one child node, i.e. the sentence node322 (the “Sentence4” context). Thus, the revision filter/reverter124 queries therevision database130 for revision entry rows that correspond to the “Sentence4” context. Therevision database130 will return the revision data in therevision entry row224, which corresponds to the “Sentence4” context, as shown inFIG. 5C. The build contextrevision list component124 will construct a list containing one revision entry (i.e. the revision entry532) and instruct theview component116 to display the list to theuser140. Accordingly, therevision entry532 is displayed next to theuser interface element530 inside a window, a tooltip, or some other suitable user interface element. Therevision entry532 provides theuser140 with information relating to the revision made by the editor “User1” at Mar. 10, 2012 at 3:15 pm to thesentence416.
FIG. 6 shows an illustrative process for showing the revision history information of a section of an electronic document based on the selection of a section or context. Aprocess600 may be performed by a system such as thesystem100 ofFIG. 1. In order to provide a clear explanation, theprocess600 will be described in relation to thesystem100 by way of example. Theprocess600 begins with a step602. At the step602, thecontext detector122, detects the selection of a section of theelectronic document150 by theuser140. For example, theuser140 may select any subset of thedocument150, such as a word, a phrase, a sentence or a paragraph, a portion thereof, etc. As shown inFIGS. 4A and 5A, the selection section may be thesentence410 or thesentence416.
Atstep604, in response to detecting the selection of the section of thedocument150, theview component116 displays a first menu having a command to display a subset of the revision history information of thedocument150. For example, inFIG. 4A, the first menu is thecommand menu420. The command to display the subset of the revision history information of thedocument150 is the command labeled “History of Selection” in thecommand menu420.
Atstep606, thecontext detector122 detects the user selection of the command to display the subset of the revision history information of the electronic document. For example, turning back toFIG. 4A, the user selection of the “History of Selection” command is theuser140's clicking or hovering over the “History of Selection” command with a mouse pointer. As described in detail previously, in response to the detection of the user selection of the command, the revision filter/reverter124 queries therevision database130 to obtain revision data corresponding to the selected section. Therevision list builder126 constructs a list of revision entries from the revision data obtained from therevision database130. Therevision list builder126 sends the list of revision entries to theview component116 for display.
Atstep608, in response to detecting the selection by theuser140 of the command to display the subset of the revision history information of thedocument150, theview component116 displays via a second menu the list of revision entries associated with revisions to the selected section of thedocument150. A revision entry may be associated with a revision to the selected section of thedocument150. For example, inFIG. 4A, the list of revision entries is shown visually as therevision history menu430, which contains therevision entry432 and therevision entry434. A revision entry includes identification information identifying an editor having made the revision to the selected section of thedocument150, and timestamp information indicating the time that the revision was made. In some embodiments, the identification information includes a name corresponding to the editor and an image corresponding to the editor.
Atstep610, for each revision entry, theview component116 may display the text corresponding to each revision entry in a color associated with the editor identified in the revision entry. For example, inFIG. 4A as described above, theview component116 may display the portion of thesentence410 corresponding to the revision made by the editor “User1” in one color (e.g. green) and the portion of thesentence410 corresponding to the revision made by the editor “User2” in another color (e.g. blue). In some embodiments, the text displayed includes text added to thedocument150 and not text removed from thedocument150.
FIG. 7 shows an illustrative process for showing the revision history information of a section of an electronic document using a revision history bar. A process700 may be performed by a system such as thesystem100 ofFIG. 1. To provide a clear explanation, the process700 will be described in relation to thesystem100 by way of example. The process700 begins with astep702. Atstep702, theview component116 displays a vertical line (called a “revision history bar”) containing line segments in a vertical margin of a visual display of thedocument150. The line segments are revision line segments such as those shown inFIG. 5A. For example, inFIG. 5A, the revision history bar is the revision history bar515, and the revision line segments are therevision line segments521 and531. As mentioned above in the discussion ofFIG. 5A, a first end of a revision line segment is aligned vertically with the beginning of the text corresponding to the revision entry associated with the revision line segment. A second end of the revision line segment is aligned vertically with the end of the text. The revision line segment is displayed in the same color as the text, where the color corresponds to the color associated with the editor who made the revision associated with the revision line segment.
Atstep704, thecontext detector122 detects the user selection of a revision line segment. For example, inFIG. 5A, theuser140 selects a revision line segment by using a mouse pointer to click or hover over a user interface element that the revision line segment contains. Thus, to select therevision line segment531, theuser140 clicks or hovers over theuser interface element530.
Atstep706, theview component116 may visually mark the text in the document50 associated with the selected revision line segment. For example, inFIG. 5A, if theuser140 selects therevision line segment531, then theview component116 may highlight thesentence416, which corresponds to the context associated with therevision line segment531.
Atstep708, theview component116 displays the associated revision entry next to the selected revision line segment. For example, inFIG. 5A, the view component displays therevision entry532 which corresponds to the context associated with therevision line segment531.
FIG. 8 is a block diagram of a computing device, such as any of the parts of thesystem100 ofFIG. 1, for presenting the revision history information of an electronic document. Each of the parts of thesystem100, such as thedocument editor110, the contextrevision history process120, and therevision database130 may be implemented on one ormore computing devices800. In some implementations thecomputing devices800 may be connected over a local area network or over the internet.
Thecomputing device800 comprises at least one communications interface unit, an input/output controller810, system memory, and one or more data storage devices. The system memory includes at least one random access memory (RAM802) and at least one read-only memory (ROM804). All of these elements are in communication with a central processing unit (CPU806) to facilitate the operation of thecomputing device800. Thecomputing device800 may be configured in many different ways. For example, thecomputing device800 may be a conventional standalone computer or alternatively, the functions ofcomputing device800 may be distributed across multiple computer systems and architectures. InFIG. 8, thecomputing device800 is linked, via network or local network, to other servers or systems.
Thecomputing device800 may be configured in a distributed architecture, wherein databases and processors are housed in separate units or locations. Some units perform primary processing functions and contain at a minimum a general controller or a processor and a system memory. In distributed architecture implementations, each of these units may be attached via thecommunications interface unit808 to a communications hub or port (not shown) that serves as a primary communication link with other servers, client or user computers and other related devices. The communications hub or port may have minimal processing capability itself, serving primarily as a communications router. A variety of communications protocols may be part of the system, including, but not limited to: Ethernet, SAP, SAS™, ATP, BLUETOOTH™, GSM and TCP/IP.
TheCPU806 comprises a processor, such as one or more conventional microprocessors and one or more supplementary co-processors such as math co-processors for offloading workload from theCPU806. TheCPU806 is in communication with thecommunications interface unit808 and the input/output controller810, through which theCPU806 communicates with other devices such as other servers, user terminals, or devices. Thecommunications interface unit808 and the input/output controller810 may include multiple communication channels for simultaneous communication with, for example, other processors, servers or client terminals.
TheCPU806 is also in communication with the data storage device. The data storage device may comprise an appropriate combination of magnetic, optical or semiconductor memory, and may include, for example,RAM802,ROM804, flash drive, an optical disc such as a compact disc or a hard disk or drive. TheCPU806 and the data storage device each may be, for example, located entirely within a single computer or other computing device; or connected to each other by a communication medium, such as a USB port, serial port cable, a coaxial cable, an Ethernet cable, a telephone line, a radio frequency transceiver or other similar wireless or wired medium or combination of the foregoing. For example, theCPU806 may be connected to the data storage device via thecommunications interface unit808. TheCPU806 may be configured to perform one or more particular processing functions.
The data storage device may store, for example, (i) anoperating system812 for thecomputing device800; (ii) one or more applications814 (e.g., computer program code or a computer program product) adapted to direct theCPU806 in accordance with the systems and methods described here, and particularly in accordance with the processes described in detail with regard to theCPU806; or (iii) database(s)816 adapted to store information that may be utilized to store information required by the program. The one ormore applications814 may include thedocument editor110 and the contextrevision history process120. Thedatabase816 may include therevision history database130.
Theoperating system812 andapplications814 may be stored, for example, in a compressed, an uncompiled and an encrypted format, and may include computer program code. The instructions of the program may be read into a main memory of the processor from a computer-readable medium other than the data storage device, such as from theROM804 or from theRAM802. While execution of sequences of instructions in the program causes theCPU806 to perform the process steps described herein, hard-wired circuitry may be used in place of, or in combination with, software instructions for implementation of the processes of the present disclosure. Thus, the systems and methods described are not limited to any specific combination of hardware and software.
Suitable computer program code may be provided for performing one or more functions in relation to aligning dietary behavior as described herein. The program also may include program elements such as anoperating system812, a database management system and “device drivers” that allow the processor to interface with computer peripheral devices (e.g., a video display, a keyboard, a computer mouse, etc.) via the input/output controller810.
The term “computer-readable medium” as used herein refers to any non-transitory medium that provides or participates in providing instructions to the processor of the computing device800 (or any other processor of a device described herein) for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media include, for example, optical, magnetic, or opto-magnetic disks, or integrated circuit memory, such as flash memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes the main memory. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM or EEPROM (electronically erasable programmable read-only memory), a FLASH-EEPROM, any other memory chip or cartridge, or any other non-transitory medium from which a computer can read.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the CPU806 (or any other processor of a device described herein) for execution. For example, the instructions may initially be borne on a magnetic disk of a remote computer (not shown). The remote computer can load the instructions into its dynamic memory and send the instructions over an Ethernet connection, cable line, or even telephone line using a modem. A communications device local to a computing device800 (e.g., a server) can receive the data on the respective communications line and place the data on a system bus for the processor. The system bus carries the data to main memory, from which the processor retrieves and executes the instructions. The instructions received by main memory may optionally be stored in memory either before or after execution by the processor. In addition, instructions may be received via a communication port as electrical, electromagnetic or optical signals, which are exemplary forms of wireless communications or data streams that carry various types of information.
While various implementations have been shown and described herein, it will be obvious to those skilled in the art that such implementations are provided by way of example only. Numerous variations, changes, and substitutions will now occur to those skilled in the art without departing from the present disclosure. It should be understood that various alternatives to the implementations described herein may be employed. It is intended that the following claims define the scope of the present disclosure and that methods and structures within the scope of these claims and their equivalents be covered thereby.