Hey,
is it possible to get the Screen Size thorught a react component into dash?
Another thing, can i use a div created in the react script as an Input or State of my dash callbacks?
Thx
Hey,
is it possible to get the Screen Size thorught a react component into dash?
Another thing, can i use a div created in the react script as an Input or State of my dash callbacks?
Thx
You could try this rough sketch, though there might be an easier way!
layout = [
dcc.Div(id="size"), # Set style so that it is hidden!
dcc.Location(id="url")
]
Thanks for the quick answer, how can i get the screensize in the callback tho?
I havent found a method to do that yet.
In JS you can do window.innerWidth
and window.innerHeight
.
Sorry i shouldve been more specific, are you referring to the html.Script component to use js? The question im having is how do i use window.innerWidth to get the width informatin into a variable inside of dash.
I hope this helps
No not html.Script. A client side callback, there are examples on this page https://dash.plot.ly/performance.
A client side callback is in javascript, which is where the window information is available. So create a client side (JS) callback to set a hidden div. Then have a Python callback that listens for changes to the hidden div and voila you have access to that information!
Ok i think i understood how this should work. Ill try it out and get back to you later.
Can any problems occur with multiple users using the app? Ive not heard of clientstide callbacks yet and how they work.
Thank you man appreacie it
Worked like a charm, thx m8.
Have a good one!
Hello!
I would like to share my solution, since I just used this client-side trick. Thanks to @sjtrny !
app.layout = html.Div([
dcc.Location(id='url'),
html.Div(id='viewport-container')
])
app.clientside_callback(
"""
function(href) {
var w = window.innerWidth;
var h = window.innerHeight;
return {'height': h, 'width': w};
}
""",
Output('viewport-container', 'children'),
Input('url', 'href')
)
Hello,
I tried to implement the marked solution however I recieve this error in return:
Cannot read property âchildrenâ of undefined
(This error originated from the built-in JavaScript code that runs Dash apps. Click to see the full stack trace or open your browserâs console.)
TypeError: Cannot read property âchildrenâ of undefined
at handleClientside (http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:93282:54)
at http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:93526:21
at new Promise (<anonymous>)
at executeCallback (http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:93513:21)
at http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:99173:100
at _map (http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:75415:19)
at map (http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:78219:78)
at http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:74584:15
at f2 (http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:74400:14)
at _callee2$ (http://127.0.0.1:8080/_dash-component-suites/dash_renderer/dash_renderer.v1_9_1m1617900243.dev.js:99172:343)
Additionally, would I add additional children elements under html.Div(id=âviewport-containerâ)?
Basically, the code originally returns a JS object, you can cover it to JSON via:
return JSON.stringify({'height': h, 'width': w});
Dear Paichui, I tried your script in my app and it works if I use it inside visual studio in debug mode but when I use it in production on the server it does not return anything in the viewport-container div. What should I do ?