| | |
| | | using ErrorAnalysis.Repository; |
| | | using ErrorAnalysis.Repository.Entity; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement.Menu; |
| | | |
| | | namespace ErrorAnalysis.UI |
| | | { |
| | | public partial class FrmMain : Form |
| | | { |
| | | private string? _connectionString; |
| | | |
| | | private List<COModelTable> _models; |
| | | private COModelTable? _curModel; |
| | | public FrmMain() |
| | | { |
| | | InitializeComponent(); |
| | |
| | | { |
| | | var modelRepository = new COModelRepository(_connectionString); |
| | | var models = modelRepository.GetCOModels(); |
| | | |
| | | |
| | | } |
| | | |
| | | private void rdoMode_CheckedChanged(object sender, EventArgs e) |
| | |
| | | |
| | | if (result == DialogResult.OK) |
| | | { |
| | | pbLoadDB.Show(); |
| | | pbLoadDB.Value = 0; |
| | | txtDataPath.Text = fileDlg.FileName; |
| | | txtToolType.Text = fileDlg.SafeFileName.Replace("DB.db", "").Replace("Mcnp", ""); |
| | | _connectionString = $"Data Source={fileDlg.FileName};"; |
| | | var modelRepository = new COModelRepository(_connectionString); |
| | | pbLoadDB.Value = 50; |
| | | Task.Run(() => |
| | | { |
| | | _models = modelRepository.GetCOModels(); |
| | | BeginInvoke(new System.Action(() => |
| | | { |
| | | pbLoadDB.Value = 80; |
| | | InitInputControl(); |
| | | })); |
| | | |
| | | BeginInvoke(new System.Action(() => |
| | | { |
| | | pbLoadDB.Value = 100; |
| | | })); |
| | | Thread.Sleep(1000); |
| | | BeginInvoke(new System.Action(() => |
| | | { |
| | | pbLoadDB.Hide(); |
| | | })); |
| | | |
| | | }); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | cmbSpeedUnit.SelectedIndex = 0; |
| | | } |
| | | |
| | | private void InitInputControl() |
| | | { |
| | | foreach (var item in gpBorehole.Controls) |
| | | if (item is ComboBox cmb) |
| | | cmb.Items.Clear(); |
| | | |
| | | if (_models != null) |
| | | { |
| | | cmbBit.Items.AddRange(_models.Select(m => m.BIT).Distinct().ToArray()); |
| | | } |
| | | } |
| | | |
| | | private void btnSelectBore_Click(object sender, EventArgs e) |
| | | { |
| | | if (string.IsNullOrEmpty(_connectionString)) |
| | | { |
| | | MessageBox.Show("Please choose data source first!"); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | private void borehole_cmb_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | var control = (sender as ComboBox); |
| | | |
| | | var parentControl = control.Parent; |
| | | var allCmb = parentControl.Controls.OfType<Control>().Where(c => c is ComboBox).Select(c => c as ComboBox).ToList(); |
| | | if (control.Name == "cmbBit") |
| | | { |
| | | foreach (var item in allCmb) |
| | | { |
| | | if (item.Name != "cmbBit") |
| | | { |
| | | item.Items.Clear(); |
| | | } |
| | | } |
| | | } |
| | | else if (control.Name.Contains("OD")) |
| | | { |
| | | allCmb.FirstOrDefault(a => a.Name == control.Name.Replace("OD", "ID")).Items.Clear(); |
| | | } |
| | | else if (control.Name == "cmbCasingID") |
| | | { |
| | | cmbScreenOD.Items.Clear(); |
| | | cmbScreenID.Items.Clear(); |
| | | cmbTubeOD.Items.Clear(); |
| | | cmbTubeID.Items.Clear(); |
| | | } |
| | | var selectedCmbs = allCmb.Where(c => c.SelectedIndex != -1).ToList(); |
| | | var unSelectedCmbs = allCmb.Where(c => c.SelectedIndex == -1).ToList(); |
| | | var selectedModels = _models; |
| | | var modelType = _models[0].GetType(); |
| | | |
| | | foreach (var cmb in selectedCmbs) |
| | | { |
| | | selectedModels = selectedModels.Where(c => modelType.GetProperty(cmb.Tag.ToString()).GetValue(c).ToString() == cmb.Text).ToList(); |
| | | } |
| | | |
| | | foreach (var cmb in unSelectedCmbs) |
| | | { |
| | | cmb.Items.Clear(); |
| | | cmb.Enabled = true; |
| | | var currentItems = selectedModels.Where(c => modelType.GetProperty(cmb.Tag.ToString()).GetValue(c).ToString() != "0").Select(c => modelType.GetProperty(cmb.Tag.ToString()).GetValue(c).ToString()).Distinct().ToArray(); |
| | | if (currentItems.Length == 0) |
| | | cmb.Enabled = false; |
| | | |
| | | |
| | | cmb.Items.AddRange(currentItems); |
| | | if (currentItems.Length == 1) |
| | | cmb.Text = currentItems[0]; |
| | | } |
| | | |
| | | if (selectedModels.Count == 1) |
| | | { |
| | | _curModel = selectedModels[0]; |
| | | } |
| | | } |
| | | } |
| | | } |