# Effort Modes
URL: https://pro.rv-grid.com/guides/gantt/scheduling/effort-modes/
Source: src/content/docs/guides/gantt/scheduling/effort-modes.mdx
Description: Model task types (Fixed Duration, Fixed Work, Fixed Units) to control how work and duration interact.
Use `effortMode` to model Microsoft Project-style task types:

| Mode | Behavior |
|---|---|
| `fixed-duration` | Preserve `duration`. Work and units do not recalculate duration. |
| `fixed-work` | Preserve `workHours` and derive duration from assigned units and calendar. |
| `fixed-units` | Preserve assignment units and derive duration from `workHours` and units. |

## Formula

The duration formula for fixed-work/fixed-units is:

```text
duration = ceil(workHours / (hoursPerDay * totalAssignmentUnits))
```

## Example: Task Types

```typescript
grid.source = [
  {
    id: 'standup',
    name: 'Standup',
    effortMode: 'fixed-duration',
    duration: 1,
    workHours: 2,
  },
  {
    id: 'implementation',
    name: 'Implementation',
    effortMode: 'fixed-work',
    workHours: 32,
  },
];

grid.ganttAssignments = [
  {
    taskId: 'implementation',
    resourceId: 'alex',
    allocationUnits: 100,
  },
];
```

**Expected result**: `standup` keeps its one-day duration. `implementation` becomes four days (32h / 8h/day) with one 100% assignment.

See the [Progress and work demo](https://demo.rv-grid.com/gantt-progress-work/ts) for more examples.
