private void BindPredictedObservedVariables(int predictedObservedId) { List <vVariable> VariableList = PredictedObservedDS.GetVariablesByPredictedObservedID(predictedObservedId); ddlVariables.DataSource = VariableList; ddlVariables.DataBind(); }
/// <summary> /// Get the PredictedObserved Details based on the Predicted Observed Id, and then call /// BindCurrentAcceptedValues, passing the requrid details /// </summary> /// <param name="variable"></param> /// <param name="predictedObservedId"></param> private void BindCurrentAcceptedChartAndValues(bool updateChart) { string variable = ddlVariables.SelectedItem.Text; int predictedObservedId = int.Parse(Convert.ToString(hfPredictedObservedID.Value)); PredictedObservedDetail currPODetails = PredictedObservedDS.GetByPredictedObservedID(predictedObservedId); POValuesList = BindCurrentAcceptedValuesssssss(variable, currPODetails); POValuesDT = Genfuncs.ToDataTable(POValuesList); Session["POValuesDT"] = POValuesDT; gvPOValues.DataSource = POValuesDT; gvPOValues.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); gvPOValues.DataBind(); UpdatePanel2.Update(); if (updateChart == true) { BindCurrentAcceptedChart(variable, POValuesList); UpdatePanel4.Update(); } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { int predictedObservedId = 0; if (!string.IsNullOrEmpty(Request.QueryString["PO_Id"])) { predictedObservedId = int.Parse(Request.QueryString["PO_Id"]); } if (predictedObservedId > 0) { hfPredictedObservedID.Value = predictedObservedId.ToString(); PredictedObservedDetail currPODetails = PredictedObservedDS.GetByPredictedObservedID(predictedObservedId); ApsimFile apsim = ApsimFilesDS.GetByID(currPODetails.ApsimFilesID); hfPullRequestID.Value = apsim.PullRequestId.ToString(); lblPullRequest.Text = "Pull Request: " + apsim.PullRequestId.ToString(); lblApsimFile.Text = "Apsim File: " + apsim.FileName; lblPOTableName.Text = "Table: " + currPODetails.TableName + " (PO Id: " + currPODetails.ID.ToString() + ")"; //now bind the data RetrieveDataAndBindCharts(currPODetails); } } }
private List <vCurrentAndAccepted> BindCurrentAcceptedValuesssssss(String variable, PredictedObservedDetail currPODetails) { List <vCurrentAndAccepted> POCurrentValuesList; //some of the older records may not have this yet. So find it the old way. if ((currPODetails.AcceptedPredictedObservedDetailsID == null) || (currPODetails.AcceptedPredictedObservedDetailsID <= 0)) { //Retrieve the curresponding (parent) ApsimFile for this PredictedObservedDetail ApsimFile apsimFile = ApsimFilesDS.GetByID(currPODetails.ApsimFilesID); //get the Pull Request Id for the lastest released pull request that is not the current one int acceptPullRequestId = ApsimFilesDS.GetLatestMergedPullRequestId(apsimFile.PullRequestId); //get the PredictedObservedDetail.ID for the records that match our current record 'matching' criteria currPODetails.AcceptedPredictedObservedDetailsID = PredictedObservedDS.GetIDByMatchingDetails(acceptPullRequestId, apsimFile.FileName, currPODetails.TableName, currPODetails.PredictedTableName, currPODetails.ObservedTableName, currPODetails.FieldNameUsedForMatch); } POCurrentValuesList = PredictedObservedDS.GetCurrentAcceptedValuesWithNulls(variable, currPODetails.ID, (int)currPODetails.AcceptedPredictedObservedDetailsID); //POCurrentValuesList = PredictedObservedDS.GetCurrentAcceptedValues(variable, currPODetails.ID, (int)currPODetails.AcceptedPredictedObservedDetailsID); //get the data to be displayed in the chart and grid //POValuesList = PredictedObservedDS.GetCurrentAcceptedValues(variable, currPODetails.ID, (int)currPODetails.AcceptedPredictedObservedDetailsID); //POValuesDT = Genfuncs.ToDataTable(POCurrentValuesList); return(POCurrentValuesList); }
private void BindVariableNames(string fileName, string tableName) { List <vVariable> variableNameList = PredictedObservedDS.GetDistinctVariableNames(fileName, tableName); vVariable selectItem = new vVariable(); selectItem.Name = "Select a Variable"; selectItem.Value = "0"; variableNameList.Insert(0, selectItem); ddlVariableName.DataSource = variableNameList; ddlVariableName.DataBind(); }
private void BindPredictedObservedTestsDiffs() { //lblTests.Text = "Tests for " + variable; //get the data to be displayed in the chart and grid int pullRequestId = int.Parse(hfPullRequestID.Value.ToString()); POTestsList = PredictedObservedDS.GetCurrentAcceptedTestsDiffsSubset(pullRequestId); POTestsDT = Genfuncs.ToDataTable(POTestsList); Session["POTestsDT"] = POTestsDT; }
private void BindTableNames(string renameType, string fileName) { List <vVariable> tableNameList = PredictedObservedDS.GetDistinctTableNames(fileName); vVariable selectItem = new vVariable(); selectItem.Name = "Select a Table"; selectItem.Value = "0"; tableNameList.Insert(0, selectItem); ddlTableName.DataSource = tableNameList; ddlTableName.DataBind(); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { int predictedObservedId = 0; string variable = string.Empty; if (!string.IsNullOrEmpty(Request.QueryString["PO_Id"])) { predictedObservedId = int.Parse(Request.QueryString["PO_Id"]); } if (predictedObservedId > 0) { hfPredictedObservedID.Value = predictedObservedId.ToString(); PredictedObservedDetail currPODetails = PredictedObservedDS.GetByPredictedObservedID(predictedObservedId); ApsimFile apsim = ApsimFilesDS.GetByID(currPODetails.ApsimFilesID); hfPullRequestID.Value = apsim.PullRequestId.ToString(); Session["POTestsDT"] = null; BindCurrentAcceptedTestsDataTable(); lblPullRequest.Text = "Pull Request: " + apsim.PullRequestId.ToString(); lblApsimFile.Text = "Apsim File: " + apsim.FileName; lblPOTableName.Text = "Table: " + currPODetails.TableName + " (PO Id: " + currPODetails.ID.ToString() + ")"; if (!string.IsNullOrEmpty(Request.QueryString["Variable"])) { //LoadTimer.Enabled = false; variable = Request.QueryString["Variable"].ToString(); BindPredictedObservedVariables(currPODetails.ID); ddlVariables.SelectedValue = variable; ClientScript.RegisterStartupScript(this.GetType(), "ScrollScript", "scrollToDiv();", true); } else { BindPredictedObservedVariables(currPODetails.ID); } //if (gvPOTests.Rows.Count > 0) //{ // //NOTE: This is registered using the ClientScript (not ScriptManager), with different parameters, as this grid is NOT in an update panel // ClientScript.RegisterStartupScript(this.GetType(), "CreateGridHeader", "<script>CreateGridHeader('GridDataDiv_POTests', 'ContentPlaceHolder1_gvPOTests', 'GridHeaderDiv_POTests');</script>"); //} } } //if (gvPOValues.Rows.Count > 0) //{ // //NOTE: This is registered using the ScriptManager (not ClientScript), with different parameters, as this grid is nested in an update panel // ScriptManager.RegisterStartupScript(this, GetType(), "CreateGridHeader_POValues", "CreateGridHeader('GridDataDiv_POValues', 'ContentPlaceHolder1_gvPOValues', 'GridHeaderDiv_POValues');", true); //} }
private string GetPredictedObservedIDforPullRequestID(int predictedObservedId, int pullRequestId, string fileName, string tablename) { int altAcceptedPredictedObservedDetailsID = 0; try { //get the PredictedObservedDetail.ID for the records that match our current record 'matching' criteria altAcceptedPredictedObservedDetailsID = PredictedObservedDS.GetIDByMatchingDetails(pullRequestId, fileName, tablename); } catch (Exception) { } return(altAcceptedPredictedObservedDetailsID.ToString()); }
/// <summary> /// Retrieve the Tests data for the specified predicted observed id /// </summary> /// <param name="predictedObservedId"></param> private void BindCurrentAcceptedTests() { int predictedObservedId = int.Parse(hfPredictedObservedID.Value.ToString()); POTestsList = PredictedObservedDS.GetCurrentAcceptedTestsSubset(predictedObservedId); POTestsDT = Genfuncs.ToDataTable(POTestsList); Session["POTestsDT"] = POTestsDT; //if (gvPOTests.Rows.Count > 0) //{ // //NOTE: This is registered using the ClientScript (not ScriptManager), with different parameters, as this grid is NOT in an update panel // ClientScript.RegisterStartupScript(this.GetType(), "CreateGridHeader", "<script>CreateGridHeader('GridDataDiv_POTests', 'ContentPlaceHolder1_gvPOTests', 'GridHeaderDiv_POTests');</script>"); //} }
private void RetrieveDataAndBindCharts(PredictedObservedDetail currPODetails) { //some of the older records may not have this yet. So find it the old way. if ((currPODetails.AcceptedPredictedObservedDetailsID == null) || (currPODetails.AcceptedPredictedObservedDetailsID <= 0)) { //Retrieve the curresponding (parent) ApsimFile for this PredictedObservedDetail ApsimFile apsimFile = ApsimFilesDS.GetByID(currPODetails.ApsimFilesID); //get the Pull Request Id for the lastest released pull request that is not the current one int acceptPullRequestId = ApsimFilesDS.GetLatestMergedPullRequestId(apsimFile.PullRequestId); //get the PredictedObservedDetail.ID for the records that match our current record 'matching' criteria currPODetails.AcceptedPredictedObservedDetailsID = PredictedObservedDS.GetIDByMatchingDetails(acceptPullRequestId, apsimFile.FileName, currPODetails.TableName, currPODetails.PredictedTableName, currPODetails.ObservedTableName, currPODetails.FieldNameUsedForMatch); } List <vSimulationPredictedObserved> POCurrentValuesList = PredictedObservedDS.GetCurrentAcceptedSimulationValues(currPODetails.ID, (int)currPODetails.AcceptedPredictedObservedDetailsID); string holdVariable = string.Empty; string holdSimulationName = string.Empty; string tooltip = string.Empty; string textAnnotation = string.Empty; List <PODataPoint> acceptedData = new List <PODataPoint>(); List <PODataPoint> currentData = new List <PODataPoint>(); double maxXYValue = 0; bool newchart = false; int chartNo = 0; foreach (vSimulationPredictedObserved item in POCurrentValuesList) { if (holdVariable == string.Empty) { holdVariable = item.ValueName; holdSimulationName = item.SimulationName; tooltip = String.Format("{0} - {1}", item.SimulationName, item.ValueName); } newchart = false; //if (item.SimulationName != holdSimulationName) { newchart = true; } if (item.ValueName != holdVariable) { newchart = true; } if (newchart == true) { //create the chart if ((currentData.Count > 0) || (currentData.Count > 0)) { chartNo += 1; textAnnotation = GetPredictedObservedTests(currPODetails.ID, holdVariable); BindCurrentAcceptedChart(chartNo, holdVariable, currPODetails.ID, tooltip, currentData.ToArray(), acceptedData.ToArray(), maxXYValue, textAnnotation); } //reset the variables acceptedData.Clear(); currentData.Clear(); maxXYValue = 0; holdVariable = item.ValueName; holdSimulationName = item.SimulationName; } if ((item.AcceptedObservedValue != null) && (item.AcceptedPredictedValue != null)) { acceptedData.Add(new PODataPoint() { X = (double)item.AcceptedObservedValue, Y = (double)item.AcceptedPredictedValue, SimulationName = item.SimulationName }); if ((double)item.AcceptedObservedValue > maxXYValue) { maxXYValue = (double)item.AcceptedObservedValue; } if ((double)item.AcceptedPredictedValue > maxXYValue) { maxXYValue = (double)item.AcceptedPredictedValue; } } if ((item.CurrentObservedValue != null) && (item.CurrentPredictedValue != null)) { currentData.Add(new PODataPoint() { X = (double)item.CurrentObservedValue, Y = (double)item.CurrentPredictedValue, SimulationName = item.SimulationName }); if ((double)item.CurrentObservedValue > maxXYValue) { maxXYValue = (double)item.CurrentObservedValue; } if ((double)item.CurrentPredictedValue > maxXYValue) { maxXYValue = (double)item.CurrentPredictedValue; } } } if ((currentData.Count > 0) || (acceptedData.Count > 0)) { chartNo += 1; textAnnotation = GetPredictedObservedTests(currPODetails.ID, holdVariable); BindCurrentAcceptedChart(chartNo, holdVariable, currPODetails.ID, tooltip, currentData.ToArray(), acceptedData.ToArray(), maxXYValue, textAnnotation); } }
private string GetPredictedObservedTests(int currentPoID, string variable) { StringBuilder sb = new StringBuilder(); string returnTests = string.Empty; //double? cIntercept = 0, cMAE = 0, cME = 0, cn = 0, cNSE = 0, cR2 = 0, cRMSE = 0, cRSR = 0, cSEintercept = 0, cSEslope = 0, cSlope = 0; //double? aIntercept = 0, aMAE = 0, aME = 0, an = 0, aNSE = 0, aR2 = 0, aRMSE = 0, aRSR = 0, aSEintercept = 0, aSEslope = 0, aSlope = 0; string cIntercept = string.Empty, aIntercept = string.Empty, cSlope = string.Empty, aSlope = string.Empty; //string htmlCodeBlack = "<font style='color:black'>"; //string htmlCodeRed = "<font style='color:red'>"; //string htmlCodeGreen = "<font style='color:green'>"; //string htmlCodeEnd = "</font>"; string newLine = " \n"; string strCurrentY = "Y="; string strCurrentR2 = "R2="; string strCurrentNSE = "NSE="; string strCurrentRMSE = "RMSE="; string strCurrentME = "ME="; string strCurrentMAE = "MAE="; string strCurrentN = "N="; string strAcceptedY = "Y="; string strAcceptedR2 = "R2="; string strAcceptedNSE = "NSE="; string strAcceptedRMSE = "RMSE="; string strAcceptedME = "ME="; string strAcceptedMAE = "MAE="; string strAcceptedN = "N="; string itemCurrentStr = string.Empty; List <vPredictedObservedTestsFormatted> tests = PredictedObservedDS.GetPredictedObservedTestFormatted(currentPoID, variable); foreach (vPredictedObservedTestsFormatted item in tests) { try { itemCurrentStr = item.CurrentF; switch (item.Test) { case "Intercept": aIntercept = item.AcceptedF; cIntercept = itemCurrentStr; break; case "MAE": strAcceptedMAE = strAcceptedMAE + item.AcceptedF; strCurrentMAE = strCurrentMAE + itemCurrentStr; break; case "ME": strAcceptedME = strAcceptedME + item.AcceptedF; strCurrentME = strCurrentME + itemCurrentStr; break; case "n": strAcceptedN = strAcceptedN + item.AcceptedF; strCurrentN = strCurrentN + itemCurrentStr; break; case "NSE": strAcceptedNSE = strAcceptedNSE + item.AcceptedF; strCurrentNSE = strCurrentNSE + itemCurrentStr; break; case "R2": strAcceptedR2 = strAcceptedR2 + item.AcceptedF; strCurrentR2 = strCurrentR2 + itemCurrentStr; break; case "RMSE": strAcceptedRMSE = strAcceptedRMSE + item.AcceptedF; strCurrentRMSE = strCurrentRMSE + itemCurrentStr; break; case "Slope": aSlope = item.AcceptedF; cSlope = itemCurrentStr; break; } } catch (Exception) { } } strCurrentY = strCurrentY + cSlope + "x + " + cIntercept; strAcceptedY = strAcceptedY + aSlope + "x + " + aIntercept; sb.Append("ACCEPTED" + newLine); sb.Append(strAcceptedY + newLine); sb.Append(strAcceptedR2 + newLine); sb.Append(strAcceptedRMSE + newLine); sb.Append(strAcceptedME + newLine); sb.Append(strAcceptedMAE + newLine); sb.Append(strAcceptedN + newLine); sb.Append(newLine + "CURRENT" + newLine); sb.Append(strCurrentY + newLine); sb.Append(strCurrentR2 + newLine); sb.Append(strCurrentRMSE + newLine); sb.Append(strCurrentME + newLine); sb.Append(strCurrentMAE + newLine); sb.Append(strCurrentN + newLine); returnTests = sb.ToString(); return(returnTests); }
private void RetrieveDataAndBindCharts() { int pullRequestId = int.Parse(hfPullRequestID.Value.ToString()); List <vPredictedObservedTests> POTestsList = PredictedObservedDS.GetCurrentAcceptedTests(pullRequestId); bool newchart = false; string holdFileName = string.Empty; string holdTableName = string.Empty; string holdVariable = string.Empty; string holdTitle = string.Empty; string holdPO_Id = string.Empty; string tooltip = string.Empty; //string[] xValues = { "September", "October", "November", "December" }; //double[] yValues = { 15, 60, 12, 13 }; List <string> AcceptedXValues = new List <string>(); List <double> AcceptedYValues = new List <double>(); List <Color> AcceptedColours = new List <Color>(); List <string> CurrentXValues = new List <string>(); List <double> CurrentYValues = new List <double>(); List <Color> CurrentColours = new List <Color>(); Color currColour, accColour; int chartNo = 0; foreach (vPredictedObservedTests item in POTestsList) { //this is the first instance if (holdFileName == string.Empty) { holdFileName = item.FileName; holdTableName = item.TableName; holdVariable = item.Variable; holdPO_Id = item.PredictedObservedDetailsID.ToString(); } newchart = false; if (item.FileName != holdFileName) { newchart = true; } if (item.TableName != holdTableName) { newchart = true; } if (item.Variable != holdVariable) { newchart = true; } if (newchart == true) { if ((AcceptedXValues.Count > 0) || (CurrentXValues.Count > 0)) { chartNo += 1; tooltip = string.Format("{0} - {1}", holdFileName, holdTableName); CreateCharts(chartNo, holdVariable, holdPO_Id, tooltip, AcceptedColours.ToArray(), AcceptedXValues.ToArray(), AcceptedYValues.ToArray(), CurrentColours.ToArray(), CurrentXValues.ToArray(), CurrentYValues.ToArray()); } //clear these for next time AcceptedXValues = new List <string>(); AcceptedYValues = new List <double>(); AcceptedColours = new List <Color>(); CurrentXValues = new List <string>(); CurrentYValues = new List <double>(); CurrentColours = new List <Color>(); holdFileName = item.FileName; holdTableName = item.TableName; holdVariable = item.Variable; holdPO_Id = item.PredictedObservedDetailsID.ToString(); } if ((item.Test != "n") && (item.Test != "RMSE")) { if (item.Accepted != null) { AcceptedXValues.Add(item.Test); AcceptedYValues.Add((double)item.Accepted); if (Math.Abs((double)item.Accepted) > 1) { accColour = Color.Black; } else { accColour = Color.Gray; } AcceptedColours.Add(accColour); } if (item.Current != null) { try { CurrentXValues.Add(item.Test); CurrentYValues.Add((double)item.Current); if (Math.Abs((double)item.Current) > 1) { currColour = Color.Orange; } else if (((bool)item.IsImprovement) || ((bool)item.PassedTest)) { currColour = Color.Green; } else if (item.Accepted != null) { if ((double)item.Current == (double)item.Accepted) { currColour = Color.Gray; } else { currColour = Color.Red; } } else { currColour = Color.Red; } CurrentColours.Add(currColour); } catch (Exception ex) { } } } } if ((AcceptedXValues.Count > 0) || (CurrentXValues.Count > 0)) { chartNo += 1; tooltip = string.Format("{0} - {1}", holdFileName, holdTableName); CreateCharts(chartNo, holdVariable, holdPO_Id, tooltip, AcceptedColours.ToArray(), AcceptedXValues.ToArray(), AcceptedYValues.ToArray(), CurrentColours.ToArray(), CurrentXValues.ToArray(), CurrentYValues.ToArray()); } }
//private void myChart_Click(object sender, System.Web.UI.WebControls.ImageMapEventArgs e) //{ // string PO_Id = e.PostBackValue; // Response.Redirect(string.Format("PODetails.aspx?PO_Id={0}", PO_Id)); //} #endregion #region Data Retreval and Binding private void RetrieveDataAndBindGrids() { AddPerformanceRatingTable(); int pullRequestId = int.Parse(hfPullRequestID.Value.ToString()); List <vPredictedObservedTests> POTestsList = PredictedObservedDS.GetCurrentAcceptedTestsFiltered(pullRequestId); bool newVariable = false; string holdFileName = string.Empty; string holdTableName = string.Empty; string holdVariable = string.Empty; string currPO_ID = string.Empty; bool firstVariable = true; bool firstFileName = true; string ArrowChars = "✔"; string CrossChars = "✘"; string diff = string.Empty; string N_Current = string.Empty, N_Accepted = string.Empty; string RMSE_Current = string.Empty, RMSE_Accepted = string.Empty, RMSE_Difference = string.Empty; string NSE_Current = string.Empty, NSE_Accepted = string.Empty, NSE_Difference = string.Empty; string Bias_Current = string.Empty, Bias_Accepted = string.Empty, Bias_Difference = string.Empty; string RSR_Current = string.Empty, RSR_Accepted = string.Empty, RSR_Difference = string.Empty; bool hasChanged = false; Table table = new Table(); table.CssClass = "TGR_Table"; table.Rows.Add(DefineTableStructure()); foreach (vPredictedObservedTests item in POTestsList) { //this is the first instance newVariable = false; if (item.Variable != holdVariable) { newVariable = true; } if (newVariable == true) { //we need to output details //have we output the actual file name details //NEED TO ALLOW FOR FIRST TIME OUTPUT if (firstFileName == true) { table.Rows.Add(DefineSimNameRow(item.FileName)); holdFileName = item.FileName; firstVariable = true; table.Rows.Add(DefineTableRow(item.TableName)); holdTableName = item.TableName; firstFileName = false; } if (holdVariable != string.Empty) { //then we can print the variable details table.Rows.Add(DefineTableVariableRow(holdVariable, currPO_ID, N_Current, N_Accepted, RMSE_Current, RMSE_Accepted, RMSE_Difference, NSE_Current, NSE_Accepted, NSE_Difference, RSR_Current, RSR_Accepted, RSR_Difference, hasChanged)); N_Current = string.Empty; N_Accepted = string.Empty; RMSE_Current = string.Empty; RMSE_Accepted = string.Empty; RMSE_Difference = string.Empty; NSE_Current = string.Empty; NSE_Accepted = string.Empty; NSE_Difference = string.Empty; RSR_Current = string.Empty; RSR_Accepted = string.Empty; RSR_Difference = string.Empty; currPO_ID = string.Empty; hasChanged = false; } if (item.FileName != holdFileName) { table.Rows[table.Rows.Count - 1].Style.Add("margin-bottom", "1em"); table.Rows.Add(DefineSimNameRow(item.FileName)); holdFileName = item.FileName; firstVariable = true; //alway output the PO table when we change filename table.Rows.Add(DefineTableRow(item.TableName)); holdTableName = item.TableName; } //have we output the table name details if (item.TableName != holdTableName) { table.Rows.Add(DefineTableRow(item.TableName)); holdTableName = item.TableName; firstVariable = false; } //holdTableName = item.TableName; firstVariable = false; } bool isImprovement = false; if (item.IsImprovement != null) { isImprovement = (bool)item.IsImprovement; } bool passedTest = false; if (item.PassedTest != null) { passedTest = (bool)item.PassedTest; } diff = string.Empty; if (isImprovement == true) { hasChanged = true; diff = "<span style=\"font-weight: bold; color: Green;\">" + ArrowChars + "</span>"; } else if (passedTest != true) { hasChanged = true; diff = "<span style=\"font-weight: bold; color: Red;\">" + CrossChars + "</span>"; } switch (item.Test) { case "RMSE": RMSE_Current = FormatSignificant(item.Current, 6, false); RMSE_Accepted = FormatSignificant(item.Accepted, 6, true); RMSE_Difference = diff; break; case "NSE": NSE_Current = RoundValues(item.Current, 3, false); NSE_Accepted = RoundValues(item.Accepted, 3, true); if (item.Current != null) { if (((double)item.Current > 0.75) && ((double)item.Current <= 1.00)) { diff = diff + "***"; } if (((double)item.Current > 0.65) && ((double)item.Current <= 0.75)) { diff = diff + "**"; } if (((double)item.Current > 0.50) && ((double)item.Current <= 0.65)) { diff = diff + "*"; } } NSE_Difference = diff; break; case "n": N_Current = RoundValues(item.Current, 0, false); N_Accepted = RoundValues(item.Accepted, 0, true); break; case "RSR": RSR_Current = RoundValues(item.Current, 3, false); RSR_Accepted = RoundValues(item.Accepted, 3, true); if (item.Current != null) { if (((double)item.Current >= 0.00) && ((double)item.Current <= 0.50)) { diff = diff + "***"; } if (((double)item.Current > 0.50) && ((double)item.Current <= 0.60)) { diff = diff + "**"; } if (((double)item.Current > 0.60) && ((double)item.Current <= 0.70)) { diff = diff + "*"; } } RSR_Difference = diff; break; } //we need this for the hyperlink currPO_ID = item.PredictedObservedDetailsID.ToString(); holdVariable = item.Variable; } //output details here //have we output the table name details if (holdVariable != string.Empty) { //then we can print the variable details table.Rows.Add(DefineTableVariableRow(holdVariable, currPO_ID, N_Current, N_Accepted, RMSE_Current, RMSE_Accepted, RMSE_Difference, NSE_Current, NSE_Accepted, NSE_Difference, RSR_Current, RSR_Accepted, RSR_Difference, hasChanged)); } phGrids.Controls.Add(table); }