private void pobierzKryteriaDlaCelu(int idCelu) { Dictionary <int, String> listaKryteriow = KryteriumController.pobierzListeNazwKryteriow(idCelu); List <Wynik> listaWynikow = new List <Wynik>(); DataTable dt = stworzStruktureWag(); foreach (KeyValuePair <int, String> kryterium in listaKryteriow) { listaWynikow.AddRange(WynikController.pobierzWynikiCelu(kryterium.Key)); } int lp = 1; foreach (Wynik w in listaWynikow) { DataRow dr = dt.NewRow(); dr["Lp"] = lp; dr["Kryterium"] = listaKryteriow[w.Kryterium1]; dr["Względem"] = listaKryteriow[w.Kryterium2]; dr["Waga"] = w.Waga; dt.Rows.Add(dr); lp++; } wagiDataGridView.DataSource = dt; }
private void dodajButton_Click(object sender, EventArgs e) { if (celRadioButton.Checked) { KryteriumController.dodajKryterium(nazwaTextBox.Text, opisRichTextBox.Text, 0, false, 0); } else if (kryteriumRadioButton.Checked) { KryteriumController.dodajKryterium(nazwaTextBox.Text, opisRichTextBox.Text, kryteriumID, false, celID); KryteriumController.dodajLiczbePodkryteriow(kryteriumID, false); liczbaPodkryteriow++; } else if (wariantRadioButton.Checked) { KryteriumController.dodajKryterium(nazwaTextBox.Text, opisRichTextBox.Text, kryteriumID, true, celID); DataTable tabelaWariantow = KryteriumController.pobierzTabeleWariantow(kryteriumID); if (tabelaWariantow.Rows.Count > 0) { wariantyListBox.DataSource = tabelaWariantow; wariantyListBox.ValueMember = "ID_Wariantu"; wariantyListBox.DisplayMember = "Nazwa"; wariantyListBox.ClearSelected(); } } pobierzCele(); problemDataGridView.Rows[selectedIndex].Selected = true; wyczyscKontrolki(); }
private void usunButton_Click(object sender, EventArgs e) { ExpertHelperDataContext db = new ExpertHelperDataContext(); TreeNode selectedNode = kryteriumPanel.getSelectedNode(); int celID = kryteriumPanel.getCelID(); if (null != selectedNode) { int kryteriumID = int.Parse(selectedNode.Name.ToString()); DialogResult result = MessageBox.Show("Czy na pewno chcesz usunąć zaznaczone kryterium i wszystkie jego podkryteria?", "Usuń", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { List <int> listaPodkryteriow = KryteriumController.stworzListeDoUsuniecia(kryteriumID, celID); foreach (int idPodkryterium in listaPodkryteriow) { KryteriumController.usunKryterium(idPodkryterium, db); } kryteriumPanel.pobierzCele(); } } }
private void kryteriaTreeView_AfterSelect(object sender, TreeViewEventArgs e) { ExpertHelperDataContext db = new ExpertHelperDataContext(); wyczyscKontrolki(); dodajButton.Enabled = false; zapiszButton.Enabled = true; if (kryteriaTreeView.SelectedNode == null) { ustalBlokadeKontrolek(false); setButtonEnable("Usuń", false); } else { ustalBlokadeKontrolek(true); setButtonEnable("Usuń", true); TreeNode item = kryteriaTreeView.SelectedNode; kryteriumID = int.Parse(item.Name.ToString()); Kryterium kryterium = KryteriumController.pobierzKryterium(kryteriumID, db, false); if (null != kryterium) { nazwaTextBox.Text = kryterium.Nazwa; opisRichTextBox.AppendText(kryterium.Opis); } } }
public static DataTable stworzTabeleWag(int idCelu, int idKryterium, Dictionary <String, int> listaIdKryteriow) { DataTable tabelaWag = new DataTable(); List <Kryterium> listaPodkryteriow = KryteriumController.pobierzListePodkryteriow(idKryterium, idCelu); ExpertHelperDataContext db = new ExpertHelperDataContext(); Kryterium kryterium = KryteriumController.pobierzKryterium(idKryterium, db, false); if (listaPodkryteriow.Count > 0) { tabelaWag.Columns.Add(kryterium.Nazwa); listaPodkryteriow.ForEach(d => { tabelaWag.Columns.Add(d.Nazwa); tabelaWag.Rows.Add(d.Nazwa); }); } else { List <Kryterium> listaWariantow = KryteriumController.pobierzListeWariantow(idCelu); tabelaWag.Columns.Add(kryterium.Nazwa); listaWariantow.ForEach(w => { tabelaWag.Columns.Add(w.Nazwa); tabelaWag.Rows.Add(w.Nazwa); }); } foreach (DataRow dr in tabelaWag.Rows) { foreach (DataColumn dc in tabelaWag.Columns) { if (dr.Table.Columns[dc.ColumnName].Ordinal > 0) { int rowID = listaIdKryteriow[dr[0].ToString()]; int columnID = listaIdKryteriow[dc.ColumnName]; int glowneID = listaIdKryteriow[dr.Table.Columns[0].ColumnName.ToString()]; Waga waga = WagaController.pobierzWage(glowneID, rowID, columnID, db); if (null != waga) { dr[dc] = waga.Waga1; } else if (rowID == columnID) { dr[dc] = 1; } else { dr[dc] = 0; } } } } return(tabelaWag); }
private void problemDataGridView_SelectionChanged(object sender, EventArgs e) { kryteriaTreeView.Nodes.Clear(); wariantyListBox.DataSource = null; wyczyscKontrolki(); dodajButton.Enabled = false; zapiszButton.Enabled = true; celRadioButton.Checked = true; ustalZaznaczenie(wariantRadioButton, kryteriumRadioButton); setButtonEnable("Usuń", false); setButtonEnable("Dalej", false); if (problemDataGridView.SelectedRows.Count == 1) { try { DataGridViewRow dataRow = problemDataGridView.SelectedRows[0]; kryteriumID = int.Parse(dataRow.Cells[1].Value.ToString()); celID = kryteriumID; selectedIndex = problemDataGridView.SelectedRows[0].Index; if (pierwszyZaznaczony == selectedIndex) { setButtonEnable("Dalej", true); } else { setButtonEnable("Dalej", false); } TreeNode listaNodow = KryteriumController.pobierzDrzewo(kryteriumID); kryteriaTreeView.Nodes.AddRange(new TreeNode[] { listaNodow }); DataTable tabelaWariantow = KryteriumController.pobierzTabeleWariantow(kryteriumID); if (tabelaWariantow.Rows.Count > 0) { wariantyListBox.DataSource = tabelaWariantow; wariantyListBox.ValueMember = "ID_Wariantu"; wariantyListBox.DisplayMember = "Nazwa"; wariantyListBox.ClearSelected(); } nazwaTextBox.Text = dataRow.Cells[3].Value.ToString(); opisRichTextBox.Text = dataRow.Cells[4].Value.ToString(); ustalLiczbePodkryteriow(); } catch { MessageBox.Show("Zaznacz wiersz z danymi!", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void wynikButton_Click(object sender, EventArgs e) { List <Wynik> listaWynikow = WynikController.pobierzWynikiCelu(idCelu); List <Kryterium> listaWariantow = KryteriumController.pobierzListeWariantow(idCelu); Dictionary <int, decimal> listaWagWariantow = new Dictionary <int, decimal>(); foreach (Kryterium kryteriumWariant in listaWariantow) { decimal waga = 0; decimal wagaMnozona = 1; List <Wynik> listaWagWariantu = listaWynikow.Where(w => w.Kryterium1 == kryteriumWariant.ID).Select(w => new Wynik { ID = w.ID, KryteriumGlowne = w.KryteriumGlowne, Kryterium1 = w.Kryterium1, Kryterium2 = w.Kryterium2, Waga = w.Waga }).ToList(); List <Wynik> listaPosortowana = listaWagWariantu.OrderByDescending(o => o.ID).ThenByDescending(o => o.Kryterium1).ToList(); foreach (Wynik w in listaPosortowana.OrderByDescending(o => o.Kryterium2)) { wagaMnozona = Convert.ToDecimal(w.Waga); int idKryterium2 = w.Kryterium2; do { Wynik wynikOjca = pobierzWage(idKryterium2, listaWynikow); if (null != wynikOjca) { wagaMnozona = wagaMnozona * Convert.ToDecimal(wynikOjca.Waga); idKryterium2 = wynikOjca.Kryterium2; } else { break; } } while (idKryterium2 != idCelu); waga = waga + wagaMnozona; } listaWagWariantow.Add(kryteriumWariant.ID, waga); } WynikPanel wynikPanel = new WynikPanel(listaWagWariantow, idCelu, MAKSYMALNA_WAGA, buttonMenu); mainForm.Controls.Add(wynikPanel); wynikPanel.Visible = true; buttonMenu.setWynikPanel(wynikPanel); buttonMenu.setAktualnyPanel(wynikPanel); buttonMenu.setControlEnable(buttonMenu.getButton("Dalej"), false); buttonMenu.setControlEnable(buttonMenu.getButton("Dodaj"), false); buttonMenu.setControlEnable(buttonMenu.getButton("Usuń"), false); Visible = false; }
private void uzupelnijProblemWarianty() { problemTreeView.Nodes.AddRange(new TreeNode[] { listaNodow }); DataTable tabelaWariantow = KryteriumController.pobierzTabeleWariantow(idCelu); if (tabelaWariantow.Rows.Count > 0) { wariantyListBox.DataSource = tabelaWariantow; wariantyListBox.ValueMember = "ID_Wariantu"; wariantyListBox.DisplayMember = "Nazwa"; } }
private void zapiszButton_Click(object sender, EventArgs e) { if (celRadioButton.Checked || kryteriumRadioButton.Checked) { KryteriumController.edytujKryterium(kryteriumID, nazwaTextBox.Text, opisRichTextBox.Text, false); } else if (wariantRadioButton.Checked) { KryteriumController.edytujKryterium(wariantID, nazwaTextBox.Text, opisRichTextBox.Text, true); } pobierzCele(); problemDataGridView.Rows[selectedIndex].Selected = true; wyczyscKontrolki(); }
public static void setChartData(Chart wynikChart, int idCelu, Dictionary <int, decimal> listaWariantowWag) { wynikChart.ChartAreas.Clear(); wynikChart.Legends.Clear(); wynikChart.Series.Clear(); wynikChart.Titles.Clear(); ExpertHelperDataContext db = new ExpertHelperDataContext(); Kryterium cel = KryteriumController.pobierzKryterium(idCelu, false); ChartArea area = new ChartArea("Ranking"); area.AxisY.Interval = 0.1; area.AxisY.Maximum = 1; wynikChart.ChartAreas.Add(area); Legend legend = new Legend("Warianty"); legend.LegendStyle = LegendStyle.Column; wynikChart.Legends.Add(legend); foreach (KeyValuePair <int, decimal> wariant in listaWariantowWag) { Kryterium kryterium = KryteriumController.pobierzKryterium(wariant.Key, db, true); Series wykres = new Series(kryterium.Nazwa, 1); wynikChart.Series.Add(wykres); wykres.ChartType = SeriesChartType.Column; wykres.ChartArea = "Ranking"; wykres.Label = kryterium.Nazwa; wynikChart.Series[kryterium.Nazwa].Points.AddXY(kryterium.Nazwa, Math.Round(Convert.ToDouble(wariant.Value), 3)); wynikChart.Series[kryterium.Nazwa].Points[0].AxisLabel = "Ranking końcowy"; wynikChart.Series[kryterium.Nazwa].Label = wariant.Value.ToString(); } Title tytul = new Title("Ranking końcowy dla celu: " + cel.Nazwa); Font font = new Font(tytul.Font.FontFamily, 20, FontStyle.Bold); tytul.Font = font; wynikChart.Titles.Add(tytul); wynikChart.Visible = true; }
public WagiPanel(Form mainForm, ButtonMenu buttonMenu, int idCelu) { InitializeComponent(); this.mainForm = mainForm; this.idCelu = idCelu; this.buttonMenu = buttonMenu; problemTreeView.Nodes.Clear(); wariantyListBox.Items.Clear(); listaNodow = KryteriumController.pobierzDrzewo(idCelu); uzupelnijProblemWarianty(); listaIdKryteriow = KryteriumController.pobierzListeIdKryteriow(idCelu); listaNazwKryteriow = KryteriumController.pobierzListeNazwKryteriow(idCelu); wartoscNumericUpDown.Maximum = MAKSYMALNA_WAGA; sliderTrackBar.SetRange(0, MAKSYMALNA_WAGA * 100); buttonMenu.setControlEnable(buttonMenu.getButton("Dodaj"), false); buttonMenu.setControlEnable(buttonMenu.getButton("Usuń"), false); buttonMenu.setControlEnable(buttonMenu.getButton("Dalej"), false); }
private void wariantyListBox_SelectedIndexChanged(object sender, EventArgs e) { wyczyscKontrolki(); if (null != wariantyListBox.SelectedValue) { bool czyLiczba = int.TryParse(wariantyListBox.SelectedValue.ToString(), out wariantID); if (czyLiczba) { Kryterium wariant = KryteriumController.pobierzKryterium(wariantID, true); if (null != wariant) { nazwaTextBox.Text = wariant.Nazwa; opisRichTextBox.AppendText(wariant.Opis); } } } }
private void pobierzWynikiDlaCelu(int idCelu) { ExpertHelperDataContext db = new ExpertHelperDataContext(); Dictionary <int, String> listaKryteriow = KryteriumController.pobierzListeNazwKryteriow(idCelu); List <WynikCelu> listaWynikowCelu = WynikCeluController.pobierzListeWynikow(idCelu, db); if (listaWynikowCelu.Count > 0) { double max = listaWynikowCelu.Max(w => w.Waga); DataTable dt = stworzStruktureWynikow(listaWynikowCelu, listaKryteriow, idCelu); DataRow dr = dt.NewRow(); dr[listaKryteriow[idCelu]] = "Wynik"; foreach (WynikCelu w in listaWynikowCelu) { dr[listaKryteriow[w.ID_Wariantu]] = w.Waga; } dt.Rows.Add(dr); wynikiDataGridView.DataSource = dt; foreach (DataGridViewRow row in wynikiDataGridView.Rows) { foreach (DataGridViewColumn col in wynikiDataGridView.Columns) { object value = wynikiDataGridView.Rows[row.Index].Cells[col.Index].Value; if (null != value && value.ToString() == max.ToString()) { wynikiDataGridView.Rows[row.Index].Cells[col.Index].Style.BackColor = Color.LightGreen; } } } } }
private void pobierzCele() { DataTable dt = KryteriumController.pobierzTabeleCelow(); problemDataGridView.DataSource = dt; problemDataGridView.AllowUserToAddRows = true; problemDataGridView.AllowUserToResizeColumns = false; if (problemDataGridView.Columns.Count > 1) { problemDataGridView.Columns[0].Width = 43; problemDataGridView.Columns[3].Width = 235; problemDataGridView.Columns[1].Visible = false; problemDataGridView.Columns[2].Visible = false; problemDataGridView.Columns[4].Visible = false; problemDataGridView.Columns[5].Visible = false; problemDataGridView.Columns[6].Visible = false; problemDataGridView.Columns[7].Visible = false; } }
private void wagiButton_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add(listaNazwKryteriow[idKryterium]); dt.Columns.Add("Waga"); List <Kryterium> listaPodkryteriowWariantow = KryteriumController.pobierzListePodkryteriow(idKryterium, idCelu); if (listaPodkryteriowWariantow.Count == 0) { listaPodkryteriowWariantow = KryteriumController.pobierzListeWariantow(idKryterium); } List <Wynik> listaWynikow = WynikController.pobierzWynikiKryterium(idCelu, idKryterium, listaPodkryteriowWariantow); if (listaWynikow.Count > 0) { listaWynikow.ForEach(w => { DataRow dr = dt.NewRow(); dr[0] = listaNazwKryteriow[w.Kryterium1]; dr["Waga"] = w.Waga; dt.Rows.Add(dr); }); if (dt.Rows.Count > 0) { wagiDataGridView.DataSource = dt; } } else { MessageBox.Show("Nie obliczono wyników dla danego kryterium!", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void usunKryterium() { if (null != kryteriaTreeView.SelectedNode) { ExpertHelperDataContext db = new ExpertHelperDataContext(); TreeNode item = kryteriaTreeView.SelectedNode; int id = int.Parse(item.Name.ToString()); DialogResult result = MessageBox.Show("Czy na pewno chcesz usunąć zaznaczone kryterium i wszystkie jego podkryteria?", "Usuń", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { List <int> listaPodkryteriow = KryteriumController.stworzListeDoUsuniecia(id, celID); foreach (int idPodkryterium in listaPodkryteriow) { KryteriumController.usunKryterium(idPodkryterium, db); } } } pobierzCele(); }
public static List <Wynik> pobierzWektorWag(int idCelu, int idKryterium) { List <Kryterium> listaWariantow = KryteriumController.pobierzListeWariantow(idCelu); return(WynikController.pobierzWynikiKryterium(idCelu, idKryterium, listaWariantow)); }