Timetable

Raw day/time events compile into a timetable grid, headers, and duration-aware event blocks.

Timetable
Timetable Pipeline pipeline

Data Sources

4

Fields

17

Scales

1

Layers

7

Glyphs

76

rect 62 / text 14

8:009:0010:0011:0012:0013:0014:0015:0016:0017:008:009:0010:0011:0012:0013:0014:0015:0016:0017:008:009:0010:0011:0012:0013:0014:0015:0016:0017:008:009:0010:0011:0012:0013:0014:0015:0016:0017:008:009:0010:0011:0012:0013:0014:0015:0016:0017:00MonMonTueTueWedWedThuThuFriFrimon-standup Monmon-research Montue-review Tuetue-build Tuewed-demo Wedwed-plan Wedthu-workshop Thufri-retro Frifri-wrap FriStandupStandupResearchResearchReviewReviewBuildBuildDemoDemoPlanningPlanningWorkshopWorkshopRetroRetroWrap-upWrap-up

Build Path

Timetable Pipeline

This example is rebuilt from gallery data source events by recipe timetable: raw table rows -> TabularSource -> pipeline drafts -> analyzeAuthoringDrafts() -> materialized ChartSpec -> compileChart() -> SceneGraph -> SVG. The graph below shows the authored pipeline stage.

Pipeline recipe graph

10 pipelines
11 nodes
8 edges

Data Flow Diagram

0/838 nodes
0/1545 edges
838 hidden

Select a glyph to highlight its complete source path.

Scope

Roles

source
transform
field
scale
layer
param
glyph

No matching flow nodes

Adjust search, scope, or role filters.

Available Data

4 tables
3 transforms

Imported table

source_gallery_timetable
raw
8 columns
feeds pipeline_timetable_grid_layout_transform
feeds pipeline_timetable_header_layout_transform
feeds pipeline_timetable_event_layout_transform

ChartSpec

{
  "id": "gallery.timetable",
  "data": [
    {
      "id": "source_gallery_timetable",
      "rows": 9
    },
    {
      "id": "source_timetable_grid",
      "rows": 50
    },
    {
      "id": "source_day_headers",
      "rows": 5
    },
    {
      "id": "source_timetable_events",
      "rows": 9
    }
  ],
  "transforms": [
    {
      "id": "pipeline_timetable_grid_layout_transform",
      "type": "layout",
      "input": "source_gallery_timetable",
      "output": "source_timetable_grid",
      "options": {
        "end": 18,
        "endField": "end",
        "errorMethod": "standardError",
        "field": "day",
        "fit": "contain",
        "geometryField": "day",
        "groupBy": [
          "day"
        ],
        "idField": "day",
        "includeMax": false,
        "labelField": "day",
        "layout": "pipeline_plot_layout",
        "layoutKind": "timetableGrid",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Mon",
          "Tue",
          "Wed",
          "Thu",
          "Fri"
        ],
        "orderField": "day",
        "parentField": "start",
        "seriesBy": "start",
        "sourceField": "day",
        "start": 8,
        "startField": "start",
        "targetField": "start",
        "value": "title",
        "xField": "start",
        "yField": "end"
      }
    },
    {
      "id": "pipeline_timetable_header_layout_transform",
      "type": "layout",
      "input": "source_gallery_timetable",
      "output": "source_day_headers",
      "options": {
        "end": 18,
        "endField": "end",
        "errorMethod": "standardError",
        "field": "day",
        "fit": "contain",
        "geometryField": "day",
        "groupBy": [
          "day"
        ],
        "idField": "day",
        "includeMax": false,
        "labelField": "day",
        "layout": "pipeline_plot_layout",
        "layoutKind": "timetableDayHeaders",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Mon",
          "Tue",
          "Wed",
          "Thu",
          "Fri"
        ],
        "orderField": "day",
        "parentField": "start",
        "seriesBy": "start",
        "sourceField": "day",
        "start": 8,
        "startField": "start",
        "targetField": "start",
        "value": "title",
        "xField": "start",
        "yField": "end"
      }
    },
    {
      "id": "pipeline_timetable_event_layout_transform",
      "type": "layout",
      "input": "source_gallery_timetable",
      "output": "source_timetable_events",
      "options": {
        "end": 18,
        "endField": "end",
        "errorMethod": "standardError",
        "field": "day",
        "fit": "contain",
        "geometryField": "day",
        "groupBy": [
          "day"
        ],
        "idField": "day",
        "includeMax": false,
        "labelField": "title",
        "layout": "pipeline_plot_layout",
        "layoutKind": "timetableEvents",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Mon",
          "Tue",
          "Wed",
          "Thu",
          "Fri"
        ],
        "orderField": "day",
        "parentField": "start",
        "seriesBy": "start",
        "sourceField": "day",
        "start": 8,
        "startField": "start",
        "targetField": "start",
        "value": "title",
        "xField": "start",
        "yField": "end"
      }
    }
  ],
  "axes": [],
  "grids": [],
  "legends": [],
  "fields": [
    "__rowLabel",
    "id",
    "day",
    "start",
    "end",
    "title",
    "kind",
    "height",
    "hour",
    "label",
    "width",
    "x",
    "y",
    "duration",
    "labelX",
    "labelY",
    "tooltip"
  ],
  "scales": [
    {
      "id": "pipeline_kindfill_color_scale",
      "type": "ordinal",
      "domain": {
        "source": "field",
        "data": "source_timetable_events",
        "field": "kind",
        "fields": [],
        "includeZero": false,
        "order": "input",
        "reverse": false,
        "symmetric": false
      }
    }
  ],
  "layers": [
    {
      "id": "create_chart_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_view_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_plot_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_time_grid_layer",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_day_labels_layer",
      "mark": "text",
      "role": "guide"
    },
    {
      "id": "pipeline_event_blocks_layer",
      "mark": "rect",
      "role": "data"
    },
    {
      "id": "pipeline_event_labels_layer",
      "mark": "text",
      "role": "guide"
    }
  ]
}

Resolved SceneGraph

{
  "scene": "gallery.timetable.scene",
  "scales": [
    {
      "id": "pipeline_kindfill_color_scale",
      "type": "ordinal",
      "domain": [
        "Team",
        "Focus",
        "External"
      ],
      "range": [
        "var(--colors-blue-9)",
        "var(--colors-green-9)",
        "var(--colors-amber-9)",
        "var(--colors-purple-9)",
        "var(--colors-red-9)"
      ]
    }
  ],
  "layers": [
    {
      "id": "create_chart_surface",
      "role": "context",
      "zIndex": -10,
      "glyphs": 1
    },
    {
      "id": "pipeline_view_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_plot_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_time_grid_layer",
      "role": "context",
      "zIndex": 0,
      "glyphs": 50
    },
    {
      "id": "pipeline_day_labels_layer",
      "role": "guide",
      "zIndex": 10,
      "glyphs": 5
    },
    {
      "id": "pipeline_event_blocks_layer",
      "role": "data",
      "zIndex": 20,
      "glyphs": 9
    },
    {
      "id": "pipeline_event_labels_layer",
      "role": "guide",
      "zIndex": 30,
      "glyphs": 9
    }
  ]
}

Glyph Data Tree

7 layers

Full parameter lineage for the active compiler surface.

create_chart_surface

1

pipeline_view_layout_surface

1

pipeline_plot_layout_surface

1

pipeline_time_grid_layer

50

pipeline_day_labels_layer

5

pipeline_event_blocks_layer

9

pipeline_event_labels_layer

9

Glyph Inspector

none

Select a glyph in the chart to inspect resolved params and lineage.