Algorithm-TimelinePacking

 view release on metacpan or  search on metacpan

examples/conference.html  view on Meta::CPAN

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>TinfoilConf 2024 - Timeline Demo</title>
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <style>
        * { box-sizing: border-box; }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            margin: 0; padding: 20px; background: #f8f9fa; color: #333;
        }
        h1 { margin-top: 0; color: #2c3e50; }
        .subtitle { color: #666; margin-bottom: 20px; }
        .container { max-width: 1200px; margin: 0 auto; }
        #chart {
            background: white; border-radius: 8px; padding: 20px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1); overflow-x: auto;
        }
        svg { overflow: visible; }
        .talk rect { cursor: pointer; transition: opacity 0.2s; }
        .talk:hover rect { opacity: 0.85; }
        .talk text { font-size: 11px; fill: white; pointer-events: none; }
        .room-label { font-size: 13px; font-weight: bold; fill: #555; }
        .time-label { font-size: 12px; fill: #666; }
        .legend { display: flex; gap: 20px; margin-top: 20px; flex-wrap: wrap; }
        .legend-item { display: flex; align-items: center; gap: 6px; font-size: 13px; }
        .legend-color { width: 16px; height: 16px; border-radius: 3px; }
        .tooltip {
            position: absolute; background: rgba(0,0,0,0.9); color: #fff;
            padding: 12px; border-radius: 6px; font-size: 13px;
            pointer-events: none; z-index: 1000; max-width: 280px; line-height: 1.4;
            display: none;
        }
        .tooltip-title { font-weight: bold; font-size: 14px; margin-bottom: 6px; }
        .tooltip-time { color: #aaa; margin-bottom: 4px; }
        .stats { margin-top: 15px; font-size: 13px; color: #666; }
    </style>
</head>
<body>
    <div class="container">
        <h1>TinfoilConf 2024</h1>
        <p class="subtitle">The premier conference for developers who do their own research. Wake up, sheeple! Hover over sessions for details.</p>
        <div id="chart"></div>
        <div class="legend" id="legend"></div>
        <div class="stats" id="stats"></div>
    </div>
    <div class="tooltip" id="tooltip">
        <div class="tooltip-title" id="tooltip-title"></div>
        <div class="tooltip-time" id="tooltip-time"></div>
        <div id="tooltip-speaker"></div>
        <div id="tooltip-track"></div>
    </div>

<script>
// =============================================================================
// INPUT: Raw conference data (sent to server)
// Each talk: [start_minutes, end_minutes, title, speaker, track]
// =============================================================================
var INPUT = [
    [540, 570, "Registration & Colloidal Silver Reception", "", "break"],
    [570, 615, "Opening Keynote: Why Facts Have a Liberal Bias", "George Sorostein", "keynote"],
    [615, 660, "Flat Earth Arrays: Why Your Data Won't Round", "Kyrie Irvington", "beginner"],
    [615, 660, "5G Mind Control: A Networking Deep Dive", "Karen McWiFi", "advanced"],



( run in 1.138 second using v1.01-cache-2.11-cpan-e1769b4cff6 )