void GraphItem(string type, string fieldname, bool left = true) { double a = 0; // row counter int error = 0; DataModifer dataModifier = new DataModifer(); string nodeName = DataModifer.GetNodeName(type, fieldname); if (dataModifierHash.ContainsKey(nodeName)) { dataModifier = (DataModifer)dataModifierHash[nodeName]; } // ensure we tick the treeview foreach (TreeNode node in treeView1.Nodes) { if (node.Text == type) { foreach (TreeNode subnode in node.Nodes) { if (subnode.Text == fieldname && subnode.Checked != true) { subnode.Checked = true; break; } } } } if (!DFLog.logformat.ContainsKey(type)) { CustomMessageBox.Show(Strings.NoFMTMessage + type + " - " + fieldname, Strings.ERROR); return; } int col = DFLog.FindMessageOffset(type, fieldname); // field does not exist if (col == -1) return; log.Info("Graphing " + type + " - " + fieldname ); PointPairList list1 = new PointPairList(); string header = fieldname; int b = 0; foreach (var item2 in logdata) { b++; if (!item2.StartsWith(type)) { a++; continue; } var item = DFLog.GetDFItemFromLine(item2, b); if (item.msgtype == type) { try { double value = double.Parse(item.items[col], System.Globalization.CultureInfo.InvariantCulture); if (dataModifier.IsValid()) { if (dataModifier.doOffsetFirst) { value += dataModifier.offset; value *= dataModifier.scalar; } else { value *= dataModifier.scalar; value += dataModifier.offset; } } // XDate time = new XDate(DateTime.Parse(datarow.Cells[1].Value.ToString())); list1.Add(a, value); } catch { error++; log.Info("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { CustomMessageBox.Show("There is to much bad data - failing"); break; } } } a++; } if (list1.Count < 1) return; LineItem myCurve; myCurve = zg1.GraphPane.AddCurve(header, list1, colours[zg1.GraphPane.CurveList.Count % colours.Length], SymbolType.None); leftorrightaxis(left, myCurve); // Make sure the Y axis is rescaled to accommodate actual data try { zg1.AxisChange(); } catch { } // Zoom all zg1.ZoomOutAll(zg1.GraphPane); try { DrawModes(); DrawErrors(); DrawTime(); } catch { } // Force a redraw zg1.Invalidate(); }
private void treeView1_DoubleClick(object sender, EventArgs e) { // apply a slope and offset to a selected child if (treeView1.SelectedNode.Parent == null) { // only apply scalers to children return; } string dataModifer_str = ""; string nodeName = DataModifer.GetNodeName(treeView1.SelectedNode.Parent.Text, treeView1.SelectedNode.Text); if (dataModifierHash.ContainsKey(nodeName)) { DataModifer initialDataModifier = (DataModifer)dataModifierHash[nodeName]; if (initialDataModifier.IsValid()) dataModifer_str = initialDataModifier.commandString; } string title = "Apply scaler and offset to " + nodeName; string instructions = "Enter modifer then value, they are applied in the order you provide. Modifiers are x + - /\n"; instructions += "Example: Convert cm to to m with an offset of 50: '/100 +50' or 'x0.01 +50' or '*0.01,+50'"; InputBox.Show(title, instructions, ref dataModifer_str); // if it's already there, remove it. dataModifierHash.Remove(nodeName); DataModifer dataModifer = new DataModifer(dataModifer_str); if (dataModifer.IsValid()) { dataModifierHash.Add(nodeName, dataModifer); } }
void GraphItem(string type, string fieldname, bool left = true, bool displayerror = true, bool isexpression = false) { DataModifer dataModifier = new DataModifer(); string nodeName = DataModifer.GetNodeName(type, fieldname); foreach (var curve in zg1.GraphPane.CurveList) { // its already on the graph, abort if (curve.Label.Text.StartsWith(nodeName+" (") || curve.Label.Text.StartsWith(nodeName + " R (")) return; } if (dataModifierHash.ContainsKey(nodeName)) { dataModifier = (DataModifer) dataModifierHash[nodeName]; } // ensure we tick the treeview foreach (TreeNode node in treeView1.Nodes) { if (node.Text == type) { foreach (TreeNode subnode in node.Nodes) { if (subnode.Text == fieldname && subnode.Checked != true) { subnode.Checked = true; break; } } } } if (!isexpression) { if (!dflog.logformat.ContainsKey(type)) { if (displayerror) CustomMessageBox.Show(Strings.NoFMTMessage + type + " - " + fieldname, Strings.ERROR); return; } log.Info("Graphing " + type + " - " + fieldname); Loading.ShowLoading("Graphing " + type + " - " + fieldname, this); ThreadPool.QueueUserWorkItem(o => GraphItem_GetList(fieldname, type, dflog, dataModifier, left)); } else { var list1 = DFLogScript.ProcessExpression(ref dflog, ref logdata, type); GraphItem_AddCurve(list1, type, fieldname, left); } }
void GraphItem(string type, string fieldname, bool left = true, bool displayerror = true) { double a = 0; // row counter int error = 0; DataModifer dataModifier = new DataModifer(); string nodeName = DataModifer.GetNodeName(type, fieldname); foreach (var curve in zg1.GraphPane.CurveList) { // its already on the graph, abort if (curve.Label.Text.Equals(nodeName) || curve.Label.Text.Equals(nodeName + " R")) return; } if (dataModifierHash.ContainsKey(nodeName)) { dataModifier = (DataModifer) dataModifierHash[nodeName]; } // ensure we tick the treeview foreach (TreeNode node in treeView1.Nodes) { if (node.Text == type) { foreach (TreeNode subnode in node.Nodes) { if (subnode.Text == fieldname && subnode.Checked != true) { subnode.Checked = true; break; } } } } if (!dflog.logformat.ContainsKey(type)) { if (displayerror) CustomMessageBox.Show(Strings.NoFMTMessage + type + " - " + fieldname, Strings.ERROR); return; } int col = dflog.FindMessageOffset(type, fieldname); // field does not exist if (col == -1) return; log.Info("Graphing " + type + " - " + fieldname); PointPairList list1 = new PointPairList(); string header = fieldname; double b = 0; DateTime screenupdate = DateTime.MinValue; foreach (var item in logdata.GetEnumeratorType(type)) { b = item.lineno; if (screenupdate.Second != DateTime.Now.Second) { Console.Write(b + " of " + logdata.Count + " \r"); screenupdate = DateTime.Now; } if (item.msgtype == type) { try { double value = double.Parse(item.items[col], System.Globalization.CultureInfo.InvariantCulture); if (dataModifier.IsValid()) { if (dataModifier.doOffsetFirst) { value += dataModifier.offset; value *= dataModifier.scalar; } else { value *= dataModifier.scalar; value += dataModifier.offset; } } if (chk_time.Checked) { var e = new DataGridViewCellValueEventArgs(1, (int) b); dataGridView1_CellValueNeeded(dataGridView1, e); XDate time = new XDate(DateTime.Parse(e.Value.ToString())); list1.Add(time, value); } else { list1.Add(b, value); } } catch { error++; log.Info("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { CustomMessageBox.Show("There is to much bad data - failing"); break; } } } a++; } if (list1.Count < 1) return; LineItem myCurve; myCurve = zg1.GraphPane.AddCurve(type + "." + header, list1, colours[zg1.GraphPane.CurveList.Count%colours.Length], SymbolType.None); leftorrightaxis(left, myCurve); // Make sure the Y axis is rescaled to accommodate actual data try { zg1.AxisChange(); } catch { } // Zoom all zg1.ZoomOutAll(zg1.GraphPane); try { DrawModes(); DrawErrors(); DrawTime(); } catch { } // Force a redraw zg1.Refresh(); }
void GraphItem_GetList(string fieldname, string type, DFLog dflog, DataModifer dataModifier, bool left) { int col = dflog.FindMessageOffset(type, fieldname); // field does not exist if (col == -1) return; PointPairList list1 = new PointPairList(); int error = 0; double a = 0; // row counter double b = 0; DateTime screenupdate = DateTime.MinValue; double value_prev = 0; foreach (var item in logdata.GetEnumeratorType(type)) { b = item.lineno; if (screenupdate.Second != DateTime.Now.Second) { Console.Write(b + " of " + logdata.Count + " \r"); screenupdate = DateTime.Now; } if (item.msgtype == type) { try { double value = double.Parse(item.items[col], System.Globalization.CultureInfo.InvariantCulture); // abandon realy bad data if (Math.Abs(value) > 9.15e8) { a++; continue; } if (dataModifier.IsValid()) { if ((a != 0) && Math.Abs(value - value_prev) > 1e5) { // there is a glitch in the data, reject it by replacing it with the previous value value = value_prev; } value_prev = value; if (dataModifier.doOffsetFirst) { value += dataModifier.offset; value *= dataModifier.scalar; } else { value *= dataModifier.scalar; value += dataModifier.offset; } } if (chk_time.Checked) { var e = new DataGridViewCellValueEventArgs(1, (int) b); dataGridView1_CellValueNeeded(dataGridView1, e); XDate time = new XDate(DateTime.Parse(e.Value.ToString())); list1.Add(time, value); } else { list1.Add(b, value); } } catch { error++; log.Info("Bad Data : " + type + " " + col + " " + a); if (error >= 500) { CustomMessageBox.Show("There is to much bad data - failing"); break; } } } a++; } Invoke((Action) delegate { GraphItem_AddCurve(list1, type, fieldname, left); }); }