private void InitializeChart()
        {
            if (supportLineChart != null && supportLineChart.ChartData != null && lineChart != null)
            {
                SupportChart.OnInitializeChart(supportLineChart, lineChart);

                var data         = supportLineChart.ChartData;
                var dataSetItems = new List <LineDataSet>();

                foreach (var itemChild in data.IF_GetDataSet())
                {
                    var         entryOriginal = itemChild.IF_GetEntry().Select(item => new MikePhil.Charting.Data.Entry(item.GetXPosition(), item.GetYPosition()));
                    LineDataSet lineDataSet   = new LineDataSet(entryOriginal.ToArray(), itemChild.IF_GetTitle());
                    lineDataSet.Color = itemChild.IF_GetDataColor().ToAndroid();
                    lineDataSet.SetMode(SupportChart.GetDrawLineMode(itemChild.IF_GetDrawMode()));
                    lineDataSet.CircleRadius     = itemChild.IF_GetCircleRadius();
                    lineDataSet.CircleHoleRadius = itemChild.IF_GetCircleHoleRadius();
                    lineDataSet.SetDrawCircles(itemChild.IF_GetDrawCircle());
                    lineDataSet.SetDrawValues(itemChild.IF_GetDrawValue());

                    var arrColor = itemChild.IF_GetCircleColors().Select(item => item.ToAndroid());
                    lineDataSet.SetCircleColor(itemChild.IF_GetCircleColor().ToAndroid());
                    dataSetItems.Add(lineDataSet);
                }

                LineData lineData = new LineData(dataSetItems.ToArray());
                lineChart.Data = lineData;
            }
        }
        private void CreateGlucoseChart()
        {
            if (_bloodGlucoseDataList.Count == 0)
            {
                _lineChart.Data.ClearValues();
                _lineChart.Clear();
                _lineChart.Invalidate();

                return;
            }
            var glucoseEntries = _bloodGlucoseDataList.Select((t, i) => new BarEntry(i, t.Avg)).Cast <Entry>().ToList();

            var glucoseDataSet = new LineDataSet(glucoseEntries, "Glucoza")
            {
                ValueTextSize  = 14f,
                ValueTextColor = Color.White,
                LineWidth      = 3f,
                AxisDependency = YAxis.AxisDependency.Left
            };

            glucoseDataSet.SetMode(LineDataSet.Mode.HorizontalBezier);
            glucoseDataSet.SetColors(Resources.GetColor(Resource.Color.accent, Theme));
            glucoseDataSet.SetCircleColor(Resources.GetColor(Resource.Color.accent, Theme));
            var barData = new LineData(glucoseDataSet);

            _lineChart.Data = barData;

            _lineChart.SetOnChartValueSelectedListener(this);
            _lineChart.SetDrawBorders(false);
            _lineChart.SetDrawGridBackground(false);
            _lineChart.SetNoDataText("Nu exista date");
            _lineChart.Description.Enabled = false;
            _lineChart.AxisLeft.SetDrawGridLines(false);
            _lineChart.AxisRight.SetDrawGridLines(false);
            _lineChart.XAxis.SetDrawGridLines(false);

            _lineChart.XAxis.Enabled     = false;
            _lineChart.AxisLeft.Enabled  = false;
            _lineChart.AxisRight.Enabled = false;

            _lineChart.AnimateXY(3000, 3000); // animate horizontal and vertical 3000 milliseconds
            _lineChart.SetPinchZoom(false);
            SetLegend();
            _lineChart.Invalidate();
        }
        private void CreateBloodPresureChart()
        {
            if (_bloodPressureDataList.Count == 0)
            {
                _lineChart.Data.ClearValues();
                _lineChart.Clear();
                _lineChart.Invalidate();

                return;
            }
            var systolicEntries  = new List <Entry>();
            var diastolicEntries = new List <Entry>();

            for (var i = 0; i < _bloodPressureDataList.Count; i++)
            {
                systolicEntries.Add(new BarEntry(i, _bloodPressureDataList[i].Systolic));
                diastolicEntries.Add(new BarEntry(i, _bloodPressureDataList[i].Diastolic));
            }

            var systolicDataSet = new LineDataSet(systolicEntries, "Sistola")
            {
                ValueTextSize  = 14f,
                ValueTextColor = Color.White,
                LineWidth      = 3f,
                AxisDependency = YAxis.AxisDependency.Left
            };

            systolicDataSet.SetMode(LineDataSet.Mode.HorizontalBezier);
            systolicDataSet.SetColors(Resources.GetColor(Resource.Color.accent, Theme));
            systolicDataSet.SetCircleColor(Resources.GetColor(Resource.Color.accent, Theme));
            var diastolicDataSet = new LineDataSet(diastolicEntries, "Diastola")
            {
                ValueTextSize  = 14f,
                ValueTextColor = Color.White,
                LineWidth      = 3f,
                AxisDependency = YAxis.AxisDependency.Left
            };

            diastolicDataSet.SetMode(LineDataSet.Mode.HorizontalBezier);
            diastolicDataSet.SetColors(Color.White);
            diastolicDataSet.SetCircleColor(Color.White);
            var barData = new LineData(systolicDataSet, diastolicDataSet);

            _lineChart.Data = barData;

            _lineChart.SetOnChartValueSelectedListener(this);
            _lineChart.SetDrawBorders(false);
            _lineChart.SetDrawGridBackground(false);
            _lineChart.SetNoDataText("Nu exista date");
            _lineChart.Description.Enabled = false;
            _lineChart.AxisLeft.SetDrawGridLines(false);
            _lineChart.AxisRight.SetDrawGridLines(false);
            _lineChart.XAxis.SetDrawGridLines(false);

            _lineChart.XAxis.Enabled     = false;
            _lineChart.AxisLeft.Enabled  = false;
            _lineChart.AxisRight.Enabled = false;

            _lineChart.AnimateXY(1000, 1000); // animate horizontal and vertical 3000 milliseconds
            _lineChart.SetPinchZoom(false);
            SetLegend();
            _lineChart.Invalidate();
        }
