Patent Publication Number: US-9423943-B2

Title: Automatic variable zooming system for a project plan timeline

Description:
FIELD 
     One embodiment is directed to a computer system, and more particularly, to a computer system that displays data. 
     BACKGROUND 
     Project managers or planners typically work with a project plan timeline, which is a set of tasks that are associated with an overall project or objective, and that are displayed over a timeline. A project plan timeline for a sophisticated project/objective will typically have numerous tasks over a significant duration, such as a year. However, a display area is limited in size. This generally means that: (1) only a portion of the entire project plan timeline can be displayed at a time; and (2) the entire project plan timeline can only be displayed at a zoom level where a majority of the content of the project plan timeline is not legible. However, a project planner may like to closely examine the project plan timeline for certain time periods (or “time units”) without losing context or sight of the overall project plan timeline. For example, a user may wish to identify, in the project plan timeline, where a resource (e.g., “Matt”) is overloaded. If the user zooms out to a view of the entire project plan timeline, the user likely cannot tell which tasks belong to Matt, and which tasks belong to other resources. However, if the user zooms into a more readable view, the user must navigate through the project plan timeline looking for tasks that belong to Matt. 
     SUMMARY 
     One embodiment is a system that provides automatic variable zooming. The system displays a project plan timeline within a user interface, where a project plan timeline includes one or more tasks and a timeline includes one or more time units. The system further receives an instruction to invoke automatic variable zooming on the displayed project plan timeline. The system further receives one or more criteria. The system further calculates one or more scores for the one or more time units of the project plan timeline based on the received criteria. The system further adjusts a zoom level for one or more portions of the project plan timeline based on the one or more calculated scores. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Further embodiments, details, advantages, and modifications will become apparent from the following detailed description of the preferred embodiments, which is to be taken in conjunction with the accompanying drawings. 
         FIG. 1  illustrates a block diagram of a system that can implement an embodiment of the invention. 
         FIG. 2  illustrates a project plan timeline that is displayed by an automatic variable zooming system, according to an embodiment of the invention. 
         FIG. 3  illustrates variable zoom calculation scores that are calculated based on a criteria for a project plan timeline, according to an embodiment of the invention. 
         FIG. 4  illustrates an automatic variable zoom display of a project plan timeline that is displayed by an automatic variable zooming system, according to an embodiment of the invention. 
         FIG. 5  illustrates variable zoom calculation scores that are calculated based on a different criteria for a project plan timeline, according to an embodiment of the invention. 
         FIG. 6  illustrates another automatic variable zoom display of a project plan timeline that is displayed by an automatic variable zooming system, according to an embodiment of the invention. 
         FIG. 7  illustrates a flow diagram of the functionality of an automatic variable zooming module, according to an embodiment of the invention. 
         FIG. 8  illustrates a flow diagram of the functionality of an automatic variable zooming module, according to another embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     According to an embodiment, an automatic variable zooming system is provided. The automatic variable zooming system can automatically calculate variable zoom calculation scores for visible time units of a project plan timeline, where a project plan timeline includes a set of tasks that are displayed over a timeline, and where the timeline includes a number of time units, such as days. The calculation of the variable zoom calculation scores for the visible time units of the project plan timeline can be based on a user-selected criteria that is selected out of all available pre-defined criteria offered by the automatic variable zooming system, or any custom-defined criteria created by the user. The calculated variable zoom calculation scores can be used by the automatic variable zooming system to set varying zoom levels for the corresponding time units of the project plan timeline, when the project plan timeline is displayed within a user interface of the automatic variable zooming system. A higher variable zoom calculation score can result in a higher zoom level. 
       FIG. 1  illustrates a block diagram of a system  10  that can implement one embodiment of the invention. System  10  includes a bus  12  or other communications mechanism for communicating information between components of system  10 . System  10  also includes a processor  22 , operatively coupled to bus  12 , for processing information and executing instructions or operations. Processor  22  may be any type of general or specific purpose processor. System  10  further includes a memory  14  for storing information and instructions to be executed by processor  22 . Memory  14  can be comprised of any combination of random access memory (“RAM”), read only memory (“ROM”), static storage such as a magnetic or optical disk, or any other type of machine or computer-readable medium. System  10  further includes a communication device  20 , such as a network interface card or other communications interface, to provide access to a network. As a result, a user may interface with system  10  directly, or remotely through a network or any other method. 
     A computer-readable medium may be any available medium that can be accessed by processor  22 . A computer-readable medium may include both a volatile and nonvolatile medium, a removable and non-removable medium, a communication medium, and a storage medium. A communication medium may include computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism, and may include any other form of information delivery medium known in the art. A storage medium may include RAM, flash memory, ROM, erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), registers, hard disk, a removable disk, a compact disk read-only memory (“CD-ROM”), or any other form of storage medium known in the art. 
     Processor  22  can also be operatively coupled via bus  12  to a display  24 , such as a Liquid Crystal Display (“LCD”). Display  24  can display information to the user. A keyboard  26  and a cursor control device  28 , such as a computer mouse, can also be operatively coupled to bus  12  to enable the user to interface with system  10 . 
     According to one embodiment, memory  14  can store software modules that may provide functionality when executed by processor  22 . The modules can include an operating system  15 , an automatic variable zooming module  16 , as well as other functional modules  18 . Operating system  15  can provide an operating system functionality for system  10 . Automatic variable zooming module  16  can provide functionality for automatic variable zooming. In certain embodiments, automatic variable zooming module  16  can comprise a plurality of modules, where each module provides specific individual functionality for automatic variable zooming. System  10  can also be part of a larger system. Thus, system  10  can include one or more additional functional modules  18  to include the additional functionality. For example, functional modules  18  may include modules that provide additional functionality, such as functionality of a “Primavera Enterprise Project Portfolio Management” by Oracle Corporation. 
     Processor  22  can also be operatively coupled via bus  12  to a database  34 . Database  34  can store data in an integrated collection of logically-related records or files. Database  34  can be an operational database, an analytical database, a data warehouse, a distributed database, an end-user database, an external database, a navigational database, an in-memory database, a document-oriented database, a real-time database, a relational database, an object-oriented database, or any other database known in the art. 
     As previously described, a project manager or planner typically needs to closely examine a project plan timeline for certain time periods (or “time units”) without losing a view of the overall plan. A need for the project planner to closely examine the project plan timeline may be based on one or more of the following reasons (but not limited to the following reasons). The project planner may need to identify which time periods a set of important resources are over-allocated and re-plan one or more tasks for those resources at alternate time periods, or identify “double entries” (i.e., tasks assigned to the same resource for identical or overlapping time periods) that are entered by mistake and correct the double entries. While moving tasks or identifying double entries, the project planner will likely need to view an overall context of the project plan timeline and the tasks that surround the viewed portion of the project plan timeline. Further, the project planner may need to identify the time periods where a large number of tasks are finishing, because the project planner may discover potential task dependencies not marked, potential gaps between finishing tasks and starting tasks, potential overlap between two sequential tasks, etc. Again, while moving tasks around for correction, the project planner will likely need to view nearby tasks, and would likely need to view the overall context. In addition, the project planner may need to identify the time periods on which remaining portions of previously delayed tasks are being executed. This may be because the project planner wants to closely monitor the progress, and take immediate action if the progress is further delayed, to potentially avoid any disruptive ripple effects. In this situation, the project planner will also likely need to view surrounding tasks and an overall context in order to be conscious of any potential impact. 
     As also previously described, a size of a display area is limited, so, typically, only a certain portion of an entire project plan timeline is visible. If a user zooms out to have the entire project plan timeline viewed in the display area, the individual elements of the project plan timeline are typically too small in size to be legible, rendering the view cluttered and effectively useless. If, on the other hand, the user zooms into a specific portion of the project plan timeline, all other portions of the project plan timeline are no longer displayed within the display area, an overall context of the project plan timeline is lost, and the user is required to navigate back and forth within the project plan timeline in order to do any meaningful examination and take any remedial action. 
     Existing systems usually offer zooming features that allow a user to zoom in and zoom out. However, the zooming scale is uniform. As previously described, for uniform zooming, if a user zooms out, the display area typically becomes too crowded to be usable. But if the user zooms in, important contextual information can be lost, and the user typically has to perform a significant amount of back-and-forth navigation. Some existing systems try to solve this problem by using a filtered view, where the relevant content is displayed within the display area, and the rest of the content is hidden. While this renders the displayed view uncluttered even at low zoom levels, this also hides content, and essentially removes contextual information. Some other existing systems support variable zoom levels. However, the variable zoom levels are essentially manually done. This means that the user has to manually set different zoom levels for different time periods. But this requires the user to know which time periods to be zoomed into, and what zoom level should be set for each time period. 
     Further, some existing systems may support “hot-spot” marking. With “hot-spot” marking, if a user specifies filter criteria, instead of hiding the time periods of the project plan timeline which do not meet the filter criteria, the system can “mark” (or otherwise highlight) the time periods in which the filter criteria is met. The user can then zoom into the marked time periods. However, the problem remains that, as soon as the user zooms into a range of time periods, all the other areas of the project plan timeline go out of view, and the contextual information is lost. In addition, even assuming a system that supports both “hot-spot” marking and manual variable zooming, the user still has to manually zoom into a “hot-spot” time period. There may be many “hot-spot” time periods, and it will be very tedious to continuously zoom into a “hot-spot” time period, zoom out to the non-“hot-spot” time period in order to maintain a broader range of time periods in the view, zoom into another “hot-spot” time period, etc. Further, a user has no way of prioritizing the “hot-spot” time periods. Thus, as is described below in greater detail, an automatic variable zooming system that provides automatic variable zooming of a project plan timeline is highly desirable. 
       FIG. 2  illustrates a project plan timeline  210  that is displayed by an automatic variable zooming system, according to an embodiment of the invention. According to the embodiment, a user of the automatic variable zooming system can send an instruction to the automatic variable zooming system to open project plan timeline  210 . The instruction can be sent using an interaction, such as moving a cursor over a tab, button, icon, or some other user interface element that is also displayed by the automatic variable zooming system. In response to the request, the automatic variable zooming system can display project plan timeline  210  within a user interface. 
     Project plan timeline  210  includes a timeline, where the timeline includes one or more time units  220 . In the illustrated embodiment, each time unit  220  of project plan timeline  210  represents a day. Thus, time units  220  represents a plurality of days from Monday, Sep. 23, 2013 to Sunday, Nov. 3, 2013. However, this is only an example embodiment. In alternate embodiments, each time unit of a project plan timeline can represent any period of time (such as a second, a minute, an hour, a week, a month, a year, etc.). Further, in alternate embodiments, the one or more time units of a project plan timeline can collectively represent any period of time. Project plan timeline  210  can further display weekends  230 , where a weekend is a specific type of time unit, using an alternate display format, such as a cross-hatched shaded format. While in the illustrated embodiment, time units  220  of project plan timeline  210  are displayed in a horizontal direction, in alternate embodiments, time units  220  of project plan timeline can be displayed in a vertical direction. 
     Project plan timeline  210  further includes one or more tasks, where the one or more tasks are displayed over the timeline. In the illustrated embodiment, project plan timeline  210  includes normal priority tasks  240  that are assigned a normal priority, and also includes high priority tasks  250  that are assigned a high priority. Normal priority tasks  240  can be displayed in a first display format (e.g., clear format), and high priority tasks  250  can be displayed in a second display format (e.g., striped format). In the illustrated embodiment, normal high priority tasks  240  include tasks T 01 , T 02 , T 03 , T 05 , T 06 , T 07 , T 11 , T 12 , T 13 , T 14 , T 15 , T 17 , T 18 , T 20 , T 21 , T 22 , T 23 , T 24 , T 25 , T 26 , T 30 , T 31 , T 32 , T 33 , and T 34 . Further, high priority tasks  250  include tasks T 04 , T 08 , T 09 , T 10 , T 16 , T 19 , T 27 , T 28 , T 29 , T 35 , and T 36 . While in the illustrated embodiment, the one or more tasks are displayed over the timeline in a horizontal direction, in alternate embodiments, the one or more tasks can be displayed in a vertical direction. 
       FIG. 3  illustrates variable zoom calculation scores that are calculated based on a criteria for project plan timeline  210 , according to an embodiment of the invention. According to the embodiment, a user can send an instruction to the automatic variable zooming system to invoke automatic variable zooming on project plan timeline  210 . The instruction can be sent using an interaction, such as moving a cursor over a tab, button, icon, or some other user interface element. In response to the instruction to invoke automatic variable zooming, the automatic variable zooming system can request that the user define a criteria to be used for the automatic variable zooming. According to the embodiment, a criteria is a metric of project plan timeline  210  that can be utilized by the automatic variable zooming system to calculate one or more scores for time units  220  of project plan timeline  210 , as is described below in greater detail. Examples of criteria that can be used for automatic variable zooming include: (a) a total number of tasks per time unit; (b) a total number of “high priority” tasks (i.e., tasks that are assigned a high priority) per time unit; (c) a total number of “milestone” tasks (i.e., tasks that are defined as a “milestone” for a project plan timeline) per time unit; (d) a total number of tasks assigned to a resource per time unit; (e) a total number of resources who are over-allocated per time unit; or (f) a total number of resources having an unallocated capacity per time unit. However, these are only examples of criteria that can be used for automatic variable zooming, and in alternate embodiments, an alternate criteria can be used. In certain embodiments, the automatic variable zooming system can define, in advance, a set of criteria, and the user can select the criteria from the set of pre-defined criteria. In other embodiments, the criteria can be defined by the user. In the illustrated embodiment, the criteria that is used for automatic variable zooming is a total number of high priority tasks per time unit. 
     According to the embodiment, based on the criteria that is selected, the automatic variable zooming system calculates variable zoom calculation scores for time units  220  of project plan timeline  210 . More specifically, the automatic variable zooming system calculates raw scores  310  for time units  220  of project plan timeline  210  based on the selected criteria. By calculating a raw score for a time unit, the automatic variable zooming system can calculate a numerical value that represents the selected criteria for the time unit. For example, in the illustrated embodiment, the automatic variable zooming system can calculate raw scores  310  for time units  220  of project plan timeline  210 , where each raw score is a numerical value that represents a number of high priority tasks for a corresponding time unit of time units  220 . 
     Thus, as an example, a raw score  310  for a time unit  220  that represents Monday, Sep. 23, 2013 is 2, which represents a number of high priority tasks (i.e., tasks T 10  and T 28 ) that occur on Monday, Sep. 23, 2013. Similarly, a raw score  310  for a time unit  220  that represents Tuesday, Sep. 24, 2013 is 2, which represents a number of high priority tasks (i.e., tasks T 10  and T 28 ) that occur on Tuesday, Sep. 24, 2013. In contrast, a raw score  310  for a time unit  220  that represents Wednesday, Sep. 25, 2013 is 1, which represents a number of high priority tasks (i.e., task T 28 ) that occur on Wednesday Sep. 25, 2013. Thus, raw scores  310  are calculated for time units  220  that represent Monday, Sep. 23, 2013 to Sunday, Nov. 3, 2013. 
     According to the embodiment, the automatic variable zooming system further calculates range scores  320  for time units  220  of project plan timeline  210 . A range score can be calculated according to the following formula: R (n) =S (n−1) +S (n) +S (n+1) , where R (n)  represents a range score for a n th  time unit, S (n)  represents a raw score for a n th  time unit, S (n−1)  represents a raw score for a (n−1) th  time unit, and S (n+1)  represents a raw score for a (n+1) th  time unit. Thus, in other words, a range score for a time unit can be a sum of a raw score for the time unit, a raw score for a previous time unit and a raw score for a subsequent time unit. In alternate embodiments, instead of using three terms to calculate a range score, the automatic variable zooming system can use any number of terms, such as five, seven, or more, to calculate the range score. 
     Thus, as an example, a range score  320  for a time unit  220  that represents Monday, Sep. 23, 2013 is 4, which represents a sum of a raw score for the time unit (i.e., 2), a raw score for a previous time unit (i.e., 0, because there is no previous time unit), and a raw score for a subsequent time unit (i.e., 2, which is the raw score for the time unit that represents Tuesday, Sep. 24, 2013). Further, a range score  320  for a time unit  220  that represents Tuesday, Sep. 24, 2013 is 5, which represents a sum of a raw score for the time unit (i.e., 2), a raw score for a previous time unit (i.e., 2, which is the raw score for the time unit that represents Monday, Sep. 23, 2013), and a raw score for a subsequent time unit (i.e., 1, which is the raw score for the time unit that represents Wednesday, Sep. 25, 2013). Further, a range score  320  for a time unit  220  that represents Wednesday, Sep. 25, 2013 is 4, which represents a sum of a raw score for the time unit (i.e., 1), a raw score for a previous time unit (i.e., 2, which is the raw score for the time unit that represents Tuesday, Sep. 24, 2013), and a raw score for a subsequent time unit (i.e., 1, which is the raw score for the time unit that represents Thursday, Sep. 26, 2013). Thus, range scores  320  are calculated for time units  220  that represent Monday, Sep. 23, 2013 to Sunday, Nov. 3, 2013. 
     According to the embodiment, the automatic variable zooming system further selects a number of time units  220  which have the highest range scores. In other words, the automatic variable zooming system selects a number of time units  220  that correspond to range scores  320  that are the highest range scores. The selection of the range scores  320  that are the highest range scores is based on a “range score cut-off.” A “range score cut-off” is a cut-off value for range scores  320  that is automatically determined by the automatic variable zooming system in order to result in the automatic variable zooming system only selecting a number of time units  220  that is a fraction of a total number of time units  220  (i.e., f (selected) ). Thus, the automatic variable zooming system can require that a range score of range scores  320  have a numeric value greater than or equal to the range score cut-off before the range score (and thus, the corresponding time unit) is selected. Further, in certain embodiments, f (selected)  can be substantially equal to 1/(1+SF)*TOTAL, where SF represents a skew factor defined by the automatic variable zooming system, and where TOTAL represents the total number of time units  220 . By being “substantially equal” to 1/(1+SF)*TOTAL, what is meant is that f (selected)  is the largest possible fraction that is less than or equal to 1/(1+SF)*TOTAL. Further, as described below in greater detail, a skew factor controls a zoom-in factor used by the automatic variable zooming system to adjust a zoom level for portions of project plan timeline  210 , and also controls a zoom-out factor used by the automatic variable zooming system to adjust a zoom level for other portions of project plan timeline  210 . In alternate embodiments, the skew factor can be defined by the user rather than by the automatic variable zooming system. 
     According to the illustrated embodiment, a skew factor is defined as 2, and thus, f (selected)  is substantially equal to ⅓ of the total number of time units  220 , based on the formula 1/(1+SF)*TOTAL. This is only an example fraction, and in alternate embodiments, f (selected)  can be substantially equal to a different fraction based on a different skew factor. Further, in the illustrated embodiment, a total number of time units  220  is equal to 42, and a range score cut-off for range scores  320  is defined as 5, such that, the automatic variable zooming system selects 12 time units of time units  220  whose range score is 5 or greater, where the selected 12 time units are highlighted in  FIG. 3  with dark bars  330 ,  340 ,  350 ,  360 , and  370  at the bottom of project plan timeline  210 . Thus, f (selected)  (i.e., 12/42 or 2/7) is substantially equal to ⅓. If a range score cut-off had been defined as 4, then 22 time units of time units  220  would be selected, which would result in f (selected)  (i.e., 22/42 or 11/21) being greater than ⅓. Further, if a range score cut-off had been defined as 6, only 5 time units of time units  220  would be selected, which would result in f (selected)  (i.e., 5/42) being less than ⅓, but also being less than f (selected)  when the range score cut-off is defined as 5 (i.e., 2/7), and thus, would result in f (selected)  not being the largest possible fraction that is less than or equal to 1/(1+SF)*TOTAL. 
       FIG. 4  illustrates an automatic variable zoom display of project plan timeline  210  that is displayed by an automatic variable zooming system, according to an embodiment of the invention. According to the embodiment, the automatic variable zooming system first uniformly reduces a zoom level for time units  220  by a zoom-out factor (i.e., f (zoom-out) ). Further, in certain embodiments, f (zoom-out)  can be equal to 1/SF, where SF represents a skew factor defined by the automatic variable zooming system. As previously described, a skew factor controls a zoom-out factor used by the automatic variable zooming system to adjust a zoom level for portions of project plan timeline  210 . In alternate embodiments, the skew factor can be defined by the user rather than by the automatic variable zooming system. 
     According to the illustrated embodiment, a skew factor is defined as 2, and thus, f (zoom-out)  is equal to ½ or 0.5. This is only an example value, and in alternate embodiments, f (zoom-out)  can be equal to a different value. Thus, the automatic variable zooming system reduces a zoom level of time units  220  by 2× (or in other words, adjusts a zoom level of time units  220  by 0.5×). 
     According to the embodiment, the automatic variable zooming system subsequently increases a zoom level for the 12 previously-selected time units of time units  220  by a zoom-in factor (i.e., f (zoom-in) ). Further, in certain embodiments, f (zoom-in)  can be equal to SF, where SF represents a skew factor defined by the automatic variable zooming system. As previously described, a skew factor also controls a zoom-in factor used by the automatic variable zooming system to adjust a zoom level for portions of project plan timeline  210 . In alternate embodiments, the skew factor can be defined by the user rather than by the automatic variable zooming system. 
     According to the illustrated embodiment, a skew factor is defined as 2, and thus, f (zoom-in)  is equal to 2. This is only an example value, and in alternate embodiments, f (zoom-in)  can be equal to a different value. Thus, the automatic variable zooming system increases a zoom level of the 12 previously-selected time units of time units  220  by 4× (or in other words, increases a zoom level of the 12 previously-selected time units of time units  220  by 2×, with respect to an original display zoom level). 
     Thus, ⅓ (or substantially ⅓) of the original display of project plan timeline  210  occupies ⅔ of a display area of the user interface of the automatic variable zooming system. Further, ⅔ (or substantially ⅔) of the original display of project plan timeline  210  occupies ⅓ of the display area of the user interface of the automatic variable zooming system. These display area proportions are based on the skew factor, and the display area proportions can be modified when the skew factor is modified. For example, a skew factor equal to 3 would result in f (selected) =¼, f (zoom-in) =⅓, and f (zoom-out) =3. In this example, ¼ (or substantially ¼) of the original display of project plan timeline  210  occupies ¾ of a display area of the user interface of the automatic variable zooming system. Further, ¾ or (substantially ¾) of the original display of project plan timeline  210  occupies ¼ of the display area of the user interface of the automatic variable zooming system. 
     According to the embodiment, after adjusting the zoom levels for time units  220 , the automatic variable zooming system displays markers  410 ,  420 ,  430 ,  440 , and  450  within the user interface. Markers  410 ,  420 ,  430 ,  440 , and  450  represent the zoomed-in portions of project plan timeline  210 . A user can interact with markers  410 ,  420 ,  430 ,  440 , and  450  to further customize a zoom level of the corresponding portions of project plan timeline  210 . For example, a user can drag a horizontal edge of marker  410  in a horizontal direction using a cursor control, such as a mouse. As another example, a user can place a cursor on marker  410  and “click” on marker  410  using the cursor control. By customizing a zoom level of a portion of project plan timeline  210 , a user can: (a) increase the zoom level of the portion; (b) reduce the zoom level of the portion; (c) increase a size of the portion to include more time units; or (d) reduce a size of the portion to include fewer time units. According to the embodiment, in response to a customization of a portion of project plan timeline  210  via an interaction with a marker of markers  410 ,  420 ,  430 ,  440 , or  450 , the automatic variable zooming system can automatically and proportionally adjust the zoom levels of the remaining portions of project plan timeline  210  so as to make a display area of the user interface optimally filled. 
     Further, in an embodiment, the automatic variable zooming system can adjust a zoom level for additional portions of project plan timeline  210 , in response to an interaction by the user, such as moving a cursor over a tab, button, icon, or some other user interface element that is also displayed by the automatic variable zooming system. By doing so, the automatic variable zooming system can create additional markers (similar to markers  410 ,  420 ,  430 ,  440 , and  450 ) that are displayed within the user interface. Further, the automatic variable zooming system can restore an original zoom level for portions of project plan timeline  210 , in response to an interaction by the user, such as moving a cursor over a tab, button, icon, or some other user interface element. By doing so, the automatic variable zooming system can remove markers (such as markers  410 ,  420 ,  430 ,  440 , and  450 ) from the user interface. Additionally, the automatic variable zooming system can restore original zoom levels for all portions of project plan timeline  210 , in response to an interaction by the user, such as moving a cursor over a tab, button, icon, or some other user interface element. By doing so, the automatic variable zooming system can remove all markers (including markers  410 ,  420 ,  430 ,  440 , and  450 ) from the user interface. In addition, the automatic variable zooming system can save the zoom levels of project plan timeline  210  as a variable zoom profile. The variable zoom profile can be stored, can be shared with other users, and can be subsequently loaded and applied to any project plan timeline. 
       FIG. 5  illustrates variable zoom calculation scores that are calculated based on a different criteria for project plan timeline  210 , according to an embodiment of the invention.  FIG. 5  is similar to  FIG. 3 , except that, in  FIG. 5 , the automatic variable zooming system utilizes a criteria that is a number of tasks (including both normal priority tasks  240  and high priority tasks  250 ) per time unit, instead of a criteria that is merely a number of high priority tasks per time unit. 
     According to the embodiment, a user can send an instruction to the automatic variable zooming system to invoke automatic variable zooming on project plan timeline  210 . In response to the instruction to invoke automatic variable zooming, the automatic variable zooming system can request that the user define a criteria to be used for the automatic variable zooming. In the illustrated embodiment, as previously described, the criteria that is used for automatic variable zooming is a total number of tasks per time unit. 
     According to the embodiment, the automatic variable zooming system calculates raw scores  510  for time units  220  of project plan timeline  210  based on the selected criteria. For example, in the illustrated embodiment, the automatic variable zooming system can calculate raw scores  510  for time units  220  of project plan timeline  210 , where each raw score is a numerical value that represents a number of tasks for a corresponding time unit of time units  220 . 
     Thus, as an example, a raw score  510  for a time unit  220  that represents Monday, Sep. 23, 2013 is 5, which represents a number of tasks (i.e., tasks T 01 , T 10 , T 18 , T 28  and T 32 ) that occur on Monday, Sep. 23, 2013. Further, a raw score  510  for a time unit  220  that represents Tuesday, Sep. 24, 2013 is 6, which represents a number of tasks (i.e., tasks T 01 , T 07 , T 10 , T 18 , T 28  and T 32 ) that occur on Tuesday, Sep. 24, 2013. Additionally, a raw score  510  for a time unit  220  that represents Wednesday, Sep. 25, 2013 is 4, which represents a number of tasks (i.e., tasks T 07 , T 10 , T 18 , and T 32 ) that occur on Wednesday Sep. 25, 2013. Thus, raw scores  510  are calculated for time units  220  that represent Monday, Sep. 23, 2013 to Sunday, Nov. 3, 2013. 
     According to the embodiment, the automatic variable zooming system further calculates range scores  520  for time units  220  of project plan timeline  210 . As previously described, a range score can be calculated according to the following formula: R (n) =S (n−1) +S (n) +S (n+1) , where R (n)  represents a range score for a n th  time unit, S (n)  represents a raw score for a n th  time unit, S (n−1)  represents a raw score for a (n−1) th  time unit, and S (n+1)  represents a raw score for a (n+1) th  time unit. Thus, in other words, a range score for a time unit can be a sum of a raw score for the time unit, a raw score for a previous time unit and a raw score for a subsequent time unit. 
     Thus, as an example, a range score  520  for a time unit  220  that represents Monday, Sep. 23, 2013 is 11, which represents a sum of a raw score for the time unit (i.e., 5), a raw score for a previous time unit (i.e., 0, because there is no previous time unit), and a raw score for a subsequent time unit (i.e., 6, which is the raw score for the time unit that represents Tuesday, Sep. 24, 2013). Further, a range score  520  of a time unit  220  that represents Tuesday, Sep. 24, 2013 is 15, which represents a sum of a raw score for the time unit (i.e., 6), a raw score for a previous time unit (i.e., 5, which is the raw score for the time unit that represents Monday, Sep. 23, 2013), and a raw score for a subsequent time unit (i.e., 4, which is the raw score for the time unit that represents Wednesday, Sep. 25, 2013). Further, a range score  520  of a time unit  220  that represents Wednesday, Sep. 25, 2013 is 15, which represents a sum of a raw score for the time unit (i.e., 4), a raw score for a previous time unit (i.e., 6, which is the raw score for the time unit that represents Tuesday, Sep. 24, 2013), and a raw score for a subsequent time unit (i.e., 5, which is the raw score for the time unit that represents Thursday, Sep. 26, 2013). Thus, range scores  520  are calculated for time units  220  that represent Monday, Sep. 23, 2013 to Sunday, Nov. 3, 2013. 
     According to the embodiment, the automatic variable zooming system further selects a number of time units  220  which have the highest range scores. In other words, the automatic variable zooming system selects a number of time units  220  that correspond to range scores  520  that are the highest range scores. As previously described, the selection of the number of range scores  520  that are the highest range scores is based on a range score cut-off that is automatically determined by the automatic variable zooming system in order to result in the automatic variable zooming system only selecting a number of time units that is a fraction of a total number of time units  220  (i.e., f (selected) ). Further, as also previously described, in certain embodiments, f (selected)  can be substantially equal to 1/(1+SF)*TOTAL, where SF represents a skew factor defined by the automatic variable zooming system, and where TOTAL represents the total number of time units  220 . 
     According to the illustrated embodiment, a skew factor is defined as 2, and thus, f (selected)  is substantially equal to ⅓ of the total number of time units  220 , based on the formula 1/(1+SF)*TOTAL. Further, in the illustrated embodiment, a total number of time units  220  is equal to 42, and a range score cut-off for range scores  520  is defined as 12. Thus, the automatic variable zooming system selects 14 time units of time units  220  whose range score is 3 or greater, where the selected 14 time units are highlighted in  FIG. 5  with dark bars at the bottom of project plan timeline  210 . Thus, f (selected)  (i.e., 14/42 or ⅓) is substantially equal (in fact, exactly equal) to ⅓. If a range score cut-off had been defined as 11, then 21 time units of time units  220  would be selected, which would result in f (selected)  (i.e., 21/42 or ½) being greater than ⅓. Further, if a range score cut-off had been defined as 13, only 10 time units of time units  220  would be selected, which would result in f (selected)  (i.e., 10/42 or 5/21) being less than ⅓, but also being less than f (selected)  when the range score cut-off is defined as 12 (i.e., ⅓), and thus, would result in f (selected)  not being the largest possible fraction that is less than or equal to 1/(1+SF)*TOTAL. 
       FIG. 6  illustrates another automatic variable zoom display of project plan timeline  210  that is displayed by an automatic variable zooming system, according to an embodiment of the invention.  FIG. 6  is similar to  FIG. 4 , except that, in  FIG. 6 , the automatic variable zooming system utilizes a criteria that is a number of tasks (including both normal priority tasks  240  and high priority tasks  250 ) per time unit, instead of a criteria that is merely a number of high priority tasks per time unit. 
     According to the embodiment, the automatic variable zooming system first uniformly reduces a zoom level for time units  220  by a zoom-out factor (i.e., f (zoom-out) . Further, in certain embodiments, f (zoom-out)  can be equal to 1/SF, where SF represents a skew factor defined by the automatic variable zooming system. 
     According to the illustrated embodiment, a skew factor is defined as 2, and thus, f (zoom-out)  is equal to ½ or 0.5. Thus, the automatic variable zooming system reduces a zoom level of time units  220  by 2× (or in other words, adjusts a zoom level of time units  220  by 0.5×). 
     According to the embodiment, the automatic variable zooming system subsequently increases a zoom level for the 14 previously-selected time units of time units  220  by a zoom-in factor (i.e., f (zoom-in) ). Further, in certain embodiments, f (zoom-in)  can be equal to SF, where SF represents a skew factor defined by the automatic variable zooming system. 
     According to the illustrated embodiment, a skew factor is defined as 2, and thus, f (zoom-in)  is equal to 2. Thus, the automatic variable zooming system increases a zoom level of the 14 previously-selected time units of time units  220  by 4× (or in other words, increases a zoom level of the 14 previously-selected time units of time units  220  by 2×, with respect to an original display zoom level). 
     Thus, ⅓ (or substantially ⅓) of the original display of project plan timeline  210  occupies ⅔ of a display area of the user interface of the automatic variable zooming system. Further, ⅔ (or substantially ⅔) of the original display of project plan timeline  210  occupies ⅓ of the display area of the user interface of the automatic variable zooming system. 
     According to the embodiment, after adjusting the zoom levels for time units  220 , the automatic variable zooming system displays markers  610 ,  620 ,  630 ,  640 ,  650 , and  660  within the user interface. Markers  610 ,  620 ,  630 ,  640 ,  650 , and  660  represent the zoomed-in portions of project plan timeline  210 . A user can interact with markers  610 ,  620 ,  630 ,  640 ,  650 , and  660  to further customize a zoom level of the corresponding portions of project plan timeline  210 . 
       FIG. 7  illustrates a flow diagram of the functionality of an automatic variable zooming module (such as automatic variable zooming module  16  of  FIG. 1 ), according to an embodiment of the invention. In one embodiment, the functionality of the flow diagram of  FIG. 7 , as well as the functionality of the flow diagram of  FIG. 8 , are each implemented by software stored in a memory or some other computer-readable or tangible medium, and executed by a processor. In other embodiments, each functionality may be performed by hardware (e.g., through the use of an application specific integrated circuit (“ASIC”), a programmable gate array (“PGA”), a field programmable gate array (“FPGA”), etc.), or any combination of hardware and software. In certain embodiments, some of the functionality can be omitted. 
     The flow begins, and proceeds to  710 . At  710 , a project plan timeline is displayed within a user interface. The project plan timeline includes one or more tasks and a timeline. The timeline includes one or more time units. In certain embodiments, a time unit can be a day. In certain embodiments, the one more tasks can be displayed over the timeline within the user interface. The flow then proceeds to  720 . 
     At  720 , an instruction to invoke automatic variable zooming on the displayed project plan timeline is received. The instruction can be sent using an interaction, such as moving a cursor over a tab, button, icon, or a user interface element. The flow then proceeds to  730 . 
     At  730 , a criteria is received. In certain embodiments, the criteria can be selected from a set of pre-defined criteria. The pre-defined criteria can include at least one of: a total number of tasks per time unit; a total number of high priority tasks per time unit; a total number of milestone tasks per time unit; a total number of tasks assigned to a resource per time unit; a total number of resources who are over-allocated per time unit; or a total number of resources having an unallocated capacity per time unit. In other embodiments, the criteria can be defined by a user. The flow then proceeds to  740 . 
     At  740 , one or more raw scores are calculated for the one or more time units of the project plan timeline based on the criteria. In certain embodiments, the calculating the one or more raw scores for the one or more time units can include calculating one or more numerical values that represent the selected criteria for the one or more time units. The flow then proceeds to  750 . 
     At  750 , one or more ranges scores are calculated for the one or more time units of the project plan timeline. In certain embodiments, a range score for a time unit can be a sum of a raw score for the time unit, a raw score for a previous time unit, and a raw score of a subsequent time unit. The flow then proceeds to  760 . 
     At  760 , a number of time units of the project plan timeline are selected which have the highest range scores. In certain embodiments, a skew factor (“SF”) can be defined, and the number of time units that are selected can be substantially equal to 1/(1+SF)*a total number of the one or more time units of the project plan timeline. The flow then proceeds to  770 . 
     At  770 , a zoom level is reduced for the one or more time units of the project plan timeline by a zoom-out factor. In certain embodiments where SF is defined, the zoom-out factor can be equal to 1/SF. The flow then proceeds to  780 . 
     At  780 , a zoom level is increased for the selected time units of the project plan timeline by a zoom-in factor. In certain embodiments where SF is defined, the zoom-in factor can be equal to SF. The flow then ends. 
       FIG. 8  illustrates a flow diagram of the functionality of an automatic variable zooming module (such as automatic variable zooming module  16  of  FIG. 1 ), according to another embodiment of the invention. The flow begins and proceeds to  810 . At  810 , a project plan timeline with auto-varied zoom levels is displayed within a user interface. In certain embodiments, the project plan timeline with auto-varied zoom levels can be displayed according to the functionality described in conjunction with  FIG. 7 . The flow then proceeds to  820 . 
     At  820 , one or more markers corresponding to one or more portions of the project plan timeline are displayed within the user interface. The flow then proceeds to  830 . 
     At  830 , a user interaction that is a drag of a marker of the one or more markers is received. The flow then proceeds to  840 . 
     At  840 , a zoom level of a portion that corresponds to the marker is adjusted based on the drag of the marker. The flow then proceeds to  850 . 
     At  850 , zoom levels of other portions of the project plan timeline are automatically and proportionally adjusted. The flow then proceeds to  860 . 
     At  860 , the zoom levels of the project plan timeline are saved as a variable zoom profile. The flow then proceeds to  870 . 
     At  870 , a zoom level is adjusted for an additional portion of the project plan timeline in response to a user interaction. The flow then proceeds to  880 . 
     At  880 , an original zoom level is restored for a portion of the project plan timeline in response to a user interaction. The flow then proceeds to  890 . 
     At  890 , original zoom levels are restored for all portions of the project plan timeline in response to a user interaction. The flow then ends. 
     Thus, an automatic variable zooming system is provided, that can provide automatic variable zooming of a project plan timeline that is displayed within a user interface. By providing automatic variable zooming, the automatic variable zooming system can display an entire project plan timeline within a display area, where “hot spots” are automatically zoomed-in. By displaying the entire project timeline, the automatic variable zooming can preserve an overall context of the project plan timeline, which still displaying “important” information in a legible manner. 
     The features, structures, or characteristics of the invention described throughout this specification may be combined in any suitable manner in one or more embodiments. For example, the usage of “one embodiment,” “some embodiments,” “certain embodiment,” “certain embodiments,” or other similar language, throughout this specification refers to the fact that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment of the present invention. Thus, appearances of the phrases “one embodiment,” “some embodiments,” “a certain embodiment,” “certain embodiments,” or other similar language, throughout this specification do not necessarily all refer to the same group of embodiments, and the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. 
     One having ordinary skill in the art will readily understand that the invention as discussed above may be practiced with steps in a different order, and/or with elements in configurations which are different than those which are disclosed. Therefore, although the invention has been described based upon these preferred embodiments, it would be apparent to those of skill in the art that certain modifications, variations, and alternative constructions would be apparent, while remaining within the spirit and scope of the invention. In order to determine the metes and bounds of the invention, therefore, reference should be made to the appended claims.