IP Library Granted Patent US 7,930,646
Granted Patent B2
US 7,930,646 · App. 11/875,124 · Granted Apr 19, 2011

Dynamically updated virtual list view

Assignee: Microsoft Corporation
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 7,930,646
App. No.
11/875,124
Granted
Apr 19, 2011
Kind
B2
Abstract

A virtual list view in a web application is dynamically updated such that a user can seamlessly access and manage the presented data despite the inherent latency involved with the web. Data associated with the virtual list view is downloaded in chunks and the view updated as the user scrolls. By coupling the user's scrolling and particular chunks of data to be downloaded system resources are utilized in an efficient manner. Additional user interface controls for the user interface are employed for rapid and efficient access to portions of data minimizing delay and system resource occupation.

Claims (53)

1. A method to be executed at least in part in a computing device for dynamically updating a virtual list view, the method comprising:

detecting a speed of scrolling by a user in a virtual list view presentation of an application user interface presenting downloaded data;

when the scrolling speed is below a predefined threshold, continuing to download the data and updating the presentation in a view port continuously;

when the scrolling speed is above the threshold, skipping downloading for blocks of data rows that are scrolled through by the user until the scrolling speed drops below the threshold again;

when the scrolling speed drops below the threshold again, downloading a preset number of blocks that include a block to be presented in the view port and a number of blocks preceding and following the block to be presented; and

displaying the block to be presented in the view port;

determining whether a number of rows in a selection are absent at the computing device;

when a number of rows in a selection are absent at the computing device, initiating a synchronous call to a data source maintaining data of the absent number of rows for requesting missing rows utilizing row identifiers;

determining whether a portion of data at the data source has changed; and

when a portion of data at the data source has changed, updating the application user interface by providing an identifier of an affected data row, a change for the data row, and a position indicator for the row, wherein the update is performed in one of: a per row basis, and a batch of rows basis.

2. The method of claim 1 , wherein a number of data rows in each block is determined based on at least one from a set of: an available communication bandwidth, a type of data, a user preference, the scrolling speed, a size of the view port, and available memory.

3. The method of claim 1 , wherein the number of blocks preceding and following the block to be presented is determined based on at least one from a set of: an available communication bandwidth, a type of data, a user preference, the scrolling speed, a size of the view port, and available memory.

4. The method of claim 1 , wherein the virtual list view comprises at least one of textual data and graphical data in form of at least one from a set of: a numbered list, a bulleted list, a table, free form text, and a page format.

5. The method of claim 1 , further comprising: assigning each block in the virtual list view a position attribute relative to a predefined reference, wherein the position attribute is associated with a row identifier such that any range of rows can be selected for presentation in the view port.

6. The method of claim 5 , wherein the identifier is stored as metadata.

7. The method of claim 5 , wherein a selection of rows for viewing is maintained by the application as a hash on row identifiers.

8. The method of claim 1 , further comprising:

including a watermark with each update from the data source;

sending back a watermark from the application user interface to the data source; and

determining an update status of the data at the application user interface based on a comparison of the watermark at the data source and the watermark sent back from the application user interface.

9. The method of claim 1 , wherein the application includes one of: a web browsing application, an electronic mail application, an instant messaging application, and a search engine application.

10. The method of claim 1 , wherein the scrolling speed threshold is defined as a change in a scroll position by more than a predetermined number of rows in a preset period.

11. A system for dynamically updating a virtual list view, the system comprising:

a communication module for exchanging data with a data source;

a memory; and

a processor coupled to the memory and the communication module capable of executing a client application configured to:

download a first block for displaying in a view port and a preset number of blocks preceding and following the first block to be displayed from the data source;

assign each block in the virtual list view a position attribute relative to a predefined reference, wherein the position attribute is associated with a row identifier such that any range of rows can be selected for display in the view port;

detect a speed of scrolling by a user;

compare the speed of scrolling to a predefined threshold;

when the speed is below the predefined threshold, continue to download the data in blocks and update the view port continuously;

when the speed is above the threshold, skip downloading of blocks that are scrolled through by the user until the speed drops below the threshold;

when the speed drops below the threshold, download another preset number of blocks that include a block to be displayed in the view port and a number of blocks preceding and following the block to be displayed; and

update the view port; and

when a portion of data at the data source has changed, updating the client application by providing an identifier of an affected data row, a change for the data row, and a position indicator for the row, wherein the update is performed in one of per row basis and batch of rows basis.

12. The system of claim 11 , wherein the client application is further configured to: enable the user to place a marker at a selected location on a scroll bar for indicating a position of a data row for subsequent viewing.

13. The system of claim 12 , wherein the marker is associated with a pop-up box providing summary information to the user about the data row at the selected location.

14. The system of claim 11 , wherein the client application is further configured to: provide a preview of skipped data rows sorted based on a criterion that includes at least one from a set of: a title, a heading, a date, and a user-defined attribute.

15. The system of claim 11 , wherein the client application is further configured to: enable the user to jump to a selected row without scrolling in response to a user selection from a user interface menu that includes a selection of ranges based on sort criteria including one of: an alphabetical sort, a title sort, a chronological sort, and a user-defined sort.

16. A computer-readable storage medium with instructions encoded thereon for dynamically updating a virtual list view, the instructions comprising:

downloading a first block for displaying in a view port of a web application and a preset number of blocks preceding and following the first block to be displayed from a data source;

assigning each block in the virtual list view a position attribute relative to a predefined reference, wherein the position attribute is associated with a row identifier such that any range of rows can be selected for display in the view port;

detecting a speed of scrolling by a user;

comparing the speed of scrolling to a predefined threshold;

when the speed is below the predefined threshold, continuing to download the data in blocks and update the view port continuously;

when the speed is above the threshold, skipping downloading of blocks that are scrolled through by the user until the speed drops below the threshold;

freezing the displayed rows while the speed is above the threshold and providing a preview of skipped data rows sorted based on a criterion that includes at least one from a set of: a title, a heading, a date, and a user-defined attribute;

when the speed drops below the threshold, downloading another preset number of blocks that include a block to be displayed in the view port and a number of blocks preceding and following the block to be displayed;

updating the view port;

enabling the user to jump to a selected row without scrolling in response to a user selection from a user interface menu that includes a selection of ranges based on sort criteria including one of: an alphabetical sort, a title sort, a chronological sort, and a user-defined sort˜ and

when a portion of the data at the data source has changed, updating the web application by providing an identifier of an affected data row, a change for the data row, and a position indicator for the row, wherein the update is performed in one of per row basis and batch of rows basis.

17. The computer-readable storage medium of claim 16 , wherein the instructions further comprise:

determining a number of data rows to be downloaded by employing an artificial intelligence algorithm based on historic numbers of downloaded data rows and user activity on the downloaded rows.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TITLE OF THE INVENTION IN THE BODY OF THE ASSIGNMENT, PREVIOUSLY RECORDED ON REEL 019998 FRAME 0462. Recorded Jan 29, 2010
From: DE SOUZA SANA, GISELLI PANONTINI; MUKHERJEE, RAJATISH; MIKULA, SCOTT; VAN EATON, JIM; SIMPSON, RUSSELL
To: MICROSOFT CORPORATION
Reel/Frame 023881/0033 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2007
From: DE SOUZA SANA, GISELLI PANONTINI; MUKHERJEE, RAJATISH; MIKULA, SCOTT; VAN EATON, JIM; SIMPSON, RUSSELL
To: MICROSOFT CORPORATION
Reel/Frame 019998/0462 →
Continuity (1)
Related Publication 20090106687A1 · Apr 23, 2009