[chronojump-server] Some changes: - Fixed the problem when creating stations. Now we can create exercises after station
- From: Marcos Venteo Garcia <mventeo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump-server] Some changes: - Fixed the problem when creating stations. Now we can create exercises after station
- Date: Wed, 5 Jul 2017 19:58:24 +0000 (UTC)
commit 294e2577b75877d5e9fbb7b5862cf66fb9168fc0
Author: Marcos Venteo García <mventeo gmail com>
Date: Wed Jul 5 21:58:16 2017 +0200
Some changes:
- Fixed the problem when creating stations. Now we can create exercises after station creation.
- Added Export CSV functionality for results and sprints
- Hours and Minutes format number improved
- Added no image icon when creating a new player
- Fixed the problem that cause an error when showing sprints results
chronojumpserver/api.py | 3 +-
chronojumpserver/js/results.js | 21 +++++++++++++----
chronojumpserver/js/sprints.js | 21 +++++++++++++----
chronojumpserver/js/stations.js | 29 ++++++++++++++++++++----
chronojumpserver/models.py | 21 +++++++++++-------
chronojumpserver/templates/_formhelpers.html | 2 +-
chronojumpserver/templates/player_detail.html | 2 +-
chronojumpserver/templates/results.html | 4 +++
chronojumpserver/templates/sprints.html | 4 +++
9 files changed, 81 insertions(+), 26 deletions(-)
---
diff --git a/chronojumpserver/api.py b/chronojumpserver/api.py
index ff905e1..a68916f 100755
--- a/chronojumpserver/api.py
+++ b/chronojumpserver/api.py
@@ -190,6 +190,7 @@ def add_modify_delete_stations():
db_session.add(s)
try:
db_session.commit()
+ stationId=s.id
except IntegrityError:
msg = "ERROR: Aquest estació ja existeix."
status_code = 500
@@ -212,7 +213,7 @@ def add_modify_delete_stations():
db_session.delete(s)
db_session.commit()
- response = jsonify(msg=msg.decode('utf-8'))
+ response = jsonify(msg=msg.decode('utf-8'), stationId=stationId)
response.status_code = status_code
return response
diff --git a/chronojumpserver/js/results.js b/chronojumpserver/js/results.js
index 5c894cf..b42dc96 100755
--- a/chronojumpserver/js/results.js
+++ b/chronojumpserver/js/results.js
@@ -20,6 +20,14 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+ function formatDateNumber(val) {
+ if (val < 10) {
+ return '0' + val;
+ } else {
+ return val;
+ }
+ }
+
$(document).ready(function() {
// Initialize datatable with results
@@ -82,12 +90,12 @@ $(document).ready(function() {
var MM = dt.getMinutes();
if (dd == dd2 && mm == mm2 && yy == yy2) {
// Today, show the result hours and minute
- return hh + ":" + MM;
+ return formatDateNumber(hh) + ':' + formatDateNumber(MM);
} else if (yy == yy2) {
// Same year
- return dd2 + "/" + (mm2 + 1) + " " + hh + ":" + MM;
+ return dd2 + "/" + (mm2 + 1) + " " + formatDateNumber(hh) + ":" + formatDateNumber(MM);
} else {
- return dd2 + "/" + (mm2 + 1) + "/" + yy2 + " " + hh + ":" + MM;
+ return dd2 + "/" + (mm2 + 1) + "/" + yy2 + " " + formatDateNumber(hh) + ":" +
formatDateNumber(MM);
}
}
@@ -170,8 +178,11 @@ $(document).ready(function() {
render: $.fn.dataTable.render.number('', ',', 2)
}
],
- "dom": '<"resultsFilter">frtip',
- "pageLength": 10,
+ "dom": '<"resultsFilter">fBrtip',
+ buttons: [
+ { extend: 'csv', text: 'Exportar Resultats', className: "btn btn-primary", fieldSeparator: ";"}
+ ],
+ "pageLength": 15,
"order": [
[0, 'desc']
],
diff --git a/chronojumpserver/js/sprints.js b/chronojumpserver/js/sprints.js
index 6007947..e36953f 100644
--- a/chronojumpserver/js/sprints.js
+++ b/chronojumpserver/js/sprints.js
@@ -18,6 +18,14 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+function formatDateNumber(val) {
+ if (val < 10) {
+ return '0' + val;
+ } else {
+ return val;
+ }
+}
+
$(document).ready(function() {
// Initialize datatable with results
@@ -79,12 +87,12 @@ $(document).ready(function() {
var MM = dt.getMinutes();
if (dd == dd2 && mm == mm2 && yy == yy2) {
// Today, show the result hours and minute
- return hh + ":" + MM;
+ return formatDateNumber(hh) + ':' + formatDateNumber(MM);
} else if (yy == yy2) {
// Same year
- return dd2 + "/" + (mm2 + 1) + " " + hh + ":" + MM;
+ return dd2 + "/" + (mm2 + 1) + " " + formatDateNumber(hh) + ":" + formatDateNumber(MM);
} else {
- return dd2 + "/" + (mm2 + 1) + "/" + yy2 + " " + hh + ":" + MM;
+ return dd2 + "/" + (mm2 + 1) + "/" + yy2 + " " + formatDateNumber(hh) + ":" +
formatDateNumber(MM);
}
}
@@ -140,8 +148,11 @@ $(document).ready(function() {
render: $.fn.dataTable.render.number('', ',', 2)
}
],
- "dom": '<"resultsFilter">frtip',
- "pageLength": 10,
+ "dom": '<"resultsFilter">fBrtip',
+ buttons: [
+ { extend: 'csv', text: 'Exportar Sprints', className: "btn btn-primary", fieldSeparator: ";"}
+ ],
+ "pageLength": 15,
"order": [
[0, 'desc']
],
diff --git a/chronojumpserver/js/stations.js b/chronojumpserver/js/stations.js
index db3dddc..97fa7a9 100644
--- a/chronojumpserver/js/stations.js
+++ b/chronojumpserver/js/stations.js
@@ -48,10 +48,28 @@ $('#btnAddModifyStation').on('click', function() {
stationType: stationType
}
}).done(function(data) {
-
+ //alert(data.stationId);
$('#stationModalForm').modal('hide');
var table = $('#stations').DataTable();
- table.ajax.reload(null, false);
+ var stationId = data.stationId;
+ var stationsCount = table.data().count();
+ alert(stationsCount);
+ table.ajax.reload(function(){
+ // Select the station just created
+ table.$('tr.selected').removeClass('selected');
+
+ table.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
+ var d = this.data();
+ if (d.id == stationId) {
+ $(this.node()).addClass('selected');
+ if ( stationsCount > 0 ) {
+ $('#exercises').DataTable().destroy();
+ }
+ loadExercises();
+ }
+ } );
+ }, false);
+
}).fail(function(xhr, status, error){
var err = eval("(" + xhr.responseText + ")");
alert(err.msg);
@@ -91,7 +109,7 @@ $('#btnShowExerciseModalForm').on('click', function()
});
-/* Add / Modify or Delete stations */
+/* Add / Modify or Delete exercises */
$('#btnAddModifyExercise').on('click', function() {
var exerciseId = $('#exerciseId').val();
@@ -146,7 +164,7 @@ $('#btnDeleteExercise').on('click', function() {
function loadExercises(station_id) {
var stationTable = $('#stations').DataTable();
var station = stationTable.row('.selected').data();
-
+ alert(station.id);
$('#selectedStationName').text(station.name);
$('#selectedStationId').val(station.id);
var table = $('#exercises').DataTable({
@@ -179,7 +197,7 @@ function loadExercises(station_id) {
}
],
"dom" : "",
- "pageLength": 10,
+ "pageLength": 20,
"ajax": {
'url': "/api/v1/exercises",
'method': 'GET',
@@ -244,6 +262,7 @@ $(document).ready(function() {
'method': 'GET'
},
"dom" : "",
+ "pageLength": 20,
"language": {
"zeroRecords": "No hi han estacions per mostrar",
},
diff --git a/chronojumpserver/models.py b/chronojumpserver/models.py
index 91a2593..147b461 100755
--- a/chronojumpserver/models.py
+++ b/chronojumpserver/models.py
@@ -385,7 +385,7 @@ class ResultEncoder(Base):
def __repr__(self):
"""Representation od the object."""
- return '<Result %d>' % (self.id)
+ return '<ResultEncoder %d>' % (self.id)
class ResultSprint(Base):
@@ -394,13 +394,13 @@ class ResultSprint(Base):
dt = Column('dt', DateTime, default=datetime.now)
personId = Column('personId', ForeignKey('person.id'))
person = relationship(Person, primaryjoin=personId == Person.id)
- distances = Column(String(50))
- times = Column(String(50))
- k = Column(Float)
- vmax = Column(Float)
- amax = Column(Float)
- fmax = Column(Float)
- pmax = Column(Float)
+ distances = Column('distances', String(50))
+ times = Column('times', String(50))
+ k = Column('k', Float)
+ vmax = Column('vmax', Float)
+ amax = Column('amax', Float)
+ fmax = Column('fmax', Float)
+ pmax = Column('pmax', Float)
def __init__(self, dt=None, personId=None, distances=None, times=None,
k=None, vmax=None, amax=None, fmax=None, pmax=None):
@@ -416,6 +416,7 @@ class ResultSprint(Base):
self.fmax = fmax
self.pmax = pmax
+ @property
def serialize(self):
"""Object serialization (Json)."""
return {
@@ -431,3 +432,7 @@ class ResultSprint(Base):
'fmax': self.fmax,
'pmax': self.pmax
}
+
+ def __repr__(self):
+ """Representation od the object."""
+ return '<ResultSprint %d>' % (self.id)
diff --git a/chronojumpserver/templates/_formhelpers.html b/chronojumpserver/templates/_formhelpers.html
index 2793bf0..f701814 100755
--- a/chronojumpserver/templates/_formhelpers.html
+++ b/chronojumpserver/templates/_formhelpers.html
@@ -12,7 +12,7 @@
{% if field.data %}
<img id="img_{{field.name}}" class="img-rounded " src="/static/images/photos/{{field.data}}">
{% else %}
- <img id="img_{{field.name}}" class="img-rounded ">
+ <img id="img_{{field.name}}" class="img-rounded " src="/static/images/no_image.png" height="270">
{% endif %}
<a id="btn_{{field.name}}" class="btn btn-default btn-block">Seleccionar foto</a>
<input class="hidden" type="file" name="{{field.name}}" id="{{field.name}}"
value="{{field.data}}"/>
diff --git a/chronojumpserver/templates/player_detail.html b/chronojumpserver/templates/player_detail.html
index 8b36b88..f2ebcc0 100755
--- a/chronojumpserver/templates/player_detail.html
+++ b/chronojumpserver/templates/player_detail.html
@@ -19,7 +19,7 @@
{{ form.csrf_token }}
<div class="row">
<div class="col-sm-4">
- {{ render_field(form.photo)}}
+ {{ render_field(form.photo)}}
</div>
<div class="col-sm-8">
{{ render_field(form.fullname) }}
diff --git a/chronojumpserver/templates/results.html b/chronojumpserver/templates/results.html
index b61a966..ce5fb85 100755
--- a/chronojumpserver/templates/results.html
+++ b/chronojumpserver/templates/results.html
@@ -3,6 +3,7 @@
{% block head %}
{{ super() }}
<link href="{{ url_for('assets', filename='DataTables/media/css/dataTables.bootstrap.min.css') }}"
rel="stylesheet" />
+<link href="{{ url_for('assets', filename='DataTables/extensions/Buttons/css/buttons.bootstrap.min.css') }}"
rel="stylesheet" />
{% endblock %}
@@ -61,5 +62,8 @@
{{ super() }}
<script src="{{ url_for('assets', filename='DataTables/media/js/jquery.dataTables.min.js') }}"></script>
<script src="{{ url_for('assets', filename='DataTables/media/js/dataTables.bootstrap.min.js') }}"></script>
+<script src="{{ url_for('assets', filename='DataTables/extensions/Buttons/js/dataTables.buttons.min.js')
}}"></script>
+<script src="{{ url_for('assets', filename='DataTables/extensions/Buttons/js/buttons.bootstrap.min.js')
}}"></script>
+<script src="{{ url_for('assets', filename='DataTables/extensions/Buttons/js/buttons.html5.min.js')
}}"></script>
<script src="{{ url_for('js', filename='results.js') }}"></script>
{% endblock %}
diff --git a/chronojumpserver/templates/sprints.html b/chronojumpserver/templates/sprints.html
index 2d7f8a4..d8cbf1b 100644
--- a/chronojumpserver/templates/sprints.html
+++ b/chronojumpserver/templates/sprints.html
@@ -3,6 +3,7 @@
{% block head %}
{{ super() }}
<link href="{{ url_for('assets', filename='DataTables/media/css/dataTables.bootstrap.min.css') }}"
rel="stylesheet" />
+<link href="{{ url_for('assets', filename='DataTables/extensions/Buttons/css/buttons.bootstrap.min.css') }}"
rel="stylesheet" />
{% endblock %}
@@ -46,5 +47,8 @@
{{ super() }}
<script src="{{ url_for('assets', filename='DataTables/media/js/jquery.dataTables.min.js') }}"></script>
<script src="{{ url_for('assets', filename='DataTables/media/js/dataTables.bootstrap.min.js') }}"></script>
+<script src="{{ url_for('assets', filename='DataTables/extensions/Buttons/js/dataTables.buttons.min.js')
}}"></script>
+<script src="{{ url_for('assets', filename='DataTables/extensions/Buttons/js/buttons.bootstrap.min.js')
}}"></script>
+<script src="{{ url_for('assets', filename='DataTables/extensions/Buttons/js/buttons.html5.min.js')
}}"></script>
<script src="{{ url_for('js', filename='sprints.js') }}"></script>
{% endblock %}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]