Abstract: A virtual list view in a web application is dynamically updated such that a uses can seamlessly 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 view as user scrolls. By coupling the user"s scrolling and particular chunks of data to be downloaded system resources are utilized in an manner. Additional user interface controls for the user interface are employed rapid and efficient access to portions of data minimizing delay and resource occupation.
BACKGROUND
[0001] Web browsing applications commonly present data to users in a list view. For example, pages of data that can be viewed by scrolling up or down using various controls such as a keyboard, a mouse, and the like. The viewable data may include text graphics, combination of the two, etc. and may be formatted in actual list form (tables, bulleted items, and so on) or in free form. In either case, the web browsing application may present an arbitrarily large list of items to a user.
[0002] In a practical environment, the web application may attempt to download the whole data upon selection of a link to the data by the user before presenting it in its user interface. This approach may be infeasible by causing unacceptable delays in presentation of data to the user if the data is large, available bandwidth is small, or other system resources cause limitation in the downloading of the data from a web server. Another alternative approach is downloading the data in groins and updating the user interface as data is downloaded. However, this approach may also result in “clunkiness" in the system, where the presented webpage may show up in pieces, delays may annoy the user, and the system resources may be unnecessarily occupied with downloading the whole data when the user may be interested only in a particular piece of it .
SUMMARY
[0003] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.
[0004] Embodiments are directed to dynamically updating a virtual list view in a web application such that a user can seamlessly access and manage the presented data despite the inherent latency involved with the web. Date associated with die virtual list view may be downloaded in chunks and the view update as the user scrolls. By coupling the user’s scrolling and particular chunks of date to be downloaded system resources can be utilized in an efficient manner. Additional user interface controls may be employed for rapid and efficient access to portions of date minimizing delay and system resource occupation.
[0005] These and other features and advantages will be apparent from a reading of the following detailed description and a review of die associated drawings. It is to be understood that both the forgoing general description and the following detailed description are explanatory only and are not restrictive of aspects as claimed.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] FIG. 1 is a conceptual diagram illustrating presentation of data in a web application between a saver and a client;
[0007] FIG. 2 illustrates a screenshot of an example webpage with virtual list view.
[0008] FIG. 3 illustrates the example virtual list view of FIG. 2 with previous and subsequent chunks of data in comparison to the chunk presented in the view port according to some embodiments;
[0009] FIG. 4 is diagram of data blocks that may be downloaded in chunks for dynamically updating a virtual list view according to embodiments;
[0010] FIG. 5 is the anther screenshot of the example list view of FIG. 2 with additional user interface controls for accessing portions of data efficiently;
[0011] FIG. 6 illustrates a networked environment, where embodiments may be implemented;
[0012] FIG. 7 is a block diagram of an example computing operating environment, where embodiments may be implemented; and
[0013] FIG. 8 illustrates a logic flow diagram of an example process for dynamically updating a virtual list view according to embodiments.
DETAILED DESCRIPTION
[0014] As briefly described above, a virtual list view in a web application may be dynamically updated by coordinating the user's scrolling actions with downloading data chunks such that a user can seamlessly access and manage &e presented data. In the following detailed description, references are made to &e accompanying drawings that form a part hereof and in which are shown by way of illustrations specific embodiments or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the spirit or scope of present disclosure. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.
[0015] While the embodiments will be described in the general context of program modules that execute in conjunction with an application program &at runs on an operating system on a personal computer, those skilled in the art will recognize this: aspects may also be implemented in combination with other program modules.
[0016] Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that embodiments may be practiced with other: computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics,, minicomputers, mainframe computers, and the like. Embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and emote memory storage devices.
[0017] Embodiments may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
[0018] Referring to FIG. 1, a conceptual diagram is illustrated for presentation of data in a web application between a saver and a client Web applications include a wide variety of applications that typically have a user interface in a client device / application (106) and exchange data with a data source such as server 102. The actual data for the application may reside in one or more data stores 104 and be managed by server 102.
[0019] The user interface 108 of die web application enables a ma to view the data, perform operations on it, and provide input changing the data to be sent back to the data source. The data presented by the user interface may include textual data, graphical data Or a combination of the two in various formats. For example, the data may be presented as various forms of lists, tables, free form text, pages, and in other formats.
[0020] Embodiments described below refer to web applications such as discussed above, but they are not limited to web applications. Any implication that exchanges data through a network, where system resources and amount of exchanged data is subject to limitation, and that presents the data to a user in a list yum format may implement a dynamic updating method according to embodiments. An example for such an application is an electronic mail application on a client device that provides users a list of received electronic mails (e.g. their subject line and die sender) while the electronic mail content mainly resides on a server. Such an electronic mail application does not need to be a wd> application. It may be an intranet application and use different network protocols (not necessarily HTTP) but still implement embodiments as described herein.
[0021] Other example applications where a dynamic updating of a virtual list view may be implemented include, but are not limited to, instant messaging applications, search engine result presentation and the like. Such application are also not limited to being implemented in Hyper Text Markup Language (HTML). Any type of programming language for browsing applications may be used. Furthermore a width and height of the virtual list view may be dynamically variable based on properties such as number of rows in a data block, scroll speed, and others.
[0022] FIG. 2 illustrates a screenshot of an example webpage with virtual list view. As mentioned above, a dynamically updated virtual lists view may be implemented in any user interface presenting exchanged data in list form to a user.
[0023] Example webpage 208 is presented by a typical web browser user interface. The user interface includes the Uniform Resource Locator: (URL) 212 of the presented webpage, menu commands 218, and operational icons 216. The main content is presented in list view 214. The example webpage is the Patent Laws section of the United States Patent Office website. As can be seen, the webpage contains a long list of U.S. Code with each line presenting a link to the particular section of the Code. The user interfile is capable of presenting only a limited portion of the complete list. The presented presented of the list view is referred to as view port Scroll bar 210 enables a user to scroll up and down on the list and view different portions of the list
[0024] While the example list includes simple lines and may not take very long to download the whole list to a client, in many cases, the complete list view may be simply too long to download in one rapid operation or individual rows may include more data such that the downloading operation may not be able to keep pace with the scrolling action of die user resting in delays of presentation or system resource exhaustion.
[0025] FIG. 3 illustrates the example virtual list view of FIG. 2 with previous and subsequent chunks of data in comparison to the chunk presented in the view p(»t according to some embodiments.
[0026] In a web browsing application according to embodiments, the virtual list view is composed of two main parts: the scrollbar 310 and the view port 314. These two elements are decoupled so that events from the scrollbar 310 cm be captured and handled or discarded as desired. The view port contains “chunks” of rows (for example: in terms of HTML, a chunk may be a divider dement "DIV” containing a table of rows and some additional metadata). TIM drunks are given a position (relative to a predefined reference) attribute, and by modifying their style property, it is possible to position any range of rows to be visible within the view port (as long as those rows are available on the client). As the user scrolls, chunks are added or removed from the view so as to maintain additional rows both above (322) and below (326) what is currently visible in the view port 314.
[0027] In order to minimize consumption of system rescNirces (ocanmimicatiim bandwidth, memory, eto.) by reducing data exchanged between the client and die data source, data may not be \oaiioA if the user is scrolling fester than a predefined threshold. The threshold may be defined, according to one embodimoit, as: 'if the scroll positicm has changed by more than N rows in the last M milliseconds, Ihen the user is scrolling fast'. In this case, the view port may rranain unchanged until the soolUng slows, at whidi point data is only loaded for Hie final position of die scrollbar.
[0028] Selection of row(s) for viewing may be maintained on the client as a ha^ on the row ID(s). Tbis oiables a fast look-iq> to know whether a row is selected, and can be enumerated to get the set of selected items. Selected individual items may also be added to the row selection since the row ED is aheady present on die clioit The sdected item may simply be added to the hash. For large range selections, some of the rows may not exist on the client In that case, a synchronous call may be made to the server (data source) to reconstitute the view and retimi a set of row IDs that are induttod in die range. Of course, odier mediods of maintaining die row IDs may also be implemented widMnit departing fimn the principles described toein.
[0029] hi a practical netwoik environment, die contents of the list may diange in the data source. A usa mter&ce of the w^ application on tbo client needs to vtpdste dynamically to reflect this, histead of preloading the entire dataset, which may be infeasible, an i^lication according to embodiments may load (mly die region of data that the user is currendy viewing, plus enou^ to be able to iqidato the dieot quiddy if die user scrolls a short way.
[0030] Updates may be propagated to Hne client on a per row basis, when the data source changes. The server may send ihe dient minimal data to update the view, depending on whedier a row was inserted, removed, or dymged. It may mdude die ID of die affected row, new mark-\q> for the row, and its podticm in the list (indicated by the ID of the previous row). The cli«it may then tspply diese iqidates.
[0031] According to anodier embodiment, a watomark may be induded widi each batch of i^xlates, becmise the view on die dieot may be out of sync with dw serrar. The watermaik may be sent back with any hslt view operation (e.g. ddete, move) and compared with die current watomark on die sorvor. If the watennaiks do not matdi, it may mean diat some iqxlates must have beoi en route at the time of the xapdsic and were not accounted for. In this case, the server may notify the cUaA to retry the opoi^imi after fhose vpdata are q>plied.
[0032] FIG. 4 is diagram of data blocks that may be downloaded in chunks fin* dynamically vtpdating a virtual list view according to onbodiments.
[0033] As discussed above, the data in a virtual list view may be downloaded and presented in blocks (430) in the view port According to one embodiment, one block of data before and one blodc of data (both comprising a jHvdefined number of rows) may be downloaded in addition to the curroitly viewed blodc 432 (e.g. blodcs N-1, N, and N+1). If the uso- scrolls faster than a predefined tfueshold any subsequoit blocks may be dapped until the scrolling slows down to a level bdow ihe tiireshold and three sequential blocks may again be downloaded to presoit the user his/her currmt sdection of data rows.
[0034] Embodimmts are not limited to downloading three sequential blodcs of data, however. Any number of blocks before and after the currently viewed block may be downloaded to the client based on a number of &ctors such as available communication bandwidth, type of data, user preferences, spoiling speed, si2» of the view port, available monory, and the like. This way, a portion of the whole data is available for viewing without roundtrip trafSc between tiie clioit ar^ the data source. Ftirthennore, an algorithm may be implemented to inedict a numbor of data blocks for preenq^ve downloadmg by using artificial intelligence based on past information of how many data blodcs were downloaded and how they were used by the user.
[0035] As mentioned previously, the data at the source mi^ change while the user is viewing a portion on the client If some rows exist and aOun do iK>t in a selecti
[0036] FIG. 5 is the another screenshot of the exais|rfe list view of FIG. 2 wi& additional user interface controls for accessing portions of data ^^eotly.
[0037] Several control features may be provided in a met mterface for dynamically iqxlating a virtual list view to enhoitx u^r expoience and caw of access to data. In tiMS exan^le w^ browser user interfoce 508, die standard demoris sw^h as the URL 512, opo^onal iccms 516, and fbe sacoU bar 510 aro s^wn eikmg with ti» portion of tlw virtual list view 514.
[0038] One enhanced control feature is scroll-maridng. A user may wish to retimi to particular portions of the virtual list view througjiout Im/bat intonction wilt the data. A «ax>ll-marking icon SIK^ as icon 542 may be used to ii^cate positions along the scroll bar iqwn uso: indication (e.g. rig^ clicking on a pointer device* sdectitm of a mom bar item, etc.) In a further enhancemoit of tiie soroU-marldng featun^ eadi scroll-nuuidng iocm may be associated witili a row corre^iuling to that position ai^ sianmary informatiim about the row may be presented to ttie usor without intemq}ting the viewing expoioice (e.g. in a pop¬up box when the user hovers over the scroll-marking icon).
[0039] Dififorait ways of downloading data was diwussed fn^viously, where dumks are downloaded based ttpoa a s^>eed of sonlling. If flie user scrolls SIOWCT ihaa aifbres^ld, the view is i^xlated continuously. If the scrolling qpeed exceeds the threshold, the view may be fix>zen until the spoiling is slowed again and new diunks of data are ^wnloaded for viewing. The thre^ld may be preset or dynamically determined based cm select properties of the syston. Another enhanced control feature may include presoiting tiie user with a preview of passed rows of data while the usor is scrolling nq>idly through ibxxa. The preview may be based on gmixps of rows and categcnized based on i»er-<^ned (or selected) parameters such as title, hiding, date, and so on. For example, if Ihe user is scrolling rapidly through the U.S. Code (title 35), the preview box (546) may show individual chaptors sudi as chi^ter IS "Plant Patent, duq^ 17 "Designs'*, and ^ like, preventing the vaa from Mxidentally scrolling ova: the rows he/she wishes to view.
[0040] The preview feature may be structured in any way selectable by the- vtaa or based on de&ult paramrters. The parameters may include gro^nng types, metadata types, and
Metadata types and sorting style [alphabetical, date, title, etc,]
[0041] A furthor enhanced control feature is refiaxed to as jionp-to omtrol (544). This feature enables the user to sedc a particular positiad the whole list view. For exaufde, an alphabetic sdection of tiie rows may enaUe the user to jump to a particular row instewl of scrolling down to tiiat tocaticm as ^wn in tte figure. As in the preview feature tiie jump-to control may be based on a number of criteria sudi as alphabetic, chronological, iner-defined, and Ae like. Acocnding to one embodiment, ihe jump-to control may be {MOvided as a dropdown menu impropriate to a sort criterion. For example, if the list is seated a^hid>etically, the mom m^ display tiie letters of ^ alf^iabet, or if sorted by date the menu may show a date pidcer. Sdecting a value in dbe ^opdown menu then causes the list to setk to the first row th^ is eqiul to c« after the «ilected vahie.
[0042] A dynamically iqxlated virtual list view according to onbodimoite may be implemented witti additional or fewer components and features dum those described above in conjunction wi& tte example q)plicati
[0043] FIG. 6 is an example networked aivinmmea^ ^ere embodiments may be implonented. Dynamic iqxiatmg of virtual list views may be mq>lemented in local or distributed q>plicatiohs running on one or morie conqmting devices configured in a distributed manner over a number of physical and virtual clients aid aavas. It may also be implemented in un-clustered systems
[0044] Sudi a system may compise any topology of servers, events, Intonet service providers, and commimication media. Also, tibe syston may have a static or dynamic topology, whore the roles of servers and clients within ^ system's hienffdiy and their interrelaticms may be defined statically by sa administrate: oc dynamically based on availability of devices, load iMdancing, and tiie Uke. The term "dttoit' may reftr to a client ai^lication or a client device. While a netwoiked system in^ementing dyiuBnically updated virtual list views may involve many OKne ccmipcments, relevant (mes are discus^d in conjunction with this figure.
[0045] As menti(med above, a web qiplication (or my afigSicaAtm in^lonenting list view iq>dating) may be ocecuted on client devices 654-656 or cm server 652 and accessed by client device 653. Usos may access data presented in virtual Ust view through netwoik(s) 660 from wd> server 662. Web server 662 may manage aiuistcnreflieditoitsdf using data store 668 or communicate with database Mrver 664 managing <^a stotes 666.
[0046] Networic(s) 660 may include a secine network such as mi enter[Mrise n^woric, an unsecure network su(^ as a wireless open network, or tlw internet Netw(»k(s) 660 provide communicati
[0047] Many other configurations of oooqmting devicei^ apg^ca^&am, data sources, data distribution systons may be en^loyed to implement distributed data ste»age for collaboration servers based on data categcmes. Furthomore, tta netwcnked oivironmoits
discussed in FIG. 6 are for illustration purposes only. Embodiments are not limited to the example {plications, modules, or processes.
[0048] FIG. 7 aadlhe associated discussicm are intended to jHrovide a brie( geneiBl description of a suitable cranputing environment in wbidi onbodiments may be implonented. With refocnce to FIG. 7, a blodc diagram of an example ocmqrating operating environment is ilhistrated, such as computing device 700. In a basic configuration, the computing device 700 may be a client device. Q)mputing device 700 may typically include at least one processing unit 702 and system monory 704. Computing device 700 may also include a plurality of processing unito tfiat cooperate in executing programs. Depmdihg on the exact configuration and type of ocsnimting device, the system memory 704 may be volatile (such as RAM), non-volatile (such as RONf, Hash memory, etc.) or some combination of the two. System memory 704 typically includes an oporating system 70S suitable for controlling the operation of a netw(»ked personal computer, sudi as the WINDOWS® operating systons fix)m MICROSOFT CORPORATION of Redmond, Washington. The system memory 704 may also include one or more software applications such as i»x)gram modules 706, client i^lication 722, view module 724, and data r^eval module 726.
[0049] Clieat application 722 may be any apphca&on presenting a user with data fitnn another source in virtual list view like a web brow»ng api^iGation. Data retrieval nx)dule 726 may retrieve the data for presentaticm fixnn the remote datft source such as a weto server. As explained previously, downloading the entire virtual list view may be impractical or infeasible due to system resource limitations. View module 724 may coordinate the user's soolling wifii the corresponding data dmnks and oiable the data retrieve module 726 to retrieve only those data diuoks ibat are iweded for immediate viewing by the user. View module 724 may also provide the enhamsed control fe^ures diacussed above in ccmjuncticm writh FIG. S. This basic omfiguration is illustrated in FIG. 7 by those componmts within dashed line 708. The fimctionality of client i^lication 722 does not have to be assigned to two distinct modules as desaibed here. The above diaciosed fimctionality may be performed by more or fewo: modules or all by the same q)pliGati(nL
[0050] The computing device 700 may have additional features or fimctionality. FOT example, the computing device 700 may also include additumal data stcmige devices (removable and/or non-removable) nidi as, for example, m^pictic disks, optical dido^ or tape. Sudi additional storage is illustrated in FIG. 7 by remov^le storage 709 ami ncm-
removable storage 710. Computer storage media may include volatile and nonvolatile, ronovable and non-ronovable media inq>lemented in any method or todmology for storage of information, sw^ as oompaia readable instriKtions, data rtni^ures, prc^tram modutes, or other data. System mancny 704, ronovable storage 709, and iKMMemovable straage 710 are all examples of computer storage media. Computor stoatge media includes, but is ncrt limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or otiier optical storage magnetic cassettes, magnetic tape, magnetic disk storage or otter magnetic storage devices, or any other medium whidi can be used to store the desired information and which can be accessed by computing device 700. Any such computer storage media may be part of device 700. Computing device 700 may also have input device(s) 712 sudi as keyboard, mous^ pen, voice input device, toudi input device, etc. Ou^ut device(s) 714 such as a display, speakers, ininter, etc. may also be included. These devices are well known in the art and need not be discussed at length hoe.
[0051] The computing device 700 may also contain communication connections 716 that allow the device to communicate with otho: computing devices 718, sudi as over a wireless network in a distributed computing oivironment, for example, an intranet or the Internet Other computing devices 718 may include web servos, database servers, file servers, provider servers, and the like. Communication cminection 716 is one exan^le of communication media. Oimmunication media may typically be oidxxiied by ocm^uter readable instructions, data strw;tures, progrmn modules, ot other data in a nMxhilaled data signal, such as a carrier wave or other transport medianian, and includes any information ddivoy media. The term *teodulated data signal** means a signal that has oac or mcne of its characteristics set or duoiged in such a manner as to enoxle information in the m^ial. By way of example, and not limitation, communicitti<»i media imshidra wired media such as a wired network or direct-wired connection, and wirdess irodia sudi as mou^c, RF, infiwed and otho: wirden media.
[0052] The clainwd subject matter also includes medK)ds of operation. These methods can be implemoited in any number of ways, including the structures
[0053] Another optional way is for one
[0054] FIG. 8 illustrates a logic flow diagram of an example process 800 for dynamically iqxiating a virtaal list view according to embodmients. Process 800 may be implonented in any wtSb i^i^cation eovircnunent
[0055] Process 800 b^ins with operotimi 802, wiiere initial data blocks for presmtation to a user are received form a data source sack as the first view of a wd) page in a web browso: i^licatimL Processing continues to oporaticHi 804 fixnn operation 802.
[0056] At operation 804, the received initial data blodcCs) are {nesented to the user by the web application. Procesang moves to qpoation 806 fiom qieraticm 804.
[0057] At opaatioa 806, the usar's scrolling oporation througji flie virtual list view is detected. As disicussed above, the user may s
[0058] At decision q)eration 808, a determination is made yibeiQ3.&t the scrolling is fasto* than a predetermined direshold or not If the scrolling is not fiistor than the threshold, processing moves to opo^on 810, vfhxxe the view is iqxlated continuously because the data exchange is not one that could over^dm the system resources.
[0059] If the scrolling is faster than the threshold, continues to operation 812 from decision operation 808, where the scrolled through data blocks are slapped (not downloaded to the client). The view may be frozen during that time frame and additional enhanced control features such as preview feature may be provided. Processing moves from operation 812 to decision.
[0060] At decision operation 814, a range
[0061] At operation 816, a range of data blocks including one to be presented in the view port and a preset number before and after the presented block are downloaded to die client. Processing moves from operation 816 to operation 818.
[0062] At operation 818, the data is updated if there were any changes at the data source. Processing continues from operation 818 to operation 820.
[0063] At operation 820, the downloaded data blocks are presented to the user in th7e slow scroll mode. After operation 820, processing moves to a calling process for further actions.
[0064] The operations included in process 800 are for illustration purposes. Dynamically updating a virtual list view in a web application may be implemented by similar processes with fewer or additional steps, as well as in different data of operations using the principles described herein.
[0065] The above specification, examples and data provide a complete description of the manufacture and use of the composition of the embodiments. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims and embodiments.
I/We Claim:
1. A method (800) to be executed at least in put in a computing device for
dynamically updating a virtual list view (214), the method (800) comprising: detecting
(808) a speed of scrolling by a user in a virtual list view (214) presentation of an
application user interface (108) presenting downloaded data;
if the scrolling speed is below a predefined threshold, continuing (810) to download the data and updating presentation in a view port (314) continuously;;
if the scrolling speed is above the threshold, skipping (812) downloading operation for blocks (430) 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 (816) a preset number : or block (430) that include a block (432) to be presented in the view port (314) and a number of blocks (430) preceding and following the block (432) to be presented; and
displaying (820) the block (432) to be presented in the view port (314).
2. The method (800) of claim 1, wherein a number of data rows in each block is determined based on at least one from a set o£ an available communication bandwidth, type of data, a user preference, the scrolling speed, a mo of the view port (314), and available memory.
3. The method (800) of claim 1, wherein the number of blocks (430) preceding and following the block (432) 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 (314), and available memory.
4. The method (JSOO) of claim 1, wherein the virtual list view (214) comprises at least one of textual data and graphical data in form of at least one from a set o£ a numbered list, a bulleted list, a table, free form text, and a page format.
5. The method (800) of claim 1, further comprising :
assigning each block in the virtual list view (214) 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 (314).
14
6. The method (800) of claim 5, wherein the identifier is stated as metadata.
7. The method (800) of claim 5, wherein a selection or rows for viewing is maintained by the application as a hash on row identifiers.
8. The method (800) of claim 1, further comprising:
if a number of rows in a selection do not exist a client (106) executing the application initiating a synchronous call to a data source maintaining the data for requesting the missing rows utilizing the row identifiers.
9. The method (800) of claim 8, further comprising:
if a portion of the data at the data source has changed, updating the client (106) by providing an identifier of an affected data row, a change for the data row, and a portion indicator for the row, wherein the update is performed in one of pa row basis and batch of rows basis.
10. The method (800) of claim 9, further comprising:
including a watermark with each date from the data source;
sending bade a watermark from the client (106) to die data source; and
determining an update status of the data at &6 client (106) based on a comparison of the watermark at the data source and the watermark sent back from the client (106).
11. The method (800) 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
12. The method (800) 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.
13. A System for dynamically updating (800) a virtual list view (214), 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 curable of executing a client application (106) configured to:
download (802) a first block for displaying in a view port (314) and a preset number: of blocks (430) preceding and following the first block to be displayed from the data source;
assign each block in the virtual list view (214) 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 (314);
detect (806) a speed of scrolling by a user;
compare (808) the speed of scrolling to a predefined threshold;
if the speed is below &e predefined threshold continue (810) to download the data in blocks (430) and update the view port (314) continuously;
if the speed is above the threshold, skip (812) downloading of blocks (430) that are scrolled through by the user until the speed drops below the threshold;
when the speed drops below threshold, download (816) another preset number of blocks (430) that include a block (432) to be displayed in the view port (314) and a number of blocks (430) preceding and following the block (432) to be displayed; and
update (820) the view port (314).
14. The system of claim 13, wherein the client application (106) 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 fm subsequent viewing.
15. The system of claim 14, wherein the marker is associated with a pop-up box providing summary information to the user about the data tow at the selected location.
16. The system of claim 13, wherein the client application (106) 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 healing, a date, and a user-defined attribute.
17. The system of claim 13, wherein the client application (106) is further configured
to:
enable the user to jump to a selected row without scrolling in response to response to a user selection from a user interface menu that includes a selection of ranges based on sent criteria including one of: an alphabetical sort, a title sort, a chronological sent, and a user-defined sort
18. A computer -readable storage medium with instructions encoded thereon for dynamically updating a virtual list view (214), the instructions comprising:
downloading (802) a first block for displaying in a view port (314) of a web application and a preset number of blocks (430) preceding and following the first block to be displayed from the data source;
assigning (804) each block in the virtual list view (214) 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 (314);
detecting (806) a speed of scrolling by a user;
comparing (808) the speed of scrolling to a predefined threshold;
if the speed is below the predefined threshold, continuing (810) to download the data in blocks (430) and update the view port (314) continuously;
if the speed is above the threshold, dapping (812) downloading of blocks (430) 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 skipped data rows sorted based on a criterion indices at least one from a set of: a title, a heading, a date, and a user-defined attribute:
when die speed drops below the threshold , downloading (816) another preset number of blocks (430) that include a block (432) to be displayed in Has view port (314) and a number of blocks (430) preceding and following the block to be displayed; updating (820) the view port (314); and
enabling die 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 tide sort, a chronological sort, and a USCT-defined sort.
19. The computer-readable storage medium of claim 18, wherein the instructions
further comprise:
if a portion of the data at the data source has changed, updating (818) the web application by providing an identifier of an affected data row, a change for the data row, and a position indicate for the row, wherein the update is performed in one of pa* row basis and batch of rows basis.
20. The computer-readable storage medium of claim 18, 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.
| # | Name | Date |
|---|---|---|
| 1 | 2395-CHENP-2010-AbandonedLetter.pdf | 2018-07-04 |
| 1 | abs 2395-chenp-2010 abstract 23-04-2010.jpg | 2010-04-23 |
| 2 | 2395-chenp-2010 pct search report 23-04-2010.pdf | 2010-04-23 |
| 2 | 2395-CHENP-2010-FER.pdf | 2017-12-26 |
| 3 | Form 3 [04-11-2016(online)].pdf | 2016-11-04 |
| 3 | 2395-chenp-2010 pct 23-04-2010.pdf | 2010-04-23 |
| 4 | 2395-CHENP-2010-Correspondence-FORM-3-031115.pdf | 2016-04-05 |
| 4 | 2395-chenp-2010 correspondence others 23-04-2010.pdf | 2010-04-23 |
| 5 | 2395-CHENP-2010-Form 3-031115.pdf | 2016-04-05 |
| 5 | 2395-chenp-2010 claims 23-04-2010.pdf | 2010-04-23 |
| 6 | FORM-6-1301-1400(KONPAL).95.pdf | 2015-03-13 |
| 6 | 2395-chenp-2010 power of attorney 23-04-2010.pdf | 2010-04-23 |
| 7 | MS to MTL Assignment.pdf | 2015-03-13 |
| 7 | 2395-chenp-2010 form-5 23-04-2010.pdf | 2010-04-23 |
| 8 | MTL-GPOA - KONPAL.pdf | 2015-03-13 |
| 8 | 2395-chenp-2010 form-3 23-04-2010.pdf | 2010-04-23 |
| 9 | 2395-chenp-2010 form-2 23-04-2010.pdf | 2010-04-23 |
| 9 | FORM-6-1301-1400(KONPAL).95.pdf ONLINE | 2015-03-09 |
| 10 | 2395-chenp-2010 form-1 23-04-2010.pdf | 2010-04-23 |
| 10 | MS to MTL Assignment.pdf ONLINE | 2015-03-09 |
| 11 | 2395-chenp-2010 drawings 23-04-2010.pdf | 2010-04-23 |
| 11 | MTL-GPOA - KONPAL.pdf ONLINE | 2015-03-09 |
| 12 | 2395-chenp-2010 description(complete) 23-04-2010.pdf | 2010-04-23 |
| 12 | 2395-CHENP-2010 FORM-6 02-03-2015.pdf | 2015-03-02 |
| 13 | 2395-CHENP-2010 CORRESPONDENCE OTHERS 11-10-2011.pdf | 2011-10-11 |
| 13 | 2395-chenp-2010 abstract 23-04-2010.pdf | 2010-04-23 |
| 14 | 2395-CHENP-2010 FORM-18 11-10-2011.pdf | 2011-10-11 |
| 14 | 2395-chenp-2010 form-3 12-10-2010.pdf | 2010-10-12 |
| 15 | 2395-CHENP-2010 FORM-18 11-10-2011.pdf | 2011-10-11 |
| 15 | 2395-chenp-2010 form-3 12-10-2010.pdf | 2010-10-12 |
| 16 | 2395-CHENP-2010 CORRESPONDENCE OTHERS 11-10-2011.pdf | 2011-10-11 |
| 16 | 2395-chenp-2010 abstract 23-04-2010.pdf | 2010-04-23 |
| 17 | 2395-CHENP-2010 FORM-6 02-03-2015.pdf | 2015-03-02 |
| 17 | 2395-chenp-2010 description(complete) 23-04-2010.pdf | 2010-04-23 |
| 18 | 2395-chenp-2010 drawings 23-04-2010.pdf | 2010-04-23 |
| 18 | MTL-GPOA - KONPAL.pdf ONLINE | 2015-03-09 |
| 19 | 2395-chenp-2010 form-1 23-04-2010.pdf | 2010-04-23 |
| 19 | MS to MTL Assignment.pdf ONLINE | 2015-03-09 |
| 20 | 2395-chenp-2010 form-2 23-04-2010.pdf | 2010-04-23 |
| 20 | FORM-6-1301-1400(KONPAL).95.pdf ONLINE | 2015-03-09 |
| 21 | 2395-chenp-2010 form-3 23-04-2010.pdf | 2010-04-23 |
| 21 | MTL-GPOA - KONPAL.pdf | 2015-03-13 |
| 22 | 2395-chenp-2010 form-5 23-04-2010.pdf | 2010-04-23 |
| 22 | MS to MTL Assignment.pdf | 2015-03-13 |
| 23 | 2395-chenp-2010 power of attorney 23-04-2010.pdf | 2010-04-23 |
| 23 | FORM-6-1301-1400(KONPAL).95.pdf | 2015-03-13 |
| 24 | 2395-chenp-2010 claims 23-04-2010.pdf | 2010-04-23 |
| 24 | 2395-CHENP-2010-Form 3-031115.pdf | 2016-04-05 |
| 25 | 2395-CHENP-2010-Correspondence-FORM-3-031115.pdf | 2016-04-05 |
| 25 | 2395-chenp-2010 correspondence others 23-04-2010.pdf | 2010-04-23 |
| 26 | Form 3 [04-11-2016(online)].pdf | 2016-11-04 |
| 26 | 2395-chenp-2010 pct 23-04-2010.pdf | 2010-04-23 |
| 27 | 2395-CHENP-2010-FER.pdf | 2017-12-26 |
| 27 | 2395-chenp-2010 pct search report 23-04-2010.pdf | 2010-04-23 |
| 28 | abs 2395-chenp-2010 abstract 23-04-2010.jpg | 2010-04-23 |
| 28 | 2395-CHENP-2010-AbandonedLetter.pdf | 2018-07-04 |
| 1 | search_28-08-2017.pdf |