Abstract:
Systems and methods are disclosed herein for editing a collaborative spreadsheets hosted on a server. Multiple users may edit the spreadsheet, resulting in situations of intersecting or conflicting edits. A change provided by one user may intersect the cells affected by a change provided by another user. In these cases, one user's change is transformed against the other user's change. In this manner, the conflict is resolved and both changes can be applied to the spreadsheet. Each user device may perform these transforms, and the server may also perform these transforms. This can result in transmission of a reduced volume of data over a network between the devices and the server, in comparison with other methods.
Abstract:
A method for managing a dynamically-sized chunked spreadsheet model on a server includes creating, on the server, a plurality of chunks representing a spreadsheet, where a first chunk in the plurality of chunks includes a first range of cells in the spreadsheet. The method further includes storing on the server a mutation log for the spreadsheet, and receiving a first plurality of mutations from a plurality of client computers, where the first plurality of mutations are stored in the mutation log. The method further includes applying the first plurality of mutations to the first chunk in response to a first client computer in the plurality of client computers requesting the first range of cells, and sending the first chunk to the first client computer.
Abstract:
A method for obtaining server-side and client-side calculations performed on a spreadsheet includes loading, on a client computer, a spreadsheet stored on a server and receiving an input from a user on the client computer, where the input causes a calculation of one or more cell values in the spreadsheet. The client computer performs the calculation of the one or more cell values on the client computer and sends the input to the server to perform the calculation of the one or more cell values on the server. The client computer then displays in the spreadsheet a result of the calculation of the one or more cell values to the user, where the result of the calculation is taken from the quicker of the calculation performed on the client computer or the calculation performed on the server.
Abstract:
Systems and methods for viewing filters on a collaborative spreadsheet stored on a cloud computing service include accessing, from each of a plurality of client computers, a first sheet of a spreadsheet stored on a cloud computing service, where a plurality of filters is associated with the first sheet. A first client computer in the plurality of client computers receives a command by a first user to apply a first filter in the plurality of filters to the first sheet, and applies the first filter to the first sheet on the first client computer. The filtered first sheet is displayed to the first user, and a second client computer in the plurality of client computers concurrently displays an unfiltered first sheet.
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.
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.
Abstract:
Systems and methods for providing filters for collaborative spreadsheets include storing a spreadsheet on a server, where the spreadsheet comprises a plurality of sheets, granting a plurality of client computers concurrent access to the spreadsheet, and receiving from the plurality of client computers a plurality of filters to be applied to a first sheet in the plurality of sheets. The plurality of filters are stored on the server, and the plurality of filters is associated with the first sheet. The plurality of filters are provided to each client computer. When a user on a first client computer in the plurality of client computers applies a first filter in the plurality of filters to the first sheet, the display of the first sheet on a second client computer in the plurality of client computers is independent of the filter application on the first client computer.
Abstract:
Systems and methods are disclosed herein for an operational transformation proxy for a thin client. The systems and methods may be used for collaboratively editing an electronic object such as an electronic document from a thin client. A first request is received at an OT proxy from the thin client to make a first change to a first version of the electronic object. A first mutation, including the first change to the first version of the electronic document, is created. A second mutation is received at the OT proxy from the server. At the OT proxy, the second mutation of the electronic object is converted into a third mutation of the electronic object based on the first mutation.
Abstract:
Systems and methods for viewing filters on a collaborative spreadsheet stored on a cloud computing service include accessing, from each of a plurality of client computers, a first sheet of a spreadsheet stored on a cloud computing service, where a plurality of filters is associated with the first sheet. A first client computer in the plurality of client computers receives a command by a first user to apply a first filter in the plurality of filters to the first sheet, and applies the first filter to the first sheet on the first client computer. The filtered first sheet is displayed to the first user, and a second client computer in the plurality of client computers concurrently displays an unfiltered first sheet.
Abstract:
Systems and methods for processing user actions on a collaborative spreadsheet include accessing an unfiltered sheet of a spreadsheet stored on a server to display on a client computer, where a plurality of filters is associated with the unfiltered sheet, and receiving a selection by a user of a first filter in the plurality of filters to be applied to the unfiltered sheet. A filtered sheet is displayed to the user, where the filtered sheet is obtained by applying the first filter to the unfiltered sheet. User actions inputted by a user on the client computer are received that reference cells of the unfiltered sheet. User actions are sent to the server and transformed against the first filter. The display of the filtered sheet is updated based on the transformed user action.