MightyCal Diagrams

Visit Sourceforge Project Site
Back to MightyCal Home Page

Classes Diagram
The master UML diagram showing the overall structure of the MightyCal Zope Backend.  This diagram shows the general connections between the classes that exist in the EventTypeRegistry, but does not show, for instance, any of the myriad ways in which a FieldSpec can be composed.
Change DataType collaboration
The Change DataType Collaboration shows the interaction between classes when an administrator tells a FieldSpec to change its data type.  This is an excellent overview of the FieldSpec Composite design pattern.
Overview of templating system
The Template Overview shows graphically how the Cocoon frontend interacts with the Zope backend in order to generate result documents in the user's requested format, while retaining the look-and-feel that the administrator has requested
Template Classes
A UML diagram showing how Templates are organized into collections, which belong to Calendars.

FieldSpec Composites:
FieldSpec instances implement the Composite design pattern from Design Patterns (Gamma et. al.).  Different arrangements of subsidiary ContentTypes, DataTypes, DataRangeProviders and DefaultValueProviders allow the single FieldSpec class to behave in any number of different ways, without any recoding of the base FieldSpec class itself.
BasicContentType Composite
Basic (Default) FieldSpec configuration:  When a FieldSpec is first instantiated, it assumes the Composite structure shown in this diagram.  It defaults to a BasicContentType containing a StringDataType, with a SimpleStringDefaultValueProvider and a SimpleStringDataRangeProvider which together permit unrestricted text entry.
Action FieldSpec Composite
Action Composite:  Instantiates a FieldSpec that can hold values to specify a Calendar Action, including the Action's name, time offset relative to the Event time, and whether the Action should happen relative to the start or end of the Event.
ResourceContentType Composite
Resource Composite:  Instantiates a FieldSpec which can hold values to specify a Resource usage instance.  In this case, this means holding information about the Resource ID, and the time range that the resource is being used by the Event.
TimeRangeContentType Composite
TimeRange Composite:  Instantiates a FieldSpec which holds information about a time range, including the start date & time, the duration of the range (stored in seconds) along with the units to be used in displaying the range (days, hours, weeks, etc.)

Data Entry Process Diagrams

The new data entry process, which uses the DataEntryHandler and DataEntryTransaction classes, is outlined in the following diagrams.  The DataEntryTransaction object, in particular, allows user agents of almost any kind to participate in a multi-stage data-entry process, which allows for validation of entries and showing the user his errors, without having to design special data-entry routines for each user agent (in particular, both the backend Zope Management Interface and the frontend Cocoon data entry pages utilize the same routines).
Event Entry Action Diagram
The Action diagram for the data entry process, in particular illustrating how a transaction is created with the user's data as he enters it, how the data is not actually committed to an event until validation has completed, and how the user gets returned to the same transaction until he corrects all errors.  
Event Entry Collaboration Diagram
The Collaboration Diagram showing how a DataEntryTransaction is handled, especially how it interacts with the EventCatalog and the EventType/FieldSpec composite to perform validation; it also shows how the DataEntryTransaction object is now the controller of the WidgetMaker objects, rather than the DataType objects as before.