예제 #1
0
        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;
            }
        }
예제 #2
0
        // 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);
        }
예제 #3
0
        // 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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        // 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);
        }
예제 #8
0
        // 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;
                            }
                        }
                    }
                }
            }
        }
예제 #9
0
        // 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));
        }
예제 #10
0
        // 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);
        }
예제 #11
0
 // 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;
                 }
             }
         }
     }
 }
예제 #12
0
        // 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);
        }