[chronojump-server] Some changes: - Fixed the problem when creating stations. Now we can create exercises after station



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]