From ad8e8447cab9adb6d9bc30ad6f78e92cc9a9789b Mon Sep 17 00:00:00 2001
From: lx <ex_lixiang17@cosl.com.cn>
Date: 星期四, 03 七月 2025 17:34:02 +0800
Subject: [PATCH] update ui

---
 /dev/null                                   |   21 -
 ErrorAnalysis.UI/FrmMain.resx               |    4 
 ErrorAnalysis.UI/FrmMain.cs                 |   55 ++++
 ErrorAnalysis.Service/COMergeCalcService.cs |    3 
 ErrorAnalysis.UI/FrmMain.Designer.cs        |  684 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 ErrorAnalysis.Service/Utility.cs            |    8 
 6 files changed, 744 insertions(+), 31 deletions(-)

diff --git a/ErrorAnalysis.Service/COMergeCalcService.cs b/ErrorAnalysis.Service/COMergeCalcService.cs
index 06861c2..7fb2335 100644
--- a/ErrorAnalysis.Service/COMergeCalcService.cs
+++ b/ErrorAnalysis.Service/COMergeCalcService.cs
@@ -9,6 +9,9 @@
 {
     public class COMergeCalcService
     {
+        //Ncoef=1e8*2.54*2.54*2*6*11*2*77*0.2/0.6*speed;
+        //Fcoef=1e8*2.54*2.54*4*6*2*11*77*0.2/0.6*speed;
+
         const double _gg = (9.0 - 0.0) / 255.0;//0.03529
         const double _offset = 0.0;
 
diff --git a/ErrorAnalysis.Service/Utility.cs b/ErrorAnalysis.Service/Utility.cs
index 9d1ff79..6c10062 100644
--- a/ErrorAnalysis.Service/Utility.cs
+++ b/ErrorAnalysis.Service/Utility.cs
@@ -23,13 +23,5 @@
             double y = y0 + (value - x0) * (y1 - y0) / (x1 - x0);
             return y;
         }
-
-
-        public static (double, double) InterpolateBySw(double c, double o, double sw)
-        {
-            var cRes = (100 - sw) / 100 * c;
-            var oRes = sw / 100 * o;
-            return (cRes, oRes);
-        }
     }
 }
