# Layouts

Layouts define how layers should be organized/associated when presented in the UI.  A Layout consists primarily of two attributes.  A mapping of layer attributes and how they should be associated (e.g. grouped_by, ordered_by, etc).  As well as a representation of the components that should appear on the screen and how they should be ordered/organized.

## Attribute Mappings

The `attribute_map` indicates which values on a layer are important when it comes to UI concerns.  These could be things like `priority` where you might want to sort/order or a `feature` field which you would want to group on.  A mapping could have a single field it cares about or it could be compound.

For example say a team wanted to view features as Swim Lanes and still maintain a priority inside those lanes.  That team would want a single layout mapping rule that grouped on one field and then after that ordered on another.

```
[
  {
    "name": "swim_lane",
    "ops": [
      {
        "field": "feature",
        "type": "group_on"
      },
      {
        "field": "priority",
        "type": "order_by"
      }
    ]
  }
]
```

**Questions**:

  * What about things like coloring/highlighting?

## Template

The `template` indicates which UI components should be used and what mapping rules they should apply to their content.