Abstract:
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for requesting handling web applications provided from a server. A bootstrap object is received from the server. The bootstrap object is independent of the requested web application and includes default settings for a plurality of different web applications. An application configuration object is also received from the server. The application configuration object is specific to the requested web application and includes a plurality of plugin handles. The bootstrap object loads the application configuration object, and identifies, based on the plugin handles, a first plugin for the requested web application. The first plugin is requested, and upon receipt the from the server the first plugin is loaded in a user interface. The first plugin exposes an application programming interface (API) of the first plugin to the bootstrap object.
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:
A method of resolving mutations in a partially-loaded spreadsheet model includes loading onto a client computer a first chunk of a spreadsheet stored on a server, where the first chunk represents a first range of cells in the spreadsheet, and requesting a second chunk of the spreadsheet from the server, where the second chunk represents a second range of cells in the spreadsheet. The method further includes storing a plurality of pending user mutations on the client computer generated by a user on the client computer, where the plurality of pending user mutations are applied to the first chunk, and receiving from the server a plurality of collaborator mutations and the second chunk. The method further includes transforming the plurality of pending user mutations against the plurality of collaborator mutations, and applying the transformed plurality of pending user mutations to the second chunk.
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:
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for requesting handling web applications provided from a server. A bootstrap object is received from the server. The bootstrap object is independent of the requested web application and includes default settings for a plurality of different web applications. An application configuration object is also received from the server. The application configuration object is specific to the requested web application and includes a plurality of plugin handles. The bootstrap object loads the application configuration object, and identifies, based on the plugin handles, a first plugin for the requested web application. The first plugin is requested, and upon receipt the from the server the first plugin is loaded in a user interface. The first plugin exposes an application programming interface (API) of the first plugin to the bootstrap object.