[chronojump] db 1.43: Added exercise params of last capture for next Chronojump start



commit 53b041b129e22072cd72bb5f284ecff888ae8bee
Author: Xavier de Blas <xaviblas gmail com>
Date:   Tue Apr 25 15:49:37 2017 +0200

    db 1.43: Added exercise params of last capture for next Chronojump start

 src/gui/chronojump.cs     |    6 ++
 src/gui/encoder.cs        |  116 ++++++++++++++++++++++++++++++++++++++++++--
 src/sqlite/main.cs        |   36 ++++++++++++++-
 src/sqlite/preferences.cs |   30 ++++++++++++
 4 files changed, 181 insertions(+), 7 deletions(-)
---
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index a896981..922978f 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -2987,6 +2987,12 @@ public partial class ChronoJumpWindow
                        if(changed) {
                                prepareAnalyzeRepetitions ();
                        }
+
+                       if(! encoderPreferencesSet)
+                       {
+                               setEncoderExerciseOptionsFromPreferences();
+                               encoderPreferencesSet = true;
+                       }
                } 
                else if(m == Constants.Menuitem_modes.FORCESENSOR)
                {
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index ac9d936..32399b6 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -286,6 +286,8 @@ public partial class ChronoJumpWindow
        Thread encoderThreadBG;
        
 
+       bool encoderPreferencesSet = false;
+
        int image_encoder_width;
        int image_encoder_height;
 
@@ -418,13 +420,15 @@ public partial class ChronoJumpWindow
                //treeview_encoder_capture_curves.CursorChanged += 
on_treeview_encoder_capture_curves_cursor_changed;
                //changed, now unselectable because there are the checkboxes
 
+               array1RM = new ArrayList();
+
                createEncoderCombos();
                
                encoderConfigurationGUIUpdate();
                
                //on start it's concentric and powerbars. Eccon-together should be unsensitive  
                check_encoder_analyze_eccon_together.Sensitive = false;
-               
+
                //spin_encoder_capture_inertial.Value = Convert.ToDouble(Util.ChangeDecimalSeparator(
                //                      SqlitePreferences.Select("inertialmomentum")));
                
@@ -447,8 +451,6 @@ public partial class ChronoJumpWindow
 
                //configInit();
        
-               array1RM = new ArrayList();
-
                //triggers
                triggerList = new TriggerList();
                showTriggerTab(false);
@@ -671,10 +673,108 @@ public partial class ChronoJumpWindow
                notebook_encoder_capture_or_exercise_or_instructions.Page = 2;
        }
 
