private SGSeriesCollection GetSeries(Dictionary <string, object> file) { SGSeriesCollection series_collection = new SGSeriesCollection(); JObject all_series = (JObject)jo_parsed_file["series"]; foreach (var series in all_series) { SGSeries parsed_series = new SGSeries(); parsed_series.Type = 0; parsed_series.ID = 1; parsed_series.Status = 4; parsed_series.Name = series.Key; JObject values = (JObject)series.Value; List <Object> val_range = new List <Object>(); List <Object> key_range = new List <Object>(); List <Object> val_range_copy = new List <object>(); int last_value_index = -1; foreach (var data in values) { try { val_range.Add((Double)data.Value); key_range.Add((String)data.Key); val_range_copy.Add((Double)data.Value); last_value_index += 1; } catch (System.ArgumentException e) { val_range.Add("none"); val_range_copy.Add("none"); } } parsed_series.Values = val_range; parsed_series.EndsAt = (Double)val_range.OfType <Double>().Last(); parsed_series.CategoryEndsAt = Convert.ToDouble(key_range[last_value_index]); parsed_series.CategoryStartsAt = Convert.ToDouble(key_range.First()); parsed_series.StartsAt = (Double)val_range.OfType <Double>().First(); parsed_series.Trend = (string)jo_parsed_file["trends"][series.Key]; parsed_series.ValuesIncludingNones = val_range_copy; // add series to collection series_collection.Add(parsed_series); } return(series_collection); }
/*************************************************************************** * Series are dealt with here. This is a very error prone method. **************************************************************************/ private SGSeriesCollection GetXLSeries(Chart chart) { SGSeriesCollection sg_series_collection = new SGSeriesCollection(); IEnumerator series_enumerator = ((SeriesCollection) chart.SeriesCollection(Type.Missing)).GetEnumerator(); int ctr = 0; // iterate through all the boxes in the chart area. while (series_enumerator.MoveNext()) { SGSeries sg_series = new SGSeries(); Series xl_series = (Series)series_enumerator.Current; sg_series.ID = ctr; /////////////////////////////////////// // \internal find if there is a type (line, bar, etc.) ////////////////////////////////////// try { sg_series.Type = xl_series.Type; } catch { sg_series.Type = -1; log.Warn("Couldn't get the type of the series." + "\n\tThis must be fixed!"); continue; } /////////////////////////////////////// // find if there is a name ////////////////////////////////////// if (!String.IsNullOrEmpty(xl_series.Name)) { sg_series.Name = xl_series.Name; } else { log.Warn("Couldn't find the name of the series." + "\n\tSetting it to: \"none\"."); sg_series.Name = "none"; } /////////////////////////////////////// // find if there are values ////////////////////////////////////// try { List <object> vals = new List <object>(); //vals.AddRange(((Array)xl_series.Values).Cast<object>()); foreach (object c in (Array)xl_series.Values) { if (c != null && c.ToString().Length != 0) { vals.Add(c); } else { vals.Add(""); } } sg_series.Values = vals; } catch { log.Warn("Couldn't find the values for the series." + "\n\tSetting it to: \"none\"."); continue; } sg_series_collection.Add(sg_series); log.Debug(sg_series.ToString() + "."); ctr++; } log.Debug(ctr + " legal series found and added to the list."); return(sg_series_collection); }