Read-only column view of a project schedule

Engineer:Carlos
Work remaining:0 weeks
QA effort1 week
No. of automated tests0

Description

Utilize the extJs tree view or table component to create a new view of a project's schedule. The idea is to eventually replace the actual Flat View, except that the user can control the choice and order of columns, plus sort the schedule by column.

Future sprints will add the capability for users to change some or all of the displayed data directly in the table without opening each entry separately.

User stories

  • Users can display any of the task data in a column as an alternate schedule view.
    • Users can add or remove a column of data, as well as choose the order and width of the columns.
  • The schedule view can be sorted according to any of the displayed columns.
    • To support sorting, the assigned resources will be listed by name rather than an icon and pop-up window, as in the indented view.
    • To support sorting, the tasks this task is dependent upon (i.e. linked to) will be listed by number, instead of with an icon and pop-up window, as in the indented view.
  • For the first implementation users will not be able to edit the contents of the schedule directly from the column view.

Engineering notes: extJs components

Analysis & Design

As this feature is an intent to eventually replace an actual View (Flat View from Schedule --> Workplan module), it is worth to display first how the actual view looks like: Actual Flat View screen-shot
This view is a HTML Table object, which is populated by means of JavaBeans? and XSL (eXtensible Stylesheet Language).

Implementation Matrix

The ExtJS give us a big set of possibilities to enhance (among others) our actual View layouts, which are exclusively based on HTML Table objects.
Although that, mainly because how our actual functionality is implemented, and how ExtJS works, it is needed to let some of our actual actions out of scope for this Sprint.

Just as an example, the Delete action has had to be disable for new Ajax View only because how this feature is actually implemented. Instead of passing the user selected rows (indeed, the task identifiers) from the View Layer (JSP in this case) to the Logic Layer (a Servlet in this case), we have an scenario where values passed rom View Layer to Logic Layer are fake values, which indeed are discarded by the Logic Layer. Then, the Logic Layer does the direct access to the HTML objects and searches by itself which table rows the user selected.

With this kind of coupling it is quite difficult to cleanly, and worst, it is highly risky to implement those actions in this new Ajax Table.
Stated that, next table shows a matrix with actions implemented in actual Flat View vs. actions implemented in new View. Note: this table only relates to actions the user can fire over table row(s). For instance, as the Create does not acts over a user selected row, such action is not contemplated here.

FunctionalityActual - Flat ViewBeta - Flat View
Notify TaskYESYES
Modify TaskYESYES
View Task PropertiesYESYES
Move Task(s) UpYESNO
Move Task(s) DownYESNO
Assign Resource(s)YESNO
Update Percent CompleteYESNO
Assign Task to a PhaseYESNO
Link TasksYESNO
Unlink TasksYESNO
Delete TaskYESNO
Capture WorkYESNO
Share TaskYESNO
Click on Task Name cell and go to View Task pageYESNO
Unindent Task(s)NONO
Indent Task(s)NONO

Known Issues

Backlog

  • Encapsulate schedule flat view as a reusable component -
  • Direct editing of table values - Enable users to modify the task values displayed in the extJs-based flat view of a project schedule directly in the table. Currently, users must open tasks individually to change their values, such as name, description or duration. This feature will enable to change some or all of the displayed data directly in the table without opening each entry separately.
  • Popup menus for common commands - 1) Select row by clicking on row, 2) Right click to get pop-up menu of common commands.
    • Edit task...
    • Update % complete...
    • Record time...
    • View task properties...
    • Assign
      • Resources
      • To phases
    • Move
      • Task up
      • Task down
      • Unindent task
      • Indent task
    • Delete
  • Drag and drop to organize rows - Ability to reorganize task order by dragging a row to a new location.
  • Excel export and import(?) of table data - http://extjs.com/forum/showthread.php?t=2513

Attachments