Algorithm-TimelinePacking
view release on metacpan or search on metacpan
examples/conference.html view on Meta::CPAN
</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"],
[615, 705, "Workshop: Space Lasers and Serverless Architecture", "Margarine Trailer Queen", "workshop"],
[660, 705, "Birds Aren't Real: An Introduction to Mocking", "Peter McAfee", "beginner"],
[660, 705, "The Deep State Design Pattern", "Q. Anon Watkins", "advanced"],
[705, 750, "Vaccine Microchips: A Hardware Deep Dive", "Bill Gatekeeping", "advanced"],
[705, 750, "Ivermectin-Driven Development", "Dr. Demon Sperm", "beginner"],
[705, 795, "Workshop: Chemtrails as Code Comments", "Alex Jonestein", "workshop"],
examples/conference.html view on Meta::CPAN
[810, 855, "The Great Reset: Migrating from COBOL", "Klaus Schwabernetes", "beginner"],
[810, 900, "Workshop: Crisis Actors in Your Test Suite", "Sandy Hookwinked", "workshop"],
[855, 900, "JFK Jr Returns: Zombie Process Management", "Dallas Grassy Knoll", "advanced"],
[855, 900, "Plandemic: Error Handling for Lab Leaks", "Dr. Judy Mikovits-Clone", "beginner"],
[900, 930, "Lightning Talks: Things I Learned on YouTube", "Various Patriots", "community"],
[930, 975, "Closing Keynote: Doing Your Own Research", "Tucker Carlsplaining", "keynote"],
[975, 1080, "Conference Social & Adrenochrome Tasting", "", "break"]
];
// =============================================================================
// OUTPUT: Pre-computed by Algorithm::TimelinePacking (returned from server)
// Times normalized to start at 0, arranged into non-overlapping lines
// =============================================================================
var EARLIEST = 540; // Original start time (9:00 AM)
var LATEST = 540; // Duration in minutes (until 6:00 PM)
var lines = [
[[0,30,"Registration & Colloidal Silver Reception","","break"],[30,75,"Opening Keynote: Why Facts Have a Liberal Bias","George Sorostein","keynote"],[75,120,"Flat Earth Arrays: Why Your Data Won't Round","Kyrie Irvington","beginner"],[120,165,"Bi...
[[75,120,"5G Mind Control: A Networking Deep Dive","Karen McWiFi","advanced"],[120,165,"The Deep State Design Pattern","Q. Anon Watkins","advanced"],[165,210,"Ivermectin-Driven Development","Dr. Demon Sperm","beginner"],[270,315,"Election Securit...
[[75,165,"Workshop: Space Lasers and Serverless Architecture","Margarine Trailer Queen","workshop"],[165,255,"Workshop: Chemtrails as Code Comments","Alex Jonestein","workshop"],[270,315,"The Great Reset: Migrating from COBOL","Klaus Schwabernete...
];
examples/conference.html view on Meta::CPAN
// Legend
var legend = d3.select("#legend");
Object.keys(COLORS).forEach(function(track) {
var item = legend.append("div").attr("class", "legend-item");
item.append("div").attr("class", "legend-color").style("background", COLORS[track]);
item.append("span").text(LABELS[track]);
});
// Stats
d3.select("#stats").text(INPUT.length + ' sessions arranged in ' + lines.length + ' rooms | Conference runs ' + fmt(EARLIEST) + ' - ' + fmt(EARLIEST + LATEST));
</script>
</body>
</html>
examples/hadoop-jobs.html view on Meta::CPAN
<div class="tooltip" id="tooltip">
<div class="tooltip-title" id="tooltip-title"></div>
<div id="tooltip-user"></div>
<div id="tooltip-maps"></div>
<div id="tooltip-reduces"></div>
<div id="tooltip-duration"></div>
</div>
<script>
// =============================================================================
// INPUT: Raw job data (sent to server)
// Each job: [start_epoch, end_epoch, job_id, user, map_tasks, reduce_tasks]
// =============================================================================
var INPUT = [[1700002680,1700002812,"job_1","alice",2121,41],[1700003083,1700003262,"job_2","dave",3464,418],[1700001666,1700001869,"job_3","dave",139,385],[1700002164,1700002466,"job_4","dave",2689,249],[1700001575,1700001709,"job_5","grace",311,430...
// =============================================================================
// OUTPUT: Pre-computed by Algorithm::TimelinePacking (returned from server)
// Times normalized to start at 0, arranged into non-overlapping lines
// =============================================================================
var EARLIEST = 1700000030; // Original start timestamp
var LATEST = 3753; // Duration in seconds
var lines = [
[[756,1039,"job_22","grace",4762,301],[1321,1388,"job_54","eve",845,203],[1545,1679,"job_5","grace",311,430],[1697,2001,"job_37","alice",569,497],[2180,2456,"job_17","eve",1272,308],[2650,2782,"job_1","alice",2121,41],[3329,3400,"job_10","dave",2...
[[58,124,"job_26","carol",436,368],[340,652,"job_18","alice",2725,308],[678,951,"job_30","grace",4530,24],[1263,1408,"job_74","alice",104,177],[1580,1782,"job_72","carol",2026,190],[1786,2009,"job_44","alice",4672,3],[2217,2391,"job_67","carol",3...
[[739,795,"job_9","dave",2633,433],[1056,1304,"job_7","alice",1379,145],[1432,1608,"job_14","dave",1167,420],[1660,1934,"job_65","grace",3824,91],[2097,2237,"job_25","dave",1575,228],[2444,2559,"job_13","bob",62,310],[2895,3093,"job_66","eve",427...
[[721,811,"job_24","carol",3581,26],[1112,1400,"job_71","frank",298,144],[1575,1824,"job_28","frank",4537,188],[1906,1956,"job_12","dave",4074,472],[2152,2271,"job_35","frank",433,126],[2500,2714,"job_32","bob",195,14],[3196,3512,"job_33","carol"...
examples/hadoop-jobs.html view on Meta::CPAN
})
.on("mousemove", function(event) {
tooltip.style.left = (event.pageX + 10) + 'px';
tooltip.style.top = (event.pageY - 10) + 'px';
})
.on("mouseout", function() {
tooltip.style.display = 'none';
});
});
document.getElementById('stats').textContent = INPUT.length + ' jobs arranged on ' + lines.length + ' lines | Timeline span: ' + LATEST + 's | Avg jobs per line: ' + (INPUT.length / lines.length).toFixed(1);
</script>
</body>
</html>
( run in 0.978 second using v1.01-cache-2.11-cpan-13bb782fe5a )