Project Tracking App

Overview and Internals Documentation

The Project Tracker is an example of a complex, multi-part Wiki application. Wiki applications take advantage of structured data, defined in Wiki Forms, plus formatted search results, to build small "database" applications within a Wiki web.

Pieces

  • HTML Form, data entry (Create a new project page)
    An HTML form is used to create a new individual project page with appropriate metadata.
    CAUTION : Be sure to keep the HTML form in sync with the Wiki form.

  • Index and Query
    The Query page is used to search through the set of projects. Do you want to find all "in progress" projects? Or every project assigned to a given person? If you don't provide any Search criteria, this page provides an index to all project pages.

Discussion

Wiki Form

Pages with Wiki Forms act like a distributed database, making Wiki "applications" possible. By adding structured, form-based input to a page, topics can be structured with unlimited, easily searchable data fields.

A Wiki Form is described by table of field definitions. Wiki form fields can be any of several types. Projects use text, textarea, checkboxes, radio buttons, date, and menu (aka "select") fields. See ProjectDetailForm for a more complete list of fields, types, sizes, and values.

CAUTION : If you make changes to the Wiki form, be sure to apply those changes to the HTML form as well!

Wiki Form Definition

(Included from ProjectDetailForm)

Name: Type: Size: Values: Tooltip message: Attributes
Project Name
text
60
Name of this Project
M
Project ID
text
10
Project ID Number
Exec Summary
text
100
Brief description (100 chars)
Project Page Link
text
60
Link to Project Development page
Assigned To
text
20
Assignee
Launch Date
text
60
Ops Launch Date (estimated)
Project Size
select
1
, Sm, Md, Lg
Select the project size
Page Comments
textarea
80x6
Any additional comments
select
1
Project Classification

Wiki Form Field Values

Form fields that have multiple choice values can define those values in a separate topic. The topic name must match the field name.

Example

Important If you change any of the fields of the Wiki Form, be sure to synchronize those changes with the initialization and search forms. (There are notes on all of these pages to remind you to keep the values in synch.)

Enabling the Wiki Form

Before a form can be used, it must be attached to a topic. The easiest ways to use a form are

  • attach it to the template topic
    When a new project entry is created, the template will be copied and the new page will automatically inherit a copy of the form.

  • specify the form to use at instance page creation time
    When a new project entry is created, both the template and the form will be copied

We'll use the second of these methods, as it's more obvious whats's happening.

Template Topic

When a new project is initialized, the template topic is copied to create a new page.

The sections of the template are:

  1. code to print a Warning Message if you're viewing the template itself
  2. Shared content

Important - there is nothing editable in the template! The only editable portion of a Project "detail" page is the attached Wiki form!

Shared Content

The majority of the content of the template (and, thus, of every project page) is shared, imported dynamically from another page (ProjectDetailFormat). Shared content allows changes to be made easily to the "look" of a canonical project entry; any changes are immediately propagated to all existing entries.

The shared content presents the following information, driven by data from the attached Wiki Form.

  • Project Title and boilerplate comments
  • Project Health information, imported from Sprint manager
  • Index to Supplementary (Milestone) Documents
  • Milestones: Planning and Reviews (Project Phases)
  • ...
  • Open Issues

Important: The shared content is largely boilerplate. What makes each project unique is the actual project data stored in its attached form. That data is presented on the page.

Button Builder

A large portion of the shared content presents buttons that are used to create supplementary documents, e.g. architecture review form, pre-launch checklist, etc. The code that manages those buttons is stored in a shared topic called ProjectDetailButtonBuilder.

Be very cautious editing the Button Builder code. It takes advantage of some tricky Wiki magic. If you're the least bit unsure, ask for help.

HTML Form

New projects are initialized by filling in the HTML form at ProjectDetailCreate. (There is a subtle but important difference between HTML forms and Wiki forms; different types of forms are described at WikiTutForms.)

The HTML-based initialization form contains the same fields / types as the Wiki form. All distinguishing data except project "Classification", (e.g. New) can be entered at initialization time. When you click "Submit", a new project page will be created (by copying from the template) and the entered data will be placed in the associated Wiki Form.

CAUTION : If you make changes to the HTML ccreation form, be sure to apply those changes to the Wiki form as well!

HTML Form Field Values

Important:
  • "Project Classification" is not included in the HTML (initialization) form. At project creation, this field is automatically set to "New". It can be updated on the individual project pages.
  • If you change any of the fields of the Wiki Form, be sure to synchronize those changes with the initialization and search forms. (There are notes on all of these pages to remind you to keep the values in sync.)

Index and Query

The Index page allows you to narrow the projects you see, based on various criteria. If no search criteria are specified, the table presents an index of all "open" projects.

To search, specify relevant information and click the Search button. You can search across one or more of the following fields:

  • Project Name
  • Project ID
  • Project Size
  • Assignee/POC
  • Project Status (e.g. New, Launched...)

These fields are found in the Wiki Form on each project page.

Naming Convention

New project pages are named ProjectDetail20YYMMpXXXXXXXXXX, where the string of XXXXXXXXXX is replaced by a unique sequence number upon saving, e.g. ProjectDetail201007p1, ProjectDetail201011p5, ...

-- Main.VickiBrown -- 12 Oct 2010
Topic revision: r2 - 31 Mar 2014, VickiBrown
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding CFCL Wiki? Send feedback