[chronojump] JumpsRjFatigue can be divided by 2,3,4
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] JumpsRjFatigue can be divided by 2,3,4
- Date: Mon, 17 Aug 2020 13:26:59 +0000 (UTC)
commit 6a16a406eeda08089cfe571e8a3726de3aae4631
Author: Xavier de Blas <xaviblas gmail com>
Date: Mon Aug 17 15:26:36 2020 +0200
JumpsRjFatigue can be divided by 2,3,4
glade/app1.glade | 35 ++++++++++++++++++++++++--
src/gui/app1/chronojump.cs | 1 +
src/gui/app1/jumpsRjFatigue.cs | 15 ++++++++++-
src/gui/cairo/jumpsRjFatigue.cs | 55 ++++++++++++++++++++++-------------------
4 files changed, 78 insertions(+), 28 deletions(-)
---
diff --git a/glade/app1.glade b/glade/app1.glade
index 6fc69fbc..491f21fc 100644
--- a/glade/app1.glade
+++ b/glade/app1.glade
@@ -20318,8 +20318,8 @@ Concentric</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="n_rows">2</property>
- <property name="n_columns">3</property>
- <property name="column_spacing">16</property>
+ <property name="n_columns">4</property>
+ <property name="column_spacing">20</property>
<property name="row_spacing">2</property>
<child>
<widget class="GtkLabel" id="label563">
@@ -20478,6 +20478,37 @@ Concentric</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
+ <child>
+ <widget class="GtkLabel" id="label568">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Divide
in</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkComboBox"
id="combo_jumps_rj_fatigue_divide_in">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="active">0</property>
+ <property name="items">2
+3
+4</property>
+ <signal name="changed"
handler="on_combo_jumps_rj_fatigue_divide_in_changed" swapped="no"/>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
diff --git a/src/gui/app1/chronojump.cs b/src/gui/app1/chronojump.cs
index c033890a..893efe0c 100644
--- a/src/gui/app1/chronojump.cs
+++ b/src/gui/app1/chronojump.cs
@@ -614,6 +614,7 @@ public partial class ChronoJumpWindow
createComboSelectJumpsRj(true);
createComboSelectJumpsRjFatigue(true);
createComboSelectJumpsRjFatigueNum(true);
+ combo_jumps_rj_fatigue_divide_in.Active = 0;
createComboSelectRuns(true);
createComboSelectRunsInterval(true);
diff --git a/src/gui/app1/jumpsRjFatigue.cs b/src/gui/app1/jumpsRjFatigue.cs
index aafd0360..53f46a92 100644
--- a/src/gui/app1/jumpsRjFatigue.cs
+++ b/src/gui/app1/jumpsRjFatigue.cs
@@ -42,6 +42,8 @@ public partial class ChronoJumpWindow
[Widget] Gtk.RadioButton radio_jumps_rj_fatigue_heights;
[Widget] Gtk.RadioButton radio_jumps_rj_fatigue_tv_tc;
+ [Widget] Gtk.ComboBox combo_jumps_rj_fatigue_divide_in;
+
JumpsRjFatigue jumpsRjFatigue;
JumpsRjFatigueGraph jumpsRjFatigueGraph;
CjComboSelectJumpsRj comboSelectJumpsRjFatigue;
@@ -111,6 +113,11 @@ public partial class ChronoJumpWindow
jumpsRjFatigueDo(true);
}
+ private void on_combo_jumps_rj_fatigue_divide_in_changed (object o, EventArgs args)
+ {
+ jumpsRjFatigueDo(false);
+ }
+
private List<object> jumpsRjFatigueSelectJumpsOfType ()
{
List<object> types = new List<object>();
@@ -166,6 +173,11 @@ public partial class ChronoJumpWindow
if(strFull.Length == 3)
jumpDateStr = strFull[1];
+ int divideIn = 2;
+ string divideInStr = UtilGtk.ComboGetActive(combo_jumps_rj_fatigue_divide_in);
+ if(divideInStr == "2" || divideInStr == "3" || divideInStr == "4")
+ divideIn = Convert.ToInt32(divideInStr);
+
//regular constructor
jumpsRjFatigueGraph = new JumpsRjFatigueGraph(
jumpsRjFatigue.Point_l,
@@ -174,7 +186,8 @@ public partial class ChronoJumpWindow
drawingarea_jumps_rj_fatigue,
currentPerson.Name, jumpType,
jumpDateStr,
- radio_jumps_rj_fatigue_heights.Active);
+ radio_jumps_rj_fatigue_heights.Active,
+ divideIn);
jumpsRjFatigueGraph.Do();
button_jumps_rj_fatigue_save_image.Sensitive = true;
diff --git a/src/gui/cairo/jumpsRjFatigue.cs b/src/gui/cairo/jumpsRjFatigue.cs
index 2d7ae64b..479c6bfe 100644
--- a/src/gui/cairo/jumpsRjFatigue.cs
+++ b/src/gui/cairo/jumpsRjFatigue.cs
@@ -27,6 +27,8 @@ using Cairo;
public class JumpsRjFatigueGraph : CairoXY
{
+ private int divideIn;
+
//constructor when there are no points
public JumpsRjFatigueGraph (DrawingArea area, string jumpType)//, string title, string jumpType,
string date)
{
@@ -42,7 +44,7 @@ public class JumpsRjFatigueGraph : CairoXY
}
public JumpsRjFatigueGraph (
List<PointF> point_l, double slope, double intercept,
- DrawingArea area, string title, string jumpType, string date, bool heights)
+ DrawingArea area, string title, string jumpType, string date, bool heights, int
divideIn)
{
this.point_l = point_l;
this.slope = slope;
@@ -51,6 +53,7 @@ public class JumpsRjFatigueGraph : CairoXY
this.title = title;
this.jumpType = jumpType;
this.date = date;
+ this.divideIn = divideIn;
xVariable = countStr;
xUnits = "";
@@ -79,7 +82,7 @@ public class JumpsRjFatigueGraph : CairoXY
plotPredictedLine(predictedLineTypes.STRAIGHT, predictedLineCrossMargins.TOUCH);
g.Color = black;
- divideInTwoAndPlotAverage();
+ divideAndPlotAverage(divideIn);
plotRealPoints(true);
@@ -107,34 +110,24 @@ public class JumpsRjFatigueGraph : CairoXY
writeTextAtRight(ypos++, date, false);
}
- private void divideInTwoAndPlotAverage()
+ private void divideAndPlotAverage(int parts)
{
- if(point_l.Count < 4)
+ if(point_l.Count < parts * 2)
return;
- List<PointF> point_l_start = new List<PointF>();
- List<PointF> point_l_end = new List<PointF>();
- double sumIni = 0;
- double sumEnd = 0;
-
- for(int i = 0; i < point_l.Count; i ++)
+ List<List<PointF>> l_l = SplitList(point_l, Convert.ToInt32(Math.Floor(point_l.Count / (1.0 *
parts))));
+ int done = 0;
+ foreach(List<PointF> l in l_l)
{
- if(i < Math.Floor(point_l.Count / 2.0))
- {
- point_l_start.Add(point_l[i]);
- sumIni += point_l[i].Y;
- //LogB.Information(string.Format("Added to point_l_start: {0}", point_l[i]));
- }
- if(point_l.Count - i -1 < Math.Floor(point_l.Count / 2.0))
- {
- point_l_end.Add(point_l[i]);
- sumEnd += point_l[i].Y;
- //LogB.Information(string.Format("Added to point_l_end: {0}", point_l[i]));
- }
+ if(done >= parts)
+ break; //to fix i SplitList returned more chunks than wanted
+
+ double sum = 0;
+ foreach(PointF p in l)
+ sum += p.Y;
+ paintHorizSegment (l[0].X, l[l.Count -1].X, sum / l.Count);
+ done ++;
}
-
- paintHorizSegment (point_l_start[0].X, point_l_start[point_l_start.Count -1].X, sumIni /
point_l_start.Count);
- paintHorizSegment (point_l_end[0].X, point_l_end[point_l_end.Count -1].X, sumEnd /
point_l_end.Count);
}
private void paintHorizSegment (double xa, double xb, double y)
@@ -148,4 +141,16 @@ public class JumpsRjFatigueGraph : CairoXY
g.Stroke ();
}
+
+ //https://stackoverflow.com/a/11463800
+ public static List<List<PointF>> SplitList(List<PointF> listMain, int nSize)
+ {
+ var l_l = new List<List<PointF>>();
+
+ for (int i = 0; i < listMain.Count; i += nSize)
+ l_l.Add(listMain.GetRange(i, Math.Min(nSize, listMain.Count - i)));
+
+ return l_l;
+ }
+
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]