+       private void setEncoderExerciseOptionsFromPreferences()
+       {
+               Sqlite.Open();
+
+               //1. exercise
+               string exerciseID = "";
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       exerciseID = SqlitePreferences.Select(SqlitePreferences.EncoderExerciseIDGravitatory, 
true);
+               else
+                       exerciseID = SqlitePreferences.Select(SqlitePreferences.EncoderExerciseIDInertial, 
true);
+
+               string exerciseNameTranslated = Util.FindOnArray(':', 0, 2, exerciseID.ToString(),
+                               encoderExercisesTranslationAndBodyPWeight);
+
+               combo_encoder_exercise_capture.Active = UtilGtk.ComboMakeActive(
+                               combo_encoder_exercise_capture, exerciseNameTranslated);
+
+               //2 contraction
+               string contraction = "";
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       contraction = 
SqlitePreferences.Select(SqlitePreferences.EncoderContractionGravitatory, true);
+               else
+                       contraction = SqlitePreferences.Select(SqlitePreferences.EncoderContractionInertial, 
true);
+
+               string contractionTranslated = Util.FindOnArray(':',0,1, contraction,
+                               encoderEcconTranslation);
+               combo_encoder_eccon.Active = UtilGtk.ComboMakeActive(
+                               combo_encoder_eccon, contractionTranslated);
+
+               //3 laterality
+               string laterality = "";
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       laterality = SqlitePreferences.Select(SqlitePreferences.EncoderLateralityGravitatory, 
true);
+               else
+                       laterality = SqlitePreferences.Select(SqlitePreferences.EncoderLateralityInertial, 
true);
+
+               string lateralityTranslated = Util.FindOnArray(':',0,1, laterality,
+                               encoderLateralityTranslation);
+               combo_encoder_laterality.Active = UtilGtk.ComboMakeActive(
+                               combo_encoder_laterality, lateralityTranslated);
+
+               //4 mass / weights
+               string mass = SqlitePreferences.Select(SqlitePreferences.EncoderMassGravitatory, true);
+               entry_raspberry_extra_weight.Text = mass;
+
+               string weights = SqlitePreferences.Select(SqlitePreferences.EncoderWeightsInertial, true);
+               entry_encoder_im_weights_n.Text = weights;
+
+
+               Sqlite.Close();
+       }
+
+       private void saveEncoderExerciseOptionsToPreferences()
+       {
+               //store execution params on SQL for next Chronojump start
+               Sqlite.Open();
+
+               //1 exercise
+               int exerciseID = getExerciseIDFromCombo (exerciseCombos.CAPTURE);
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       SqlitePreferences.Update (SqlitePreferences.EncoderExerciseIDGravitatory, 
exerciseID.ToString(), true);
+               else
+                       SqlitePreferences.Update (SqlitePreferences.EncoderExerciseIDInertial, 
exerciseID.ToString(), true);
+
+               //2 contraction
+               string eccon = Util.FindOnArray(':',1,0,
+                               UtilGtk.ComboGetActive(combo_encoder_eccon),
+                               encoderEcconTranslation);
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       SqlitePreferences.Update (SqlitePreferences.EncoderContractionGravitatory, eccon, 
true);
+               else
+                       SqlitePreferences.Update (SqlitePreferences.EncoderContractionInertial, eccon, true);
+
+               //3 laterality
+               string laterality = Util.FindOnArray(':',1,0,
+                               UtilGtk.ComboGetActive(combo_encoder_laterality),
+                               encoderLateralityTranslation);
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       SqlitePreferences.Update (SqlitePreferences.EncoderLateralityGravitatory, laterality, 
true);
+               else
+                       SqlitePreferences.Update (SqlitePreferences.EncoderLateralityInertial, laterality, 
true);
+
+               //4 mass / weights
+               if(currentEncoderGI == Constants.EncoderGI.GRAVITATORY)
+                       SqlitePreferences.Update (SqlitePreferences.EncoderMassGravitatory,
+                                       Util.ConvertToPoint(findMass(Constants.MassType.EXTRA)), //when save 
on sql, do not include person weight
+                                       true);
+               else
+                       SqlitePreferences.Update (SqlitePreferences.EncoderWeightsInertial,
+                                       spin_encoder_im_weights_n.Value.ToString(),
+                                       true);
+
+               Sqlite.Close();
+
+       }
+
        double maxPowerIntersessionOnCapture;
        //called from main GUI
        void on_button_encoder_capture_clicked (object o, EventArgs args) 
        {
+               saveEncoderExerciseOptionsToPreferences();
+
                on_button_encoder_capture_clicked_do (true);
        }
 
@@ -846,9 +946,10 @@ public partial class ChronoJumpWindow
        //array1RM variable is not local because we need to perform calculations at each change on 
displaced_weight
        void array1RMUpdate (bool returnPersonNameAndExerciseName) 
        {
-               array1RM = SqliteEncoder.Select1RM(
-                               false, currentPerson.UniqueID, -1, //-1: currentSession = all sessions
-                               getExerciseIDFromCombo(exerciseCombos.CAPTURE), 
returnPersonNameAndExerciseName); 
+               if(currentPerson != null)
+                       array1RM = SqliteEncoder.Select1RM(
+                                       false, currentPerson.UniqueID, -1, //-1: currentSession = all sessions
+                                       getExerciseIDFromCombo(exerciseCombos.CAPTURE), 
returnPersonNameAndExerciseName);
        }
 
        void on_button_encoder_1RM_win_clicked (object o, EventArgs args) 
@@ -3088,6 +3189,9 @@ public partial class ChronoJumpWindow
        //BODY and EXTRA are at EncoderParams and sent to graph.R       
        private double findMass(Constants.MassType massType) 
        {
+               if(currentPersonSession == null)
+                       return 0;
+
                double extraWeight = spin_encoder_extra_weight.Value;
                if(encoderConfigurationCurrent.has_inertia)
                        extraWeight = 0;
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index 755a3fd..0877c99 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -125,7 +125,7 @@ class Sqlite
        /*
         * Important, change this if there's any update to database
         */
-       static string lastChronojumpDatabaseVersion = "1.42";
+       static string lastChronojumpDatabaseVersion = "1.43";
 
        public Sqlite() {
        }
@@ -2178,6 +2178,39 @@ class Sqlite
                                currentVersion = updateVersion("1.42");
                        }
 
