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();
|
}
|
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)
|
{
|
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();
|
}));
|
|
});
|
}
|
}
|
|
private void FrmMain_Load(object sender, EventArgs e)
|
{
|
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];
|
}
|
}
|
}
|
}
|