diff --git a/cvkbrno/__init__.pyc b/cvkbrno/__init__.pyc deleted file mode 100644 index 4cc88b3b..00000000 Binary files a/cvkbrno/__init__.pyc and /dev/null differ diff --git a/cvkbrno/admin.pyc b/cvkbrno/admin.pyc deleted file mode 100644 index e674dee8..00000000 Binary files a/cvkbrno/admin.pyc and /dev/null differ diff --git a/cvkbrno/celery.pyc b/cvkbrno/celery.pyc deleted file mode 100644 index c05582e5..00000000 Binary files a/cvkbrno/celery.pyc and /dev/null differ diff --git a/cvkbrno/forms.pyc b/cvkbrno/forms.pyc deleted file mode 100644 index 8094a3c4..00000000 Binary files a/cvkbrno/forms.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0001_initial.pyc b/cvkbrno/migrations/0001_initial.pyc deleted file mode 100644 index 6e561ee5..00000000 Binary files a/cvkbrno/migrations/0001_initial.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0002_auto_20160515_0910.pyc b/cvkbrno/migrations/0002_auto_20160515_0910.pyc deleted file mode 100644 index ef5d4ad5..00000000 Binary files a/cvkbrno/migrations/0002_auto_20160515_0910.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0003_member_club.pyc b/cvkbrno/migrations/0003_member_club.pyc deleted file mode 100644 index 1fa508a9..00000000 Binary files a/cvkbrno/migrations/0003_member_club.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0004_auto_20160518_2001.pyc b/cvkbrno/migrations/0004_auto_20160518_2001.pyc deleted file mode 100644 index 96b8485f..00000000 Binary files a/cvkbrno/migrations/0004_auto_20160518_2001.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0005_auto_20160519_0750.pyc b/cvkbrno/migrations/0005_auto_20160519_0750.pyc deleted file mode 100644 index 2f133f77..00000000 Binary files a/cvkbrno/migrations/0005_auto_20160519_0750.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0006_auto_20160519_0805.pyc b/cvkbrno/migrations/0006_auto_20160519_0805.pyc deleted file mode 100644 index 6881744c..00000000 Binary files a/cvkbrno/migrations/0006_auto_20160519_0805.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0007_auto_20160519_1103.pyc b/cvkbrno/migrations/0007_auto_20160519_1103.pyc deleted file mode 100644 index bff387a2..00000000 Binary files a/cvkbrno/migrations/0007_auto_20160519_1103.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0008_auto_20160519_1204.pyc b/cvkbrno/migrations/0008_auto_20160519_1204.pyc deleted file mode 100644 index 7ae14603..00000000 Binary files a/cvkbrno/migrations/0008_auto_20160519_1204.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0009_auto_20160519_1207.pyc b/cvkbrno/migrations/0009_auto_20160519_1207.pyc deleted file mode 100644 index d8846bdc..00000000 Binary files a/cvkbrno/migrations/0009_auto_20160519_1207.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0010_auto_20160608_0811.pyc b/cvkbrno/migrations/0010_auto_20160608_0811.pyc deleted file mode 100644 index f3783923..00000000 Binary files a/cvkbrno/migrations/0010_auto_20160608_0811.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0011_auto_20160613_1640.pyc b/cvkbrno/migrations/0011_auto_20160613_1640.pyc deleted file mode 100644 index 06e73d5a..00000000 Binary files a/cvkbrno/migrations/0011_auto_20160613_1640.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0012_auto_20160719_2240.pyc b/cvkbrno/migrations/0012_auto_20160719_2240.pyc deleted file mode 100644 index f15e71ea..00000000 Binary files a/cvkbrno/migrations/0012_auto_20160719_2240.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0013_auto_20160719_2245.pyc b/cvkbrno/migrations/0013_auto_20160719_2245.pyc deleted file mode 100644 index 7c2504e6..00000000 Binary files a/cvkbrno/migrations/0013_auto_20160719_2245.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0014_auto_20160719_2313.pyc b/cvkbrno/migrations/0014_auto_20160719_2313.pyc deleted file mode 100644 index cebd63e5..00000000 Binary files a/cvkbrno/migrations/0014_auto_20160719_2313.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0015_auto_20160720_1741.pyc b/cvkbrno/migrations/0015_auto_20160720_1741.pyc deleted file mode 100644 index 1a073758..00000000 Binary files a/cvkbrno/migrations/0015_auto_20160720_1741.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0016_outing_race.pyc b/cvkbrno/migrations/0016_outing_race.pyc deleted file mode 100644 index 48485307..00000000 Binary files a/cvkbrno/migrations/0016_outing_race.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0017_auto_20160721_1621.pyc b/cvkbrno/migrations/0017_auto_20160721_1621.pyc deleted file mode 100644 index 85547a44..00000000 Binary files a/cvkbrno/migrations/0017_auto_20160721_1621.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0018_auto_20160722_1043.pyc b/cvkbrno/migrations/0018_auto_20160722_1043.pyc deleted file mode 100644 index f5fa6cc1..00000000 Binary files a/cvkbrno/migrations/0018_auto_20160722_1043.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0019_boatcategory_club.pyc b/cvkbrno/migrations/0019_boatcategory_club.pyc deleted file mode 100644 index 1b68d381..00000000 Binary files a/cvkbrno/migrations/0019_boatcategory_club.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0020_remove_member_club.pyc b/cvkbrno/migrations/0020_remove_member_club.pyc deleted file mode 100644 index 414fef5f..00000000 Binary files a/cvkbrno/migrations/0020_remove_member_club.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0021_member_club.pyc b/cvkbrno/migrations/0021_member_club.pyc deleted file mode 100644 index 3172a6bd..00000000 Binary files a/cvkbrno/migrations/0021_member_club.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0022_auto_20160723_1502.pyc b/cvkbrno/migrations/0022_auto_20160723_1502.pyc deleted file mode 100644 index 5c0e5252..00000000 Binary files a/cvkbrno/migrations/0022_auto_20160723_1502.pyc and /dev/null differ diff --git a/cvkbrno/migrations/0023_memberwork_comment.pyc b/cvkbrno/migrations/0023_memberwork_comment.pyc deleted file mode 100644 index bb61dae6..00000000 Binary files a/cvkbrno/migrations/0023_memberwork_comment.pyc and /dev/null differ diff --git a/cvkbrno/migrations/__init__.pyc b/cvkbrno/migrations/__init__.pyc deleted file mode 100644 index 1e3d53c1..00000000 Binary files a/cvkbrno/migrations/__init__.pyc and /dev/null differ diff --git a/cvkbrno/models.pyc b/cvkbrno/models.pyc deleted file mode 100644 index 13ac628e..00000000 Binary files a/cvkbrno/models.pyc and /dev/null differ diff --git a/cvkbrno/tasks.pyc b/cvkbrno/tasks.pyc deleted file mode 100644 index d5332688..00000000 Binary files a/cvkbrno/tasks.pyc and /dev/null differ diff --git a/cvkbrno/templatetags/__init__.pyc b/cvkbrno/templatetags/__init__.pyc deleted file mode 100644 index dab59a3b..00000000 Binary files a/cvkbrno/templatetags/__init__.pyc and /dev/null differ diff --git a/cvkbrno/templatetags/filter.pyc b/cvkbrno/templatetags/filter.pyc deleted file mode 100644 index 0dd10c1f..00000000 Binary files a/cvkbrno/templatetags/filter.pyc and /dev/null differ diff --git a/cvkbrno/tests.pyc b/cvkbrno/tests.pyc deleted file mode 100644 index 6bd68300..00000000 Binary files a/cvkbrno/tests.pyc and /dev/null differ diff --git a/cvkbrno/urls.pyc b/cvkbrno/urls.pyc deleted file mode 100644 index f5b35e28..00000000 Binary files a/cvkbrno/urls.pyc and /dev/null differ diff --git a/cvkbrno/views.pyc b/cvkbrno/views.pyc deleted file mode 100644 index be4e03a7..00000000 Binary files a/cvkbrno/views.pyc and /dev/null differ diff --git a/move_db.py~ b/move_db.py~ deleted file mode 100644 index 792c3f6e..00000000 --- a/move_db.py~ +++ /dev/null @@ -1,76 +0,0 @@ -# The following code is tested on Django 1.7 -import django -import sys -import logging - -from django.apps import apps -from django.db.migrations.recorder import MigrationRecorder -if django.get_version() > '1.7': - from django.core.serializers import sort_dependencies -else: - from django.core.management.commands.dumpdata import sort_dependencies - - -LOG_FORMAT = '%(asctime)s|%(levelname)s|%(message)s' -logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=LOG_FORMAT) -logger = logging.getLogger(__name__) - - -def copy(model): - table_name = model._meta.db_table - logger.info('Start import %s into new_db' % table_name) - - table_objects = model.objects.all() - for t in table_objects: - t.save(using='new_db') - - logger.info('Successfuly imported %s into new_db' % table_name) - -''' -Please note that the id for many to many objects might be diffrent from source table. -This is because id is not specified in the add method. -''' -def copy_m2m(model, m2m_field): - table_name = m2m_field.rel.through._meta.db_table - field_name = m2m_field.name - to_model = m2m_field.rel.to - pk_name = model._meta.pk.name - child_pk_name = to_model._meta.pk.name - - logger.info('Start import %s into new_db' % table_name) - - for o in model.objects.all(): - pk_value = getattr(o, pk_name) - new_o = model.objects.using('new_db').get(**{pk_name: pk_value}) - for child in getattr(o, field_name).all(): - child_pk_value = getattr(child, child_pk_name) - new_child = to_model.objects.using('new_db').get(**{child_pk_name: child_pk_value}) - getattr(new_o, field_name).add(new_child) - - logger.info('Successfuly imported %s into new_db' % table_name) - - -def run(): - logger.info('Start move data into new_db') - - app_configs = apps.get_app_configs() - app_list = [(a, None) for a in app_configs] - models = sort_dependencies(app_list) - models_with_m2m = [] - - for m in models: - copy(m) - if m._meta.many_to_many: - models_with_m2m.append(m) - - # Migration model needs to copy separately as it is not in the INSTALLED_APPS - copy(MigrationRecorder.Migration) - - # re-create object in ManyToManyField - for m in models_with_m2m: - for field in m._meta.many_to_many: - # data for field that has specific through model should have been copied in earlier steps - if field.rel.through._meta.auto_created: - copy_m2m(m, field) - - logger.info('Successfully moved data into new_db') diff --git a/requirements.txt~ b/requirements.txt~ deleted file mode 100644 index 1ee0d957..00000000 --- a/requirements.txt~ +++ /dev/null @@ -1,189 +0,0 @@ -alabaster==0.7.7 -amqp==1.4.9 -anaconda-client==1.4.0 -anaconda-navigator==1.1.0 -anyjson==0.3.3 -argcomplete==1.0.0 -astropy==1.1.2 -Babel==2.2.0 -backports-abc==0.4 -backports.ssl-match-hostname==3.4.0.2 -beautifulsoup4==4.4.1 -billiard==3.3.0.23 -bitarray==0.8.1 -blaze==0.9.1 -bokeh==0.11.1 -boto==2.39.0 -Bottleneck==1.0.0 -cairocffi==0.7.2 -cdecimal==2.3 -celery==3.1.23 -certifi==2016.2.28 -cffi==1.5.2 -chest==0.2.3 -click==6.6 -cloudpickle==0.1.1 -clyent==1.2.1 -colorama==0.3.7 -comtypes==1.1.2 -conda==4.0.5 -conda-build==1.20.0 -conda-env==2.4.5 -conda-manager==0.3.1 -configobj==5.0.6 -cryptography==1.3 -cycler==0.10.0 -Cython==0.23.4 -cytoolz==0.7.5 -dask==0.8.1 -datashape==0.5.1 -decorator==4.0.9 -dill==0.2.4 -Django==1.9.5 -django-braces==1.8.1 -django-celery==3.1.17 -django-cors-headers==1.1.0 -django-durationfield==0.5.2 -django-modelcluster==1.1 -django-oauth-toolkit==0.10.0 -django-rq==0.9.0 -django-taggit==0.18.1 -django-translation-manager==0.3.4 -django-treebeard==4.0 -djangorestframework==3.3.3 -docopt==0.6.2 -docutils==0.12 -enum34==1.1.2 -et-xmlfile==1.0.1 -fastcache==1.0.2 -filemagic==1.6 -Flask==0.10.1 -Flask-Cors==2.1.2 -Flask-Login==0.3.2 -Flask-OpenID==1.2.5 -Flask-Uploads==0.2.0 -flower==0.9.1 -funcsigs==0.4 -future==0.15.2 -futures==3.0.3 -gevent==1.1.0 -greenlet==0.4.9 -grin==1.2.1 -gunicorn==19.4.5 -h5py==2.5.0 -HeapDict==1.0.0 -html5lib==0.9999999 -httplib2==0.9.2 -idna==2.0 -ipaddress==1.0.14 -ipykernel==4.3.1 -ipython==4.1.2 -ipython-genutils==0.1.0 -ipywidgets==4.1.1 -itsdangerous==0.24 -jdcal==1.2 -jedi==0.9.0 -Jinja2==2.8 -jsonschema==2.4.0 -jupyter==1.0.0 -jupyter-client==4.2.2 -jupyter-console==4.1.1 -jupyter-core==4.1.0 -kombu==3.0.35 -libmagic==1.0 -llvmlite==0.9.0 -locket==0.2.0 -lxml==3.6.0 -MarkupSafe==0.23 -matplotlib==1.5.1 -mechanize==0.2.5 -menuinst==1.3.2 -mistune==0.7.2 -mpld3==0.2 -mpmath==0.19 -multipledispatch==0.4.8 -nbconvert==4.1.0 -nbformat==4.0.1 -networkx==1.11 -nltk==3.2 -nose==1.3.7 -notebook==4.1.0 -numba==0.24.0 -numexpr==2.5 -numpy==1.11.0 -oauth2==1.9.0.post1 -oauthlib==1.0.3 -odo==0.4.2 -openpyxl==2.3.2 -pandas==0.18.0 -partd==0.3.2 -path.py==0.0.0 -patsy==0.4.0 -pep8==1.7.0 -pickleshare==0.5 -Pillow==3.1.1 -ply==3.8 -polib==1.0.7 -psutil==4.1.0 -py==1.4.31 -pyasn1==0.1.9 -pycosat==0.6.1 -pycparser==2.14 -pycrypto==2.6.1 -pyflakes==1.1.0 -Pygments==2.1.1 -pymarc==3.1.1 -pyOpenSSL==0.15.1 -pyparsing==2.0.3 -pypi-data==0.1.4 -pypilist==0.1.0 -pyreadline==2.1 -pytest==2.8.5 -python-dateutil==2.5.1 -python-magic==0.4.11 -python-openid==2.2.5 -pytz==2016.4 -pywin32==220 -PyYAML==3.11 -pyzmq==15.2.0 -QtAwesome==0.3.2 -qtconsole==4.2.0 -QtPy==1.0 -redis==2.10.5 -requests==2.9.1 -requests-oauthlib==0.6.1 -rope==0.9.4 -rowingdata==0.80.4 -rowingphysics==0.2.4 -rq==0.6.0 -scikit-image==0.12.3 -scikit-learn==0.17.1 -scipy==0.17.0 -simplegeneric==0.8.1 -singledispatch==3.4.0.3 -six==1.10.0 -snowballstemmer==1.2.1 -sockjs-tornado==1.0.1 -South==1.0.2 -sphinx==1.3.5 -sphinx-pypi-upload==0.2.1 -sphinx-rtd-theme==0.1.9 -spyder==2.3.8 -SQLAlchemy==1.0.12 -statsmodels==0.6.1 -sympy==1.0 -tables==3.2.2 -toolz==0.7.4 -tornado==4.2 -tqdm==4.4.0 -traitlets==4.2.1 -unicodecsv==0.14.1 -Unidecode==0.4.19 -virtualenv==15.0.1 -wagtail==1.4.3 -Werkzeug==0.11.4 -Willow==0.3 -xlrd==0.9.4 -XlsxWriter==0.8.4 -xlwings==0.7.0 -xlwt==1.0.0 diff --git a/rowers/__init__.pyc b/rowers/__init__.pyc deleted file mode 100644 index 442ccdd8..00000000 Binary files a/rowers/__init__.pyc and /dev/null differ diff --git a/rowers/admin.pyc b/rowers/admin.pyc deleted file mode 100644 index a32b49f6..00000000 Binary files a/rowers/admin.pyc and /dev/null differ diff --git a/rowers/apps.pyc b/rowers/apps.pyc deleted file mode 100644 index 2a023dd7..00000000 Binary files a/rowers/apps.pyc and /dev/null differ diff --git a/rowers/c2stuff.pyc b/rowers/c2stuff.pyc deleted file mode 100644 index 156297f3..00000000 Binary files a/rowers/c2stuff.pyc and /dev/null differ diff --git a/rowers/celery.pyc b/rowers/celery.pyc deleted file mode 100644 index b805df7a..00000000 Binary files a/rowers/celery.pyc and /dev/null differ diff --git a/rowers/email.pyc b/rowers/email.pyc deleted file mode 100644 index 7439c47f..00000000 Binary files a/rowers/email.pyc and /dev/null differ diff --git a/rowers/forms.pyc b/rowers/forms.pyc deleted file mode 100644 index fd2c0560..00000000 Binary files a/rowers/forms.pyc and /dev/null differ diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index accc3d4b..2683ebfd 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -787,6 +787,12 @@ def interactive_cum_flex_chart(theworkouts,promember=0, thedata['driveenergy'] = thedata[' DriveLength (meters)']*thedata[' AverageDriveForce (lbs)']*4.44822 + # throw out zeros from dataframe + thedata = thedata[thedata[csvcolumns[yparam1]] > 0] + thedata = thedata[thedata[csvcolumns[xparam]] > 0] + if yparam2 != 'None': + thedata = thedata[thedata[csvcolumns[yparam2]] > 0] + spm = thedata.ix[:,csvcolumns['spm']] f = thedata['TimeStamp (sec)'].diff().mean() @@ -806,8 +812,6 @@ def interactive_cum_flex_chart(theworkouts,promember=0, thedata['drivespeed'] = drivelength/thedata[' DriveTime (ms)']*1.0e3 - # get user - # u = User.objects.get(id=row.user.id) x1 = thedata.ix[:,csvcolumns[xparam]] @@ -819,9 +823,31 @@ def interactive_cum_flex_chart(theworkouts,promember=0, if xparam=='time': + xaxmax = x1.max() + xaxmin = x1.min() xaxmax = get_datetimes([x1.max()])[0] xaxmin = get_datetimes([x1.min()])[0] x1 = get_datetimes(x1,tzinfo=1) + elif xparam=='distance': + xaxmax = x1.max() + xaxmin = x1.min() + else: + xaxmax = yaxmaxima[xparam] + xaxmin = yaxminima[xparam] + + # average values + if xparam != 'time': + x1mean = x1.mean() + else: + x1mean = 0 + + y1mean = y1.mean() + y2mean = y2.mean() + + if xparam != 'time': + xvals = xaxmin+np.arange(100)*(xaxmax-xaxmin)/100. + else: + xvals = np.arange(100) x_axis_type = 'linear' y_axis_type = 'linear' @@ -836,7 +862,6 @@ def interactive_cum_flex_chart(theworkouts,promember=0, time = thedata.ix[:,csvcolumns['time']] - time = time-time[0] hr = thedata.ix[:,csvcolumns['hr']] if windowsize > 3: @@ -849,6 +874,7 @@ def interactive_cum_flex_chart(theworkouts,promember=0, power = thedata.ix[:,csvcolumns['power']] + # Add hover to this comma-separated string and see what changes if (promember==1): TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,resize,crosshair' @@ -856,11 +882,21 @@ def interactive_cum_flex_chart(theworkouts,promember=0, TOOLS = 'pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair' plot = Figure(x_axis_type=x_axis_type,y_axis_type=y_axis_type, - plot_width=900, tools=TOOLS, toolbar_location="above", toolbar_sticky=False) + x1means = Span(location=x1mean,dimension='height',line_color='green', + line_dash=[6,6], line_width=2) + + y1means = Span(location=y1mean,dimension='width',line_color='blue', + line_dash=[6,6],line_width=2) + y2means = y1means + + if (xparam != 'time') and (xparam != 'distance'): + plot.add_layout(x1means) + + plot.add_layout(y1means) source = ColumnDataSource( data = dict( @@ -877,9 +913,24 @@ def interactive_cum_flex_chart(theworkouts,promember=0, ) ) + source2 = ColumnDataSource( + data = dict( + x1=x1, + y1=y1, + y2=y2, + time=niceformat(get_datetimes(time,tzinfo=1)), + pace=nicepaceformat(get_datetimes(pace)), + hr = hr, + spm = spm, + spmc=np.rint(10*spm)/10., + distance=distance, + power=power, + ) + ) + # plot.circle('x1','y1',source=source,legend=yparam1,size=3) - plot.circle('x1','y1',source=source,fill_alpha=0.3,line_color=None, + plot.circle('x1','y1',source=source2,fill_alpha=0.3,line_color=None, legend=yparamname1, ) @@ -921,11 +972,17 @@ def interactive_cum_flex_chart(theworkouts,promember=0, plot.circle('x1','y2',color="red",y_range_name="yax2", legend=yparamname2, - source=source,fill_alpha=0.3,line_color=None) + source=source2,fill_alpha=0.3,line_color=None) plot.add_layout(LinearAxis(y_range_name="yax2", axis_label=axlabels[yparam2]),'right') + y2means = Span(location=y2mean,dimension='width',line_color='red', + line_dash=[6,6],line_width=2,y_range_name="yax2") + + + plot.add_layout(y2means) + hover = plot.select(dict(type=HoverTool)) @@ -939,11 +996,119 @@ def interactive_cum_flex_chart(theworkouts,promember=0, hover.mode = 'mouse' + callback = CustomJS(args = dict(source=source,source2=source2, + x1means=x1means, + y1means=y1means, + y2means=y2means), code=""" + var data = source.data + var data2 = source2.data + var x1 = data['x1'] + var y1 = data['y1'] + var y2 = data['y2'] + var spm1 = data['spm'] + var time1 = data['time'] + var pace1 = data['pace'] + var hr1 = data['hr'] + var spmc1 = data['spmc'] + var distance1 = data['distance'] + var power1 = data['power'] + + var minspm = minspm.value + var maxspm = maxspm.value + var mindist = mindist.value + var maxdist = maxdist.value + var xm = 0 + var ym1 = 0 + var ym2 = 0 + + data2['x1'] = [] + data2['y1'] = [] + data2['y2'] = [] + data2['spm'] = [] + data2['time'] = [] + data2['pace'] = [] + data2['hr'] = [] + data2['spmc'] = [] + data2['distance'] = [] + data2['power'] = [] + data2['x1mean'] = [] + data2['y1mean'] = [] + data2['y2mean'] = [] + data2['xvals'] = [] + data2['y1vals'] = [] + data2['y2vals'] = [] + + for (i=0; i=minspm && spm1[i]<=maxspm) { + if (distance1[i]>=mindist && distance1[i]<=maxdist) { + data2['x1'].push(x1[i]) + data2['y1'].push(y1[i]) + data2['y2'].push(y2[i]) + data2['spm'].push(spm1[i]) + data2['time'].push(time1[i]) + data2['pace'].push(pace1[i]) + data2['hr'].push(hr1[i]) + data2['spmc'].push(spmc1[i]) + data2['distance'].push(distance1[i]) + data2['power'].push(power1[i]) + + xm += x1[i] + ym1 += y1[i] + ym2 += y2[i] + + } + } + } + + xm /= data2['x1'].length + ym1 /= data2['x1'].length + ym2 /= data2['x1'].length + + data2['x1mean'] = [xm,xm] + data2['y1mean'] = [ym1,ym1] + data2['y2mean'] = [ym2,ym2] + x1means.location = xm + y1means.location = ym1 + y2means.location = ym2 + + source2.trigger('change'); + """) + + slider_spm_min = Slider(start=15.0, end=55,value=15.0, step=.1, + title="Min SPM",callback=callback) + callback.args["minspm"] = slider_spm_min + + + slider_spm_max = Slider(start=15.0, end=55,value=55.0, step=.1, + title="Max SPM",callback=callback) + callback.args["maxspm"] = slider_spm_max + + distmax = 100+100*int(distance.max()/100.) + + slider_dist_min = Slider(start=0,end=distmax,value=0,step=1, + title="Min Distance",callback=callback) + callback.args["mindist"] = slider_dist_min + + slider_dist_max = Slider(start=0,end=distmax,value=distmax, + step=1, + title="Max Distance",callback=callback) + callback.args["maxdist"] = slider_dist_max + + layout = layoutrow([layoutcolumn([slider_spm_min, + slider_spm_max, + slider_dist_min, + slider_dist_max, + ], + ), + plot]) + + script, div = components(layout) + js_resources = INLINE.render_js() + css_resources = INLINE.render_css() - script, div = components(plot) - return [script,div] + return [script,div,js_resources,css_resources] diff --git a/rowers/interactiveplots.pyc b/rowers/interactiveplots.pyc deleted file mode 100644 index 1e1fc1d3..00000000 Binary files a/rowers/interactiveplots.pyc and /dev/null differ diff --git a/rowers/interactiveplots.py~ b/rowers/interactiveplots.py~ index 1a7861d7..accc3d4b 100644 --- a/rowers/interactiveplots.py~ +++ b/rowers/interactiveplots.py~ @@ -21,6 +21,7 @@ from bokeh.models import ( GMapPlot, GMapOptions, ColumnDataSource, Circle, DataRange1d, PanTool, WheelZoomTool, BoxSelectTool, SaveTool, ResizeTool, ResetTool, TapTool,CrosshairTool,BoxZoomTool, + Span, ) #from bokeh.models.widgets import Slider, Select, TextInput from bokeh.core.properties import value @@ -1394,29 +1395,26 @@ def interactive_flex_chart2(id=0,promember=0, xaxmax = get_datetimes([xaxmax],tzinfo=1)[0] xaxmin = get_datetimes([xaxmin],tzinfo=1)[0] x1 = get_datetimes(x1,tzinfo=1) - - if xparam=='distance': + elif xparam=='distance': xaxmax = x1.max() xaxmin = x1.min() + else: + xaxmax = yaxmaxima[xparam] + xaxmin = yaxminima[xparam] # average values - y1mean = y1.mean()+0.0*np.arange(100) - y2mean = y2.mean()+0.0*np.arange(100) if xparam != 'time': - x1mean = x1.mean()+0.0*np.arange(100) + x1mean = x1.mean() else: - x1mean = 0+0.0*np.arange(100) + x1mean = 0 + + y1mean = y1.mean() + y2mean = y2.mean() - - - if xparam != 'time' and xparam != 'distance' and yparam1 != 'pace': - xvals = yaxminima[xparam]+np.arange(100)*(yaxmaxima[xparam]-yaxminima[xparam])/100. - y1vals = yaxminima[yparam1]+np.arange(100)*(yaxmaxima[yparam1]-yaxminima[yparam1])/100. + if xparam != 'time': + xvals = xaxmin+np.arange(100)*(xaxmax-xaxmin)/100. else: xvals = np.arange(100) - y1vals = np.arange(100) - - # constant power plot if yparam1 == 'driveenergy': @@ -1466,11 +1464,10 @@ def interactive_flex_chart2(id=0,promember=0, spmc=np.rint(10*spm)/10., distance=distance, power=power, - xvals=xvals, - y1mean=y1mean, - y2mean=y2mean, - x1mean=x1mean, - y1vals=y1vals, +# xvals=xvals, + y1mean=[y1mean,y1mean], + y2mean=[y2mean,y2mean], + x1mean=[x1mean,x1mean], ) ) @@ -1487,11 +1484,10 @@ def interactive_flex_chart2(id=0,promember=0, spmc=np.rint(10*spm)/10., distance=distance, power=power, - xvals=xvals, - y1mean=y1mean, - y2mean=y2mean, - x1mean=x1mean, - y1vals=y1vals, +# xvals=xvals, + y1mean=[y1mean,y1mean], + y2mean=[y2mean,y2mean], + x1mean=[x1mean,x1mean], ) ) @@ -1510,9 +1506,109 @@ def interactive_flex_chart2(id=0,promember=0, toolbar_sticky=False, # plot_width=900, ) + x1means = Span(location=x1mean,dimension='height',line_color='green', + line_dash=[6,6], line_width=2) + + y1means = Span(location=y1mean,dimension='width',line_color='blue', + line_dash=[6,6],line_width=2) + y2means = y1means + + if (xparam != 'time') and (xparam != 'distance'): + plot.add_layout(x1means) + + plot.add_layout(y1means) - callback = CustomJS(args = dict(source=source,source2=source2), code=""" + + # average values + if yparam1 == 'driveenergy': + if xparam == 'spm': + plot.line(xvals,yconstantpower,color="green",legend="Constant Power") + + if plottype=='line': + plot.line('x1','y1',source=source2,legend=axlabels[yparam1]) + elif plottype=='scatter': +# plot.circle('x1','y1',source=source2,legend=yparam1,size=3) + plot.scatter('x1','y1',source=source2,legend=axlabels[yparam1],fill_alpha=0.4, + line_color=None) + + plot.title.text = row.name + plot.title.text_font_size=value("1.0em") + plot.xaxis.axis_label = axlabels[xparam] + plot.yaxis.axis_label = axlabels[yparam1] + + + + yrange1 = Range1d(start=yaxminima[yparam1],end=yaxmaxima[yparam1]) + plot.y_range = yrange1 + + if (xparam != 'time') and (xparam != 'distance'): + xrange1 = Range1d(start=yaxminima[xparam],end=yaxmaxima[xparam]) + plot.x_range = xrange1 + + if xparam == 'time': + xrange1 = Range1d(start=xaxmin,end=xaxmax) + plot.x_range = xrange1 + plot.xaxis[0].formatter = DatetimeTickFormatter( + hours = ["%H"], + minutes = ["%M"], + seconds = ["%S"], + days = ["0"], + months = [""], + years = [""] + ) + + + if yparam1 == 'pace': + plot.y_range = Range1d(ymin,ymax) + plot.yaxis[0].formatter = DatetimeTickFormatter( + seconds = ["%S"], + minutes = ["%M"] + ) + + if yparam2 != 'None': + yrange2 = Range1d(start=yaxminima[yparam2],end=yaxmaxima[yparam2]) + plot.extra_y_ranges = {"yax2": yrange2} + + if plottype=='line': + plot.line('x1','y2',color="red",y_range_name="yax2", + legend=axlabels[yparam2], + source=source2) + + elif plottype=='scatter': +# plot.circle(x1,y2,color="red",y_range_name="yax2",legend=yparam2, +# source=source,size=3) + plot.scatter('x1','y2',source=source2,legend=axlabels[yparam2] + ,fill_alpha=0.4, + line_color=None,color="red",y_range_name="yax2") + + plot.add_layout(LinearAxis(y_range_name="yax2", + axis_label=axlabels[yparam2]),'right') + + y2means = Span(location=y2mean,dimension='width',line_color='red', + line_dash=[6,6],line_width=2,y_range_name="yax2") + + + plot.add_layout(y2means) + + hover = plot.select(dict(type=HoverTool)) + + + hover.tooltips = OrderedDict([ + ('Time','@time'), + ('Distance','@distance'), + ('Pace','@pace'), + ('HR','@hr'), + ('SPM','@spmc{1.1}'), + ('Power','@power{int}'), + ]) + + hover.mode = 'mouse' + + callback = CustomJS(args = dict(source=source,source2=source2, + x1means=x1means, + y1means=y1means, + y2means=y2means), code=""" var data = source.data var data2 = source2.data var x1 = data['x1'] @@ -1568,6 +1664,7 @@ def interactive_flex_chart2(id=0,promember=0, xm += x1[i] ym1 += y1[i] ym2 += y2[i] + } } } @@ -1579,10 +1676,9 @@ def interactive_flex_chart2(id=0,promember=0, data2['x1mean'] = [xm,xm] data2['y1mean'] = [ym1,ym1] data2['y2mean'] = [ym2,ym2] - - data2['xvals'] = [0,3e4] - data2['y1vals'] = [0,3e4] - data2['y2vals'] = [0,3e4] + x1means.location = xm + y1means.location = ym1 + y2means.location = ym2 source2.trigger('change'); """) @@ -1606,89 +1702,6 @@ def interactive_flex_chart2(id=0,promember=0, step=1, title="Max Distance",callback=callback) callback.args["maxdist"] = slider_dist_max - - # average values - plot.line('xvals','y1mean',color="black",source=source2) - plot.line('x1mean','y1vals',color="black",source=source2) - if yparam1 == 'driveenergy': - if xparam == 'spm': - plot.line(xvals,yconstantpower,color="green",legend="Constant Power") - - if plottype=='line': - plot.line('x1','y1',source=source2,legend=axlabels[yparam1]) - elif plottype=='scatter': -# plot.circle('x1','y1',source=source2,legend=yparam1,size=3) - plot.scatter('x1','y1',source=source2,legend=axlabels[yparam1],fill_alpha=0.4, - line_color=None) - - plot.title.text = row.name - plot.title.text_font_size=value("1.0em") - plot.xaxis.axis_label = axlabels[xparam] - plot.yaxis.axis_label = axlabels[yparam1] - - - yrange1 = Range1d(start=yaxminima[yparam1],end=yaxmaxima[yparam1]) - plot.y_range = yrange1 - - if (xparam != 'time') and (xparam != 'distance'): - xrange1 = Range1d(start=yaxminima[xparam],end=yaxmaxima[xparam]) - plot.x_range = xrange1 - - if xparam == 'time': - xrange1 = Range1d(start=xaxmin,end=xaxmax) - plot.x_range = xrange1 - plot.xaxis[0].formatter = DatetimeTickFormatter( - hours = ["%H"], - minutes = ["%M"], - seconds = ["%S"], - days = ["0"], - months = [""], - years = [""] - ) - - - if yparam1 == 'pace': - plot.y_range = Range1d(ymin,ymax) - plot.yaxis[0].formatter = DatetimeTickFormatter( - seconds = ["%S"], - minutes = ["%M"] - ) - - if yparam2 != 'None': - yrange2 = Range1d(start=yaxminima[yparam2],end=yaxmaxima[yparam2]) - plot.extra_y_ranges = {"yax2": yrange2} - plot.line('xvals','y2mean',color="black",y_range_name="yax2", - source=source2) - - if plottype=='line': - plot.line('x1','y2',color="red",y_range_name="yax2", - legend=axlabels[yparam2], - source=source2) - - elif plottype=='scatter': -# plot.circle(x1,y2,color="red",y_range_name="yax2",legend=yparam2, -# source=source,size=3) - plot.scatter('x1','y2',source=source2,legend=axlabels[yparam2] - ,fill_alpha=0.4, - line_color=None,color="red",y_range_name="yax2") - - plot.add_layout(LinearAxis(y_range_name="yax2", - axis_label=axlabels[yparam2]),'right') - - - hover = plot.select(dict(type=HoverTool)) - - - hover.tooltips = OrderedDict([ - ('Time','@time'), - ('Distance','@distance'), - ('Pace','@pace'), - ('HR','@hr'), - ('SPM','@spmc{1.1}'), - ('Power','@power{int}'), - ]) - - hover.mode = 'mouse' layout = layoutrow([layoutcolumn([slider_spm_min, slider_spm_max, diff --git a/rowers/mailprocessing.pyc b/rowers/mailprocessing.pyc deleted file mode 100644 index 628c8af6..00000000 Binary files a/rowers/mailprocessing.pyc and /dev/null differ diff --git a/rowers/management/__init__.pyc b/rowers/management/__init__.pyc deleted file mode 100644 index 51120049..00000000 Binary files a/rowers/management/__init__.pyc and /dev/null differ diff --git a/rowers/management/commands/__init__.pyc b/rowers/management/commands/__init__.pyc deleted file mode 100644 index 6e12a359..00000000 Binary files a/rowers/management/commands/__init__.pyc and /dev/null differ diff --git a/rowers/management/commands/processemail.pyc b/rowers/management/commands/processemail.pyc deleted file mode 100644 index 9e91284a..00000000 Binary files a/rowers/management/commands/processemail.pyc and /dev/null differ diff --git a/rowers/migrations/0001_initial.pyc b/rowers/migrations/0001_initial.pyc deleted file mode 100644 index 46e5d13b..00000000 Binary files a/rowers/migrations/0001_initial.pyc and /dev/null differ diff --git a/rowers/migrations/0002_auto_20160426_1043.pyc b/rowers/migrations/0002_auto_20160426_1043.pyc deleted file mode 100644 index 10dd9065..00000000 Binary files a/rowers/migrations/0002_auto_20160426_1043.pyc and /dev/null differ diff --git a/rowers/migrations/0003_auto_20160426_1048.pyc b/rowers/migrations/0003_auto_20160426_1048.pyc deleted file mode 100644 index c0abc97e..00000000 Binary files a/rowers/migrations/0003_auto_20160426_1048.pyc and /dev/null differ diff --git a/rowers/migrations/0004_auto_20160426_1441.pyc b/rowers/migrations/0004_auto_20160426_1441.pyc deleted file mode 100644 index 8de2554e..00000000 Binary files a/rowers/migrations/0004_auto_20160426_1441.pyc and /dev/null differ diff --git a/rowers/migrations/0005_auto_20160426_1446.pyc b/rowers/migrations/0005_auto_20160426_1446.pyc deleted file mode 100644 index 8394ecf7..00000000 Binary files a/rowers/migrations/0005_auto_20160426_1446.pyc and /dev/null differ diff --git a/rowers/migrations/0006_auto_20160427_1350.pyc b/rowers/migrations/0006_auto_20160427_1350.pyc deleted file mode 100644 index fa3e7c4d..00000000 Binary files a/rowers/migrations/0006_auto_20160427_1350.pyc and /dev/null differ diff --git a/rowers/migrations/0007_auto_20160428_1153.pyc b/rowers/migrations/0007_auto_20160428_1153.pyc deleted file mode 100644 index 3886d3b2..00000000 Binary files a/rowers/migrations/0007_auto_20160428_1153.pyc and /dev/null differ diff --git a/rowers/migrations/0008_auto_20160428_1154.pyc b/rowers/migrations/0008_auto_20160428_1154.pyc deleted file mode 100644 index 1dd08499..00000000 Binary files a/rowers/migrations/0008_auto_20160428_1154.pyc and /dev/null differ diff --git a/rowers/migrations/0009_auto_20160428_1955.pyc b/rowers/migrations/0009_auto_20160428_1955.pyc deleted file mode 100644 index e01b2e5e..00000000 Binary files a/rowers/migrations/0009_auto_20160428_1955.pyc and /dev/null differ diff --git a/rowers/migrations/0010_workout_distance.pyc b/rowers/migrations/0010_workout_distance.pyc deleted file mode 100644 index 8404dc7e..00000000 Binary files a/rowers/migrations/0010_workout_distance.pyc and /dev/null differ diff --git a/rowers/migrations/0011_auto_20160428_2009.pyc b/rowers/migrations/0011_auto_20160428_2009.pyc deleted file mode 100644 index 15a51bae..00000000 Binary files a/rowers/migrations/0011_auto_20160428_2009.pyc and /dev/null differ diff --git a/rowers/migrations/0012_auto_20160428_2010.pyc b/rowers/migrations/0012_auto_20160428_2010.pyc deleted file mode 100644 index ad6f21c3..00000000 Binary files a/rowers/migrations/0012_auto_20160428_2010.pyc and /dev/null differ diff --git a/rowers/migrations/0013_auto_20160428_2021.pyc b/rowers/migrations/0013_auto_20160428_2021.pyc deleted file mode 100644 index 88f611c7..00000000 Binary files a/rowers/migrations/0013_auto_20160428_2021.pyc and /dev/null differ diff --git a/rowers/migrations/0014_auto_20160428_2251.pyc b/rowers/migrations/0014_auto_20160428_2251.pyc deleted file mode 100644 index b9cd5787..00000000 Binary files a/rowers/migrations/0014_auto_20160428_2251.pyc and /dev/null differ diff --git a/rowers/migrations/0015_auto_20160429_2038.pyc b/rowers/migrations/0015_auto_20160429_2038.pyc deleted file mode 100644 index 2971c08d..00000000 Binary files a/rowers/migrations/0015_auto_20160429_2038.pyc and /dev/null differ diff --git a/rowers/migrations/0016_auto_20160501_1119.pyc b/rowers/migrations/0016_auto_20160501_1119.pyc deleted file mode 100644 index e6c556e3..00000000 Binary files a/rowers/migrations/0016_auto_20160501_1119.pyc and /dev/null differ diff --git a/rowers/migrations/0017_auto_20160501_1126.pyc b/rowers/migrations/0017_auto_20160501_1126.pyc deleted file mode 100644 index e69b67fb..00000000 Binary files a/rowers/migrations/0017_auto_20160501_1126.pyc and /dev/null differ diff --git a/rowers/migrations/0018_auto_20160501_1944.pyc b/rowers/migrations/0018_auto_20160501_1944.pyc deleted file mode 100644 index ca8002a6..00000000 Binary files a/rowers/migrations/0018_auto_20160501_1944.pyc and /dev/null differ diff --git a/rowers/migrations/0019_auto_20160522_1659.pyc b/rowers/migrations/0019_auto_20160522_1659.pyc deleted file mode 100644 index 90afe19a..00000000 Binary files a/rowers/migrations/0019_auto_20160522_1659.pyc and /dev/null differ diff --git a/rowers/migrations/0020_auto_20160522_1726.pyc b/rowers/migrations/0020_auto_20160522_1726.pyc deleted file mode 100644 index 0b706ffa..00000000 Binary files a/rowers/migrations/0020_auto_20160522_1726.pyc and /dev/null differ diff --git a/rowers/migrations/0021_rower_rowerplan.pyc b/rowers/migrations/0021_rower_rowerplan.pyc deleted file mode 100644 index 1d656773..00000000 Binary files a/rowers/migrations/0021_rower_rowerplan.pyc and /dev/null differ diff --git a/rowers/migrations/0022_auto_20160529_2115.pyc b/rowers/migrations/0022_auto_20160529_2115.pyc deleted file mode 100644 index 9625c498..00000000 Binary files a/rowers/migrations/0022_auto_20160529_2115.pyc and /dev/null differ diff --git a/rowers/migrations/0023_auto_20160530_0914.pyc b/rowers/migrations/0023_auto_20160530_0914.pyc deleted file mode 100644 index 7f3f4d26..00000000 Binary files a/rowers/migrations/0023_auto_20160530_0914.pyc and /dev/null differ diff --git a/rowers/migrations/0024_workout_uploadedtostrava.pyc b/rowers/migrations/0024_workout_uploadedtostrava.pyc deleted file mode 100644 index 14194594..00000000 Binary files a/rowers/migrations/0024_workout_uploadedtostrava.pyc and /dev/null differ diff --git a/rowers/migrations/0025_workout_summary.pyc b/rowers/migrations/0025_workout_summary.pyc deleted file mode 100644 index f78d2706..00000000 Binary files a/rowers/migrations/0025_workout_summary.pyc and /dev/null differ diff --git a/rowers/migrations/0026_auto_20160608_2137.pyc b/rowers/migrations/0026_auto_20160608_2137.pyc deleted file mode 100644 index 64d1fe6c..00000000 Binary files a/rowers/migrations/0026_auto_20160608_2137.pyc and /dev/null differ diff --git a/rowers/migrations/0027_workout_uploadedtosporttracks.pyc b/rowers/migrations/0027_workout_uploadedtosporttracks.pyc deleted file mode 100644 index 50b24abb..00000000 Binary files a/rowers/migrations/0027_workout_uploadedtosporttracks.pyc and /dev/null differ diff --git a/rowers/migrations/0028_rower_sporttrackstoken.pyc b/rowers/migrations/0028_rower_sporttrackstoken.pyc deleted file mode 100644 index 1b85e5ba..00000000 Binary files a/rowers/migrations/0028_rower_sporttrackstoken.pyc and /dev/null differ diff --git a/rowers/migrations/0029_auto_20160610_0825.pyc b/rowers/migrations/0029_auto_20160610_0825.pyc deleted file mode 100644 index f094d4f8..00000000 Binary files a/rowers/migrations/0029_auto_20160610_0825.pyc and /dev/null differ diff --git a/rowers/migrations/0030_auto_20160610_0826.pyc b/rowers/migrations/0030_auto_20160610_0826.pyc deleted file mode 100644 index 2e4a5470..00000000 Binary files a/rowers/migrations/0030_auto_20160610_0826.pyc and /dev/null differ diff --git a/rowers/migrations/0031_auto_20160610_0843.pyc b/rowers/migrations/0031_auto_20160610_0843.pyc deleted file mode 100644 index e737df1c..00000000 Binary files a/rowers/migrations/0031_auto_20160610_0843.pyc and /dev/null differ diff --git a/rowers/migrations/0032_auto_20160615_1332.pyc b/rowers/migrations/0032_auto_20160615_1332.pyc deleted file mode 100644 index 28f0c678..00000000 Binary files a/rowers/migrations/0032_auto_20160615_1332.pyc and /dev/null differ diff --git a/rowers/migrations/0033_auto_20160617_0927.pyc b/rowers/migrations/0033_auto_20160617_0927.pyc deleted file mode 100644 index 90e839b8..00000000 Binary files a/rowers/migrations/0033_auto_20160617_0927.pyc and /dev/null differ diff --git a/rowers/migrations/0034_auto_20160617_0929.pyc b/rowers/migrations/0034_auto_20160617_0929.pyc deleted file mode 100644 index f3ccd9e7..00000000 Binary files a/rowers/migrations/0034_auto_20160617_0929.pyc and /dev/null differ diff --git a/rowers/migrations/0035_auto_20160623_0815.pyc b/rowers/migrations/0035_auto_20160623_0815.pyc deleted file mode 100644 index 9c0f47fc..00000000 Binary files a/rowers/migrations/0035_auto_20160623_0815.pyc and /dev/null differ diff --git a/rowers/migrations/0036_rower_team.pyc b/rowers/migrations/0036_rower_team.pyc deleted file mode 100644 index 0ea77bd3..00000000 Binary files a/rowers/migrations/0036_rower_team.pyc and /dev/null differ diff --git a/rowers/migrations/0037_auto_20160629_1014.pyc b/rowers/migrations/0037_auto_20160629_1014.pyc deleted file mode 100644 index 892a89c2..00000000 Binary files a/rowers/migrations/0037_auto_20160629_1014.pyc and /dev/null differ diff --git a/rowers/migrations/0038_auto_20160629_1023.pyc b/rowers/migrations/0038_auto_20160629_1023.pyc deleted file mode 100644 index 99cc565c..00000000 Binary files a/rowers/migrations/0038_auto_20160629_1023.pyc and /dev/null differ diff --git a/rowers/migrations/0039_auto_20160719_2240.pyc b/rowers/migrations/0039_auto_20160719_2240.pyc deleted file mode 100644 index 7d6b9238..00000000 Binary files a/rowers/migrations/0039_auto_20160719_2240.pyc and /dev/null differ diff --git a/rowers/migrations/0040_workout_startdatetime.pyc b/rowers/migrations/0040_workout_startdatetime.pyc deleted file mode 100644 index 3939afae..00000000 Binary files a/rowers/migrations/0040_workout_startdatetime.pyc and /dev/null differ diff --git a/rowers/migrations/0041_rower_friends.pyc b/rowers/migrations/0041_rower_friends.pyc deleted file mode 100644 index fd14121e..00000000 Binary files a/rowers/migrations/0041_rower_friends.pyc and /dev/null differ diff --git a/rowers/migrations/__init__.pyc b/rowers/migrations/__init__.pyc deleted file mode 100644 index 749ae9a7..00000000 Binary files a/rowers/migrations/__init__.pyc and /dev/null differ diff --git a/rowers/models.pyc b/rowers/models.pyc deleted file mode 100644 index b65aa8dc..00000000 Binary files a/rowers/models.pyc and /dev/null differ diff --git a/rowers/plots.pyc b/rowers/plots.pyc deleted file mode 100644 index 8e00daea..00000000 Binary files a/rowers/plots.pyc and /dev/null differ diff --git a/rowers/sporttracksstuff.pyc b/rowers/sporttracksstuff.pyc deleted file mode 100644 index 30d37184..00000000 Binary files a/rowers/sporttracksstuff.pyc and /dev/null differ diff --git a/rowers/stravastuff.pyc b/rowers/stravastuff.pyc deleted file mode 100644 index cc3e8ed5..00000000 Binary files a/rowers/stravastuff.pyc and /dev/null differ diff --git a/rowers/tasks.pyc b/rowers/tasks.pyc deleted file mode 100644 index c2ac47c9..00000000 Binary files a/rowers/tasks.pyc and /dev/null differ diff --git a/rowers/templates/cum_flex.html b/rowers/templates/cum_flex.html index 8fde5825..065e8bfe 100644 --- a/rowers/templates/cum_flex.html +++ b/rowers/templates/cum_flex.html @@ -6,28 +6,17 @@ {% block content %} + {{ js_res | safe }} + {{ css_res| safe }} + + {{ interactiveplot |safe }} -