Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
First Claim
1. A method for transforming conflicting mutations from different client computers into a collaborative spreadsheet stored at a server, the method comprising:
- providing a display of the collaborative spreadsheet to a first client computer and a second client computer located remotely from the first client computer;
receiving, at a server, a first mutation from the first client computer, the first mutation comprising a value of a first cell property of a cell in the collaborative spreadsheet, wherein the first mutation is processed in a UI thread;
receiving, at the server, a second mutation from the second client computer, the second mutation comprising a value of a second cell property of the cell in the collaborative spreadsheet, wherein the second mutation is processed in the UI thread;
receiving, at the server, a third mutation from the second client computer, the third mutation comprising a value of the second cell in the collaborative spreadsheet, wherein the third mutation is processed in a calculation thread;
identifying, by the server, a common property field between the first mutation and the second mutation;
performing, at the server, an operational transform on the first mutation, the second mutation and the third mutation to modify a value generated by the calculation thread from the third mutation based on changes resulted from the first and the second mutations and processed in the UI thread and generating a modified mutation by;
determining that the first mutation and the second mutation each correspond to a merge mutation; and
generating the modified mutation by merging non-conflicting subfields of the first mutation and the second mutation in response to the determination;
generating an updated collaborative spreadsheet by updating a property of the cell in the collaborative spreadsheet to reflect the modified mutation, wherein the updated property is different from the common property field; and
sending the modified mutation to the first client computer and the second client computer to reflect the updated property.
2 Assignments
0 Petitions
Accused Products
Abstract
Mutations representing spreadsheet edit operations are received at a server from client computers of collaborators and also at a collaborator'"'"'s client computer from other collaborators and the server. Different mutations may conflict, i.e., provide contradictory instructions on how a spreadsheet is to be edited. Techniques for representing sort operations, cut-and-paste operations, and operations to change cell properties as mutations, and operational transform techniques that can be used to resolve conflicts between such mutations, are disclosed herein. Further disclosed herein are techniques for identifying and processing computationally intensive types of mutations in a calculation thread which operates asynchronously with respect to a UI thread at a collaborator'"'"'s client computer. The processing may include performing an operational transform on results of the calculation thread based on results obtained in the UI thread.
75 Citations
13 Claims
-
1. A method for transforming conflicting mutations from different client computers into a collaborative spreadsheet stored at a server, the method comprising:
-
providing a display of the collaborative spreadsheet to a first client computer and a second client computer located remotely from the first client computer; receiving, at a server, a first mutation from the first client computer, the first mutation comprising a value of a first cell property of a cell in the collaborative spreadsheet, wherein the first mutation is processed in a UI thread; receiving, at the server, a second mutation from the second client computer, the second mutation comprising a value of a second cell property of the cell in the collaborative spreadsheet, wherein the second mutation is processed in the UI thread; receiving, at the server, a third mutation from the second client computer, the third mutation comprising a value of the second cell in the collaborative spreadsheet, wherein the third mutation is processed in a calculation thread; identifying, by the server, a common property field between the first mutation and the second mutation; performing, at the server, an operational transform on the first mutation, the second mutation and the third mutation to modify a value generated by the calculation thread from the third mutation based on changes resulted from the first and the second mutations and processed in the UI thread and generating a modified mutation by; determining that the first mutation and the second mutation each correspond to a merge mutation; and generating the modified mutation by merging non-conflicting subfields of the first mutation and the second mutation in response to the determination; generating an updated collaborative spreadsheet by updating a property of the cell in the collaborative spreadsheet to reflect the modified mutation, wherein the updated property is different from the common property field; and sending the modified mutation to the first client computer and the second client computer to reflect the updated property. - View Dependent Claims (2, 3, 4, 5, 11)
-
-
6. A computing system configured to transforming conflicting mutations from different client computers into a collaborative spreadsheet based on user inputs, the computing system comprising:
-
a network interface configured to; receive a first mutation from a first client computer, the first mutation comprising a value of a first cell property of a cell in the collaborative spreadsheet, wherein the first mutation is processed in a UI thread; receive a second mutation from a second client computer located remotely from the first client computer, the second mutation comprising a value of a second cell property of the cell in the collaborative spreadsheet, wherein the second mutation is processed in the UI thread; receive, at the server, a third mutation from the second client computer, the third mutation comprises a value of the second cell in the collaborative spreadsheet, wherein the third mutation is processed in a calculation thread; and a processor at a server configured to; provide a display of the collaborative spreadsheet to the first client computer and the second client computer; identifying, by the server, a common property field between the first mutation and the second mutation; perform an operational transform on the first mutation, the second mutation and the third mutation to modify a value generated by the calculation thread from the third mutation based on changes resulted from the first and the second mutations and processed in the UI thread and generate a modified mutation by; determining that the first mutation and the second mutation each correspond to a merge mutation; and generating the modified mutation by merging non-conflicting subfields of the first mutation and the second mutation in response to the determination; generate an updated collaborative spreadsheet by updating a property of the cell in the collaborative spreadsheet to reflect the modified mutation, wherein the updated property is different from the common property field; and send the modified mutation collaborative spreadsheet to the first client computer and the second client computer to reflect the updated property. - View Dependent Claims (7, 8, 9, 10, 12)
-
-
13. A method for transforming conflicting mutations from different client computers into a collaborative spreadsheet stored at a server, the method comprising:
-
receiving, at a server, a first mutation from the first client computer, the first mutation comprising a value of a first cell property of a cell in the collaborative spreadsheet, wherein the first mutation is processed in a UI thread; receiving, at the server, a second mutation from the second client computer, the second mutation comprising a value of a second cell property of the cell in the collaborative spreadsheet, wherein the second mutation is processed in the UI thread; receiving, at the server, a third mutation from the second client computer, the third mutation comprising a value of the second cell in the collaborative spreadsheet, wherein the third mutation is processed in a calculation thread; identifying, by the server, a common property field between the first mutation and the second mutation; determining, at the server, that the first mutation and the second mutation have conflicting changes relating to the common property field; performing, at the server, an operational transform on the first mutation, the second mutation and the third mutation to modify a value generated by the calculation thread from the third mutation based on changes resulted from the first and the second mutations and processed in the UI thread; determining that the first mutation and the second mutation each correspond to a merge mutation; generating a modification to the collaborative spreadsheet by merging non-conflicting subfields of the first mutation and the second mutation in response to the determination; generating an updated collaborative spreadsheet, at the server, by updating a property of the cell in the collaborative spreadsheet to reflect the modification, wherein the updated property is different from the common property field; and sending the modification to the first client computer and the second client computer, to update each respective copy of the collaborative spreadsheet at the first client computer and the second client computer.
-
Specification