# orca.dag

> A module of Orca's API.

A pipeline's DAG drawn as SVG, on the server.

Steps are laid out left to right by depth (a step is one column right of the
step it's `after`), and steps at the same depth are stacked top to bottom in
pipeline order. A mapped step, which runs once per partition, is drawn as a
stack of boxes; a gather step as one. Each box carries a status class, the
aggregate of its partitions in the run being shown, which the stylesheet
colours. Pipelines are chains today, so this is usually one row; it's
written for a DAG, as datasets may branch one later.

## Structs

### `DagStep`

```mojo
struct DagStep
```

Implements: `Copyable`, `Movable`

Fields:

- `name: String`
- `kind: String`: `mapped` or `gather`.
- `after: String`: The step it follows, or empty.
- `status: String`: Its status in the run shown, or empty on a pipeline's own page.
- `href: String`: Its function's code, which the box links to, or empty.

## Functions

### `aggregate`

```mojo
def aggregate(statuses: List[String]) -> String
```

One status for a step from its partitions': failed or running if any is, succeeded if all are, otherwise the first one's.

### `dag_svg`

```mojo
def dag_svg(steps: List[DagStep]) -> String
```

The steps as an `<svg>` element, sized to fit.
