scrollZoom = False does not work on mobile devices
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 18.3k
- Forks
- 2k
- Merge medio
- 2 d 12 h
- PR fusionados (30 d)
- 28
Descripción
When viewing a dash app, scrollZoom=False works as intended for desktop devices, but does not work for mobile devices. This has been confirmed as a bug.
Python code below:
import pandas as pd
import plotly.graph_objs as go
import plotly.express as px
import numpy as np
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import dash_bootstrap_components as dbc
rgba = 'rgba(248, 246, 243, 1)'
date = [1,1,2,2]
lat = [30, 31, 30, 31]
longs = [-90, -93, -90, -93]
loc = ['Point A', 'Point B', 'Point A', 'Point B']
count = [300, 450, 310, 600]
lwr = 0
upr = 600
df = pd.DataFrame(zip(date, lat,longs,loc,count), columns=['Date','lat','long','Location','count'])
# Initialize the app server, starting info, and rgba of background
app = dash.Dash(__name__,
external_stylesheets=[dbc.themes.BOOTSTRAP],
meta_tags = [{'name': 'viewport',
'content': 'width=device-width, initial-scale=1'
}]
)
# ------------------------------------------------------------------------------
# App layout (REMEMBER, BOOTSTRAP LAYOUT HAS 12 COLUMNS)
app.layout = dbc.Container([
# Row 1
dbc.Row([
# Row 1, Column 1 -- The Date Select Slider
dbc.Col([
dcc.Slider(id='select_date',
min=1,
max=2,
value=1,
marks={
1: 'Date 1',
2: 'Date 2'
},
included=False
)
],
width={'size': 12, 'offset': 0},
style={'height': '10vh', 'backgroundColor': rgba},
align='center'
),
], no_gutters=True, align='center', justify='center'),
# Row 2
dbc.Row([
# Row 2, Column 1 -- The Migration Map
dbc.Col([
dcc.Graph(id='migration_map',
figure={},
config={'displayModeBar': False
,'scrollZoom': False # This gets rid of the ability to zoom, BUT ONLY ON DESKTOP
},
responsive=True,
style={'height': '80vh', 'top': '50%', 'left': '50%', 'backgroundColor': rgba}
),
],
width={'size': 12, 'offset': 0},
style={'height': '90vh', 'backgroundColor': rgba}
),
], no_gutters=True, align='center', justify='center'),
], fluid=True, style={'backgroundColor': rgba})
# ------------------------------------------------------------------------------
# Connect the Plotly graphs with Dash Components
@app.callback(
Output(component_id='migration_map', component_property='figure'),
Input(component_id='select_date', component_property='value')
)
def update_graph(selected_date):
###############################################
##### Start forming the desired DataFrame #####
###############################################
dff = df.copy()
dff = dff[(dff['Date'] == selected_date)]
# Create the figure
fig = px.density_mapbox(dff
,lat='lat'
,lon='long'
,z='count'
,hover_name='Location'
,center=dict(lat=39, lon=-91)
,zoom=3.475
,mapbox_style='carto-positron'
,opacity = 0.4
,radius = 25
,range_color = [lwr, upr]
,color_continuous_scale=['rgb(0,0,0)',
'rgb(19,48,239)',
'rgb(115,249,253)',
'rgb(114,245,77)',
'rgb(254,251,84)',
'rgb(235,70,38)']
# ,color_continuous_scale='inferno'
)
return fig
# ------------------------------------------------------------------------------
if __name__ == '__main__':
app.run_server()
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza reproduciendo el comportamiento con el CodePen mínimo enlazado y sigue cómo la configuración de Graph gestiona scrollZoom en dispositivos móviles. Inspecciona la ruta de interacción móvil para la configuración scrollZoom y añade una prueba de regresión si se puede identificar la ubicación de prueba pertinente. Se considera terminado cuando scrollZoom=False impide hacer zoom en dispositivos móviles, como ya sucede en escritorio.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript
- Área
- data-visualization, frontend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100