diff --git a/ErrorAnalysis.UI/Form1.Designer.cs b/ErrorAnalysis.UI/Form1.Designer.cs
deleted file mode 100644
index da9e2a7..0000000
--- a/ErrorAnalysis.UI/Form1.Designer.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-锘縩amespace ErrorAnalysis.UI
-{
-    partial class FrmMain
-    {
-        /// <summary>
-        ///  Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        ///  Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        ///  Required method for Designer support - do not modify
-        ///  the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            btnGetAllPipe = new Button();
-            gpBore = new GroupBox();
-            gbProperty = new GroupBox();
-            gbResult = new GroupBox();
-            SuspendLayout();
-            // 
-            // btnGetAllPipe
-            // 
-            btnGetAllPipe.Location = new Point(957, 688);
-            btnGetAllPipe.Name = "btnGetAllPipe";
-            btnGetAllPipe.Size = new Size(75, 23);
-            btnGetAllPipe.TabIndex = 0;
-            btnGetAllPipe.Text = "button1";
-            btnGetAllPipe.UseVisualStyleBackColor = true;
-            btnGetAllPipe.Click += btnGetAllPipe_Click;
-            // 
-            // gpBore
-            // 
-            gpBore.Location = new Point(12, 12);
-            gpBore.Name = "gpBore";
-            gpBore.Size = new Size(1020, 163);
-            gpBore.TabIndex = 1;
-            gpBore.TabStop = false;
-            gpBore.Text = "Bore Info";
-            // 
-            // gbProperty
-            // 
-            gbProperty.Location = new Point(12, 181);
-            gbProperty.Name = "gbProperty";
-            gbProperty.Size = new Size(1020, 143);
-            gbProperty.TabIndex = 2;
-            gbProperty.TabStop = false;
-            gbProperty.Text = "Property";
-            // 
-            // gbResult
-            // 
-            gbResult.Location = new Point(12, 340);
-            gbResult.Name = "gbResult";
-            gbResult.Size = new Size(1020, 342);
-            gbResult.TabIndex = 3;
-            gbResult.TabStop = false;
-            gbResult.Text = "Result";
-            // 
-            // FrmMain
-            // 
-            AutoScaleDimensions = new SizeF(7F, 17F);
-            AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(1044, 723);
-            Controls.Add(gbResult);
-            Controls.Add(gbProperty);
-            Controls.Add(gpBore);
-            Controls.Add(btnGetAllPipe);
-            Name = "FrmMain";
-            Text = "Error Analysis";
-            ResumeLayout(false);
-        }
-
-        #endregion
-
-        private Button btnGetAllPipe;
-        private GroupBox gpBore;
-        private GroupBox gbProperty;
-        private GroupBox gbResult;
-    }
-}
diff --git a/ErrorAnalysis.UI/Form1.cs b/ErrorAnalysis.UI/Form1.cs
deleted file mode 100644
index 50e1b92..0000000
--- a/ErrorAnalysis.UI/Form1.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using ErrorAnalysis.Repository;
-
-namespace ErrorAnalysis.UI
-{
-    public partial class FrmMain : Form
-    {
-        public FrmMain()
-        {
-            InitializeComponent();
-        }
-
-        private void btnGetAllPipe_Click(object sender, EventArgs e)
-        {
-            var connectionString = "Data Source=D:\\Pro\\cosl\\ErrorRate\\RetMcnpDB.db";
-            var modelRepository = new COModelRepository(connectionString);
-            var models = modelRepository.GetCOModels();
-
-            
-        }
-    }
-}
diff --git a/ErrorAnalysis.UI/FrmMain.Designer.cs b/ErrorAnalysis.UI/FrmMain.Designer.cs
new file mode 100644
index 0000000..ce054be
--- /dev/null
+++ b/ErrorAnalysis.UI/FrmMain.Designer.cs
@@ -0,0 +1,684 @@
+锘縩amespace ErrorAnalysis.UI
+{
+    partial class FrmMain
+    {
+        /// <summary>
+        ///  Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        ///  Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        ///  Required method for Designer support - do not modify
+        ///  the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            btnAnalysis = new Button();
+            gpBore = new GroupBox();
+            textBox8 = new TextBox();
+            label16 = new Label();
+            label13 = new Label();
+            textBox7 = new TextBox();
+            label14 = new Label();
+            label11 = new Label();
+            textBox6 = new TextBox();
+            label12 = new Label();
+            label9 = new Label();
+            textBox5 = new TextBox();
+            label10 = new Label();
+            label7 = new Label();
+            textBox4 = new TextBox();
+            label8 = new Label();
+            label5 = new Label();
+            textBox3 = new TextBox();
+            label6 = new Label();
+            label3 = new Label();
+            textBox2 = new TextBox();
+            label4 = new Label();
+            label2 = new Label();
+            textBox1 = new TextBox();
+            btnSelectBore = new Button();
+            label1 = new Label();
+            gbTarget = new GroupBox();
+            label22 = new Label();
+            numericUpDown3 = new NumericUpDown();
+            label21 = new Label();
+            pnlLockPass = new Panel();
+            nudPass = new NumericUpDown();
+            label23 = new Label();
+            pnlLockSpeed = new Panel();
+            cmbSpeedUnit = new ComboBox();
+            numericUpDown2 = new NumericUpDown();
+            label20 = new Label();
+            panel1 = new Panel();
+            rdoLockSpeed = new RadioButton();
+            rdoLockPass = new RadioButton();
+            label19 = new Label();
+            label18 = new Label();
+            label17 = new Label();
+            numericUpDown1 = new NumericUpDown();
+            label15 = new Label();
+            nudSw = new NumericUpDown();
+            gbResult = new GroupBox();
+            btnReport = new Button();
+            label24 = new Label();
+            txtDataPath = new TextBox();
+            btnSelectDataSource = new Button();
+            gpBore.SuspendLayout();
+            gbTarget.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)numericUpDown3).BeginInit();
+            pnlLockPass.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)nudPass).BeginInit();
+            pnlLockSpeed.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)numericUpDown2).BeginInit();
+            panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)numericUpDown1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)nudSw).BeginInit();
+            SuspendLayout();
+            // 
+            // btnAnalysis
+            // 
+            btnAnalysis.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+            btnAnalysis.Location = new Point(616, 589);
+            btnAnalysis.Name = "btnAnalysis";
+            btnAnalysis.Size = new Size(75, 23);
+            btnAnalysis.TabIndex = 0;
+            btnAnalysis.Text = "Analysis";
+            btnAnalysis.UseVisualStyleBackColor = true;
+            btnAnalysis.Click += btnGetAllPipe_Click;
+            // 
+            // gpBore
+            // 
+            gpBore.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+            gpBore.Controls.Add(textBox8);
+            gpBore.Controls.Add(label16);
+            gpBore.Controls.Add(label13);
+            gpBore.Controls.Add(textBox7);
+            gpBore.Controls.Add(label14);
+            gpBore.Controls.Add(label11);
+            gpBore.Controls.Add(textBox6);
+            gpBore.Controls.Add(label12);
+            gpBore.Controls.Add(label9);
+            gpBore.Controls.Add(textBox5);
+            gpBore.Controls.Add(label10);
+            gpBore.Controls.Add(label7);
+            gpBore.Controls.Add(textBox4);
+            gpBore.Controls.Add(label8);
+            gpBore.Controls.Add(label5);
+            gpBore.Controls.Add(textBox3);
+            gpBore.Controls.Add(label6);
+            gpBore.Controls.Add(label3);
+            gpBore.Controls.Add(textBox2);
+            gpBore.Controls.Add(label4);
+            gpBore.Controls.Add(label2);
+            gpBore.Controls.Add(textBox1);
+            gpBore.Controls.Add(btnSelectBore);
+            gpBore.Controls.Add(label1);
+            gpBore.Location = new Point(12, 44);
+            gpBore.Name = "gpBore";
+            gpBore.Size = new Size(760, 186);
+            gpBore.TabIndex = 1;
+            gpBore.TabStop = false;
+            gpBore.Text = "Bore Info";
+            // 
+            // textBox8
+            // 
+            textBox8.Location = new Point(86, 156);
+            textBox8.Name = "textBox8";
+            textBox8.ReadOnly = true;
+            textBox8.Size = new Size(109, 23);
+            textBox8.TabIndex = 23;
+            // 
+            // label16
+            // 
+            label16.AutoSize = true;
+            label16.Location = new Point(20, 159);
+            label16.Name = "label16";
+            label16.Size = new Size(61, 17);
+            label16.TabIndex = 22;
+            label16.Text = "Lithology";
+            // 
+            // label13
+            // 
+            label13.AutoSize = true;
+            label13.Location = new Point(435, 126);
+            label13.Name = "label13";
+            label13.Size = new Size(18, 17);
+            label13.TabIndex = 21;
+            label13.Text = "in";
+            // 
+            // textBox7
+            // 
+            textBox7.Location = new Point(322, 123);
+            textBox7.Name = "textBox7";
+            textBox7.ReadOnly = true;
+            textBox7.Size = new Size(109, 23);
+            textBox7.TabIndex = 20;
+            // 
+            // label14
+            // 
+            label14.AutoSize = true;
+            label14.Location = new Point(256, 126);
+            label14.Name = "label14";
+            label14.Size = new Size(54, 17);
+            label14.TabIndex = 19;
+            label14.Text = "Tube ID";
+            // 
+            // label11
+            // 
+            label11.AutoSize = true;
+            label11.Location = new Point(199, 122);
+            label11.Name = "label11";
+            label11.Size = new Size(18, 17);
+            label11.TabIndex = 18;
+            label11.Text = "in";
+            // 
+            // textBox6
+            // 
+            textBox6.Location = new Point(86, 119);
+            textBox6.Name = "textBox6";
+            textBox6.ReadOnly = true;
+            textBox6.Size = new Size(109, 23);
+            textBox6.TabIndex = 17;
+            // 
+            // label12
+            // 
+            label12.AutoSize = true;
+            label12.Location = new Point(20, 122);
+            label12.Name = "label12";
+            label12.Size = new Size(60, 17);
+            label12.TabIndex = 16;
+            label12.Text = "Tube OD";
+            // 
+            // label9
+            // 
+            label9.AutoSize = true;
+            label9.Location = new Point(435, 87);
+            label9.Name = "label9";
+            label9.Size = new Size(18, 17);
+            label9.TabIndex = 15;
+            label9.Text = "in";
+            // 
+            // textBox5
+            // 
+            textBox5.Location = new Point(322, 84);
+            textBox5.Name = "textBox5";
+            textBox5.ReadOnly = true;
+            textBox5.Size = new Size(109, 23);
+            textBox5.TabIndex = 14;
+            // 
+            // label10
+            // 
+            label10.AutoSize = true;
+            label10.Location = new Point(252, 87);
+            label10.Name = "label10";
+            label10.Size = new Size(64, 17);
+            label10.TabIndex = 13;
+            label10.Text = "Screen ID";
+            // 
+            // label7
+            // 
+            label7.AutoSize = true;
+            label7.Location = new Point(199, 85);
+            label7.Name = "label7";
+            label7.Size = new Size(18, 17);
+            label7.TabIndex = 12;
+            label7.Text = "in";
+            // 
+            // textBox4
+            // 
+            textBox4.Location = new Point(86, 82);
+            textBox4.Name = "textBox4";
+            textBox4.ReadOnly = true;
+            textBox4.Size = new Size(109, 23);
+            textBox4.TabIndex = 11;
+            // 
+            // label8
+            // 
+            label8.AutoSize = true;
+            label8.Location = new Point(10, 85);
+            label8.Name = "label8";
+            label8.Size = new Size(70, 17);
+            label8.TabIndex = 10;
+            label8.Text = "Screen OD";
+            // 
+            // label5
+            // 
+            label5.AutoSize = true;
+            label5.Location = new Point(681, 48);
+            label5.Name = "label5";
+            label5.Size = new Size(18, 17);
+            label5.TabIndex = 9;
+            label5.Text = "in";
+            // 
+            // textBox3
+            // 
+            textBox3.Location = new Point(568, 45);
+            textBox3.Name = "textBox3";
+            textBox3.ReadOnly = true;
+            textBox3.Size = new Size(109, 23);
+            textBox3.TabIndex = 8;
+            // 
+            // label6
+            // 
+            label6.AutoSize = true;
+            label6.Location = new Point(492, 48);
+            label6.Name = "label6";
+            label6.Size = new Size(64, 17);
+            label6.TabIndex = 7;
+            label6.Text = "Casing ID";
+            // 
+            // label3
+            // 
+            label3.AutoSize = true;
+            label3.Location = new Point(435, 48);
+            label3.Name = "label3";
+            label3.Size = new Size(18, 17);
+            label3.TabIndex = 6;
+            label3.Text = "in";
+            // 
+            // textBox2
+            // 
+            textBox2.Location = new Point(322, 45);
+            textBox2.Name = "textBox2";
+            textBox2.ReadOnly = true;
+            textBox2.Size = new Size(109, 23);
+            textBox2.TabIndex = 5;
+            // 
+            // label4
+            // 
+            label4.AutoSize = true;
+            label4.Location = new Point(246, 48);
+            label4.Name = "label4";
+            label4.Size = new Size(70, 17);
+            label4.TabIndex = 4;
+            label4.Text = "Casing OD";
+            // 
+            // label2
+            // 
+            label2.AutoSize = true;
+            label2.Location = new Point(199, 48);
+            label2.Name = "label2";
+            label2.Size = new Size(18, 17);
+            label2.TabIndex = 3;
+            label2.Text = "in";
+            // 
+            // textBox1
+            // 
+            textBox1.Location = new Point(86, 45);
+            textBox1.Name = "textBox1";
+            textBox1.ReadOnly = true;
+            textBox1.Size = new Size(109, 23);
+            textBox1.TabIndex = 2;
+            // 
+            // btnSelectBore
+            // 
+            btnSelectBore.Location = new Point(6, 16);
+            btnSelectBore.Name = "btnSelectBore";
+            btnSelectBore.Size = new Size(75, 23);
+            btnSelectBore.TabIndex = 1;
+            btnSelectBore.Text = "Select";
+            btnSelectBore.UseVisualStyleBackColor = true;
+            // 
+            // label1
+            // 
+            label1.AutoSize = true;
+            label1.Location = new Point(57, 48);
+            label1.Name = "label1";
+            label1.Size = new Size(23, 17);
+            label1.TabIndex = 0;
+            label1.Text = "Bit";
+            // 
+            // gbTarget
+            // 
+            gbTarget.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+            gbTarget.Controls.Add(label22);
+            gbTarget.Controls.Add(numericUpDown3);
+            gbTarget.Controls.Add(label21);
+            gbTarget.Controls.Add(pnlLockPass);
+            gbTarget.Controls.Add(pnlLockSpeed);
+            gbTarget.Controls.Add(panel1);
+            gbTarget.Controls.Add(label19);
+            gbTarget.Controls.Add(label18);
+            gbTarget.Controls.Add(label17);
+            gbTarget.Controls.Add(numericUpDown1);
+            gbTarget.Controls.Add(label15);
+            gbTarget.Controls.Add(nudSw);
+            gbTarget.Location = new Point(12, 236);
+            gbTarget.Name = "gbTarget";
+            gbTarget.Size = new Size(760, 143);
+            gbTarget.TabIndex = 2;
+            gbTarget.TabStop = false;
+            gbTarget.Text = "Target";
+            // 
+            // label22
+            // 
+            label22.AutoSize = true;
+            label22.Location = new Point(632, 26);
+            label22.Name = "label22";
+            label22.Size = new Size(19, 17);
+            label22.TabIndex = 14;
+            label22.Text = "%";
+            // 
+            // numericUpDown3
+            // 
+            numericUpDown3.DecimalPlaces = 1;
+            numericUpDown3.Location = new Point(559, 24);
+            numericUpDown3.Name = "numericUpDown3";
+            numericUpDown3.Size = new Size(67, 23);
+            numericUpDown3.TabIndex = 13;
+            // 
+            // label21
+            // 
+            label21.AutoSize = true;
+            label21.Location = new Point(446, 26);
+            label21.Name = "label21";
+            label21.Size = new Size(110, 17);
+            label21.TabIndex = 12;
+            label21.Text = "Target Error Rate";
+            // 
+            // pnlLockPass
+            // 
+            pnlLockPass.Controls.Add(nudPass);
+            pnlLockPass.Controls.Add(label23);
+            pnlLockPass.Location = new Point(14, 83);
+            pnlLockPass.Name = "pnlLockPass";
+            pnlLockPass.Size = new Size(362, 52);
+            pnlLockPass.TabIndex = 11;
+            pnlLockPass.Visible = false;
+            // 
+            // nudPass
+            // 
+            nudPass.Location = new Point(45, 16);
+            nudPass.Name = "nudPass";
+            nudPass.Size = new Size(72, 23);
+            nudPass.TabIndex = 14;
+            // 
+            // label23
+            // 
+            label23.AutoSize = true;
+            label23.Location = new Point(5, 18);
+            label23.Name = "label23";
+            label23.Size = new Size(34, 17);
+            label23.TabIndex = 13;
+            label23.Text = "Pass";
+            // 
+            // pnlLockSpeed
+            // 
+            pnlLockSpeed.Controls.Add(cmbSpeedUnit);
+            pnlLockSpeed.Controls.Add(numericUpDown2);
+            pnlLockSpeed.Controls.Add(label20);
+            pnlLockSpeed.Location = new Point(13, 85);
+            pnlLockSpeed.Name = "pnlLockSpeed";
+            pnlLockSpeed.Size = new Size(362, 52);
+            pnlLockSpeed.TabIndex = 10;
+            // 
+            // cmbSpeedUnit
+            // 
+            cmbSpeedUnit.DropDownStyle = ComboBoxStyle.DropDownList;
+            cmbSpeedUnit.FormattingEnabled = true;
+            cmbSpeedUnit.Items.AddRange(new object[] { "m/min", "ft/min" });
+            cmbSpeedUnit.Location = new Point(132, 16);
+            cmbSpeedUnit.Name = "cmbSpeedUnit";
+            cmbSpeedUnit.Size = new Size(50, 25);
+            cmbSpeedUnit.TabIndex = 13;
+            // 
+            // numericUpDown2
+            // 
+            numericUpDown2.DecimalPlaces = 1;
+            numericUpDown2.Increment = new decimal(new int[] { 1, 0, 0, 65536 });
+            numericUpDown2.Location = new Point(54, 16);
+            numericUpDown2.Name = "numericUpDown2";
+            numericUpDown2.Size = new Size(72, 23);
+            numericUpDown2.TabIndex = 12;
+            // 
+            // label20
+            // 
+            label20.AutoSize = true;
+            label20.Location = new Point(3, 18);
+            label20.Name = "label20";
+            label20.Size = new Size(45, 17);
+            label20.TabIndex = 0;
+            label20.Text = "Speed";
+            // 
+            // panel1
+            // 
+            panel1.Controls.Add(rdoLockSpeed);
+            panel1.Controls.Add(rdoLockPass);
+            panel1.Location = new Point(13, 51);
+            panel1.Name = "panel1";
+            panel1.Size = new Size(205, 28);
+            panel1.TabIndex = 9;
+            // 
+            // rdoLockSpeed
+            // 
+            rdoLockSpeed.AutoSize = true;
+            rdoLockSpeed.Checked = true;
+            rdoLockSpeed.Location = new Point(3, 3);
+            rdoLockSpeed.Name = "rdoLockSpeed";
+            rdoLockSpeed.Size = new Size(94, 21);
+            rdoLockSpeed.TabIndex = 7;
+            rdoLockSpeed.TabStop = true;
+            rdoLockSpeed.Text = "Lock Speed";
+            rdoLockSpeed.UseVisualStyleBackColor = true;
+            rdoLockSpeed.CheckedChanged += rdoMode_CheckedChanged;
+            // 
+            // rdoLockPass
+            // 
+            rdoLockPass.AutoSize = true;
+            rdoLockPass.Location = new Point(119, 3);
+            rdoLockPass.Name = "rdoLockPass";
+            rdoLockPass.Size = new Size(83, 21);
+            rdoLockPass.TabIndex = 8;
+            rdoLockPass.Text = "Lock Pass";
+            rdoLockPass.UseVisualStyleBackColor = true;
+            rdoLockPass.CheckedChanged += rdoMode_CheckedChanged;
+            // 
+            // label19
+            // 
+            label19.AutoSize = true;
+            label19.Location = new Point(398, 26);
+            label19.Name = "label19";
+            label19.Size = new Size(19, 17);
+            label19.TabIndex = 5;
+            label19.Text = "%";
+            // 
+            // label18
+            // 
+            label18.AutoSize = true;
+            label18.Location = new Point(199, 24);
+            label18.Name = "label18";
+            label18.Size = new Size(19, 17);
+            label18.TabIndex = 4;
+            label18.Text = "%";
+            // 
+            // label17
+            // 
+            label17.AutoSize = true;
+            label17.Location = new Point(261, 26);
+            label17.Name = "label17";
+            label17.Size = new Size(55, 17);
+            label17.TabIndex = 3;
+            label17.Text = "Porosity";
+            // 
+            // numericUpDown1
+            // 
+            numericUpDown1.DecimalPlaces = 1;
+            numericUpDown1.Increment = new decimal(new int[] { 5, 0, 0, 0 });
+            numericUpDown1.Location = new Point(322, 24);
+            numericUpDown1.Name = "numericUpDown1";
+            numericUpDown1.Size = new Size(72, 23);
+            numericUpDown1.TabIndex = 2;
+            // 
+            // label15
+            // 
+            label15.AutoSize = true;
+            label15.Location = new Point(12, 24);
+            label15.Name = "label15";
+            label15.Size = new Size(105, 17);
+            label15.TabIndex = 1;
+            label15.Text = "Water saturation";
+            // 
+            // nudSw
+            // 
+            nudSw.DecimalPlaces = 1;
+            nudSw.Increment = new decimal(new int[] { 1, 0, 0, 65536 });
+            nudSw.Location = new Point(123, 22);
+            nudSw.Name = "nudSw";
+            nudSw.Size = new Size(72, 23);
+            nudSw.TabIndex = 0;
+            // 
+            // gbResult
+            // 
+            gbResult.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+            gbResult.Location = new Point(12, 385);
+            gbResult.Name = "gbResult";
+            gbResult.Size = new Size(760, 198);
+            gbResult.TabIndex = 3;
+            gbResult.TabStop = false;
+            gbResult.Text = "Result";
+            // 
+            // btnReport
+            // 
+            btnReport.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+            btnReport.Location = new Point(697, 589);
+            btnReport.Name = "btnReport";
+            btnReport.Size = new Size(75, 23);
+            btnReport.TabIndex = 4;
+            btnReport.Text = "Report";
+            btnReport.UseVisualStyleBackColor = true;
+            // 
+            // label24
+            // 
+            label24.AutoSize = true;
+            label24.Location = new Point(17, 19);
+            label24.Name = "label24";
+            label24.Size = new Size(75, 17);
+            label24.TabIndex = 5;
+            label24.Text = "DataSource";
+            // 
+            // txtDataPath
+            // 
+            txtDataPath.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+            txtDataPath.Location = new Point(98, 16);
+            txtDataPath.Name = "txtDataPath";
+            txtDataPath.ReadOnly = true;
+            txtDataPath.Size = new Size(601, 23);
+            txtDataPath.TabIndex = 6;
+            // 
+            // btnSelectDataSource
+            // 
+            btnSelectDataSource.Location = new Point(705, 16);
+            btnSelectDataSource.Name = "btnSelectDataSource";
+            btnSelectDataSource.Size = new Size(63, 23);
+            btnSelectDataSource.TabIndex = 7;
+            btnSelectDataSource.Text = "...";
+            btnSelectDataSource.UseVisualStyleBackColor = true;
+            btnSelectDataSource.Click += btnSelectDataSource_Click;
+            // 
+            // FrmMain
+            // 
+            AutoScaleDimensions = new SizeF(7F, 17F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(784, 620);
+            Controls.Add(btnSelectDataSource);
+            Controls.Add(txtDataPath);
+            Controls.Add(label24);
+            Controls.Add(btnReport);
+            Controls.Add(gbResult);
+            Controls.Add(gbTarget);
+            Controls.Add(gpBore);
+            Controls.Add(btnAnalysis);
+            Name = "FrmMain";
+            StartPosition = FormStartPosition.CenterScreen;
+            Text = "Job Planner";
+            Load += FrmMain_Load;
+            gpBore.ResumeLayout(false);
+            gpBore.PerformLayout();
+            gbTarget.ResumeLayout(false);
+            gbTarget.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)numericUpDown3).EndInit();
+            pnlLockPass.ResumeLayout(false);
+            pnlLockPass.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)nudPass).EndInit();
+            pnlLockSpeed.ResumeLayout(false);
+            pnlLockSpeed.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)numericUpDown2).EndInit();
+            panel1.ResumeLayout(false);
+            panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)numericUpDown1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)nudSw).EndInit();
+            ResumeLayout(false);
+            PerformLayout();
+        }
+
+        #endregion
+
+        private Button btnAnalysis;
+        private GroupBox gpBore;
+        private GroupBox gbTarget;
+        private GroupBox gbResult;
+        private Button btnReport;
+        private Button btnSelectBore;
+        private Label label1;
+        private Label label5;
+        private TextBox textBox3;
+        private Label label6;
+        private Label label3;
+        private TextBox textBox2;
+        private Label label4;
+        private Label label2;
+        private TextBox textBox1;
+        private Label label7;
+        private TextBox textBox4;
+        private Label label8;
+        private Label label11;
+        private TextBox textBox6;
+        private Label label12;
+        private Label label9;
+        private TextBox textBox5;
+        private Label label10;
+        private TextBox textBox8;
+        private Label label16;
+        private Label label13;
+        private TextBox textBox7;
+        private Label label14;
+        private NumericUpDown nudSw;
+        private Label label15;
+        private Label label17;
+        private NumericUpDown numericUpDown1;
+        private Label label19;
+        private Label label18;
+        private Panel panel1;
+        private RadioButton rdoLockSpeed;
+        private RadioButton rdoLockPass;
+        private Panel pnlLockSpeed;
+        private Panel pnlLockPass;
+        private Label label20;
+        private ComboBox cmbSpeedUnit;
+        private NumericUpDown numericUpDown2;
+        private Label label22;
+        private NumericUpDown numericUpDown3;
+        private Label label21;
+        private NumericUpDown nudPass;
+        private Label label23;
+        private Label label24;
+        private TextBox txtDataPath;
+        private Button btnSelectDataSource;
+    }
+}
diff --git a/ErrorAnalysis.UI/FrmMain.cs b/ErrorAnalysis.UI/FrmMain.cs
new file mode 100644
index 0000000..cef7132
--- /dev/null
+++ b/ErrorAnalysis.UI/FrmMain.cs
@@ -0,0 +1,55 @@
+using ErrorAnalysis.Repository;
+
+namespace ErrorAnalysis.UI
+{
+    public partial class FrmMain : Form
+    {
+        private string? _connectionString;
+
+        public FrmMain()
+        {
+            InitializeComponent();
+        }
+        private void btnGetAllPipe_Click(object sender, EventArgs e)
+        {
+            var modelRepository = new COModelRepository(_connectionString);
+            var models = modelRepository.GetCOModels();
+
+
+        }
+
+        private void rdoMode_CheckedChanged(object sender, EventArgs e)
+        {
+            if (rdoLockSpeed.Checked)
+            {
+                pnlLockPass.Visible = false;
+                pnlLockSpeed.Visible = true;
+            }
+            else
+            {
+                pnlLockPass.Visible = true;
+                pnlLockSpeed.Visible = false;
+            }
+        }
+
+        private void btnSelectDataSource_Click(object sender, EventArgs e)
+        {
+            var fileDlg = new OpenFileDialog();
+            fileDlg.Filter = "Data source|*.db";
+            fileDlg.InitialDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Projects");
+            fileDlg.FilterIndex = 0;
+            var result = fileDlg.ShowDialog();
+
+            if (result == DialogResult.OK)
+            {
+                txtDataPath.Text = fileDlg.FileName;
+                _connectionString = $"Data Source={fileDlg.FileName};";
+            }
+        }
+
+        private void FrmMain_Load(object sender, EventArgs e)
+        {
+            cmbSpeedUnit.SelectedIndex = 0;
+        }
+    }
+}
diff --git a/ErrorAnalysis.UI/Form1.resx b/ErrorAnalysis.UI/FrmMain.resx
similarity index 99%
rename from ErrorAnalysis.UI/Form1.resx
rename to ErrorAnalysis.UI/FrmMain.resx
index 8b2ff64..af32865 100644
--- a/ErrorAnalysis.UI/Form1.resx
+++ b/ErrorAnalysis.UI/FrmMain.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema
+    Microsoft ResX Schema 
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
-
+    
     mimetype: application/x-microsoft.net.object.soap.base64
     value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter

--
Gitblit v1.9.3