Rearrange LeafCharter files
This commit is contained in:
@@ -1,59 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace LeafWeb.Web.Charter
|
||||
{
|
||||
[Serializable]
|
||||
public class CurveData
|
||||
{
|
||||
private readonly String _curveId;
|
||||
private readonly CurveParamSet _paramSet1;
|
||||
private readonly CurveParamSet _paramSet2;
|
||||
private readonly CurveParamSet _paramSet3;
|
||||
private readonly CurveParamSet _paramSet4;
|
||||
|
||||
public CurveData(StreamReader sr, ref String errMsg, ref int lineNbr)
|
||||
{
|
||||
// For each curve in the output file there are four sets of data.
|
||||
|
||||
_paramSet1 = new CurveParamSet(sr, ref errMsg, ref lineNbr, ref _curveId);
|
||||
if (errMsg.Length > 0)
|
||||
return;
|
||||
|
||||
_paramSet2 = new CurveParamSet(sr, ref errMsg, ref lineNbr, ref _curveId);
|
||||
if (errMsg.Length > 0)
|
||||
return;
|
||||
|
||||
_paramSet3 = new CurveParamSet(sr, ref errMsg, ref lineNbr, ref _curveId);
|
||||
if (errMsg.Length > 0)
|
||||
return;
|
||||
|
||||
_paramSet4 = new CurveParamSet(sr, ref errMsg, ref lineNbr, ref _curveId);
|
||||
}
|
||||
|
||||
public String GetCurveId()
|
||||
{
|
||||
return _curveId;
|
||||
}
|
||||
|
||||
public CurveParamSet CndctFixedCmpPntFixedParams()
|
||||
{
|
||||
return _paramSet1;
|
||||
}
|
||||
|
||||
public CurveParamSet CndctFixedCmpPntEstimatedParams()
|
||||
{
|
||||
return _paramSet2;
|
||||
}
|
||||
|
||||
public CurveParamSet CndctEstimatedCmpPntFixedParams()
|
||||
{
|
||||
return _paramSet3;
|
||||
}
|
||||
|
||||
public CurveParamSet CndctEstimatedCmpPntEstimatedParams()
|
||||
{
|
||||
return _paramSet4;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,238 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace LeafWeb.Web.Charter
|
||||
{
|
||||
[Serializable]
|
||||
public class CurveParamSet
|
||||
{
|
||||
private readonly List<XyPoint> _anetMeasChloro1Data; // y=AnetMeas column, x=PCO2c, for PointLimitType=1
|
||||
private readonly List<XyPoint> _anetMeasChloro2Data; // y=AnetMeas column, x=PCO2c, for PointLimitType=2
|
||||
private readonly List<XyPoint> _anetMeasChloro3Data; // y=AnetMeas column, x=PCO2c, for PointLimitType=3
|
||||
private readonly List<XyPoint> _anetMeasInter1Data; // y=AnetMeas column, x=PCO2i, for PointLimitType=1
|
||||
private readonly List<XyPoint> _anetMeasInter2Data; // y=AnetMeas column, x=PCO2i, for PointLimitType=2
|
||||
private readonly List<XyPoint> _anetMeasInter3Data; // y=AnetMeas column, x=PCO2i, for PointLimitType=3
|
||||
private readonly List<XyPoint> _acChloroData; // y=Ac column, x=CO2cc column
|
||||
private readonly List<XyPoint> _ajChloroData; // y=Aj column, x=CO2cj column
|
||||
private readonly List<XyPoint> _atChloroData; // y=At column, x=CO2ct column
|
||||
private readonly List<XyPoint> _acInterData; // y=Ac column, x=CO2i column
|
||||
private readonly List<XyPoint> _ajInterData; // y=Aj column, x=CO2i column
|
||||
private readonly List<XyPoint> _atInterData; // y=At column, x=CO2i column
|
||||
|
||||
public CurveParamSet()
|
||||
{
|
||||
}
|
||||
|
||||
public CurveParamSet(StreamReader sr, ref String errMsg, ref int lineNbr, ref String curveId)
|
||||
{
|
||||
bool curveIdSet = false, doneWithAnet = false;
|
||||
String line;
|
||||
var errorMsg = new StringBuilder("");
|
||||
List<string> phrases;
|
||||
XyPoint xyPoint1;
|
||||
_anetMeasChloro1Data = new List<XyPoint>();
|
||||
_anetMeasChloro2Data = new List<XyPoint>();
|
||||
_anetMeasChloro3Data = new List<XyPoint>();
|
||||
_anetMeasInter1Data = new List<XyPoint>();
|
||||
_anetMeasInter2Data = new List<XyPoint>();
|
||||
_anetMeasInter3Data = new List<XyPoint>();
|
||||
_acChloroData = new List<XyPoint>();
|
||||
_ajChloroData = new List<XyPoint>();
|
||||
_atChloroData = new List<XyPoint>();
|
||||
_acInterData = new List<XyPoint>();
|
||||
_ajInterData = new List<XyPoint>();
|
||||
_atInterData = new List<XyPoint>();
|
||||
|
||||
while (!doneWithAnet)
|
||||
{
|
||||
lineNbr++;
|
||||
line = sr.ReadLine();
|
||||
if (line == null)
|
||||
{
|
||||
errorMsg.Append("Unexpected end-of-file at line " + lineNbr);
|
||||
sr.Close();
|
||||
errMsg = errorMsg.ToString();
|
||||
return;
|
||||
}
|
||||
|
||||
phrases = SplitCsvLine(line);
|
||||
|
||||
String firstField = phrases[0];
|
||||
if (firstField.Equals("CO2i"))
|
||||
{
|
||||
doneWithAnet = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// The fields on the line:
|
||||
// Column Name
|
||||
// 0 CurveID
|
||||
// 1 ChlFlUse
|
||||
// 2 FitGi
|
||||
// 3 FitGamma
|
||||
// 4 FitKco
|
||||
// 5 FitRd
|
||||
// 6 FitAlpha
|
||||
// 7 LimitCombina
|
||||
// 8 PCO2i
|
||||
// 9 PCO2c
|
||||
// 10 AnetMeas
|
||||
// 11 AnetCal
|
||||
// 12 weitedrms
|
||||
// 13 PointLimitType
|
||||
|
||||
if (!curveIdSet)
|
||||
{
|
||||
curveId = firstField;
|
||||
curveIdSet = true;
|
||||
}
|
||||
xyPoint1 = new XyPoint(phrases[9], phrases[10]); // AnetMeas(y), PCO2c(x)
|
||||
var xyPoint2 = new XyPoint(phrases[8], phrases[10]);
|
||||
var pointLimitType = Int32.Parse(phrases[13]);
|
||||
switch (pointLimitType)
|
||||
{
|
||||
case 1:
|
||||
_anetMeasChloro1Data.Add(xyPoint1);
|
||||
_anetMeasInter1Data.Add(xyPoint2);
|
||||
break;
|
||||
case 2:
|
||||
_anetMeasChloro2Data.Add(xyPoint1);
|
||||
_anetMeasInter2Data.Add(xyPoint2);
|
||||
break;
|
||||
case 3:
|
||||
_anetMeasChloro3Data.Add(xyPoint1);
|
||||
_anetMeasInter3Data.Add(xyPoint2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The next set of lines will have three pairs of x,y-coordinates to save.
|
||||
// A blank line signals the end of the data.
|
||||
|
||||
var moreData = true;
|
||||
while (moreData)
|
||||
{
|
||||
// The fields on the line:
|
||||
// Column Name
|
||||
// 0 CO2i
|
||||
// 1 CO2cc
|
||||
// 2 Ac
|
||||
// 3 CO2cj
|
||||
// 4 Aj
|
||||
// 5 CO2ct
|
||||
// 6 At
|
||||
|
||||
lineNbr++;
|
||||
line = sr.ReadLine();
|
||||
if (line == null)
|
||||
{
|
||||
errorMsg.Append("Unexpected end-of-file at line " + lineNbr);
|
||||
sr.Close();
|
||||
errMsg = errorMsg.ToString();
|
||||
return;
|
||||
}
|
||||
|
||||
if (line.Length == 0)
|
||||
moreData = false;
|
||||
else
|
||||
{
|
||||
phrases = SplitCsvLine(line);
|
||||
xyPoint1 = new XyPoint(phrases[1],phrases[2]); // Ac(y),CO2cc(x)
|
||||
if (xyPoint1.YIsInRange(-20.0, 50.0))
|
||||
_acChloroData.Add(xyPoint1);
|
||||
xyPoint1 = new XyPoint(phrases[3], phrases[4]); // Aj(y),CO2cj(x)
|
||||
if (xyPoint1.YIsInRange(-20.0, 50.0))
|
||||
_ajChloroData.Add(xyPoint1);
|
||||
xyPoint1 = new XyPoint(phrases[5], phrases[6]); // At(y),CO2ct(x)
|
||||
if (xyPoint1.YIsInRange(-20.0, 50.0))
|
||||
_atChloroData.Add(xyPoint1);
|
||||
|
||||
xyPoint1 = new XyPoint(phrases[0], phrases[2]); // Ac(y),CO2i(x)
|
||||
if (xyPoint1.YIsInRange(-20.0, 50.0))
|
||||
_acInterData.Add(xyPoint1);
|
||||
xyPoint1 = new XyPoint(phrases[0], phrases[4]); // Aj(y),CO2i(x)
|
||||
if (xyPoint1.YIsInRange(-20.0, 50.0))
|
||||
_ajInterData.Add(xyPoint1);
|
||||
xyPoint1 = new XyPoint(phrases[0], phrases[6]); // At(y),CO2i(x)
|
||||
if (xyPoint1.YIsInRange(-20.0, 50.0))
|
||||
_atInterData.Add(xyPoint1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method assumes that the argument is a comma-, blank-, or
|
||||
/// tab-separated set of strings. It returns an ArrayList of those
|
||||
/// quantities. Consecutive commas will be returned as an empty string,
|
||||
/// but all empty strings at the end of the line will be thrown away.
|
||||
/// </summary>
|
||||
/// <param name="line"></param>
|
||||
/// <returns></returns>
|
||||
private static List<string> SplitCsvLine(String line)
|
||||
{
|
||||
int i;
|
||||
var separator = new [] {',', ' ', '\t'};
|
||||
var phrases = line.Split(separator);
|
||||
|
||||
//int lastNonBlank = -1;
|
||||
var retPhrases = new List<string>();
|
||||
for (i = 0; i < phrases.Length; i++)
|
||||
{
|
||||
var phrase = phrases[i].Trim();
|
||||
if (phrase.Length > 0)
|
||||
// lastNonBlank = i;
|
||||
retPhrases.Add(phrase);
|
||||
}
|
||||
|
||||
return retPhrases;
|
||||
}
|
||||
|
||||
public List<List<XyPoint>> GetAnetMeasData()
|
||||
{
|
||||
var list = new List<List<XyPoint>>
|
||||
{
|
||||
_anetMeasChloro1Data,
|
||||
_anetMeasChloro2Data,
|
||||
_anetMeasChloro3Data,
|
||||
_anetMeasInter1Data,
|
||||
_anetMeasInter2Data,
|
||||
_anetMeasInter3Data
|
||||
};
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<XyPoint> GetAcChloroData()
|
||||
{
|
||||
return _acChloroData;
|
||||
}
|
||||
|
||||
public List<XyPoint> GetAjChloroData()
|
||||
{
|
||||
return _ajChloroData;
|
||||
}
|
||||
|
||||
public List<XyPoint> GetAtChloroData()
|
||||
{
|
||||
return _atChloroData;
|
||||
}
|
||||
|
||||
public List<XyPoint> GetAcInterData()
|
||||
{
|
||||
return _acInterData;
|
||||
}
|
||||
|
||||
public List<XyPoint> GetAjInterData()
|
||||
{
|
||||
return _ajInterData;
|
||||
}
|
||||
|
||||
public List<XyPoint> GetAtInterData()
|
||||
{
|
||||
return _atInterData;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,15 +6,15 @@ using System.IO;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.DataVisualization.Charting;
|
||||
using System.Web.UI.WebControls;
|
||||
using LeafWeb.Core.Models;
|
||||
|
||||
namespace LeafWeb.Web.Charter
|
||||
{
|
||||
|
||||
public partial class LeafWebCharter : UserControl
|
||||
{
|
||||
protected void ReadFile(StreamReader sr, ref String errMsg)
|
||||
{
|
||||
var pisOut = new PiscalOutput();
|
||||
var pisOut = new CntrlComparison();
|
||||
if (!pisOut.ReadFromStream(sr, ref errMsg))
|
||||
{
|
||||
ErrorLBL.Text = errMsg;
|
||||
@@ -22,7 +22,7 @@ namespace LeafWeb.Web.Charter
|
||||
return;
|
||||
}
|
||||
Session["LeafChartData"] = pisOut;
|
||||
var aCopy = (PiscalOutput) Session["LeafChartData"];
|
||||
var aCopy = (CntrlComparison) Session["LeafChartData"];
|
||||
|
||||
// The data was successfully read from the file. We must now
|
||||
// display the curveIDs from the file and prompt the user to pick
|
||||
@@ -48,7 +48,7 @@ namespace LeafWeb.Web.Charter
|
||||
|
||||
|
||||
// cntrlcomparison
|
||||
public void ProduceCharts(PiscalOutput pisOut)
|
||||
public void ProduceCharts(CntrlComparison pisOut)
|
||||
{
|
||||
// If the session has timed out, use the selected index from the GridView
|
||||
// to determine which job to chart.
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace LeafWeb.Web.Charter
|
||||
{
|
||||
[Serializable]
|
||||
public class PiscalOutput
|
||||
{
|
||||
// Each element will be a PiscalCurve element that contains
|
||||
// all of the output data for one curve.
|
||||
private readonly List<CurveData> _curveData;
|
||||
|
||||
public PiscalOutput()
|
||||
{
|
||||
_curveData = new List<CurveData>();
|
||||
}
|
||||
|
||||
public bool ReadFromStream(StreamReader sr, ref String errorMsg)
|
||||
{
|
||||
// Skip the first two lines.
|
||||
sr.ReadLine();
|
||||
sr.ReadLine();
|
||||
var lineNbr = 2;
|
||||
|
||||
// Now, there should be one or more rows, delimited by a row that has
|
||||
// CO2i in the first field. Read in all of these rows. The first field
|
||||
// in each row is the curve ID (input filename).
|
||||
|
||||
var more = true;
|
||||
while (more)
|
||||
{
|
||||
var curve = new CurveData(sr, ref errorMsg, ref lineNbr);
|
||||
if (errorMsg.Length > 0)
|
||||
return false;
|
||||
|
||||
_curveData.Add(curve);
|
||||
if (sr.EndOfStream)
|
||||
more = false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<CurveData> GetCurveData()
|
||||
{
|
||||
return _curveData;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace LeafWeb.Web.Charter
|
||||
{
|
||||
[Serializable]
|
||||
public class XyPoint
|
||||
{
|
||||
public XyPoint(String x, String y)
|
||||
{
|
||||
X = Double.Parse(x);
|
||||
Y = Double.Parse(y);
|
||||
}
|
||||
|
||||
public double X { get; private set; }
|
||||
|
||||
public double Y { get; private set; }
|
||||
|
||||
public bool YIsInRange(double lowEnd, double highEnd)
|
||||
{
|
||||
return (Y >= lowEnd) && (Y <= highEnd);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user