private void ClearResults() { messagePanel.Visibility = System.Windows.Visibility.Collapsed; messagePanel.Text = string.Empty; descriptionPanel.PanelMode = Controls.GadgetDescriptionPanel.DescriptionPanelMode.Collapsed; foreach (Grid grid in strataGridList) { grid.Children.Clear(); grid.RowDefinitions.Clear(); } foreach (Grid grid in strataChiSquareGridList) { grid.Children.Clear(); grid.RowDefinitions.Clear(); } foreach (TextBlock textBlock in gridDisclaimerList) { panelMain.Children.Remove(textBlock); } foreach (GadgetStrataListPanel strataPanel in strataListPanels) { strataPanel.RowClicked -= new StrataGridRowClickedHandler(strataListPanel_RowClicked); strataPanel.Clear(); } strataGroupPanel = null; strataListPanels.Clear(); strataGridList.Clear(); strataChiSquareGridList.Clear(); strata2x2GridList.Clear(); groupList.Clear(); strataExpanderList.Clear(); panelMain.Children.Clear(); }
/// <summary> /// Closes the gadget /// </summary> protected override void CloseGadget() { if (worker != null && worker.WorkerSupportsCancellation) { worker.CancelAsync(); } if (worker != null) { worker.DoWork -= new System.ComponentModel.DoWorkEventHandler(worker_DoWork); worker.RunWorkerCompleted -= new System.ComponentModel.RunWorkerCompletedEventHandler(worker_WorkerCompleted); } if (baseWorker != null) { baseWorker.DoWork -= new System.ComponentModel.DoWorkEventHandler(Execute); } this.GadgetStatusUpdate -= new GadgetStatusUpdateHandler(RequestUpdateStatusMessage); this.GadgetCheckForCancellation -= new GadgetCheckForCancellationHandler(IsCancelled); for (int i = 0; i < strataGridList.Count; i++) { strataGridList[i].Children.Clear(); } this.strataGridList.Clear(); for (int i = 0; i < strataChiSquareGridList.Count; i++) { strataChiSquareGridList[i].Children.Clear(); } foreach (GadgetTwoByTwoPanel grid2x2 in this.strata2x2GridList) { grid2x2.Dispose(); grid2x2.ValuesUpdated -= new TwoByTwoValuesUpdatedHandler(twoByTwoPanel_ValuesUpdated); } foreach (GadgetStrataListPanel strataPanel in strataListPanels) { strataPanel.RowClicked -= new StrataGridRowClickedHandler(strataListPanel_RowClicked); strataPanel.Clear(); } strataListPanels.Clear(); strataGroupPanel = null; this.strataChiSquareGridList.Clear(); this.strata2x2GridList.Clear(); this.groupList.Clear(); this.strataExpanderList.Clear(); this.panelMain.Children.Clear(); base.CloseGadget(); GadgetOptions = null; }
private void AddFreqGrid(string strataVar, string value, string crosstabVar, string groupReference, DataTable table) { StackPanel crosstabPanel = new StackPanel(); StackPanel groupPanel = new StackPanel(); bool strataSummaryOnly = (bool)checkboxStrataSummaryOnly.IsChecked; bool isGrouped = this.DashboardHelper.GetAllGroupsAsList().Contains(GadgetOptions.MainVariableName); if (isGrouped && strataGroupPanel == null) { strataGroupPanel = new GadgetStrataListPanel(StrataListPanelMode.GroupMode); strataGroupPanel.SnapsToDevicePixels = true; panelMain.Children.Add(strataGroupPanel); } groupPanel.Tag = groupReference; bool inList = false; foreach (StackPanel panel in groupList) { if (panel.Tag == groupPanel.Tag) { groupPanel = panel; inList = true; } } if (!inList) { groupList.Add(groupPanel); } int columnCount = table.Columns.Count; Expander expander = new Expander(); TextBlock txtExpanderHeader = new TextBlock(); txtExpanderHeader.Text = value; txtExpanderHeader.Style = this.Resources["genericOutputExpanderText"] as Style; string formattedValue = value; if (string.IsNullOrEmpty(strataVar) && GadgetOptions.StrataVariableNames.Count == 0) { formattedValue = crosstabVar; } else { if (value.EndsWith(" = ")) { formattedValue = value + dashboardHelper.Config.Settings.RepresentationOfMissing; } } if (isGrouped) { formattedValue = groupReference + ", " + formattedValue; } txtExpanderHeader.Text = formattedValue; expander.Header = txtExpanderHeader; if (columnCount == 3 && table.Rows.Count == 2 && (isRunningGrouped2x2 == null || isRunningGrouped2x2 == true)) // is 2x2 { isRunningGrouped2x2 = true; decimal yyVal = decimal.Parse(table.Rows[0][1].ToString()); decimal ynVal = decimal.Parse(table.Rows[0][2].ToString()); decimal nyVal = decimal.Parse(table.Rows[1][1].ToString()); decimal nnVal = decimal.Parse(table.Rows[1][2].ToString()); Controls.GadgetTwoByTwoPanel twoByTwoPanel = new Controls.GadgetTwoByTwoPanel(yyVal, ynVal, nyVal, nnVal); twoByTwoPanel.ValuesUpdated += new TwoByTwoValuesUpdatedHandler(twoByTwoPanel_ValuesUpdated); if (panelMain.Orientation == Orientation.Horizontal) { twoByTwoPanel.Orientation = Orientation.Horizontal; } else { twoByTwoPanel.Orientation = Orientation.Vertical; } twoByTwoPanel.Margin = new Thickness(5); if (isGrouped) { twoByTwoPanel.ExposureVariable = groupReference; } else { twoByTwoPanel.ExposureVariable = this.GadgetOptions.MainVariableName; if (strataSummaryOnly) { twoByTwoPanel.Visibility = System.Windows.Visibility.Collapsed; expander.Visibility = System.Windows.Visibility.Collapsed; } } twoByTwoPanel.OutcomeVariable = this.GadgetOptions.CrosstabVariableName; twoByTwoPanel.OutcomeYesLabel = table.Columns[1].ColumnName; twoByTwoPanel.OutcomeNoLabel = table.Columns[2].ColumnName; twoByTwoPanel.ExposureYesLabel = table.Rows[0][0].ToString(); twoByTwoPanel.ExposureNoLabel = table.Rows[1][0].ToString(); if (showPercents) { twoByTwoPanel.ShowRowColumnPercents = true; } else { twoByTwoPanel.ShowRowColumnPercents = false; } if (string.IsNullOrEmpty(strataVar) && GadgetOptions.StrataVariableNames.Count == 0) { crosstabPanel.Margin = (Thickness)this.Resources["genericElementMargin"]; crosstabPanel.Children.Add(twoByTwoPanel); if (isGrouped && strataGroupPanel != null) { StrataGridListRow sRow = new StrataGridListRow(); sRow.StrataLabel = groupReference; sRow.OutcomeRateExposure = twoByTwoPanel.OutcomeRateExposure; sRow.OutcomeRateNoExposure = twoByTwoPanel.OutcomeRateNoExposure; sRow.RiskRatio = twoByTwoPanel.RiskRatio; sRow.OddsRatio = twoByTwoPanel.OddsRatio; sRow.OddsLower = twoByTwoPanel.OddsRatioLower; sRow.OddsUpper = twoByTwoPanel.OddsRatioUpper; strataGroupPanel.AddRow(sRow); strataGroupPanel.RowClicked += new StrataGridRowClickedHandler(strataGroupPanel_NoStrata_RowClicked); strataGroupPanel.ExpandAllClicked += new StrataGridExpandAllClickedHandler(strataGroupPanel_NoStrata_ExpandAllClicked); } groupPanel.Children.Add(crosstabPanel); //panelMain.Children.Add(crosstabPanel); if (!panelMain.Children.Contains(groupPanel)) { panelMain.Children.Add(groupPanel); } } else { GadgetStrataListPanel strataListPanel = new GadgetStrataListPanel(); bool found = false; foreach (UIElement element in groupPanel.Children) { if (element is GadgetStrataListPanel) { found = true; strataListPanel = (element as GadgetStrataListPanel); break; } } if (!found) { strataListPanel.RowClicked += new StrataGridRowClickedHandler(strataListPanel_RowClicked); strataListPanel.ExpandAllClicked += new StrataGridExpandAllClickedHandler(strataListPanel_ExpandAllClicked); strataListPanel.SnapsToDevicePixels = true; strataListPanels.Add(strataListPanel); groupPanel.Children.Add(strataListPanel); if (!isGrouped && strataSummaryOnly) { strataListPanel.Visibility = System.Windows.Visibility.Collapsed; } //panelMain.Children.Add(strataListPanel); } StrataGridListRow sRow = new StrataGridListRow(); sRow.StrataLabel = formattedValue; sRow.OutcomeRateExposure = twoByTwoPanel.OutcomeRateExposure; sRow.OutcomeRateNoExposure = twoByTwoPanel.OutcomeRateNoExposure; sRow.RiskRatio = twoByTwoPanel.RiskRatio; sRow.OddsRatio = twoByTwoPanel.OddsRatio; sRow.OddsLower = twoByTwoPanel.OddsRatioLower; sRow.OddsUpper = twoByTwoPanel.OddsRatioUpper; strataListPanel.AddRow(sRow); if (isGrouped && strataGroupPanel != null) { strataListPanel.ExpanderHeader = groupReference; sRow = new StrataGridListRow(); sRow.StrataLabel = groupReference; sRow.OutcomeRateExposure = null; sRow.OutcomeRateNoExposure = null; sRow.RiskRatio = null; sRow.OddsRatio = null; sRow.OddsLower = null; sRow.OddsUpper = null; strataGroupPanel.AddRow(sRow); strataGroupPanel.RowClicked += new StrataGridRowClickedHandler(strataGroupPanel_RowClicked); strataGroupPanel.ExpandAllClicked += new StrataGridExpandAllClickedHandler(strataGroupPanel_ExpandAllClicked); } twoByTwoPanel.Tag = formattedValue; crosstabPanel.Margin = (Thickness)this.Resources["genericElementMargin"]; crosstabPanel.Children.Add(twoByTwoPanel); expander.Margin = (Thickness)this.Resources["expanderMargin"]; expander.IsExpanded = true; expander.Content = crosstabPanel; groupPanel.Children.Add(expander); //panelMain.Children.Add(expander); strataExpanderList.Add(expander); if (groupList.Count == 0) { groupList.Add(groupPanel); } if (!panelMain.Children.Contains(groupPanel)) { panelMain.Children.Add(groupPanel); } } strata2x2GridList.Add(twoByTwoPanel); return; } else if ((columnCount != 3 || table.Rows.Count != 2) && (isRunningGrouped2x2 == true)) { return; } isRunningGrouped2x2 = false; Grid chiSquaregrid = new Grid(); chiSquaregrid.Tag = value; chiSquaregrid.HorizontalAlignment = HorizontalAlignment.Center; chiSquaregrid.Margin = new Thickness(0, 5, 0, 10); chiSquaregrid.Visibility = System.Windows.Visibility.Collapsed; chiSquaregrid.ColumnDefinitions.Add(new ColumnDefinition()); chiSquaregrid.ColumnDefinitions.Add(new ColumnDefinition()); chiSquaregrid.ColumnDefinitions.Add(new ColumnDefinition()); chiSquaregrid.RowDefinitions.Add(new RowDefinition()); chiSquaregrid.RowDefinitions.Add(new RowDefinition()); Grid grid = new Grid(); grid.Tag = value; grid.Style = this.Resources["genericOutputGrid"] as Style; grid.Visibility = System.Windows.Visibility.Collapsed; grid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; for (int i = 0; i < columnCount; i++) { ColumnDefinition column = new ColumnDefinition(); column.Width = GridLength.Auto; grid.ColumnDefinitions.Add(column); } ColumnDefinition totalColumn = new ColumnDefinition(); totalColumn.Width = GridLength.Auto; grid.ColumnDefinitions.Add(totalColumn); ScrollViewer sv = new ScrollViewer(); sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; sv.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; sv.MaxHeight = System.Windows.SystemParameters.PrimaryScreenHeight - 320; sv.MaxWidth = System.Windows.SystemParameters.PrimaryScreenWidth - 300; sv.Margin = (Thickness)this.Resources["expanderMargin"]; Grid gridOuter = new Grid(); gridOuter.ColumnDefinitions.Add(new ColumnDefinition()); gridOuter.ColumnDefinitions.Add(new ColumnDefinition()); gridOuter.RowDefinitions.Add(new RowDefinition()); gridOuter.RowDefinitions.Add(new RowDefinition()); Grid.SetColumn(grid, 1); Grid.SetRow(grid, 1); gridOuter.Children.Add(grid); TextBlock tblock1 = new TextBlock(); RotateTransform rotate = new RotateTransform(270); tblock1.RenderTransform = rotate; tblock1.Margin = new Thickness(0, 0, -5, 0); tblock1.FontWeight = FontWeights.Bold; tblock1.FontSize = tblock1.FontSize + 2; if (dashboardHelper.GetAllGroupsAsList().Contains(cbxExposureField.SelectedItem.ToString())) { tblock1.Text = value; } else { tblock1.Text = cbxExposureField.SelectedItem.ToString(); } tblock1.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; tblock1.VerticalAlignment = System.Windows.VerticalAlignment.Center; Grid.SetColumn(tblock1, 0); Grid.SetRow(tblock1, 1); gridOuter.Children.Add(tblock1); TextBlock tblock2 = new TextBlock(); tblock2.Name = "tblockOutcomeGridHeader"; tblock2.FontWeight = FontWeights.Bold; tblock2.FontSize = tblock1.FontSize + 2; tblock2.Text = cbxOutcomeField.SelectedItem.ToString(); tblock2.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; tblock2.VerticalAlignment = System.Windows.VerticalAlignment.Center; Grid.SetColumn(tblock2, 1); Grid.SetRow(tblock2, 0); gridOuter.Children.Add(tblock2); sv.Content = gridOuter; TextBlock txtDisclaimerLabel = new TextBlock(); txtDisclaimerLabel.Text = string.Empty; txtDisclaimerLabel.Margin = new Thickness(2, 8, 2, 10); txtDisclaimerLabel.HorizontalAlignment = HorizontalAlignment.Center; txtDisclaimerLabel.Tag = value; gridDisclaimerList.Add(txtDisclaimerLabel); crosstabPanel.Children.Add(sv); crosstabPanel.Children.Add(chiSquaregrid); crosstabPanel.Children.Add(txtDisclaimerLabel); if (string.IsNullOrEmpty(strataVar) && GadgetOptions.StrataVariableNames.Count == 0) { panelMain.Children.Add(crosstabPanel); } else { crosstabPanel.Margin = (Thickness)this.Resources["genericElementMargin"]; expander.Margin = (Thickness)this.Resources["expanderMargin"]; expander.IsExpanded = true; expander.Content = crosstabPanel; panelMain.Children.Add(expander); } strataChiSquareGridList.Add(chiSquaregrid); strataGridList.Add(grid); }