Plain is headed towards 1.0! Subscribe for development updates →

 1<div id="observer-traces" class="h-full">
 2    <div class="px-6 py-4 text-center">
 3        <p>Loading spans...</p>
 4    </div>
 5</div>
 6<script>
 7(function() {
 8    var container = document.getElementById('observer-traces');
 9    var loaded = false;
10    var parent = container.parentNode;
11    var observerMode = "{{ observer.mode() }}";
12
13    // Auto-enable summary mode if no mode is set
14    if (!observerMode || observerMode === "None") {
15        var form = new FormData();
16        form.append('observe_action', 'summary');
17
18        fetch("{{ url('observer:traces') }}", {
19            method: 'POST',
20            body: form,
21            credentials: 'same-origin'
22        });
23    }
24
25    var observer = new IntersectionObserver(function(entries) {
26        entries.forEach(function(entry) {
27            if (entry.isIntersecting && !loaded) {
28                loaded = true;
29                var iframe = document.createElement('iframe');
30                iframe.src = "{{ url('observer:traces') }}";
31                iframe.frameBorder = "0";
32                iframe.style.width = "100%";
33                iframe.style.height = "100%";
34                container.innerHTML = '';
35                container.appendChild(iframe);
36                observer.disconnect();
37            }
38        });
39    }, { root: parent, threshold: 0 });
40    observer.observe(container);
41})();
42</script>