[chronojump] Networks inertial upload reps discard with preferences.encoderCaptureInertialDiscardFirstN



commit 122ca26b4812cfdfe7ac93861f732bbc82117727
Author: Xavier de Blas <xaviblas gmail com>
Date:   Mon Jul 15 16:59:43 2019 +0200

    Networks inertial upload reps discard with preferences.encoderCaptureInertialDiscardFirstN

 src/gui/encoder.cs    | 86 +++++++++++++++++++++++++++++----------------------
 src/json/compujump.cs | 32 +++++++++++++++++--
 2 files changed, 79 insertions(+), 39 deletions(-)
---
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index a973d678..384315b9 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -6999,43 +6999,7 @@ public partial class ChronoJumpWindow
 
                                                if(configChronojump.Compujump && encoderCaptureCurves.Count > 
0)
                                                {
-                                                       UploadEncoderDataObject uo = new 
UploadEncoderDataObject(
-                                                                       encoderCaptureCurves, 
lastEncoderSQLSignal.eccon);
-
-
-                                                       /*
-                                                        * Problems on Json by accents like "PressiĆ³ sobre 
banc"
-                                                        * string exerciseName = 
UtilGtk.ComboGetActive(combo_encoder_exercise_capture);
-                                                        * right now fixed in json.cs UploadEncoderData()
-                                                        */
-
-                                                       LogB.Information("calling Upload");
-                                                       JsonCompujump js = new 
JsonCompujump(configChronojump.CompujumpDjango);
-                                                       UploadEncoderDataFullObject uedfo = new 
UploadEncoderDataFullObject(
-                                                                       -1, //uniqueID
-                                                                       currentPerson.UniqueID,
-                                                                       configChronojump.CompujumpStationID,
-                                                                       lastEncoderSQLSignal.exerciseID,
-                                                                       
lastEncoderSQLSignal.LateralityToEnglish(),
-                                                                       
Util.ConvertToPoint(findMass(Constants.MassType.EXTRA)), //this is only for gravitatory
-                                                                       uo);
-                                                       bool success = js.UploadEncoderData(uedfo);
-
-                                                       LogB.Information(js.ResultMessage);
-                                                       LogB.Information("called Upload");
-
-                                                       if(! success) {
-                                                               LogB.Error(js.ResultMessage);
-
-                                                               SqliteJson.InsertTempEncoder(false, uedfo);
-
-                                                               bool showInWindow = false;
-                                                               if(showInWindow)
-                                                                       new DialogMessage(
-                                                                                       "Chronojump",
-                                                                                       
Constants.MessageTypes.WARNING,
-                                                                                       js.ResultMessage);
-                                                       }
+                                                       uploadEncoderDataObjectIfPossible();
                                                }
                                                else if(configChronojump.Exhibition &&
                                                                configChronojump.ExhibitionStationType == 
ExhibitionTest.testTypes.INERTIAL &&
@@ -7262,6 +7226,54 @@ public partial class ChronoJumpWindow
                        chronojumpWindowTestsNext();
        }
 
+       private void uploadEncoderDataObjectIfPossible()
+       {
+               UploadEncoderDataObject uo = new UploadEncoderDataObject(encoderCaptureCurves, 
lastEncoderSQLSignal.eccon);
+
+               if(current_menuitem_mode == Constants.Menuitem_modes.POWERINERTIAL)
+               {
+                       //discard first reps on inertial and if there are not enough reps, then do not upload
+                       if(! uo.InertialDiscardFirstN(preferences.encoderCaptureInertialDiscardFirstN))
+                               return;
+               }
+
+               uo.Calcule();
+
+               /*
+                * Problems on Json by accents like "PressiĆ³ sobre banc"
+                * string exerciseName = UtilGtk.ComboGetActive(combo_encoder_exercise_capture);
+                * right now fixed in json.cs UploadEncoderData()
+                */
+
+               LogB.Information("calling Upload");
+               JsonCompujump js = new JsonCompujump(configChronojump.CompujumpDjango);
+               UploadEncoderDataFullObject uedfo = new UploadEncoderDataFullObject(
+                               -1, //uniqueID
+                               currentPerson.UniqueID,
+                               configChronojump.CompujumpStationID,
+                               lastEncoderSQLSignal.exerciseID,
+                               lastEncoderSQLSignal.LateralityToEnglish(),
+                               Util.ConvertToPoint(findMass(Constants.MassType.EXTRA)), //this is only for 
gravitatory
+                               uo);
+               bool success = js.UploadEncoderData(uedfo);
+
+               LogB.Information(js.ResultMessage);
+               LogB.Information("called Upload");
+
+               if(! success) {
+                       LogB.Error(js.ResultMessage);
+
+                       SqliteJson.InsertTempEncoder(false, uedfo);
+
+                       bool showInWindow = false;
+                       if(showInWindow)
+                               new DialogMessage(
+                                               "Chronojump",
+                                               Constants.MessageTypes.WARNING,
+                                               js.ResultMessage);
+               }
+       }
+
        //sqlite is opened on this method
        private void manageCurvesOfThisSignal()
        {
diff --git a/src/json/compujump.cs b/src/json/compujump.cs
index 40fae25f..4d94b066 100644
--- a/src/json/compujump.cs
+++ b/src/json/compujump.cs
@@ -788,7 +788,6 @@ public class UploadEncoderDataObject
 {
        private enum byTypes { SPEED, POWER }
 
-       public string eccon; //"c" or "ec"
        public int repetitions;
 
        //variables calculated BySpeed (by best mean speed)
@@ -811,8 +810,36 @@ public class UploadEncoderDataObject
 
        public double  pmeanByPowerAsDouble;
 
+       private ArrayList curves;
+       private string eccon;
+
        //constructor called after capture
        public UploadEncoderDataObject(ArrayList curves, string eccon)
+       {
+               this.curves = curves;
+               this.eccon = eccon;
+       }
+
+       //returns false if on discarding, there are no curves
+       public bool InertialDiscardFirstN(int inertialDiscardFirstN)
+       {
+               if(eccon == "c")
+               {
+                       if(curves.Count > inertialDiscardFirstN)
+                               curves.RemoveRange(0, inertialDiscardFirstN);
+                       else
+                               return false;
+               } else {
+                       if(curves.Count > inertialDiscardFirstN *2)
+                               curves.RemoveRange(0, inertialDiscardFirstN *2);
+                       else
+                               return false;
+               }
+
+               return true;
+       }
+
+       public void Calcule()
        {
                if(eccon == "c")
                        calculeObjectCon (curves);
@@ -820,6 +847,7 @@ public class UploadEncoderDataObject
                        calculeObjectEccCon (curves);
        }
 
+
        private void calculeObjectCon (ArrayList curves)
        {
                repetitions = curves.Count;
@@ -887,7 +915,7 @@ public class UploadEncoderDataObject
                lossByPower = eSignal.GetEccConLossByOnlyConPhase(Constants.MeanPower);
        }
 
-       //constructor called on SQL load
+       //constructor called on SQL load SqliteJson.SelectTempEncoder()
        public UploadEncoderDataObject(int repetitions,
                        int numBySpeed, int lossBySpeed, string rangeBySpeed,
                        string vmeanBySpeed, string vmaxBySpeed, string pmeanBySpeed, string pmaxBySpeed,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]