IP Library Granted Patent US 9,904,719
Granted Patent B2
US 9,904,719 · App. 14/986,060 · Granted Feb 27, 2018

Propagating computable dependencies within synchronized content items between first and third-party applications

Inventor: Benjamin Zeis Newhouse (San Francisco, CA)
Assignee: Dropbox, Inc.
G06F17/30575G06F17/2247G06F17/30371
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,904,719
App. No.
14/986,060
Granted
Feb 27, 2018
Kind
B2
Abstract

A content management system synchronizes content items across client computing systems connected by a network. The content management system provides a first party web application to the user. The first party application receives input from the user to create a dependency on another piece of information on a content item in the content management system. The input from the user contains a formula defining the relations between the information source and the created dependency. The value of the dependency is then dependent on the information in the referenced content item and changes based on updates to that content item. The user may also create dependencies with synchronized third party content items.

Claims (88)

1. A method comprising:

providing, by a content management system, a first party web application to a user;

receiving a first input from the user, the first input associated with a source document to be modified, identifying a reference document different than the source document, and including a dependency primitive associated with the source document and the reference document;

in response to receiving the first input, accessing a dependency formula associated with the dependency primitive via the first party web application;

determining, based on a set of syntax rules, whether the dependency primitive indicates a reference dependency or an alias dependency and whether the dependency formula is valid, wherein the set of syntax rules identifies the dependency primitive as a reference dependency in response to the dependency primitive including a mathematical operation, and wherein the set of syntax rules identifies the dependency primitive as an alias dependency otherwise such that a change to a first object in an alias dependency with a second object is reflected in the second object and vice versa;

responsive to determining that the dependency primitive indicates a reference dependency and the dependency formula is syntactically valid:

creating in a dependency graph a dependency object associated with the source document and the reference document, the dependency object having an object ID, an object name, a formula for the dependency object, dependencies of the object, and dependents of the object;

recursively calculating a resultant value of the dependency object using the formula for the dependency object and the value of all dependencies of the dependency object, the resultant value stored by the content management system; and

displaying by the first party web application the source document and the resultant value of the dependency object within the source document;

responsive to determining that the dependency primitive indicates an alias dependency and the dependency formula includes an existing dependency object name:

recursively calculating a resultant value of an existing dependency object corresponding to the existing dependency object name using the formula for the existing dependency object and the value of all dependencies of the existing dependency object without creating a new dependency object in the dependency graph, the resultant value stored by the content management system;

displaying by the first party web application the source document and the resultant value of the existing dependency object within the source document; and

synchronizing the displayed resultant value with the existing dependency object.

2. The method of claim 1 wherein creating a dependency object further comprises:

responsive to determining that the formula is syntactically valid and contains an indication from the user to obtain reference data from a third party content item:

displaying a UI to the user for selecting a file path of the third party content item in a namespace associated with the user;

receiving input from a user indicating the file path of the third party content item;

displaying a preview of the third party content item to the user for selecting a location within the preview corresponding to a location in the third party content item of the referenced data;

receiving input from a user indicating the location in the third party content item for the referenced data;

creating an entry in a third party graph, wherein the entry comprises the file path to a third party content item synchronized with the content management system, the location in the third party content item of the referenced data, and the object ID of the dependency object.

3. The method of claim 2 further comprising updating the formula of the dependency object based on the referenced data in the third party content item.

4. The method of claim 3 further comprising:

detecting modification to the third party content item;

synchronizing the third party content item with the content management system;

updating the dependency object based on the modification to the third party content item; and

updating the displayed resultant value of the dependency object based on the modification to the dependency object.

5. The method of claim 3 wherein the third party application is a spreadsheet application.

6. The method of claim 1 wherein the first party application is a word processing application.

7. The method of claim 1 wherein the formula of the dependency object is comprised of text data.

8. The method of claim 1 wherein creating a dependency object is in response to receiving an input from the user to paste data from a third party application to the first party application.

9. A system comprising:

a processor; and

a memory storing instructions that, when executed by the processor, cause the processor to:

providing, by a content management system, a first party web application to a user;

receiving a first input from the user, the first input associated with a source document to be modified, identifying a reference document different than the source document, and including a dependency primitive associated with the source document and the reference document;

in response to receiving the first input, accessing a dependency formula associated with the dependency primitive via the first party web application;

determining, based on a set of syntax rules, whether the dependency primitive indicates a reference dependency or an alias dependency and whether the dependency formula is valid, wherein the set of syntax rules identifies the dependency primitive as a reference dependency in response to the dependency primitive including a mathematical operation, and wherein the set of syntax rules identifies the dependency primitive as an alias dependency otherwise such that a change to a first object in an alias dependency with a second object is reflected in the second object and vice versa;

responsive to determining that the dependency primitive indicates a reference dependency and the dependency formula is syntactically valid:

creating in a dependency graph a dependency object associated with the source document and the reference document, the dependency object having an object ID, an object name, a formula for the dependency object, dependencies of the object, and dependents of the object;

