API & Client: adding activity w/o gpx update

This commit is contained in:
Sam 2018-05-08 19:27:39 +02:00
parent faefe18e04
commit e6d2ad914f
3 changed files with 41 additions and 25 deletions

View File

@ -207,7 +207,7 @@ def post_activity_no_gpx(auth_user_id):
user_id=auth_user_id, user_id=auth_user_id,
sport_id=activity_data.get('sport_id'), sport_id=activity_data.get('sport_id'),
activity_date=datetime.strptime( activity_date=datetime.strptime(
activity_data.get('activity_date'), '%Y-%m-%d'), activity_data.get('activity_date'), '%Y-%m-%d %H:%M'),
duration=timedelta(seconds=activity_data.get('duration')) duration=timedelta(seconds=activity_data.get('duration'))
) )
new_activity.moving = new_activity.duration new_activity.moving = new_activity.duration

View File

@ -270,7 +270,7 @@ def test_add_an_activity_no_gpx(app):
data=json.dumps(dict( data=json.dumps(dict(
sport_id=1, sport_id=1,
duration=3600, duration=3600,
activity_date='2018-05-15', activity_date='2018-05-15 14:05',
distance=10 distance=10
)), )),
headers=dict( headers=dict(
@ -285,7 +285,7 @@ def test_add_an_activity_no_gpx(app):
assert 'created' in data['status'] assert 'created' in data['status']
assert len(data['data']['activities']) == 1 assert len(data['data']['activities']) == 1
assert 'creation_date' in data['data']['activities'][0] assert 'creation_date' in data['data']['activities'][0]
assert data['data']['activities'][0]['activity_date'] == 'Tue, 15 May 2018 00:00:00 GMT' # noqa assert data['data']['activities'][0]['activity_date'] == 'Tue, 15 May 2018 14:05:00 GMT' # noqa
assert data['data']['activities'][0]['user_id'] == 1 assert data['data']['activities'][0]['user_id'] == 1
assert data['data']['activities'][0]['sport_id'] == 1 assert data['data']['activities'][0]['sport_id'] == 1
assert data['data']['activities'][0]['duration'] == '1:00:00' assert data['data']['activities'][0]['duration'] == '1:00:00'

View File

@ -31,21 +31,35 @@ function FormWithoutGpx (props) {
<div className="form-group"> <div className="form-group">
<label> <label>
Activity Date: Activity Date:
<input <div className="container">
name="activity_date" <div className="row">
className="form-control input-lg" <input
type="date" name="activity_date"
/> className="form-control col-md"
required
type="date"
/>
<input
name="activity_time"
className="form-control col-md"
required
type="time"
/>
</div>
</div>
</label> </label>
</div> </div>
<div className="form-group"> <div className="form-group">
<label> <label>
Duration: Duration:
<input <input
name="duration" name="duration"
className="form-control input-lg" className="form-control col-xs-4"
type="text" pattern="([0-2][0-3]):([0-5][0-9]):([0-5][0-9])"
/> placeholder="hh:mm:ss"
required
type="text"
/>
</label> </label>
</div> </div>
<div className="form-group"> <div className="form-group">
@ -54,6 +68,8 @@ function FormWithoutGpx (props) {
<input <input
name="distance" name="distance"
className="form-control input-lg" className="form-control input-lg"
min={0}
required
type="number" type="number"
/> />
</label> </label>
@ -78,18 +94,18 @@ export default connect(
() => ({ }), () => ({ }),
dispatch => ({ dispatch => ({
onAddSport: e => { onAddSport: e => {
const data = [].slice const d = e.target.form.duration.value.split(':')
.call(e.target.form.elements) const duration = +d[0] * 60 * 60 + +d[1] * 60 + +d[2]
.reduce(function(map, obj) {
if (obj.name) { const activityDate = `${e.target.form.activity_date.value
if (obj.name === 'duration' || obj.name === 'distance') { } ${ e.target.form.activity_time.value}`
map[obj.name] = +obj.value
} else { const data = {
map[obj.name] = obj.value activity_date: activityDate,
} distance: +e.target.form.distance.value,
} duration,
return map sport_id: +e.target.form.sport_id.value,
}, {}) }
dispatch(addActivityWithoutGpx(data)) dispatch(addActivityWithoutGpx(data))
}, },
}) })