+                       if(currentVersion == "1.42")
+                       {
+                               LogB.SQL("Added exercise params of last capture for next Chronojump start");
+
+                               //1 exercise
+                               ArrayList encoderExercises =
+                                       SqliteEncoder.SelectEncoderExercises(true, -1, true);
+
+                               if(encoderExercises.Count > 0) {
+                                       EncoderExercise ex = (EncoderExercise) encoderExercises[0];
+                                       
SqlitePreferences.Insert(SqlitePreferences.EncoderExerciseIDGravitatory, ex.uniqueID.ToString());
+                                       SqlitePreferences.Insert(SqlitePreferences.EncoderExerciseIDInertial, 
ex.uniqueID.ToString());
+                               }
+                               else {
+                                       SqlitePreferences.Insert 
(SqlitePreferences.EncoderExerciseIDGravitatory, "1");
+                                       SqlitePreferences.Insert 
(SqlitePreferences.EncoderExerciseIDInertial, "1");
+                               }
+
+                               //2 contraction
+                               SqlitePreferences.Insert (SqlitePreferences.EncoderContractionGravitatory, 
Constants.Concentric);
+                               SqlitePreferences.Insert (SqlitePreferences.EncoderContractionInertial, 
Constants.EccentricConcentric);
+
+                               //3 laterality
+                               SqlitePreferences.Insert (SqlitePreferences.EncoderLateralityGravitatory, 
"RL");
+                               SqlitePreferences.Insert (SqlitePreferences.EncoderLateralityInertial, "RL");
+
+                               //4 mass/weights
+                               SqlitePreferences.Insert (SqlitePreferences.EncoderMassGravitatory, "10");
+                               SqlitePreferences.Insert (SqlitePreferences.EncoderWeightsInertial, "0");
+
+                               currentVersion = updateVersion("1.43");
+                       }
+
 
                        // --- add more updates here
                
@@ -2358,6 +2391,7 @@ class Sqlite
                SqliteForceSensor.InsertDefaultValues(true);
 
                //changes [from - to - desc]
+               //1.42 - 1.43 Converted DB to 1.43 Added exercise params of last capture for next Chronojump 
start
                //1.41 - 1.42 Converted DB to 1.42 Created and default values for ForceSensorRFD
                //1.40 - 1.41 Converted DB to 1.41 Updated preferences maximized: from true/false to 
no/yes/undecorated
                //1.39 - 1.40 Converted DB to 1.40 Added to preferences: maximized, personWinHide, 
encoderCaptureShowOnlyBars
diff --git a/src/sqlite/preferences.cs b/src/sqlite/preferences.cs
index 7e52543..0ed21af 100644
--- a/src/sqlite/preferences.cs
+++ b/src/sqlite/preferences.cs
@@ -22,10 +22,20 @@ using System;
 using System.Data;
 using System.IO;
 using Mono.Data.Sqlite;
+using System.Collections; //ArrayList
 
 
 class SqlitePreferences : Sqlite
 {
+       public const string EncoderExerciseIDGravitatory = "encoderExerciseIDGravitatory";
+       public const string EncoderExerciseIDInertial = "encoderExerciseIDInertial";
+       public const string EncoderContractionGravitatory = "encoderContractionGravitatory";
+       public const string EncoderContractionInertial = "encoderContractionInertial";
+       public const string EncoderLateralityGravitatory = "encoderLateralityGravitatory";
+       public const string EncoderLateralityInertial = "encoderLateralityInertial";
+       public const string EncoderMassGravitatory = "encoderMassGravitatory";
+       public const string EncoderWeightsInertial = "encoderWeightsInertial";
+
        protected internal static new void createTable()
        {
                dbcmd.CommandText = 
@@ -105,6 +115,26 @@ class SqlitePreferences : Sqlite
                                Insert ("encoderSmoothCon", "0.7", dbcmdTr);
                                Insert ("encoder1RMMethod", Constants.Encoder1RMMethod.WEIGHTED2.ToString(), 
dbcmdTr);
 
+                               ArrayList encoderExercises =
+                                       SqliteEncoder.SelectEncoderExercises(true, -1, true);
+
+                               if(encoderExercises.Count > 0) {
+                                       EncoderExercise ex = (EncoderExercise) encoderExercises[0];
+                                       Insert (EncoderExerciseIDGravitatory, ex.uniqueID.ToString());
+                                       Insert (EncoderExerciseIDInertial, ex.uniqueID.ToString());
+                               }
+                               else {
+                                       Insert (EncoderExerciseIDGravitatory, "1");
+                                       Insert (EncoderExerciseIDInertial, "1");
+                               }
+
+                               Insert (EncoderContractionGravitatory, Constants.Concentric);
+                               Insert (EncoderContractionInertial, Constants.EccentricConcentric);
+                               Insert (EncoderLateralityGravitatory, "RL");
+                               Insert (EncoderLateralityInertial, "RL");
+                               Insert (EncoderMassGravitatory, "10");
+                               Insert (EncoderWeightsInertial, "0");
+
                                Insert ("videoDevice", "0", dbcmdTr); //first
                                Insert ("inertialmomentum", "0.01", dbcmdTr);
                                Insert ("CSVExportDecimalSeparator", Util.GetDecimalSeparatorFromLocale(), 
dbcmdTr);


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