recursively calculating a resultant value of the dependency object using the formula for the dependency object and the value of all dependencies of the dependency object, the resultant value stored by the content management system; and

displaying by the first party web application the source document and the resultant value of the dependency object within the source document;

responsive to determining that the dependency primitive indicates an alias dependency and the dependency formula includes an existing dependency object name:

recursively calculating a resultant value of an existing dependency object corresponding to the existing dependency object name using the formula for the existing dependency object and the value of all dependencies of the existing dependency object without creating a new dependency object in the dependency graph, the resultant value stored by the content management system;

displaying by the first party web application the source document and the resultant value of the existing dependency object within the source document; and

synchronizing the displayed resultant value with the existing dependency object.

10. The system of claim 9 , the instructions further causing the processor to:

responsive to determining that the formula is syntactically valid and contains an indication from the user to obtain reference data from a third party content item:

display a UI to the user for selecting a file path of the third party content item in a namespace associated with the user;

receive input from a user indicating the file path of the third party content item;

display a preview of the third party content item to the user for selecting a location within the preview corresponding to a location in the third party content item of the referenced data;

receive input from a user indicating the location in the third party content item for the referenced data;

create an entry in a third party graph, wherein the entry comprises the file path to a third party content item synchronized with the content management system, the location in the third party content item of the referenced data, and the object ID of the dependency object.

11. The system of claim 10 , the instructions further causing the processor to update the formula of the dependency object based on the referenced data in the third party content item.

12. The system of claim 11 , the instructions further causing the processor to:

detect modification to the third party content item;

synchronize the third party content item with the content management system;

update the dependency object based on the modification to the third party content item; and

update the displayed resultant value of the dependency object based on the modification to the dependency object.

13. The system of claim 11 wherein the third party application is a spreadsheet application.

14. The system of claim 9 wherein the first party application is a word processing application.

15. The system of claim 9 wherein the formula of the dependency object is comprised of text data.

16. The method of claim 9 wherein creating a dependency object is in response to receiving an input from the user to paste data from the third party application to the first party application.

17. A non-transitory computer readable storage medium storing instructions that, when executed by a processor causes the processor to perform steps of:

providing, by a content management system, a first party web application to a user;

receiving a first input from the user, the first input associated with a source document to be modified, identifying a reference document different than the source document, and including a dependency primitive associated with the source document and the reference document;

in response to receiving the first input, accessing a dependency formula associated with the dependency primitive via the first party web application;

determining, based on a set of syntax rules, whether the dependency primitive indicates a reference dependency or an alias dependency and whether the dependency formula is valid, wherein the set of syntax rules identifies the dependency primitive as a reference dependency in response to the dependency primitive including a mathematical operation, and wherein the set of syntax rules identifies the dependency primitive as an alias dependency otherwise such that a change to a first object in an alias dependency with a second object is reflected in the second object and vice versa;

responsive to determining that the dependency primitive indicates a reference dependency and the dependency formula is syntactically valid:

creating in a dependency graph a dependency object associated with the source document and the reference document, the dependency object having an object ID, an object name, a formula for the dependency object, dependencies of the object, and dependents of the object;

recursively calculating a resultant value of the dependency object using the formula for the dependency object and the value of all dependencies of the dependency object, the resultant value stored by the content management system; and

displaying by the first party web application the source document and the resultant value of the dependency object within the source document;

responsive to determining that the dependency primitive indicates an alias dependency and the dependency formula includes an existing dependency object name:

recursively calculating a resultant value of an existing dependency object corresponding to the existing dependency object name using the formula for the existing dependency object and the value of all dependencies of the existing dependency object, the resultant value stored by the content management system;

displaying by the first party web application the source document and the resultant value of the existing dependency object within the source document; and

synchronizing the displayed resultant value with the existing dependency object.

18. The non-transitory computer readable storage medium of claim 17 wherein creating a dependency object further comprises:

responsive to determining that the formula is syntactically valid and contains an indication from the user to obtain reference data from a third party content item:

displaying a UI to the user for selecting a file path of the third party content item in a namespace associated with the user;

receiving input from a user indicating the file path of the third party content item;

displaying a preview of the third party content item to the user for selecting a location within the preview corresponding to a location in the third party content item of the referenced data;

receiving input from a user indicating the location in the third party content item for the referenced data;

creating an entry in a third party graph, wherein the entry comprises the file path to a third party content item synchronized with the content management system, the location in the third party content item of the referenced data, and the object ID of the dependency object.

19. The non-transitory computer readable storage medium of claim 18 further comprising updating the formula of the dependency object based on the referenced data in the third party content item.

20. The non-transitory computer readable storage medium of claim 19 further comprising:

detecting modification to the third party content item;

synchronizing the third party content item with the content management system;

updating the dependency object based on the modification to the third party content item; and

updating the displayed resultant value of the dependency object based on the modification to the dependency object.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2016
From: NEWHOUSE, BENJAMIN ZEIS
To: DROPBOX, INC.
Reel/Frame 039170/0974 →
Continuity (1)
Related Publication 20170193069A1 · Jul 6, 2017