private static void pRedim(ref t_SerieValue[] vSeries, int size) { if (size == 0) { vSeries = null; } else { vSeries = new t_SerieValue[size]; } }
private static void pRedimPreserve(ref t_SerieValue[] vSeries, int size) { if (size == 0) { vSeries = null; } else { if (vSeries == null) { vSeries = new t_SerieValue[size]; } else if (vSeries.Length == 0) { vSeries = new t_SerieValue[size]; } else { t_SerieValue[] newArray = new t_SerieValue[size]; Array.Copy(vSeries, newArray, vSeries.Length); vSeries = newArray; } } }
private bool pGetSerieValuesAux( DataRowCollection rows, t_SerieValue[] v, int valueIndex, int labelIndex, int i, int j, bool bAdd) { if (bAdd) { v[i].value = v[i].value + (double)cReportGlobals.valVariant(rows[j][valueIndex]); } else { v[i].value = (double)cReportGlobals.valVariant(rows[j][valueIndex]); } v[i].label = (String)cReportGlobals.valVariant(rows[j][labelIndex]); v[i].idx = j; i = i + 1; return i > v.Length; }
private void pGetSerieValues( DataRowCollection rows, t_SerieValue[] v, int valueIndex, int labelIndex, bool bOthers) { int i = 0; int j = 0; int q = 0; double value = 0; bool bFound = false; bool bCompare = false; int newTop = 0; if (m_groupFieldIndex >= 0) { // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) for (j = 0; j < rows.Count; j++) { if (cReportGlobals.valVariant(rows[j][m_groupFieldIndex]) == m_groupValue) { newTop++; } } if (newTop > 0) { newTop--; } if (v.Length > newTop) { pRedimPreserve(ref v, newTop); } } if (m_sort) { if (m_groupFieldIndex >= 0) { // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) for (j = 0; j < rows.Count; j++) { if ((String)cReportGlobals.valVariant(rows[j][m_groupFieldIndex]) == m_groupValue) { v[0].value = (double)cReportGlobals.valVariant(rows[j][valueIndex]); v[0].label = (String)cReportGlobals.valVariant(rows[j][labelIndex]); v[0].idx = j; break; } } } else { v[0].value = (double)cReportGlobals.valVariant(rows[0][valueIndex]); v[0].label = (String)cReportGlobals.valVariant(rows[0][labelIndex]); v[0].idx = 0; } // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) for (j = 0; j < rows.Count; j++) { if (m_groupFieldIndex >= 0) { bCompare = (String)cReportGlobals.valVariant(rows[j][m_groupFieldIndex]) == m_groupValue; } else { bCompare = true; } if (bCompare) { value = cUtil.val(cReportGlobals.valVariant(rows[j][valueIndex])); if (value > v[0].value) { v[0].value = value; v[0].label = (String)cReportGlobals.valVariant(rows[j][labelIndex]); v[0].idx = j; } } } for (i = 0; i < v.Length; i++) { v[i].idx = -1; // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) for (j = 0; j < rows.Count; j++) { if (m_groupFieldIndex >= 0) { bCompare = (String)cReportGlobals.valVariant(rows[j][m_groupFieldIndex]) == m_groupValue; } else { bCompare = true; } if (bCompare) { value = cUtil.val(cReportGlobals.valVariant(rows[j][valueIndex])); if ((value > v[i].value || v[i].idx == -1) && value <= v[i - 1].value && j != v[i - 1].idx) { bFound = false; for (q = 0; q <= i; q++) { if (j == v[q].idx) { bFound = true; break; } } if (!bFound) { v[i].value = value; v[i].label = cReportGlobals.valVariant(rows[j][labelIndex]).ToString(); v[i].idx = j; } } } } } } else { i = 0; // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) for (j = 0; j < rows.Count; j++) { if (m_groupFieldIndex >= 0) { if ((String)cReportGlobals.valVariant(rows[j][m_groupFieldIndex]) == m_groupValue) { if (pGetSerieValuesAux(rows, v, valueIndex, labelIndex, i, j, false)) { break; } } } else { if (pGetSerieValuesAux(rows, v, valueIndex, labelIndex, i, j, false)) { break; } } } if (bOthers) { // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) if (rows.Count > v.Length) { int n = 0; int k = 0; bool bHaveToRedim = false; bHaveToRedim = true; n = v.Length + 1; // TODO: we need the rows dimension. remeber rows is a matrix (cols by rows) for (j = 0; j < rows.Count; j++) { if (m_groupFieldIndex >= 0) { if ((String)cReportGlobals.valVariant(rows[j][m_groupFieldIndex]) == m_groupValue) { if (k >= n) { if (bHaveToRedim) { pRedimPreserve(ref v, n); bHaveToRedim = false; } pGetSerieValuesAux(rows, v, valueIndex, labelIndex, v.Length, j, true); } else { k = k + 1; } } } else { if (bHaveToRedim) { pRedimPreserve(ref v, n); bHaveToRedim = false; } pGetSerieValuesAux(rows, v, valueIndex, labelIndex, v.Length, j, true); } } } } } }