private static void FillMapOrChartValues (IEnumerable <AvrViewColumn> columns, Dictionary <int, DataRow> rows, int i, DataRow nRow, bool IsMap) { foreach (AvrViewColumn col in columns) { object val = null; if (rows != null && rows.Count > 0 && rows[i].Table.Columns.Contains(col.UniquePath)) { val = rows[i][col.UniquePath]; } bool badValue = bv.common.Core.Utils.IsEmpty(val) || (val is double && (double.IsInfinity((double)val) || double.IsNaN((double)val))); if (!badValue && col.Precision.HasValue && col.Precision.Value >= 0) { if (IsMap && col.IsAggregate && (col.AggregateFunction == (long)ViewAggregateFunction.CumulativePercent || col.AggregateFunction == (long)ViewAggregateFunction.PercentOfColumn || col.AggregateFunction == (long)ViewAggregateFunction.PercentOfRow)) { val = (double)val * 100; } val = AvrViewHelper.RoundVal(val, col.Precision.Value); } nRow[col.UniquePath] = badValue ? DBNull.Value : val; } }
// Main function of prepairing data for map private static DataSet CreateDataForMap(string rowColumn, List <AvrViewColumn> columns, Dictionary <int, DataRow> rows, AvrView view) { var ds = AvrViewHelper.PrepareMapTable(view.LayoutName, columns); DataTable dtData = ds.Tables["Data"]; if (rows != null && rows.Count > 0) { dtData.Columns.Add("UniquePath", typeof(string)); // fill rows of table dtData.BeginLoadData(); foreach (int i in rows.Keys) { DataRow nRow = dtData.NewRow(); var r = (string)rows[i][rowColumn]; if (r.EndsWith(view.TotalSuffix)) { r = r.Substring(0, r.Length - view.TotalSuffix.Length); } nRow["UniquePath"] = r.Trim(); FillMapOrChartValues(columns, rows, i, nRow, true); dtData.Rows.Add(nRow); } AvrViewHelper.ConvertMapDataForGis(ref dtData); dtData.Columns.Remove("UniquePath"); dtData.EndLoadData(); dtData.AcceptChanges(); } return(ds); }
// Main function of prepairing data for chart private static DataTable CreateDataForChart(string rowColumn, List <AvrViewColumn> columns, Dictionary <int, DataRow> rows, AvrView view) { var rowColAvr = view.GetColumnByOriginalName(rowColumn); var ds = AvrViewHelper.PrepareChartTable(view.LayoutName, columns, rowColAvr); var dt = ds.Tables["Data"]; if (rows != null && rows.Count > 0) { // fill rows of table dt.BeginLoadData(); foreach (int i in rows.Keys) { DataRow nRow = dt.NewRow(); nRow[rowColAvr.UniquePath] = rows[i][rowColumn]; FillMapOrChartValues(columns, rows, i, nRow, false); dt.Rows.Add(nRow); } dt.EndLoadData(); dt.AcceptChanges(); } return(dt); }
private static List <AvrViewColumn> FillSeriesColumns(AvrView view, string chb, string cb) { List <AvrViewColumn> seriesColumns; // fill selected cells /*GridCell[] selectedCells = view.GetSelectedCells(); * if (selectedCells.Length > 1) * { * seriesColumns = FillSelectedColumns(selectedCells); * } * // fill default series * else*/ if ((chb != null && chb.Length > 0) || (cb != null && cb.Length > 0)) { seriesColumns = AvrViewHelper.FillSeriesFromCombosWeb(view, chb, cb); } // fill whole table else { seriesColumns = view.GetVisibleRowAdminColumns(false, null, false); } return(seriesColumns); }
private object GetModelFromService(long layoutId) { AvrServiceAccessability access = AvrServiceAccessability.Check(); if (!access.IsOk) { return(access.ErrorMessage); } AvrServicePivotResult pivotResult = ServiceClientHelper.GetAvrServicePivotResult(Session.SessionID, layoutId); if (!pivotResult.IsOk) { return(pivotResult.ErrorMessage); } pivotResult.Model.ViewHeader.AssignOwnerAndUniquePath(); DataTable dt = pivotResult.Model.ViewData; AvrViewHelper.AddIDColumn(ref dt); AvrViewHelper.RemoveHASCadditions(pivotResult.Model.ViewHeader, ref dt); pivotResult.Model.ViewData = dt; return(pivotResult); }
public static string TryToPrepareMapData(AvrPivotViewModel viewModel, out DataSet data) { string columnName = viewModel.ViewHeader.MapAdminUnitViewColumn; if (viewModel.ViewData.Columns.Contains(columnName + "hasc")) { columnName = columnName + "hasc"; } // remember columns for future DataTable List <AvrViewColumn> mapColumns = FillSeriesColumns(viewModel.ViewHeader, viewModel.ViewHeader.GetColumnsBooleans("IsMapDiagramSeries"), viewModel.ViewHeader.GradientColumn); // remember rows for future DataTable Dictionary <int, DataRow> xAxisRows = FillXAxisData(viewModel.ViewData, columnName, viewModel.ViewHeader); //remove * strings xAxisRows.ToList().FindAll(d => ((string)d.Value[columnName]).Equals("*")).ForEach(d => xAxisRows.Remove(d.Key)); // have we duplicates? - remove everything var l = new List <DataRow>(xAxisRows.Values); if (AvrViewHelper.hasDuplicates(l.ConvertAll(v => v[columnName]))) { data = new DataSet(); return(EidssMessages.Get("msgDuplicatesInAdmUnit")); } // fill DataSet with 2 DataTable !!! data = CreateDataForMap(columnName, mapColumns, xAxisRows, viewModel.ViewHeader); return(String.Empty); }
// returns one aggregate value private static object FillGridAggrFColProcent(DataTable data, int rowIndex, AvrViewColumn aggrColumn, ref Dictionary <int, object> dict) { object ret = DBNull.Value; if (!bv.common.Core.Utils.IsEmpty(aggrColumn.SourceViewColumn) && data.Columns.Contains(aggrColumn.SourceViewColumn)) { double dCur; object cur = data.Rows[rowIndex][aggrColumn.SourceViewColumn]; if (!bv.common.Core.Utils.IsEmpty(cur) && double.TryParse(cur.ToString(), out dCur)) { var view = aggrColumn.GetView(); var rowCols = view.GetVisibleRowAdminColumns(true, null, false); // get Sum of refColumn double sumFull = AvrViewHelper.GetColumnSum(data, rowCols.Count, view.GrandTotalSuffix, view.TotalSuffix, aggrColumn.SourceViewColumn, ref dict); if (sumFull != 0) { ret = dCur / sumFull; } } } return(ret); }
// fill aggregate values into data column private static void FillGridAggrFCumProcent(DataTable data, AvrViewColumn aggrColumn, string sort) { if (!bv.common.Core.Utils.IsEmpty(aggrColumn.SourceViewColumn) && data.Columns.Contains(aggrColumn.SourceViewColumn)) { var view = aggrColumn.GetView(); var rowCols = view.GetVisibleRowAdminColumns(true, null, false); // get Sum of refColumn double sumFull = AvrViewHelper.GetColumnSum(data, rowCols.Count, view.GrandTotalSuffix, view.TotalSuffix, aggrColumn.SourceViewColumn); if (sumFull != 0) { double sum = 0; DataView dv = new DataView(data); dv.Sort = sort; foreach (DataRowView row in dv) { if (!AvrViewHelper.GetRowTotalStatus(row.Row, rowCols.Count, view.GrandTotalSuffix, view.TotalSuffix)) //if regular value (not total) { object cur = row[aggrColumn.SourceViewColumn]; if (bv.common.Core.Utils.IsEmpty(cur)) { continue; } double dCur; if (double.TryParse(cur.ToString(), out dCur)) { sum += dCur; row[aggrColumn.UniquePath] = sum / sumFull; } } } } } }
// remember data of all rows of selected in combo column private static Dictionary <int, DataRow> FillXAxisData(DataTable dt, string xName, AvrView view) { // fill selected rows or fill whole column Dictionary <int, DataRow> xAxisData = /*view.GetSelectedCells().Length > 1 * ? FillSelectedRows(view) * :*/FillAllRows(dt, view); return(AvrViewHelper.FillXAxisData(xAxisData, xName, view.GrandTotalSuffix, view.TotalSuffix)); }
// returns one aggregate value private static object FillGridAggrFRatio(DataRow row, AvrViewColumn col) { object ret = DBNull.Value; if (!bv.common.Core.Utils.IsEmpty(col.SourceViewColumn) && !bv.common.Core.Utils.IsEmpty(col.DenominatorViewColumn) && row.Table.Columns.Contains(col.SourceViewColumn) && row.Table.Columns.Contains(col.DenominatorViewColumn)) { double dRef; object cur = row[col.SourceViewColumn]; if (!bv.common.Core.Utils.IsEmpty(cur) && double.TryParse(cur.ToString(), out dRef)) { cur = row[col.DenominatorViewColumn]; double dDen; if (!bv.common.Core.Utils.IsEmpty(cur) && double.TryParse(cur.ToString(), out dDen)) { ret = AvrViewHelper.GetRatio(dRef, dDen, col.Precision); } } } return(ret); }
// fill aggregate values into data column private static void FillGridAggrFColProcent(DataTable data, AvrViewColumn aggrColumn) { if (!bv.common.Core.Utils.IsEmpty(aggrColumn.SourceViewColumn) && data.Columns.Contains(aggrColumn.SourceViewColumn)) { var view = aggrColumn.GetView(); var rowCols = view.GetVisibleRowAdminColumns(true, null, false); // get Sum of refColumn double sumFull = AvrViewHelper.GetColumnSum(data, rowCols.Count, view.GrandTotalSuffix, view.TotalSuffix, aggrColumn.SourceViewColumn); if (sumFull != 0) { double dCur; foreach (DataRow row in data.Rows) { object cur = row[aggrColumn.SourceViewColumn]; if (!bv.common.Core.Utils.IsEmpty(cur) && double.TryParse(cur.ToString(), out dCur)) { row[aggrColumn.UniquePath] = dCur / sumFull; } } } } }
// returns one aggregate value private static object FillGridAggrFCumProcent(DataTable data, int rowIndex, AvrViewColumn aggrColumn, ref Dictionary <int, object> dict) { object ret = DBNull.Value; if (!bv.common.Core.Utils.IsEmpty(aggrColumn.SourceViewColumn) && data.Columns.Contains(aggrColumn.SourceViewColumn)) { var view = aggrColumn.GetView(); var rowCols = view.GetVisibleRowAdminColumns(true, null, false); double sum = 0; for (int i = 0; i <= rowIndex; i++) { if (!AvrViewHelper.GetRowTotalStatus(data.Rows[i], rowCols.Count, view.GrandTotalSuffix, view.TotalSuffix)) //if regular value (not total) { object cur = data.Rows[i][aggrColumn.SourceViewColumn]; if (bv.common.Core.Utils.IsEmpty(cur)) { continue; } double dCur; if (double.TryParse(cur.ToString(), out dCur)) { sum += dCur; } } } // get Sum of refColumn double sumFull = AvrViewHelper.GetColumnSum(data, rowCols.Count, view.GrandTotalSuffix, view.TotalSuffix, aggrColumn.SourceViewColumn, ref dict); if (sumFull != 0) { ret = sum / sumFull; } } return(ret); }