vis.js Timeline show/hide items (and dot and line)

2 min read 07-10-2024
vis.js Timeline show/hide items (and dot and line)


Mastering Visibility in vis.js Timelines: Show and Hide Items with Ease

The vis.js Timeline library offers a powerful and flexible way to visualize data along a timeline. But what if you want to dynamically control the visibility of specific items, including their associated dots and lines? This article explores how to achieve this functionality, providing a step-by-step guide and insights into the underlying mechanisms.

The Challenge: Controlling Item Visibility

Imagine you have a timeline representing project milestones, each with its own start and end date. You might want to:

  • Filter items: Show only milestones within a specific time frame.
  • Highlight specific events: Focus on certain events by making them stand out.
  • Group items: Collapse items with similar attributes, showing only their representative dot.

The original code might look something like this:

// Sample data
var items = [
  { id: 1, content: 'Milestone 1', start: '2023-10-26', end: '2023-11-02' },
  { id: 2, content: 'Milestone 2', start: '2023-11-09', end: '2023-11-16' },
  // ...
];

// Create the timeline
var timeline = new vis.Timeline(container, items, options);

Unveiling the Solution: The hidden Property

The key to controlling visibility in vis.js timelines lies within the hidden property of each item object. When set to true, an item, its associated dot, and connecting lines will be hidden from the timeline.

Here's how to implement the functionality:

  1. Modify Item Data: Update your item data to include the hidden property.
  2. Dynamically Update: Create a function to dynamically update the hidden property based on your filtering criteria.
  3. Refresh Timeline: After modifying the hidden property, call timeline.redraw() to refresh the timeline and reflect the changes.
// Example: Hide items before a specific date
function hideItemsBeforeDate(date) {
  items.forEach(item => {
    if (new Date(item.start) < new Date(date)) {
      item.hidden = true;
    } else {
      item.hidden = false;
    }
  });
  timeline.redraw();
}

// Call the function
hideItemsBeforeDate('2023-11-05');

Advanced Techniques for Visibility Management

  • Group Items: You can achieve more complex grouping by utilizing the group property within your item data.
  • Custom Filtering: For more advanced filtering scenarios, implement custom functions that assess item attributes and set the hidden property accordingly.
  • Dynamic Updates: Leverage event listeners or triggers to dynamically change visibility based on user interactions or external data updates.

Conclusion

By harnessing the hidden property within your vis.js timeline data, you gain precise control over the visibility of individual items, dots, and connecting lines. This empowers you to create interactive, dynamic, and informative timelines that effectively highlight and communicate specific data points within your visualization.

Resources:

With this knowledge, you can unleash the full potential of vis.js timelines, creating engaging and dynamic visualizations that effectively convey your data story.