Skip to content

Streamer

The Streamer Component is a timeline-based UI element for displaying events in streams. It allows you to create interactive timelines with events organized in different streams.

  • Metro UI Core
  • DOM module
<div id="streamer" data-role="streamer"
data-source="data/streamer.json">
</div>
<div id="streamer" data-role="streamer"
data-source="data/streamer.json"
data-start-from="10:00"
data-slide-to-start="true"
data-stream-select="true">
</div>
ParameterTypeDefaultDescription
streamerDeferredNumber0Deferred initialization time in milliseconds
wheelBooleantrueEnable mouse wheel scrolling
wheelStepNumber20Scroll step for mouse wheel
durationNumber200Animation duration
defaultClosedIconString""Default icon for closed state
defaultOpenIconString""Default icon for open state
changeUriBooleantrueChange URI when selecting events
encodeLinkBooleantrueEncode links in URI
closedBooleanfalseInitial state (closed or open)
chromeNoticeBooleanfalseShow Chrome browser notice
startFromStringnullStart time point
slideToStartBooleantrueSlide to start position
startSlideSleepNumber1000Delay before sliding to start position
sourceStringnullData source URL
dataObjectnullData object
eventClickString”select”Event click behavior
selectGlobalBooleantrueGlobal event selection
streamSelectBooleanfalseEnable stream selection
excludeSelectElementStringnullSelector for elements to exclude from selection
excludeClickElementStringnullSelector for elements to exclude from click
excludeElementStringnullSelector for elements to exclude from both selection and click
excludeSelectClassString""Class for elements to exclude from selection
excludeClickClassString""Class for elements to exclude from click
excludeClassString""Class for elements to exclude from both selection and click
  • slideTo(time) - Slides the streamer to the specified time point.
  • enableStream(stream) - Enables a stream.
  • disableStream(stream) - Disables a stream.
  • toggleStream(stream) - Toggles a stream between enabled and disabled states.
  • getLink() - Gets the link with selected events.
  • getTimes() - Gets all time points in the timeline.
  • getEvents(eventType, includeGlobal) - Gets events of the specified type.
  • source(s) - Gets or sets the data source URL.
  • dataSet(s) - Gets or sets the data object.
  • getStreamerData() - Gets the current streamer data.
  • toggleEvent(event) - Toggles an event’s selected state.
  • selectEvent(event, state) - Selects or deselects an event.
  • build() - Rebuilds the entire streamer.
const streamer = Metro.getPlugin('#streamer', 'streamer');
streamer.slideTo('10:00');
const streamer = Metro.getPlugin('#streamer', 'streamer');
streamer.source('data/streamer.json');
const streamer = Metro.getPlugin('#streamer', 'streamer');
streamer.dataSet({
timeline: {
start: "09:00",
stop: "18:00",
step: 20
},
streams: [
// Stream data
]
});
EventDescription
onDataLoadTriggered when data loading starts
onDataLoadedTriggered when data is loaded
onDataLoadErrorTriggered when data loading fails
onDrawEventTriggered when an event is drawn
onDrawGlobalEventTriggered when a global event is drawn
onDrawStreamTriggered when a stream is drawn
onStreamClickTriggered when a stream is clicked
onStreamSelectTriggered when a stream is selected
onEventClickTriggered when an event is clicked
onEventSelectTriggered when an event is selected
onEventsScrollTriggered when events are scrolled
onStreamerCreateTriggered when the streamer is created
VariableDefault (Light)Dark ModeDescription
--streamer-item-width224px224pxWidth of timeline items
--streamer-background#ffffff#343637Background color of the streamer
--streamer-color#191919#dbdfe7Text color of the streamer
--streamer-stream-border-color#fefefe#2b2d30Border color of streams
--stream-event-group-background#f7f8fa#272729Background color of event groups
--stream-event-group-color#191919#191919Text color of event groups
--stream-event-background#fefefe#343637Background color of events
--stream-event-color#191919#dbdfe7Text color of events
--stream-event-border-color#fefefe#484b4cBorder color of events
--stream-event-border-color-hover#fefefe#616567Border color of events on hover
--stream-event-border-radius6px6pxBorder radius of events
--stream-event-shadow-color#b5b5b5#191919Shadow color of events
--streamer-scrollbar-size10px10pxSize of scrollbar
--streamer-scrollbar-color#000#000Color of scrollbar
--streamer-scrollbar-thumb-color#2e9fff#ff6211Color of scrollbar thumb
#my-streamer {
--streamer-item-width: 300px;
--streamer-background: #f0f0f0;
--stream-event-border-radius: 10px;
}
  • .streamer - Main container class
  • .streams - Container for streams
  • .stream - Individual stream
  • .events-area - Container for events area
  • .streamer-timeline - Timeline container
  • .streamer-events - Events container
  • .stream-events - Container for stream events
  • .stream-event - Individual event
  • .streamer-expand-sm - Expands streams on small screens
  • .streamer-expand-md - Expands streams on medium screens
  • .streamer-expand-lg - Expands streams on large screens
  • .streamer-expand-xl - Expands streams on extra large screens
  • .stream-event.selected - Selected event
  • .stream-event.disabled - Disabled event
  • .stream-event.size-1x to .stream-event.size-20x - Event size modifiers
  • .stream-event.shift-1x to .stream-event.shift-20x - Event position modifiers

The Streamer Component expects data in the following format:

{
"actions": [
{
"html": "<span class='mif-print'></span>",
"onclick": "alert('Printed!!!')",
"cls": "fg-darkCyan"
}
],
"timeline": {
"start": "09:00",
"stop": "18:00",
"step": 20
},
"streams": [
{
"title": "Stream 1",
"secondary": "Secondary text",
"icon": "<span class='mif-apps'></span>",
"cls": "bg-cyan fg-white",
"events": [
{
"time": "10:00",
"title": "Event 1",
"subtitle": "Subtitle",
"desc": "Description",
"icon": "images/icon.png",
"cls": "bg-green fg-white",
"size": 1,
"selected": false,
"closed": false,
"closedIcon": "<span class='mif-video-camera'></span>",
"openIcon": "<span class='mif-apps'></span>",
"target": "https://example.com",
"clsClosedIcon": "fg-red",
"clsOpenIcon": "fg-green",
"row": 1
}
]
}
],
"global": {
"before": [
{
"time": "08:40",
"size": 1,
"cls": "p-2",
"title": "Registration",
"subtitle": "08:40 - 09:00"
}
],
"after": [
{
"time": "12:00",
"size": 2,
"cls": "p-2",
"title": "Closing ceremony"
}
]
}
}