public void SetData(SeriesData data, SeriesVariable variable, DecompositionForm.DECSpecification decProperties)
 {
     this.data = data;
     this.variable = variable;
     this.decProperties = decProperties;
     this.lblVariable.Text = variable.VariableName;
     this.update();
 }
        public void Decomposition()
        {
            SelectAnalyzedVariable dlg = new SelectAnalyzedVariable(this.data.SeriesVariables);
            dlg.ShowDialog();
            if (dlg.DialogResult == DialogResult.OK)
            {
                DecompositionForm decForm = new DecompositionForm();
                decForm.SetVariable(dlg.SelectedVariable);
                decForm.ShowDialog();
                if (decForm.DialogResult == DialogResult.Yes)
                {

                    if (decForm.IsStoreTrend)
                    {
                        SeriesVariable var = new SeriesVariable(decForm.TrendName, "Trend Value of Decomposition Classic analysis of variable '"
                            + dlg.SelectedVariable.VariableName + "'");
                        int lag = dlg.SelectedVariable.SeriesValues.Count - decForm.DecTable.trend.Length;
                        var.InitializeItem(dlg.SelectedVariable.SeriesValues.Count);
                        for (int i = 0; i < lag; i++) var[i] = double.NaN;
                        for (int i = 0; i < decForm.DecTable.trend.Length; i++) var[i + lag] = decForm.DecTable.trend[i];
                        this.data.SeriesVariables.Add(var);
                        this.seriesDataList.Refresh();
                    }
                    if (decForm.IsStoreDetrend)
                    {
                        SeriesVariable var = new SeriesVariable(decForm.DetrendName, "Detrended Value of Decomposition Classic analysis of variable '"
                            + dlg.SelectedVariable.VariableName + "'");
                        int lag = dlg.SelectedVariable.SeriesValues.Count - decForm.DecTable.detrend.Length;
                        var.InitializeItem(dlg.SelectedVariable.SeriesValues.Count);
                        for (int i = 0; i < lag; i++) var[i] = double.NaN;
                        for (int i = 0; i < decForm.DecTable.detrend.Length; i++) var[i + lag] = decForm.DecTable.detrend[i];
                        this.data.SeriesVariables.Add(var);
                        this.seriesDataList.Refresh();
                    }
                    if (decForm.IsStoreDeseasonal)
                    {
                        SeriesVariable var = new SeriesVariable(decForm.DeseasonalName, "Seasonally Adj. Value of Decomposition Classic analysis of variable '"
                            + dlg.SelectedVariable.VariableName + "'");
                        int lag = dlg.SelectedVariable.SeriesValues.Count - decForm.DecTable.deseasonal.Length;
                        var.InitializeItem(dlg.SelectedVariable.SeriesValues.Count);
                        for (int i = 0; i < lag; i++) var[i] = double.NaN;
                        for (int i = 0; i < decForm.DecTable.deseasonal.Length; i++) var[i + lag] = decForm.DecTable.deseasonal[i];
                        this.data.SeriesVariables.Add(var);
                        this.seriesDataList.Refresh();
                    }

                    if (decForm.IsStorePredicted)
                    {
                        SeriesVariable var = new SeriesVariable(decForm.PredictedName, "Predicted Value of Decomposition Classic analysis of variable '"
                            + dlg.SelectedVariable.VariableName + "'");
                        int lag = dlg.SelectedVariable.SeriesValues.Count - decForm.DecTable.predicted.Length;
                        var.InitializeItem(dlg.SelectedVariable.SeriesValues.Count);
                        for (int i = 0; i < lag; i++) var[i] = double.NaN;
                        for (int i = 0; i < decForm.DecTable.predicted.Length; i++) var[i + lag] = decForm.DecTable.predicted[i];
                        this.data.SeriesVariables.Add(var);
                        this.seriesDataList.Refresh();
                    }

                    if (decForm.IsStoreResidual)
                    {
                        SeriesVariable var = new SeriesVariable(decForm.ResidualName, "Residual Value of Decomposition Classic analysis of variable '"
                            + dlg.SelectedVariable.VariableName + "'");
                        int lag = dlg.SelectedVariable.SeriesValues.Count - decForm.DecTable.residual.Length;
                        var.InitializeItem(dlg.SelectedVariable.SeriesValues.Count);
                        for (int i = 0; i < lag; i++) var[i] = double.NaN;
                        for (int i = 0; i < decForm.DecTable.residual.Length; i++) var[i + lag] = decForm.DecTable.residual[i];
                        this.data.SeriesVariables.Add(var);
                        this.seriesDataList.Refresh();
                    }

                    DECResultTabPage decTabPage = new DECResultTabPage();

                    decTabPage.Title = "Decomposition : '" + dlg.SelectedVariable.VariableName + "'";

                    if (decForm.IsForecastedDataGridChecked)
                    {
                        decTabPage.SetData(this.data, dlg.SelectedVariable, decForm.DecProperties,
                            decForm.DecTable, decForm.Forecast(decForm.ForecastingStep));
                    }
                    else
                    {
                        decTabPage.SetData(this.data, dlg.SelectedVariable, decForm.DecProperties,
                            decForm.DecTable, null);
                    }
                    decTabPage.IsDecModelSummaryVisible = decForm.IsDecModelSummaryChecked;

                    decTabPage.IsDecompositionDataGridVisible = decForm.IsDecompositionDataGridChecked;
                    decTabPage.IsTrendVisible = decForm.IsTrendChecked;
                    decTabPage.IsDetrendVisible = decForm.IsDetrendChecked;
                    decTabPage.IsSeasonalVisible = decForm.IsSeasonalChecked;
                    decTabPage.IsDeseasonalVisible = decForm.IsDeseasonalChecked;
                    decTabPage.IsForecastedDataGridVisible = decForm.IsForecastedDataGridChecked;
                    decTabPage.IsActualPredictedAndTrendGraphVisible = decForm.IsActualPredictedAndTrendGraphChecked;
                    decTabPage.IsActualAndForecastedGraphVisible = decForm.IsActualAndForecastedGraphChecked;
                    decTabPage.IsActualVsPredictedGraphVisible = decForm.IsActualVsPredictedGraphChecked;
                    decTabPage.IsResidualGraphVisible = decForm.IsResidualGraphChecked;
                    decTabPage.IsResidualVsActualGraphVisible = decForm.IsResidualVsActualGraphChecked;
                    decTabPage.IsResidualVsPredictedGraphVisible = decForm.IsResidualVsPredictedGraphChecked;
                    decTabPage.IsDetrendGraphVisible = decForm.IsDetrendGraphChecked;
                    decTabPage.IsDeseasonalGraphVisible = decForm.IsDeseasonalGraphChecked;

                    decTabPage.DrawControl();

                    decTabPage.IsDrawn = true;
                    this.tabControlResult.AddTab(decTabPage);
                    this.tabControlResult.SelectedItem = decTabPage;

                    this.tabControlData.SelectedTab = this.tabPageResult;

                }
            }
        }
 public void SetData(SeriesData data, SeriesVariable variable, 
     DecompositionForm.DECSpecification decProperties,
     DecompositionForm.DECComponent decTable, double[] forecasted)
 {
     this.data = data;
     this.variable = variable;
     this.decProperties = decProperties;
     this.decTable = decTable;
     this.forecasted = forecasted;
 }