Skip to content

Styling

Example

Code

HTML
<div id="example-styling"></div>
TypeScript
import { Timescope } from 'timescope';

const samples: { time: number; value: { value: number; min: number; max: number } }[] = [
  { time: -3, value: { value: 22, min: 20, max: 24 } },
  { time: -2, value: { value: 25, min: 23, max: 28 } },
  { time: -1, value: { value: 23, min: 21, max: 26 } },
  { time: 0, value: { value: 27, min: 25, max: 30 } },
  { time: 1, value: { value: 26, min: 24, max: 29 } },
  { time: 2, value: { value: 28, min: 26, max: 31 } },
  { time: 3, value: { value: 24, min: 22, max: 27 } },
];

new Timescope({
  target: '#example-styling',
  style: {
    height: '280px',
    background: '#0f172a',
  },
  time: 0,
  zoom: 5,
  sources: {
    samples,
  },
  series: {
    temperature: {
      data: {
        source: 'samples',
        unit: '°C',
        value: {
          value: 'value.value',
          min: 'value.min',
          max: 'value.max',
        },
      },
      chart: {
        links: [
          {
            draw: 'area',
            using: ['min@time', 'max@time'],
            style: {
              fillColor: '#38bdf8',
              fillOpacity: 0.16,
            },
          },
          {
            draw: 'line',
            using: 'value',
            style: {
              lineWidth: 2,
              lineColor: '#60a5fa',
            },
          },
        ],
        marks: [
          {
            draw: 'circle',
            using: 'value',
            style: {
              size: 6,
              fillColor: '#38bdf8',
            },
          },
        ],
      },
      tooltip: true,
      track: 'main',
    },
  },
  tracks: {
    main: {
      timeAxis: {
        labels: {
          color: '#94a3b8',
          fontSize: '12px',
        },
        ticks: {
          color: '#334155',
        },
        timeFormat: ({ time }) =>
          new Date(time.mul(1000).number()).toLocaleTimeString(),
      },
    },
  },
});