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 mutation of a first priority from a source location specifying a function to be applied to data of the spreadsheet, the first mutation comprising (1) a selection of one or more cells at the source location and (2) a mapping from the source location to a destination location;
receiving a second mutation of a second priority from a portion of the source location specifying a data edit mutation to be applied to the spreadsheet, wherein the second mutation is received after the selection of the one or more cells at the source location and before the mapping from the source location to the destination location is received;
determining, by a processor, that the second priority is greater than the first priority;
in response to determining that the second priority is greater than the first priority;
applying the second mutation to the spreadsheet;
performing an operational transform on the selection of the one or more cells of the first mutation based on the second mutation to generate a modified first mutation; and
pasting the modified first mutation 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.
76 Citations
22 Claims
-
1. A method for updating a spreadsheet based on user inputs, the method comprising:
-
receiving a first mutation of a first priority from a source location specifying a function to be applied to data of the spreadsheet, the first mutation comprising (1) a selection of one or more cells at the source location and (2) a mapping from the source location to a destination location; receiving a second mutation of a second priority from a portion of the source location specifying a data edit mutation to be applied to the spreadsheet, wherein the second mutation is received after the selection of the one or more cells at the source location and before the mapping from the source location to the destination location is received; determining, by a processor, that the second priority is greater than the first priority; in response to determining that the second priority is greater than the first priority; applying the second mutation to the spreadsheet; performing an operational transform on the selection of the one or more cells of the first mutation based on the second mutation to generate a modified first mutation; and pasting the modified first mutation to the spreadsheet. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computing system configured to update a spreadsheet based on user inputs, the computing system comprising:
-
a network interface configured to; receive a first mutation of a first priority from a source location specifying a function to be applied to data of the spreadsheet, the first mutation comprising (1) a selection of one or more cells at the source location and (2) a mapping from the source location to a destination location; and receive a second mutation of a second priority from a portion of the source location specifying a data edit mutation to be applied to the spreadsheet, wherein the second priority is higher than the first priority, and the second mutation is received after the selection of the one or more cells at the source location and before the mapping from the source location to the destination location is received; a processor configured to; determine that the second priority is greater than the first priority; in response to determining that the second priority is greater than the first priority; apply the second mutation to the spreadsheet; perform an operational transform on the selection of the one or more cells of the first mutation based on the second mutation to generate a modified first mutation; and paste the modified first mutation to the spreadsheet. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
Specification