Spaces:
Running
Running
| # Meet The Tornado {.unnumbered} | |
| <div id="loader_Initial" class="cl_Loader"> | |
| </div> | |
| <div id="content_Load" style="display:none;"> | |
| <!-- Code to generate the main image, i.e. the tornada --> | |
| ```{python} | |
| # | echo: false | |
| #| code-fold: true | |
| #| label: tornado_main | |
| #| | |
| import numpy as np | |
| import plotly.io as pio | |
| pio.renderers.default = "plotly_mimetype+notebook_connected" | |
| import plotly.graph_objects as go # to combine figures | |
| # load data from the numpy npz file | |
| data = np.load('Data/6_Html_Data/0_Viz/plt_Dat_16.78.npz') | |
| # extraxt the data - load it | |
| x_Traj = data["x"] | |
| y_Traj = data["y"] | |
| z_Traj = data["z"] | |
| x_Cone = data["x_Cone"] | |
| y_Cone = data["y_Cone"] | |
| z_Cone = data["z_Cone"] | |
| u_Cone = data["u_Cone"] | |
| v_Cone = data["v_Cone"] | |
| w_Cone = data["w_Cone"] | |
| # The trajectory | |
| fig = go.Figure(data=[go.Scatter3d( | |
| x= x_Traj, | |
| y= y_Traj, | |
| z= z_Traj, | |
| name = "Trajectory", | |
| showlegend = False, | |
| )]) | |
| fig.update_traces(marker_size = 2, | |
| mode = "lines", | |
| marker_color ="green") | |
| # Cones | |
| fig_Cones = go.Figure(data=go.Cone( x = x_Cone , | |
| y = y_Cone , | |
| z = z_Cone , | |
| u = u_Cone , | |
| v = v_Cone , | |
| w = w_Cone , | |
| name = "Direction", | |
| showlegend = False, | |
| ) | |
| ) | |
| # hiding color-bar | |
| fig_Cones.update_traces(showscale=False) | |
| # combine cone and trajectory | |
| fig.add_traces(data = fig_Cones.data) | |
| # style the figure | |
| fig.update_layout( | |
| # plotlyexpress 3d axes: | |
| scene = dict( | |
| xaxis = dict( | |
| showbackground = False, | |
| showticklabels = False, | |
| title='', | |
| showgrid = False, | |
| zeroline = False,), | |
| yaxis = dict( | |
| showbackground = False, | |
| showticklabels = False, | |
| title='', | |
| showgrid = False, | |
| zeroline = False,), | |
| zaxis = dict( | |
| showbackground = False, | |
| showticklabels = False, | |
| title='', | |
| showgrid = False, | |
| zeroline = False, | |
| ), | |
| ), | |
| # template= 'plotly_dark' | |
| # template= 'plotly' | |
| paper_bgcolor='rgba(0,0,0,0)', | |
| plot_bgcolor='rgba(0,0,0,0)', | |
| modebar = dict(bgcolor='rgba(0, 0, 0, 0)'), | |
| margin=dict( | |
| l=0, | |
| r=0, | |
| b=0, | |
| t=0, | |
| pad=0 | |
| ), | |
| scene_camera_eye=dict(x=0, | |
| y=1, | |
| z=0), | |
| ) | |
| fig.show(div_id="here_Comes") | |
| ``` | |
| </div> | |
| <script> | |
| /* ========================================================================== */ | |
| /* ============================ show_Lotti_Riksha =========================== */ | |
| /* ========================================================================== */ | |
| function show_Lotti_Riksha(){ | |
| console.log("I am about to show th riksha"); | |
| const player = document.querySelector('dotlottie-player'); | |
| player.load('./Data/7_Animation/Riksha.lottie'); | |
| } | |
| /* ========================================================================== */ | |
| /* ======================== hideLoaderAndShowContent ======================== */ | |
| /* ========================================================================== */ | |
| function hideLoaderAndShowContent() { | |
| const loader = document.getElementById("loader_Initial"); | |
| const content = document.getElementById("content_Load"); | |
| loader.style.display = "none"; | |
| content.style.display = "block"; | |
| // Load and display the riksha animation | |
| show_Lotti_Riksha(); | |
| } | |
| // This code defines a waitForScriptExecution function that sets up a MutationObserver to watch for changes in the div element with the class plotly-graph-div. When a change is detected, it logs a message, disconnects the observer, and hides the loader while showing the content. | |
| function waitForScriptExecution() { | |
| // the plotly figure has the id tornado_main | |
| const tornadoMain = document.getElementById("tornado_main"); | |
| if (tornadoMain) { | |
| // get the first element that is found by this class name | |
| const targetDiv = tornadoMain.querySelector(".plotly-graph-div"); // Replace with the correct class name | |
| if (targetDiv) { | |
| const observer = new MutationObserver((mutationsList) => { | |
| for (const mutation of mutationsList) { | |
| if (mutation.type === "childList" && mutation.addedNodes.length > 0) { | |
| console.log("Script has been executed and the div content has changed."); | |
| observer.disconnect(); | |
| hideLoaderAndShowContent(); | |
| break; | |
| } | |
| } | |
| }); | |
| observer.observe(targetDiv, { childList: true }); | |
| } | |
| } | |
| } | |
| // wait until the whole page has loaded once | |
| window.addEventListener("load", function() { | |
| // show_Lotti_Riksha() | |
| // when the tornada plotly plot is shown let the riksha disappear | |
| waitForScriptExecution(); | |
| }); | |
| </script> | |