trying to get slider to work
This commit is contained in:
@@ -2806,13 +2806,16 @@ def interactive_streamchart(id=0,promember=0):
|
|||||||
|
|
||||||
return [script,div]
|
return [script,div]
|
||||||
|
|
||||||
def interactive_chart(id=0,promember=0,intervaldata = {}):
|
def interactive_chart(id=0,promember=0,intervaldata = {}, timepos = None):
|
||||||
# Add hover to this comma-separated string and see what changes
|
# Add hover to this comma-separated string and see what changes
|
||||||
if (promember==1):
|
if (promember==1):
|
||||||
TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair'
|
TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair'
|
||||||
else:
|
else:
|
||||||
TOOLS = 'pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair'
|
TOOLS = 'pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair'
|
||||||
|
|
||||||
|
if timepos:
|
||||||
|
TOOLS = ''
|
||||||
|
|
||||||
|
|
||||||
columns = ['time','pace','hr','fpace','ftime','spm']
|
columns = ['time','pace','hr','fpace','ftime','spm']
|
||||||
datadf = dataprep.getsmallrowdata_db(columns,ids=[id])
|
datadf = dataprep.getsmallrowdata_db(columns,ids=[id])
|
||||||
@@ -2931,6 +2934,32 @@ def interactive_chart(id=0,promember=0,intervaldata = {}):
|
|||||||
right='time_r',source=intervalsource,color='mediumvioletred',
|
right='time_r',source=intervalsource,color='mediumvioletred',
|
||||||
y_range_name='spmax',fill_alpha=0.2,line_alpha=0.2)
|
y_range_name='spmax',fill_alpha=0.2,line_alpha=0.2)
|
||||||
|
|
||||||
|
if timepos:
|
||||||
|
timepos = datetime.timedelta(seconds=timepos)
|
||||||
|
timeline = ColumnDataSource(
|
||||||
|
data=dict(
|
||||||
|
x = [timepos,timepos],
|
||||||
|
y = [10,100]
|
||||||
|
))
|
||||||
|
plot.line('x','y',source=timeline,y_range_name='spmax')
|
||||||
|
|
||||||
|
callback = CustomJS(args = dict(timeline=timeline),
|
||||||
|
code="""
|
||||||
|
var data = timeline.data
|
||||||
|
var x = data['x']
|
||||||
|
var y = data['y']
|
||||||
|
var sliderpos = cb_obj.value
|
||||||
|
data['x'] = [sliderpos,sliderpos]
|
||||||
|
timeline.change.emit();
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
timemax = int(datadf['time'].max()/1000.)
|
||||||
|
slider = Slider(start=0,end=100,step=1.0,callback=callback)
|
||||||
|
slider.js_on_change('value',callback)
|
||||||
|
layout = layoutcolumn([plot,slider])
|
||||||
|
else:
|
||||||
|
layout = plot
|
||||||
|
|
||||||
|
|
||||||
hover = plot.select(dict(type=HoverTool))
|
hover = plot.select(dict(type=HoverTool))
|
||||||
|
|
||||||
@@ -2945,9 +2974,11 @@ def interactive_chart(id=0,promember=0,intervaldata = {}):
|
|||||||
hover.mode = 'mouse'
|
hover.mode = 'mouse'
|
||||||
hover.names = ["spm","pace"]
|
hover.names = ["spm","pace"]
|
||||||
|
|
||||||
script, div = components(plot)
|
script, div = components(layout)
|
||||||
|
js_resources = INLINE.render_js()
|
||||||
|
css_resources = INLINE.render_css()
|
||||||
|
|
||||||
return [script,div]
|
return [script,div,js_resources,css_resources]
|
||||||
|
|
||||||
def interactive_multiflex(datadf,xparam,yparam,groupby,extratitle='',
|
def interactive_multiflex(datadf,xparam,yparam,groupby,extratitle='',
|
||||||
ploterrorbars=False,
|
ploterrorbars=False,
|
||||||
|
|||||||
@@ -15,46 +15,8 @@
|
|||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
|
|
||||||
<style>
|
{{ js_res|safe }}
|
||||||
.slidecontainer {
|
{{ css_res|safe }}
|
||||||
width: 100%; /* Width of the outside container */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The slider itself */
|
|
||||||
.slider {
|
|
||||||
-webkit-appearance: none; /* Override default CSS styles */
|
|
||||||
appearance: none;
|
|
||||||
width: 100%; /* Full-width */
|
|
||||||
height: 25px; /* Specified height */
|
|
||||||
background: #d3d3d3; /* Grey background */
|
|
||||||
outline: none; /* Remove outline */
|
|
||||||
opacity: 0.7; /* Set transparency (for mouse-over effects on hover) */
|
|
||||||
-webkit-transition: .2s; /* 0.2 seconds transition on hover */
|
|
||||||
transition: opacity .2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mouse-over effects */
|
|
||||||
.slider:hover {
|
|
||||||
opacity: 1; /* Fully shown on mouse-over */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The slider handle (use -webkit- (Chrome, Opera, Safari, Edge) and -moz- (Firefox) to override default look) */
|
|
||||||
.slider::-webkit-slider-thumb {
|
|
||||||
-webkit-appearance: none; /* Override default look */
|
|
||||||
appearance: none;
|
|
||||||
width: 25px; /* Set a specific slider handle width */
|
|
||||||
height: 25px; /* Slider handle height */
|
|
||||||
background: #4CAF50; /* Green background */
|
|
||||||
cursor: pointer; /* Cursor on hover */
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider::-moz-range-thumb {
|
|
||||||
width: 25px; /* Set a specific slider handle width */
|
|
||||||
height: 25px; /* Slider handle height */
|
|
||||||
background: #4CAF50; /* Green background */
|
|
||||||
cursor: pointer; /* Cursor on hover */
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
{% language 'en' %}
|
{% language 'en' %}
|
||||||
<h1>Video Analysis for {{ workout.name }}</h1>
|
<h1>Video Analysis for {{ workout.name }}</h1>
|
||||||
@@ -75,15 +37,14 @@
|
|||||||
{{ mapdiv | safe}}
|
{{ mapdiv | safe}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="slidecontainer">
|
<div id="myRange">
|
||||||
<input type="range" min="0" max="{{ maxtime }}" value="{{ analysis.delay }}" class="slider" id="myRange">
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="grid_2">
|
<li class="grid_2">
|
||||||
<div id="player"></div>
|
<div id="player"></div>
|
||||||
<script src="https://cdn.pydata.org/bokeh/release/bokeh-1.0.4.min.js"></script>
|
<script src="https://cdn.pydata.org/bokeh/release/bokeh-1.0.4.min.js"></script>
|
||||||
|
<script src="https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.0.4.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
{{ mapscript | safe }}
|
{{ mapscript | safe }}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -202,8 +202,10 @@ def workout_video_create_view(request,id=0):
|
|||||||
if hascoordinates:
|
if hascoordinates:
|
||||||
mapscript, mapdiv = leaflet_chart_video(data['latitude'],data['longitude'],
|
mapscript, mapdiv = leaflet_chart_video(data['latitude'],data['longitude'],
|
||||||
w.name)
|
w.name)
|
||||||
|
js_res = ''
|
||||||
|
css_res = ''
|
||||||
else:
|
else:
|
||||||
mapscript, mapdiv = interactive_chart(w.id,promember=1)
|
mapscript, mapdiv,js_res,css_res = interactive_chart(w.id,promember=1,timepos=78)
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
@@ -244,6 +246,8 @@ def workout_video_create_view(request,id=0):
|
|||||||
'maxtime':maxtime,
|
'maxtime':maxtime,
|
||||||
'metrics':metrics,
|
'metrics':metrics,
|
||||||
'locked': False,
|
'locked': False,
|
||||||
|
'js_res': js_res,
|
||||||
|
'css_res': css_res
|
||||||
})
|
})
|
||||||
|
|
||||||
# Show the EMpower Oarlock generated Stroke Profile
|
# Show the EMpower Oarlock generated Stroke Profile
|
||||||
|
|||||||
Reference in New Issue
Block a user