Example #4
0
        private View CreateAiringScoreProgressionView(
            List <MediaTrend> trends)
        {
            var detailView      = LayoutInflater.Inflate(Resource.Layout.View_AniListObjectDetail, null);
            var detailContainer = detailView.FindViewById <LinearLayout>(Resource.Id.AniListObjectDetail_InnerContainer);

            detailView.FindViewById <TextView>(Resource.Id.AniListObjectDetail_Name).Text = "Airing Score Progression";

            var chartHeight  = Resources.GetDimensionPixelSize(Resource.Dimension.Details_ChartHeight);
            var textColor    = GetThemedColor(Resource.Attribute.Background_Text);
            var legendMargin = Resources.GetDimensionPixelSize(Resource.Dimension.Details_MarginSmall);


            detailContainer.SetPadding(legendMargin, 0, legendMargin, 0);

            var typedColorArray = Resources.ObtainTypedArray(Resource.Array.Chart_Colors);
            var colorList       = new List <int>();

            for (var i = 0; i < typedColorArray.Length(); i++)
            {
                colorList.Add(typedColorArray.GetColor(i, 0));
            }

            var scoresChart = new LineChart(this)
            {
                LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, chartHeight),
            };

            var data = new LineData();

            var scorePoints  = trends.Select(x => new Entry(x.Episode.Value, x.AverageScore ?? 0)).ToList();
            var scoreDataSet = new LineDataSet(scorePoints, "Score")
            {
                Color          = colorList[0],
                ValueFormatter = new ChartUtils.IntegerValueFormatter(),
            };

            scoreDataSet.ValueTextSize = 12;
            scoreDataSet.SetDrawCircleHole(false);
            scoreDataSet.SetCircleColor(colorList[0]);
            scoreDataSet.SetMode(LineDataSet.Mode.Linear);
            scoreDataSet.ValueTextColor = textColor;
            scoreDataSet.SetDrawValues(true);

            data.AddDataSet(scoreDataSet);

            scoresChart.Data = data;
            scoresChart.FitScreen();
            scoresChart.SetTouchEnabled(false);
            scoresChart.Description.Enabled  = false;
            scoresChart.XAxis.Position       = XAxis.XAxisPosition.Bottom;
            scoresChart.XAxis.ValueFormatter = new ChartUtils.AxisValueCeilingFormatter(1);
            scoresChart.XAxis.Granularity    = 1;
            scoresChart.XAxis.AxisMaximum    = trends.Max(x => x.Episode.Value);
            scoresChart.XAxis.AxisMinimum    = trends.Min(x => x.Episode.Value);
            scoresChart.XAxis.SetLabelCount(trends.Count, true);

            scoresChart.AxisLeft.AxisMinimum = 0;
            scoresChart.AxisLeft.AxisMaximum = 100;
            scoresChart.Legend.Enabled       = false;
            scoresChart.SetDrawGridBackground(false);
            scoresChart.XAxis.SetDrawGridLines(false);
            scoresChart.AxisLeft.Enabled  = false;
            scoresChart.AxisRight.Enabled = false;

            scoresChart.ExtraLeftOffset = scoresChart.ExtraRightOffset = 15;
            scoresChart.XAxis.TextColor = scoresChart.AxisLeft.TextColor = scoresChart.Legend.TextColor = textColor;

            detailContainer.AddView(scoresChart);

            return(detailView);
        }
