/// <summary> /// Draws the graphs and saves them to local files /// </summary> public void DrawGraphs() { StringBuilder log = new StringBuilder(); log.AppendLine("starting DrawGraphs.."); try { List<Station> stations = Station.ReadListOfStations(StationXmlFile); List<Channel> channels = Channel.ReadFromXml(StationXmlFile); DataManager m = DataManager.CreateDefault(); DateTime end = DateTime.Now.Date.AddHours(DateTime.Now.Hour); int interval = ReadIntervalFromConfig(); DateTime start = end.AddDays(interval * (-1)); TimeSeries ts = new TimeSeries(start, end); TimeSeries curTs; List<TimeSeries> tslist = new List<TimeSeries>(4); ChartEngine eng = ChartEngine.FromConfigFile(StationXmlFile, GraphDir); ChartLabelInfo chi = new ChartLabelInfo(); Channel curCh; chi.UnitsName = "mm"; chi.Copyright = "Data: KFGG PřF UK Praha"; chi.ChannelName = "hladina"; string fileName; List<Channel> stch; List<Channel> chTypeList; List<string> labelList = new List<string>(); Hashtable stHash = new Hashtable(); foreach (Station st in stations) { stch = Channel.FindByStation(channels, st.Id); chi.StationName = st.Label; //add channels to hashtable //the hashtable now contains lists of multiple channels stHash.Clear(); foreach (Channel ch in stch) { if (stHash.ContainsKey(ch.ChType)) { ((List<Channel>)stHash[ch.ChType]).Add(ch); } else { stHash.Add(ch.ChType, new List<Channel>(4)); ((List<Channel>)stHash[ch.ChType]).Add(ch); } } m.LocalDataDir = LocalDataDir; foreach (DictionaryEntry de in stHash) { chTypeList = (List<Channel>)de.Value; //list of channels of same type if (chTypeList.Count == 1) { curCh = chTypeList[0]; fileName = curCh.ChType + "-" + st.Name; chi.ChannelName = curCh.ChLabel; chi.UnitsName = curCh.Unit; m.LoadObservationsFromFile(curCh.StId, curCh, start, end, ts); //m.LoadObservations(curCh.StId, curCh, start, end, ts); eng.CreateChart(ts, chi, curCh.ChType, fileName); } else if (chTypeList.Count > 1) { tslist.Clear(); labelList.Clear(); foreach (Channel ch in chTypeList) { curTs = new TimeSeries(start, end); m.LoadObservationsFromFile(ch.StId, ch, start, end, curTs); tslist.Add(curTs); labelList.Add(ch.ChLabel); } chi.ChannelName = chTypeList[0].ChLabel; if (chi.ChannelName.IndexOf(" ") >= 0) { chi.ChannelName = chi.ChannelName.Remove(chi.ChannelName.LastIndexOf(" ")); } chi.UnitsName = chTypeList[0].Unit; fileName = chTypeList[0].ChType + "-" + st.Name; eng.CreateChart(tslist, chi, chTypeList[0].ChType, labelList, fileName); } } } } catch (Exception ex) { log.AppendLine("DrawGraphs ERROR - " + ex.Source + " " + ex.Message); } finally { log.AppendLine("finished DrawGraphs.."); Logger logger = new Logger(logFile); logger.WriteMessage(log.ToString()); } }
public object Clone() { TimeSeries ts2 = new TimeSeries(); ts2._list = this._list.Clone(); ts2._maxTime = this.MaxTime; ts2._maxVal = this.MaxValue; ts2._minTime = this.MinTime; ts2._minVal = this.MinValue; ts2._numValid = this.NumValid; return ts2; }