public void ReDrawLines(string id, string prevNodeID, string nextNodeID, Series lineSeriesID, Color c, int thickness_value,string name,int status)
{
// lock (this) {
// if (incrementIndex > 0)
// if(indexForSeriesNodePoint>0) //This index is resetted later
// {
temporaryNodeValueStoreForRedrawLine.Clear();//Clearing the values of the list
// MessageBox.Show("ReDrawLines FRIST LINE");
double startHumidity1 = 0;
double startEnthalpy1 = 0;
double endHumidity1 = 0;//--this is for the start and end humidity print in the tooltip
double endEnthalpy1 = 0;
double startSpecificVolume1 = 0;//--specific volume
double endSpecificVolume1 = 0;
if (chart1.InvokeRequired) {
//now lets plot lines between tow points...
chart1.Invoke(new Action(() => newLineSeries = lineSeriesID));//new Series("LineSeries" + incrementIndex); //lineSeriesID;
if (chart1.Series.IndexOf(newLineSeries.Name) != -1)
{
//--This means the series is present....
chart1.Invoke(new Action(() => chart1.Series.RemoveAt(chart1.Series.IndexOf(newLineSeries.Name)) ));
}
//}
chart1.Invoke(new Action(() => newLineSeries.MarkerSize = 1));
chart1.Invoke(new Action(() => newLineSeries.ChartType = SeriesChartType.Line));
if (thickness_value <= 0)
{
chart1.Invoke(new Action(() => newLineSeries.BorderWidth = 3));
}
else
{
chart1.Invoke(new Action(() => newLineSeries.BorderWidth = thickness_value));//This is the thickness of lines
}
//newSeries.ToolTip =
chart1.Invoke(new Action(() => newLineSeries.Color = c));
}
else
{
newLineSeries = lineSeriesID;//new Series("LineSeries" + incrementIndex); //lineSeriesID;
if (chart1.Series.IndexOf(newLineSeries.Name) != -1)
{
//--This means the series is present....
chart1.Series.RemoveAt(chart1.Series.IndexOf(newLineSeries.Name));
}
newLineSeries.MarkerSize = 1;
newLineSeries.ChartType = SeriesChartType.Line;
if (thickness_value <= 0)
{
newLineSeries.BorderWidth = 3;
}
else
{
newLineSeries.BorderWidth = thickness_value;//This is the thickness of lines
}
newLineSeries.Color = c;
}
/*
We need to calculate the previous node id values and the next node id values.
*/
//First for previous node id
for (int i = 0; i < menuStripNodeInfoValues.Count; i++)
{
if (prevNodeID == menuStripNodeInfoValues[i].id)
{
//This is a node : i.e start end of the node
//We need to store the node every information in 0 index.
// temporaryNodeValueStore = menuStripNodeInfoValues.GetRange(i,1); //This is for copying the value.
//Copying the values on index 0 assumption
temporaryNodeValueStoreForRedrawLine.Add(new TempDataType
{
id = menuStripNodeInfoValues[i].id,
xVal = menuStripNodeInfoValues[i].xVal,
yVal = menuStripNodeInfoValues[i].yVal,
// source = menuStripNodeInfoValues[i].source,
temperature_source = menuStripNodeInfoValues[i].temperature_source,
humidity_source = menuStripNodeInfoValues[i].humidity_source,
name = menuStripNodeInfoValues[i].name,
// label = menuStripNodeInfoValues[i].label,
// showItemText = menuStripNodeInfoValues[i].showItemText,
colorValue = menuStripNodeInfoValues[i].colorValue,
marker_Size = menuStripNodeInfoValues[i].marker_Size,
airFlow = menuStripNodeInfoValues[i].airFlow
});
break;//Break form loop
}
}
//Second for the next node id
for (int i = 0; i < menuStripNodeInfoValues.Count; i++)
{
if (nextNodeID == menuStripNodeInfoValues[i].id)
{
//This is a node : i.e start end of the node
//We need to store the node every information in 0 index.
// temporaryNodeValueStore[1].Equals(menuStripNodeInfoValues[i]);
//temporaryNodeValueStore = menuStripNodeInfoValues.GetRange(i, 1);
//The index of this values will be temporaryNodeValueStore[1] ==> 1
temporaryNodeValueStoreForRedrawLine.Add(new TempDataType
{
id = menuStripNodeInfoValues[i].id,
xVal = menuStripNodeInfoValues[i].xVal,
yVal = menuStripNodeInfoValues[i].yVal,
// source = menuStripNodeInfoValues[i].source,
temperature_source = menuStripNodeInfoValues[i].temperature_source,
humidity_source = menuStripNodeInfoValues[i].humidity_source,
name = menuStripNodeInfoValues[i].name,
// label = menuStripNodeInfoValues[i].label,
// showItemText = menuStripNodeInfoValues[i].showItemText,
colorValue = menuStripNodeInfoValues[i].colorValue,
marker_Size = menuStripNodeInfoValues[i].marker_Size,
airFlow = menuStripNodeInfoValues[i].airFlow
});
break;//Break form loop
}
}
if (temporaryNodeValueStoreForRedrawLine.Count > 0)
{
//--this sets the initial values of humidity and enthalpy
CalculateHumidityEnthalpy(temporaryNodeValueStoreForRedrawLine[0].xVal, temporaryNodeValueStoreForRedrawLine[0].yVal);
startHumidity1 = Math.Round(humidityCalculated, 2);
startEnthalpy1 = Math.Round(enthalpyCalculated, 2);
startSpecificVolume1 = SpecificVolumeReturn;
//--This calculates the end humidity and the enthalpy values..
CalculateHumidityEnthalpy((double)temporaryNodeValueStoreForRedrawLine[1].xVal, (double)temporaryNodeValueStoreForRedrawLine[1].yVal);
endHumidity1 = Math.Round(humidityCalculated, 2);
endEnthalpy1 = Math.Round(enthalpyCalculated, 2);
endSpecificVolume1 = SpecificVolumeReturn;
// MessageBox.Show("Start hum" + startHumidity1 + " end enth" + endEnthalpy1);
//MessageBox.Show("menustripinfovalues[prevNodeID].xVal=" + menuStripNodeInfoValues[prevNodeID].xVal + "menuStripNodeInfoValues[nextNodeID].yVal=" + menuStripNodeInfoValues[nextNodeID].yVal + "menuStripNodeInfoValues[nextNodeID].xVal = "+ menuStripNodeInfoValues[nextNodeID].xVal + " menuStripNodeInfoValues[nextNodeID].yVal" + menuStripNodeInfoValues[nextNodeID].yVal);
double enthalpyChange = endEnthalpy1 - startEnthalpy1;
string sequenceDetected = temporaryNodeValueStoreForRedrawLine[0].name + " to " + temporaryNodeValueStoreForRedrawLine[1].name;
// string tooltipString = "Sequence : " + sequenceDetected + " \n" + @" start end
//" + "Temp :" + Math.Round(temporaryNodeValueStoreForRedrawLine[0].xVal, 2) + " " + Math.Round(temporaryNodeValueStoreForRedrawLine[1].xVal, 2) + "\nHumidity :" + startHumidity1 + " " + endHumidity1 + WFA_psychometric_chart.Properties.Resources._Enthalpy + startEnthalpy1 + " " + endEnthalpy1 + "\nEnthalpy Change:" + enthalpyChange;
string tooltipString = "";
//" " + sequenceDetected + " \n" + @" "+ temporaryNodeValueStoreForRedrawLine[0].name + " end
//" + "Temp :" + Math.Round(temporaryNodeValueStoreForRedrawLine[0].xVal, 2) + " " + Math.Round(temporaryNodeValueStoreForRedrawLine[1].xVal, 2) + "\nHumidity :" + startHumidity1 + " " + endHumidity1 + WFA_psychometric_chart.Properties.Resources._Enthalpy + startEnthalpy1 + " " + endEnthalpy1 + "\nEnthalpy Change:" + enthalpyChange;
string ZeroLine = "Process: " + name + " ";
string FirstLine = @"Parameters " + "Units " + temporaryNodeValueStoreForRedrawLine[0].name + " " + temporaryNodeValueStoreForRedrawLine[1].name;
string SecondLine = @"DBT " + "\x00B0 C " + Math.Round(temporaryNodeValueStoreForRedrawLine[0].xVal, 2) + " " + Math.Round(temporaryNodeValueStoreForRedrawLine[1].xVal, 2);
string ThirdLine = @"Relative Humidity " + "% " + startHumidity1 + " " + endHumidity1;
string FourthLine = @"Humidity Ratio " + "Kg/Kg dryair " + Math.Round(temporaryNodeValueStoreForRedrawLine[0].yVal, 2) + " " + Math.Round(temporaryNodeValueStoreForRedrawLine[1].yVal, 2);
string FifthLine = "Volume Flow Rate " + "m\xB3/s " + Math.Round(temporaryNodeValueStoreForRedrawLine[0].airFlow, 2) + " " + Math.Round(temporaryNodeValueStoreForRedrawLine[1].airFlow, 2);
string SixthLine = "Specific Volume " + "m\xB3/Kg " + startSpecificVolume1 + " " + endSpecificVolume1;
double massFlowRate1 = temporaryNodeValueStoreForRedrawLine[0].airFlow / startSpecificVolume1;
double massFlowRate2 = temporaryNodeValueStoreForRedrawLine[1].airFlow / endSpecificVolume1;
string SeventhLine = @"Mass flow rate(dry air) " + "Kg(dry air)/s " +Math.Round(massFlowRate1,2) + " " +Math.Round( massFlowRate2,2);
string EighthLine = @"Enthalpy " + "KJ/Kg " + startEnthalpy1 + " " + endEnthalpy1;
double totalEnthalpyFlow1 = massFlowRate1 * startEnthalpy1;
double totalEnthalpyFlow2 = massFlowRate2 * endEnthalpy1;
string NinthLine = @"Total Enthalpy Flow " + "KJ/s " +Math.Round( totalEnthalpyFlow1,2) + " " +Math.Round( totalEnthalpyFlow2,2);
double heatChange = totalEnthalpyFlow2 - totalEnthalpyFlow1;
string TenthLine = @"Heat Change " + "KW " +Math.Round(heatChange,2) + " ";
tooltipString = ZeroLine+"\n"+ FirstLine + "\n" + SecondLine + "\n" + ThirdLine + "\n" + FourthLine + "\n" + FifthLine + "\n" + SixthLine + "\n" + SeventhLine + "\n" + EighthLine + "\n" + NinthLine + "\n" + TenthLine;
//===============This one is for datatable======================================================//
//DataTable table = new DataTable();
//table.Columns.Add("Parameters", typeof(string));
//table.Columns.Add("Units", typeof(string));
//table.Columns.Add(temporaryNodeValueStoreForRedrawLine[0].name.ToString(), typeof(string));
//table.Columns.Add(temporaryNodeValueStoreForRedrawLine[1].name.ToString(), typeof(string));
//table.Rows.Add("DBT", "\x00B0 C", Math.Round(temporaryNodeValueStoreForRedrawLine[0].xVal, 2).ToString(), Math.Round(temporaryNodeValueStoreForRedrawLine[1].xVal, 2).ToString());
//table.Rows.Add("Relative Humidity", "% ", startHumidity1.ToString(), endHumidity1.ToString());
//table.Rows.Add("Humidity Ratio", "Kg/Kg dryair", Math.Round(temporaryNodeValueStoreForRedrawLine[0].yVal, 2).ToString(), Math.Round(temporaryNodeValueStoreForRedrawLine[1].yVal, 2).ToString());
//table.Rows.Add("Volume flow rate", "m\xB3/s ", Math.Round(temporaryNodeValueStoreForRedrawLine[0].airFlow, 2).ToString(), Math.Round(temporaryNodeValueStoreForRedrawLine[1].airFlow, 2).ToString());
//table.Rows.Add("Sp. Volume", "m\xB3/Kg", startSpecificVolume1.ToString(), endSpecificVolume1.ToString());
//table.Rows.Add("Mass Flow rate(dry air)", "Kg(dry air)/s", Math.Round(massFlowRate1, 2).ToString(), Math.Round(massFlowRate2, 2).ToString());
//table.Rows.Add("Enthalpy", "KJ/Kg ", startEnthalpy1.ToString(), endEnthalpy1.ToString());
//table.Rows.Add("Total Energy Flow", "KJ/s", Math.Round(totalEnthalpyFlow1, 2).ToString(), Math.Round(totalEnthalpyFlow2, 2).ToString());
//table.Rows.Add("Heat Change", "KW ", Math.Round(heatChange, 2).ToString(), "");
// MessageBox.Show("Table \n" + table.Columns[2].Rows[3].ToString());
//tooltipString = table.ToString();
//================================datatable close==============================================//
if (chart1.InvokeRequired) {
chart1.Invoke(new Action(() => newLineSeries.ToolTip = tooltipString));
//newSeries.MarkerStyle = MarkerStyle.Circle;
//newSeries.Points.AddXY(menuStripNodeInfoValues[index - 1].xVal, menuStripNodeInfoValues[index].xVal, menuStripNodeInfoValues[index - 1].yVal, menuStripNodeInfoValues[index].yVal);
chart1.Invoke(new Action(() => newLineSeries.Points.Add(new DataPoint(temporaryNodeValueStoreForRedrawLine[0].xVal, temporaryNodeValueStoreForRedrawLine[0].yVal)))); //for prevnodeid
double mid_point_XValue = (temporaryNodeValueStoreForRedrawLine[0].xVal + temporaryNodeValueStoreForRedrawLine[1].xVal)/ 2;
double mid_point_YValue = (temporaryNodeValueStoreForRedrawLine[0].yVal + temporaryNodeValueStoreForRedrawLine[1].yVal) / 2;
chart1.Invoke(new Action(() => newLineSeries.Points.Add(new DataPoint(mid_point_XValue, mid_point_YValue)))); //Middle point for plotting the Label
chart1.Invoke(new Action(() => newLineSeries.Points.Add(new DataPoint(temporaryNodeValueStoreForRedrawLine[1].xVal, temporaryNodeValueStoreForRedrawLine[1].yVal)))); //for nextnodeid
if(status == 1)
{
//Then show the label in the chart
chart1.Invoke(new Action(() => newLineSeries.Points[1].Label=name));
}
chart1.Invoke(new Action(() => chart1.Series.Add(newLineSeries)));
}
else
{
newLineSeries.ToolTip = tooltipString;
newLineSeries.Points.Add(new DataPoint(temporaryNodeValueStoreForRedrawLine[0].xVal, temporaryNodeValueStoreForRedrawLine[0].yVal)); //for prevnodeid
double mid_point_XValue = (temporaryNodeValueStoreForRedrawLine[0].xVal + temporaryNodeValueStoreForRedrawLine[1].xVal) / 2;
double mid_point_YValue = (temporaryNodeValueStoreForRedrawLine[0].yVal + temporaryNodeValueStoreForRedrawLine[1].yVal) / 2;
newLineSeries.Points.Add(new DataPoint(mid_point_XValue, mid_point_YValue)); //Middle point for plotting the Label
newLineSeries.Points.Add(new DataPoint(temporaryNodeValueStoreForRedrawLine[1].xVal, temporaryNodeValueStoreForRedrawLine[1].yVal)); //for nextnodeid
if (status == 1)
{
//Then show the label in the chart
newLineSeries.Points[1].Label = name;
}
chart1.Series.Add(newLineSeries);
}
temporaryNodeValueStoreForRedrawLine.Clear();//--Lets reset the value CODE:BBK305A
// } //close of if incrementindex
}//close of temporary node value
// }//--Close of LOCK
}