Example #5
0
        private View CreateRecentActivityView(
            List <MediaTrend> trends)
        {
            var detailView      = LayoutInflater.Inflate(Resource.Layout.View_AniListObjectDetail, null);
            var detailContainer = detailView.FindViewById <LinearLayout>(Resource.Id.AniListObjectDetail_InnerContainer);

            detailView.FindViewById <TextView>(Resource.Id.AniListObjectDetail_Name).Text =
                "Recent Activity";

            var chartHeight  = Resources.GetDimensionPixelSize(Resource.Dimension.Details_ChartHeight);
            var textColor    = GetThemedColor(Resource.Attribute.Background_Text);
            var legendMargin = Resources.GetDimensionPixelSize(Resource.Dimension.Details_MarginSmall);

            detailContainer.SetPadding(legendMargin, 0, legendMargin, 0);

            var typedColorArray = Resources.ObtainTypedArray(Resource.Array.Chart_Colors);
            var colorList       = new List <int>();

            for (var i = 0; i < typedColorArray.Length(); i++)
            {
                colorList.Add(typedColorArray.GetColor(i, 0));
            }

            var activityChart = new LineChart(this)
            {
                LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, chartHeight),
            };

            var data = new LineData();

            var activityPoints  = trends.Select(x => new Entry(x.Date, x.Trending)).ToList();
            var activityDataSet = new LineDataSet(activityPoints, "Trending")
            {
                Color          = colorList[0],
                ValueFormatter = new ChartUtils.NumberValueFormatter(),
            };

            var activityRange = trends.Max(x => x.Trending) - trends.Min(x => x.Trending);

            activityDataSet.ValueTextSize = 12;
            activityDataSet.SetDrawCircleHole(false);
            activityDataSet.SetCircleColor(colorList[0]);
            activityDataSet.SetMode(LineDataSet.Mode.Linear);
            activityDataSet.ValueTextColor = textColor;
            activityDataSet.SetDrawValues(true);

            data.AddDataSet(activityDataSet);

            activityChart.Data = data;
            activityChart.FitScreen();
            activityChart.SetTouchEnabled(false);
            activityChart.Description.Enabled      = false;
            activityChart.XAxis.Position           = XAxis.XAxisPosition.Bottom;
            activityChart.XAxis.ValueFormatter     = new ChartUtils.DateValueFormatter("MMM d");
            activityChart.XAxis.LabelRotationAngle = 60;
            activityChart.XAxis.Granularity        = 1;
            activityChart.XAxis.AxisMaximum        = trends.Max(x => x.Date);
            activityChart.XAxis.AxisMinimum        = trends.Min(x => x.Date);
            activityChart.XAxis.SetLabelCount(trends.Count, true);

            activityChart.AxisLeft.AxisMinimum = Math.Max(trends.Min(x => x.Trending) - activityRange / 2, 0);
            activityChart.AxisLeft.AxisMaximum = trends.Max(x => x.Trending) + activityRange / 2;
            activityChart.Legend.Enabled       = false;
            activityChart.SetDrawGridBackground(false);
            activityChart.XAxis.SetDrawGridLines(false);
            activityChart.AxisLeft.Enabled  = false;
            activityChart.AxisRight.Enabled = false;

            activityChart.XAxis.TextColor = activityChart.AxisLeft.TextColor = activityChart.Legend.TextColor = textColor;
            activityChart.ExtraLeftOffset = activityChart.ExtraRightOffset = 15;

            detailContainer.AddView(activityChart);

            return(detailView);
        }