From 05946b151e7010b2b1a851892152e6b5d34151b3 Mon Sep 17 00:00:00 2001
From: lx <ex_lixiang17@cosl.com.cn>
Date: 星期五, 11 七月 2025 17:30:52 +0800
Subject: [PATCH] update

---
 ErrorAnalysis.UI/FrmMain.cs |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 107 insertions(+), 3 deletions(-)

diff --git a/ErrorAnalysis.UI/FrmMain.cs b/ErrorAnalysis.UI/FrmMain.cs
index cef7132..d6a053c 100644
--- a/ErrorAnalysis.UI/FrmMain.cs
+++ b/ErrorAnalysis.UI/FrmMain.cs
@@ -1,11 +1,14 @@
 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();
@@ -14,8 +17,6 @@
         {
             var modelRepository = new COModelRepository(_connectionString);
             var models = modelRepository.GetCOModels();
-
-
         }
 
         private void rdoMode_CheckedChanged(object sender, EventArgs e)
@@ -42,8 +43,33 @@
 
             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();
+                    }));
+
+                });
             }
         }
 
@@ -51,5 +77,83 @@
         {
             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];
+            }
+        }
     }
 }

--
Gitblit v1.9.3