Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
First Claim
1. A method for updating a spreadsheet based on user inputs, the method comprising:
- receiving a first user input specifying an analytic function to be applied to data of the spreadsheet;
receiving a second user input specifying a data edit operation to be performed on the spreadsheet;
in response to determining that the first user input specifies the analytic function, assigning the first user input to a calculation thread;
in response to determining that the second user input lacks the analytic function, assigning the second user input to a UI thread;
processing the first user input in the calculation thread, the processing comprising applying the analytic function to the data of the spreadsheet to produce first mutation results;
while processing the first user input in the calculation thread, processing the second user input in the UI thread to produce second mutation results, and applying the second mutation results to the spreadsheet to update the spreadsheet;
storing the first mutation results and second mutation results in a pending queue, wherein the pending queue contains mutation results made at a client device by a user, and the pending queue includes (1) mutation results that have not been sent to a cloud computing system to be applied to other client devices and (2) mutation results that have been sent to the cloud computing system to be applied to other client devices;
in response to a determination that the processing of the first user input is complete, performing a first operational transform on the first mutation results based on the second mutation results to obtain modified first mutation results;
storing third mutation results to the spreadsheet in a collaborator queue, wherein the collaborator queue contains mutations received at the client device from the cloud computing system;
identifying a conflict between the modified first mutation results and the third mutation results;
performing a second operational transform to resolve the conflict between the modified first mutation results and the third mutation results to obtain further modified first mutation results; and
applying the further modified first mutation results to the spreadsheet.
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.
-
Citations
14 Claims
-
1. A method for updating a spreadsheet based on user inputs, the method comprising:
-
receiving a first user input specifying an analytic function to be applied to data of the spreadsheet; receiving a second user input specifying a data edit operation to be performed on the spreadsheet; in response to determining that the first user input specifies the analytic function, assigning the first user input to a calculation thread; in response to determining that the second user input lacks the analytic function, assigning the second user input to a UI thread; processing the first user input in the calculation thread, the processing comprising applying the analytic function to the data of the spreadsheet to produce first mutation results; while processing the first user input in the calculation thread, processing the second user input in the UI thread to produce second mutation results, and applying the second mutation results to the spreadsheet to update the spreadsheet; storing the first mutation results and second mutation results in a pending queue, wherein the pending queue contains mutation results made at a client device by a user, and the pending queue includes (1) mutation results that have not been sent to a cloud computing system to be applied to other client devices and (2) mutation results that have been sent to the cloud computing system to be applied to other client devices; in response to a determination that the processing of the first user input is complete, performing a first operational transform on the first mutation results based on the second mutation results to obtain modified first mutation results; storing third mutation results to the spreadsheet in a collaborator queue, wherein the collaborator queue contains mutations received at the client device from the cloud computing system; identifying a conflict between the modified first mutation results and the third mutation results; performing a second operational transform to resolve the conflict between the modified first mutation results and the third mutation results to obtain further modified first mutation results; and applying the further modified first mutation results to the spreadsheet. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computing system for updating a spreadsheet based on user inputs, the computing system comprising:
-
a network interface configured to; receive a first user input specifying an analytic function to be applied to data of the spreadsheet; and receive a second user input specifying a data edit operation to be performed on the spreadsheet; in response to determining that the first user input specifies the analytic function, assign the first user input to a calculation thread; in response to determining that the second user input lacks the analytic function, assign the second user input to a UI thread; a processor configured to; process the first user input in the calculation thread, the processing comprising applying the analytic function to the data of the spreadsheet to produce first mutation results; while processing the first user input in the calculation thread, process the second user input in the UI thread to produce second mutation results, and apply the second mutation results to the spreadsheet to update the spreadsheet; store the first mutation results and second mutation results in a pending queue, wherein the pending queue contains mutation results made at a client device by a user, and the pending queue includes (1) mutation results that have not been sent to a cloud computing system to be applied to other client devices and (2) mutation results that have been sent to the cloud computing system to be applied to other client devices; in response to a determination that the processing of the first user input is complete, perform a first operational transform on the first mutation results based on the second mutation results to obtain modified first mutation results; store third mutation results from a collaborating user to the spreadsheet in a collaborator queue, wherein the collaborator queue contains mutations received at the client device from the cloud computing system; identify a conflict in the modified first mutation results and the third mutation results from the collaborating user; perform a second operational transform to resolve the conflict between the modified first mutation results and the third mutation results to obtain further modified first mutation results; and apply the further modified first mutation results to the spreadsheet. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification