# Project Planning (Basic) (cf.cplace.projektplanung.projektplanungBasic)

## Overview

The "Project Planning (Basic)" app provides core Gantt chart functionality for managing schedules in cplace. It offers the fundamental planning elements: Schedule, Milestone, and Task. The app includes widgets for visualizing these elements in both single-schedule and multi-schedule Gantt charts, as well as a structured table view for editing task properties.

**Key Capabilities:**
- Classic Gantt chart visualization
- Schedule, Milestone, and Task management
- Hierarchical task structures (parent-child relationships)
- Progress tracking (% complete)
- RAG (Red-Amber-Green) rating for status
- Calendar week display for dates
- Multi-schedule visualization for portfolio views

## Dependencies

When installed, this app brings in:
- **cf.cplace.platform** (cplace Basis) - Always present, base platform

No additional dependencies are auto-installed beyond the base platform.

## Types Provided

### cf.schedule (Schedule / Plan)

The container for a project schedule. Holds overall timeline and aggregated metrics.

| Attribute | Internal Name | Type | Required | Description |
|-----------|---------------|------|----------|-------------|
| Start | `startDate` | Date | No | The schedule starts in the morning of the specified day |
| Calendar Week Start | `startDateCalendarWeek` | Number | No | Calendar week of start date |
| Finish | `endDate` | Date | No | The schedule finishes in the evening of the specified day |
| Calendar Week Finish | `endDateCalendarWeek` | Number | No | Calendar week of finish date |
| Duration | `duration` | Number | Yes | Duration of the schedule |
| Duration Unit | `durationUnit` | Text | Yes | Unit for duration (days, weeks, etc.) |
| Calendar ID | `calendarId` | Text | Yes | Identifier for the working calendar |
| % Completed | `percentComplete` | Number | Yes | Overall completion percentage |
| RAG Rating | `ratingLight` | Enumeration | No | Status indicator (Red/Amber/Green) |
| Note | `note` | Rich Text | No | Additional notes |
| Print Profile | `printProfile` | Reference | No | Default profile for Presentation Graphics export |
| Gantt Version | `cf.cplace.gantt.ganttVersion` | Text | No | If "2.0", loads in New Gantt Widget |
| Last Calculation | `lastCalculation` | Number | No | Timestamp of last schedule recalculation (ms) |

**Icon:** `cf-gantt-square-o`

---

### cf.milestone (Milestone / Meilenstein)

A point-in-time marker within a schedule, typically representing a significant event or deliverable.

| Attribute | Internal Name | Type | Required | Description |
|-----------|---------------|------|----------|-------------|
| Parent object | `parent` | Reference | Yes | Parent task or schedule |
| Schedule | `containingSchedule` | Reference | No | The schedule containing this milestone |
| Date | `date` | Date | No | The milestone is in the evening of the specified day |
| Calendar Week Date | `dateCalendarWeek` | Number | No | Calendar week of the date |
| Calendar ID | `calendarId` | Text | Yes | Identifier for the working calendar |
| % Completed | `percentComplete` | Number | Yes | Completion status (typically 0% or 100%) |
| RAG Rating | `ratingLight` | Enumeration | No | Status indicator (Red/Amber/Green) |
| Automatically scheduled | `automaticScheduling` | Boolean | No | Should date be rescheduled when predecessors change? |
| Note | `note` | Rich Text | No | Additional notes |

**Icon:** `cf-milestone`

---

### cf.activity (Task / Vorgang)

A work item with start and end dates, representing actual work to be done.

| Attribute | Internal Name | Type | Required | Description |
|-----------|---------------|------|----------|-------------|
| Parent object | `parent` | Reference | Yes | Parent task or schedule |
| Schedule | `containingSchedule` | Reference | No | The schedule containing this task |
| Start | `startDate` | Date | No | The task starts in the morning of the specified day |
| Calendar Week Start | `startDateCalendarWeek` | Number | No | Calendar week of start date |
| Finish | `endDate` | Date | No | The task finishes in the evening of the specified day |
| Calendar Week Finish | `endDateCalendarWeek` | Number | No | Calendar week of finish date |
| Duration | `duration` | Number | Yes | Task duration |
| Duration Unit | `durationUnit` | Text | Yes | Unit for duration (days, weeks, etc.) |
| Calendar ID | `calendarId` | Text | Yes | Identifier for the working calendar |
| % Completed | `percentComplete` | Number | Yes | Task completion percentage |
| RAG Rating | `ratingLight` | Enumeration | No | Status indicator (Red/Amber/Green) |
| Automatically scheduled | `automaticScheduling` | Boolean | No | Should dates be rescheduled when predecessors change? |
| Note | `note` | Rich Text | No | Additional notes |

**Icon:** `fa-tasks`

## Widgets Provided

| Widget | Internal Name | Description | Use Case |
|--------|---------------|-------------|----------|
| **Gantt chart** | `cf.projektplanung.singleGantt` | Displays a Gantt chart of all tasks and milestones for a single schedule | Primary schedule visualization; automatically detects schedule context from page hierarchy |
| **Multi Gantt Chart** | `cf.projektplanung.multiGantt` | Displays multiple schedules simultaneously in one Gantt view | Portfolio dashboards, executive summaries, cross-project views |
| **Structured Table for Schedules** | `cf.projektplanung.scheduleTreeTable` | Tree table showing tasks and milestones with inline editing | Spreadsheet-like editing of task properties while maintaining hierarchy |
| **Open Gantt Chart** | `cf.projektplanung.singleGanttLink` | Button that opens the Gantt chart in a new browser tab | Overview pages; provides quick access without full widget overhead |
| **Schedule Edit State** | `cf.cplace.projektplanung.scheduleLockState` | Shows who is editing a schedule and provides lock management | Collaborative editing; prevents conflicts; shows lock owner and affected schedules |

## Hierarchy Structure

```
Schedule (cf.schedule)
├── Task (cf.activity)
│   ├── Task (cf.activity)      # Sub-tasks via parent reference
│   └── Milestone (cf.milestone)
├── Task (cf.activity)
└── Milestone (cf.milestone)
```

Tasks and Milestones reference their parent via the `parent` attribute. The `containingSchedule` attribute provides a direct reference to the top-level schedule for efficient queries.

## Usage Notes

### When to Use This App

- **Basic project planning**: Single project schedules with tasks and milestones
- **Timeline visualization**: When you need a Gantt chart view
- **Progress tracking**: Tracking % complete and RAG status
- **Portfolio overview**: Multi-Gantt for viewing multiple schedules together

### Complementary Apps

- **Project Planning (Extended)** (`cf.cplace.projektplanung.projektplanungExtended`): Adds subscriptions, dependencies, and advanced features
- **Task Classes** (`cf.cplace.projektplanungMasterData`): Visual categorization of tasks with custom colors and shapes
- **Project Structure** (`cf.cplace.projectTree`): Hierarchical project organization above schedules
- **New Gantt** (`cf.cplace.projectPlanning.app.gantt2.gantt2`): Modern Bryntum-based Gantt with enhanced features
- **Presentation Graphic** (`cf.cplace.pptexport`): Export schedules to PowerPoint

### Best Practices

1. **Page Hierarchy**: Create Schedules as child pages, then Tasks and Milestones beneath them
2. **Parent References**: Always set the `parent` attribute to maintain proper hierarchy
3. **Automatic Scheduling**: Enable `automaticScheduling` for tasks that should move with their predecessors
4. **RAG Rating**: Use for quick visual status communication in Gantt views

## Investigation Metadata

- **Investigation Date**: 2026-02-02
- **Workspace ID**: 58hyt6h0jscaz0hyd0rvnn4ch
- **Workspace Name**: [App Investigation] cf.cplace.projektplanung.projektplanungBasic
- **cplace Version**: Current (localhost testing environment)
