public ViewChart(Group current) { this.model = new PlotModel("Postęp nauki dla "+current.Name); LineSeries basicSerie = new LineSeries("Postęp nauki"); LinearAxis ax = new LinearAxis(); ax.Unit = "%"; ax.Title = "Poprawne odpowiedzi"; model.Axes.Add(ax); SqlAccess sql = new SqlAccess(); basicSerie.Smooth = true; List<double> list = sql.GetStatsForGroup(current); int i = 1; if(list.Count>0) basicSerie.Points.Add(new DataPoint(0.0,0)); basicSerie.MarkerType = MarkerType.Circle; basicSerie.MarkerSize = 3; basicSerie.SelectionMode = SelectionMode.Single; foreach (double d in list) { basicSerie.Points.Add(new DataPoint(i,d)); i++; } this.model.Series.Add(basicSerie); }
public ChartWindow(Group g) { plotModel = new ViewChart(g); DataContext = plotModel; InitializeComponent(); SqlAccess sql = new SqlAccess(); label2.Content = sql.GetAttendsForGroup(g); TimeSpan timeSpan = sql.GetAvgOfDurationForGroup(g); avgduration.Content = string.Format("{0:D2}h:{1:D2}m:{2:D2}s", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds); ShowDialog(); }
internal List<double> GetStatsForGroup(Group g) { List<double> list = new List<double>(); cmd.CommandText = "select round(((PositiveAnsw*1.0)/(PositiveAnsw+NegativeAnsw))*100) from stats where ID_group = @id_g group by ID order by Data asc "; cmd.Parameters.Add(new SQLiteParameter("@id_g", g.Id)); SQLiteDataReader data = cmd.ExecuteReader(); while (data.Read()) { list.Add((double)data.GetDecimal(0)); } data.Close(); return list; }
internal TimeSpan GetAvgOfDurationForGroup(Group g) { cmd.CommandText = "select avg(Duration) from stats where ID_group=@id_g"; cmd.Parameters.Add(new SQLiteParameter("@id_g", g.Id)); object result = cmd.ExecuteScalar(); try { return TimeSpan.FromSeconds((double)result); } catch (Exception x) { return TimeSpan.FromSeconds(0); } }
internal long GetAttendsForGroup(Group g) { cmd.CommandText = "select Attends from attends where ID_group=@id_g"; cmd.Parameters.Add(new SQLiteParameter("@id_g", g.Id)); return (long)cmd.ExecuteScalar(); }