Ejemplo n.º 1
0
        private void LoadHistorians()
        {
            ConfigurationFile configurationFile = ConfigurationFile.Current;
            CategorizedSettingsElementCollection systemSettings = configurationFile.Settings["systemSettings"];
            string targetHistorianIDValue = systemSettings["TargetHistorianID"]?.Value ?? "0";

            TableOperations <Historian> historianTable = new TableOperations <Historian>(ImportParams.Connection);
            Dictionary <int, string>    historians     = historianTable.QueryHistorians().ToDictionary(historian => historian.ID, historian => historian.Acronym);

            historians.Add(0, "None");

            comboBoxHistorian.DataSource    = new BindingSource(historians, null);
            comboBoxHistorian.ValueMember   = "Key";
            comboBoxHistorian.DisplayMember = "Value";

            void updateSelectedHistorian()
            {
                if (!int.TryParse(comboBoxHistorian.SelectedValue.ToString(), out int historianID))
                {
                    historianID = -1;
                }

                TargetConfigFrame.HistorianID = historianID <= 0 ? null : historianID;
                systemSettings["TargetHistorianID", true].Update(historianID, "Target historian ID.", false, SettingScope.User);
            }

            comboBoxHistorian.SelectedValueChanged += (_, _) => updateSelectedHistorian();

            if (!int.TryParse(targetHistorianIDValue, out int targetHistorianID) || !historians.ContainsKey(targetHistorianID))
            {
                targetHistorianID = -1;
            }

            if (targetHistorianID == -1)
            {
                // Attempt to select an ideal initial target historian
                if (historians.ContainsValue("PPA"))
                {
                    targetHistorianID = historians.FirstOrDefault(kvp => string.Equals(kvp.Value, "PPA")).Key;
                }
                else if (historians.Count > 1)
                {
                    targetHistorianID = historians.FirstOrDefault(kvp => kvp.Key > 0 && !string.Equals(kvp.Value, "STAT")).Key;
                }

                if (targetHistorianID == -1)
                {
                    targetHistorianID = 0;
                }
            }

            comboBoxHistorian.SelectedValue = targetHistorianID;
            updateSelectedHistorian();
        }