Exemplo n.º 1
0
        public Task <ZcycData> GetDataForDate(DateTime date)
        {
            if (date.Equals(DateTime.Today) && DateTime.Now.Subtract(lastUpdateTime) < cachePeriod)
            {
                return(Task.FromResult(todayZcycData));
            }

            var tcs = new TaskCompletionSource <ZcycData>();

            var    serializer      = new XmlSerializer(typeof(IssData));
            string downloadingDate = date.ToString("yyyy-MM-dd");
            string url             = string.Format(DataUrl, downloadingDate);

            var zData = new ZcycData
            {
                Date = date
            };

            try
            {
                using XmlReader xmlReader = XmlReader.Create(url); //gets only 500 lines
                var issData = (IssData)serializer.Deserialize(xmlReader);
                if (issData == null || issData.data == null || issData.data.rows.Length == 0)
                {
                    tcs.TrySetResult(zData);
                }

                foreach (var item in issData.data.rows)
                {
                    zData.DataRow.Add(new ZcycDataRow
                    {
                        Period = item.period,
                        Value  = item.value
                    });
                }
                if (date.Equals(DateTime.Today))
                {
                    todayZcycData  = zData;
                    lastUpdateTime = DateTime.Now;
                }
                tcs.TrySetResult(zData);
            }
            catch (Exception) // on error return empty data
            {
                tcs.TrySetResult(zData);
            }
            return(tcs.Task);
        }
Exemplo n.º 2
0
        public override void Plot(DateTime value)
        {
            if (MainChart.Series.Any(_ => (DateTime)_.Tag == value))
            {
                return;
            }
            IsBusy = true;

            Task.Run(async() =>
            {
                data = await dataManager.GetData(value);

                if (data.DataRow.Count > 0)
                {
                    var lineSeries1 = new LineSeries
                    {
                        MarkerType            = MarkerType.Circle,
                        MarkerStrokeThickness = 2,
                        MarkerSize            = 2,
                        LineStyle             = LineStyle.Solid,
                        StrokeThickness       = 2,
                        Title = value.ToShortDateString(),
                        InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline,
                        Tag = value
                    };
                    lineSeries1.MarkerStroke = lineSeries1.Color;

                    data.DataRow.ForEach(item => { lineSeries1.Points.Add(new DataPoint(item.Period, item.Value)); });

                    MainChart.Series.Add(lineSeries1);
                    MainChart.InvalidatePlot(true);
                    dataManager.Status = string.Empty;
                }
                else
                {
                    dataManager.Status = $"No data for {value}";
                }
                IsBusy = false;
            });
        }
Exemplo n.º 3
0
 public Task <bool> SaveData(ZcycData data)
 {
     throw new NotImplementedException();
 }