예제 #1
0
        public C3Window(CCRecordSet ccRecordSet, string recordSetFileName, C3Configuration config)
            : this()
        {
            this.ccRecordSet          = ccRecordSet;
            this.recordSetFileName    = recordSetFileName;
            this.config               = config;
            this.editDateTimeRange    = Selectors.timeFilters[Consts.TIMEEXPR_LASTMONTH];
            this.summaryDateTimeRange = Selectors.timeFilters[Consts.TIMEEXPR_LASTMONTH];

            this.requiredHeaderNames = new HashSet <string>(this.ccRecordSet.RequiredHeaderNames);
            currentDataTable         = ccRecordSet.ToDataTable();

            UpdateEditDataGrid();

            foreach (var header in this.ccRecordSet.RequiredHeaderNames)
            {
                var col = new DataGridTextColumn
                {
                    Header  = header,
                    Binding = new Binding(header)
                    {
                        StringFormat = columnFormats[header]
                    },
                    IsReadOnly = true
                };
                EditTabDatagrid.Columns.Add(col);
            }
            foreach (var header in config.columns)
            {
                var col = new DataGridComboBoxColumn
                {
                    Header               = header.columnName,
                    ItemsSource          = header.validValues,
                    SelectedValueBinding = new Binding(header.columnName)
                };
                EditTabDatagrid.Columns.Add(col);
            }

            EditTimeFilterComboBox.ItemsSource  = Selectors.timeFilters.Keys;
            EditTimeFilterComboBox.SelectedItem = Selectors.timeFilters.Keys.FirstOrDefault();

            SummaryTimeFilterComboBox.ItemsSource  = Selectors.timeFilters.Keys;
            SummaryTimeFilterComboBox.SelectedItem = Selectors.timeFilters.Keys.FirstOrDefault();
            SummaryAggregateComboBox.ItemsSource   = this.ccRecordSet.PredictedHeaderNames;
            SummaryAggregateComboBox.SelectedItem  = this.ccRecordSet.PredictedHeaderNames.FirstOrDefault();

            ReportGroupByComboBox.ItemsSource      = this.ccRecordSet.PredictedHeaderNames;
            ReportGroupByComboBox.SelectedIndex    = 0;
            ReportPeriodComboBox.ItemsSource       = Selectors.periodSpecifiers.Keys;
            ReportPeriodComboBox.SelectedItem      = Consts.PERIOD_SPECIFIER_MONTH;
            ReportAggregationComboBox.ItemsSource  = Selectors.aggreations.Keys;
            ReportAggregationComboBox.SelectedItem = Consts.AGGREGATION_SUM;
        }
예제 #2
0
        public void TestGrouping()
        {
            Stream      s                = TestUtils.RetrieveResource(fullChargeList);
            CCRecordSet recordSet        = CCRecordSet.FromStream(s, config);
            var         periodSpec       = Selectors.periodSpecifiers[Consts.PERIOD_SPECIFIER_MONTH];
            var         aggregation      = Selectors.aggreations[Consts.AGGREGATION_AVG];
            var         predictedColumns = TestUtils.GetMockC3PredictedColumns();
            var         report           = Transforms.GetPeriodSummary(recordSet.ToDataTable(), periodSpec, predictedColumns[0], aggregation);

            var expectedHeaders = new DateTime[] { DateTime.Parse("1/1/2004 12:00:00 AM"), DateTime.Parse("2/1/2004 12:00:00 AM"), DateTime.Parse("3/1/2004 12:00:00 AM"), DateTime.Parse("4/1/2004 12:00:00 AM") };
            var actualHeaders   = report.AsEnumerable().Select(row => row["Period start"]).Cast <DateTime>().ToArray();

            CollectionAssert.AreEqual(expectedHeaders, actualHeaders);
            TestUtils.AssertApproximatelyEqual((decimal)report.Rows[0][1], 65.73384615m);
            TestUtils.AssertApproximatelyEqual((decimal)report.Rows[1][2], 44.94272727m);
            TestUtils.AssertApproximatelyEqual((decimal)report.Rows[2][3], 32.17625m);
            TestUtils.AssertApproximatelyEqual((decimal)report.Rows[3][4], 111.4819697m);
        }