# Visual schedule card

> Canonical HTML: https://screenrig.ai/docs/cards/visual-schedule/

A picture schedule of the day: each activity a big picture and a few words, with now marked, finished activities ticked and what comes next in order.

Category: Schools. Tags: Schools and campuses, Schedules.

## Previews

![Visual schedule](/cards/visual-schedule/v1/screenshots/canvas-bloom.webp?sha=ab6f986add4ffe5bf63b7d8f1b2a4e7b764b11419a7fcfd58911239db38afe39)

Canvas

![Visual schedule](/cards/visual-schedule/v1/screenshots/corner-bloom.webp?sha=1a15b55c6ee634dcea1eef916b25a0b01a6504d450f51a486247fa0420ec761b)

Corner

![Visual schedule](/cards/visual-schedule/v1/screenshots/chip-bloom.webp?sha=3d7fed34efc55cdf4f6b151eeb0ebd7e73ac834e4babb651a2c17e75549dd7d1)

Chip

## Views and forms

Views: canvas, corner, chip. Canvas forms: landscape, portrait, square, strip.

[Card views, themes and publishing](/docs/cards/). [Browse the gallery](/apps/#cards).

## Data and privacy

This card uses its configured properties and live card data.

## Properties

For theme, background, accent and position, see [Common properties](/docs/cards/#common-properties).

Set static properties in `params`. Bind `data` to a project card data key for live values; that document holds only dynamic properties. Without a data key, put the complete configuration in `params`. Nested rows describe the contents of their parent property.

### Static properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `showTimes` | boolean | `true` |  | Show each activity's start time. |
| `hour12` | boolean | `false` |  |  |
| `timeZone` | string, null | `null` |  |  |

### Dynamic properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `title` | string | `"Our day"` | maxLength: `40` | The heading. |
| `items` | array | `[]` | minItems: `0`; maxItems: `12` | The day's activities, in order, each a picture and a few words. With a start time an activity is under way from its start to its end (else to the next start); the card follows the clock. Without times, set `current`. |
| `items[].label` | string |  | minLength: `1`; maxLength: `30`; Required |  |
| `items[].icon` | string | `"star"` | `"star"`, `"user-group"`, `"sparkles"`, `"music-note-01"`, `"restaurant-01"`, `"apple"`, `"walking"`, `"volleyball"`, `"basketball-01"`, `"news-01"`, `"lightbulb"`, `"leaf-01"`, `"target-02"`, `"megaphone-01"`, `"bell-ring"`, `"home-01"`, `"bus-01"`, `"drink"`, `"party"`, `"birthday-cake"`, `"message-01"`, `"calendar-03"`, `"clock-01"`, `"favourite"`, `"trophy"`, `"rocket-01"`, `"wrench-01"`, `"camera-01"`, `"sun-03"`, `"moon-02"`, `"droplet"`, `"door-open"`, `"first-aid-kit"`, `"hourglass"`, `"gift"` | The picture. |
| `items[].start` | string |  | maxLength: `5` | HH:MM, 24-hour. Optional. |
| `items[].end` | string |  | maxLength: `5` | HH:MM, 24-hour, after the start. Optional: the activity runs until the next one starts. |
| `items[].note` | string |  | maxLength: `40` | A short line shown when the activity is under way, for example Bring your coat. |
| `current` | integer | `0` | minimum: `0`; maximum: `99` | 0 follows the clock using the start times. 1 and up marks that activity as now: those before it are done, those after it come next. Past the last one the day is done. |
| `doneText` | string | `"All done"` | maxLength: `30` | Shown when the last activity is finished. |

## Canvas example

Add this item to a playlist page’s `primitives`. [Publish the playlist and assign a screen](/docs/cards/#publish-a-card-canvas).

```json
{
  "id": "visual-schedule",
  "primitive": "card",
  "card": "visual-schedule",
  "major": 1,
  "params": {
    "theme": "neomustard"
  },
  "rect": {
    "x": 0,
    "y": 0,
    "width": 1920,
    "height": 1080
  },
  "layer": 0,
  "content_fit": "fill",
  "data": "visual-schedule-main"
}
```

## Write live data

Create this document before showing the card, then replace it to update the screen without republishing. Use the same project as the playlist. Supply your API authorization through the environment; see [API authentication](/docs/authentication/).

```console
curl --request PUT "https://api.screenrig.ai/api/card-data/visual-schedule-main" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "ScreenRig-Project: $SCREENRIG_PROJECT" \
  --header "Content-Type: application/json" \
  --data '{"document":{"title":"Our day","items":[],"current":0,"doneText":"All done"}}'
```
