Web-based incremental computing
AssigneeAsana, Inc.
InventorsDustin Moskovitz, Justin Rosenstein
Life of this patent
Estimating the term…
Abstract
A method and a system implementing web-based incremental computing. A webpage updates when a data value relevant to displayed information is altered and updates only those affected elements. A watch system monitors relevant data values and in conjunction with a dependency tree, may execute functions to alter only altered elements of a webpage. A framework to automatically track data dependencies and propagate data changes is disclosed.
Claims21
A method to update a document object model (DOM) stored in a computer readable storage device, wherein producing the DOM includes running a function that includes multiple expressions on a computer system in response to a set of input values, the method comprising:
- producing a dependency graph structure in a computer readable storage device that includes nodes that correspond to reactive values produced in the course of evaluation of the expressions within the function in response to the set of input values and that includes a node that corresponds to a contained in relationship between a reactive value and a corresponding element of the DOM in response to evaluation of one or more expressions within the function in response to the set of input values indicating inclusion of such node having the contained in relationship and that includes paths among the nodes that represent dependency relationships among the reactive values, wherein respective paths include a root node and include respective input nodes that are associated with respective input values and include respective nodes, disposed between the root node and respective input nodes, that are associated in the storage device with at least one of expressions within the function used to produce respective reactive values that correspond to those respective nodes or to the contained in relationship;
- detecting a change of at least one input value from the set of input values;
- in response to the detected change of the at least one input value, selecting in ascending order of node depth within the dependency graph structure, a respective node from among the root node and respective nodes on respective paths that have a respective input node associated with a respective changed input value;
- and
- re-running on a computer system a respective expression, that is associated with the respective selected node, using the changed input value to determine a respective changed reactive value;
- in response to the re-running the respective expression associated with the respective selected node, prior to re-running an expression associated with a respective next selected node in the ascending order of node depth, changing the dependency graph structure to represent any changes to one or more dependency relationships among reactive values produced as a result of the respective re-running;
- continuing the acts of re-running and changing in the ascending order of node depth within the changed dependency graph structure;
- and
- in the course of the acts of re-running, in response to the dependency graph structure including a node that corresponds to a contained in relationship between a changed reactive value and a corresponding element of the DOM, propagating the changed reactive value to that corresponding element of the DOM.
An article of manufacture that includes a computer readable storage device that stores computer readable code to configure a computer to implement a method to update a document object model (DOM) stored in a computer readable storage device, wherein producing the DOM includes running a function that includes multiple expressions on a computer system in response to a set of input values, the method comprising:
- producing a dependency graph structure in a computer readable storage device that includes nodes that correspond to reactive values produced in the course of evaluation of the expressions within the function in response to the set of input values and that includes a node that corresponds to a contained in relationship between a reactive value and a corresponding element of the DOM in response to evaluation of one or more expressions within the function in response to the set of input values indicating inclusion of such node having the contained in relationship and that includes paths among the nodes that represent dependency relationships among the reactive values, wherein respective paths include a root node and include respective input nodes that are associated with respective input values and include respective nodes, disposed between the root node and respective input nodes, that are associated in the storage device with at least one of expressions within the function used to produce respective reactive values that correspond to those respective nodes or to the contained in relationship;
- detecting a change of at least one input value from the set of input values;
- in response to the detected change of the at least one input value, selecting in ascending order of node depth within the dependency graph structure, a respective node from among the root node and respective nodes on respective paths that have a respective input node associated with a respective changed input value;
- and
- re-running on a computer system a respective expression, that is associated with the respective selected node, using the changed input value to determine a respective changed reactive value;
- in response to the re-running the respective expression associated with the respective selected node, prior to re-running an expression associated with a respective next selected node in the ascending order of node depth, changing the dependency graph structure to represent any changes to one or more dependency relationships among reactive values produced as a result of the respective re-running;
- continuing the acts of re-running and changing in the ascending order of node depth within the changed dependency graph structure;
- and
- in the course of the acts of re-running, in response to the dependency graph structure including a node that corresponds to a contained in relationship between a changed reactive value and a corresponding element of the DOM, propagating the changed reactive value to that corresponding element of the DOM.
A system comprising:
- at least one processor;
- non-transitory machine readable storage device;
- and
- a communication bus coupling the processor and the storage device;
- wherein the storage device stores computer readable code to configure the at least one processor to implement a method to update a document object model (DOM) stored in a computer readable storage device, wherein producing the DOM includes running a function that includes multiple expressions on the at least one processor in response to a set of input values, the method comprising:
- producing a dependency graph structure in a computer readable storage device that includes nodes that correspond to reactive values produced in the course of evaluation of the expressions within the function in response to the set of input values and that includes a node that corresponds to a contained in relationship between a reactive value and a corresponding element of the DOM in response to evaluation of one or more expressions within the function in response to the set of input values indicating inclusion of such node having the contained in relationship and that includes paths among the nodes that represent dependency relationships among the reactive values, wherein respective paths include a root node and include respective input nodes that are associated with respective input values and include respective nodes, disposed between the root node and respective input nodes, that are associated in the storage device with at least one of expressions within the function used to produce respective reactive values that correspond to those respective nodes or to the contained in relationship;
- detecting a change of at least one input value from the set of input values;
- in response to the detected change of the at least one input value, selecting in ascending order of node depth within the dependency graph structure, a respective node from among the root node and respective nodes on respective paths that have a respective input node associated with a respective changed input value;
- and
- re-running on a computer system a respective expression, that is associated with the respective selected node, using the changed input value to determine a respective changed reactive value;
- in response to the re-running the respective expression associated with the respective selected node, prior to re-running an expression associated with a respective next selected node in the ascending order of node depth, changing the dependency graph structure to represent any changes to one or more dependency relationships among reactive values produced as a result of the respective re-running;
- continuing the acts of re-running and changing in the ascending order of node depth within the changed dependency graph structure;
- and
- in the course of the acts of re-running, in response to the dependency graph structure including a node that corresponds to a contained in relationship between a changed reactive value and a corresponding element of the DOM, propagating the changed reactive value to that corresponding element of the DOM.
Dependencies are inferred from the claim text.