History

GSF.PhasorProtocols.UI: Updated InputWizardDevices with improved phase guess operation (like that found in web device wizard).

J. Ritchie Carroll committed 6 years ago

Commit da5c72a1 parent a2890161 file · +24 −9Browse files

Unified · Split

Source/Libraries/GSF.PhasorProtocols/UI/WPF/ViewModels/InputWizardDevices.cs+24−9
@@ -998,33 +998,48 @@ namespace GSF.PhasorProtocols.UI.ViewModels · 997 unmodified lines
998998
999999 if (existingDevice?.ID > 0)
10001000 existingPhasors = Phasor.Load(null, Phasor.LoadKeys(null, existingDevice.ID)).ToDictionary(phasor => phasor.SourceIndex - 1, phasor => phasor);
1001+
1002+ bool phaseMatch(string phaseLabel, string[] phaseMatches)
1003+ {
1004+ foreach (string match in phaseMatches)
1005+ {
1006+ string[] variations = { $" {match}", $"{match} ", $"_{match}", $"{match}_", $"_{match}_", $".{match}", $"{match}.", $".{match}." };
1007+
1008+ if (variations.Any(matchVariation => phaseLabel.IndexOf(matchVariation, StringComparison.Ordinal) > -1))
1009+ return true;
1010+ }
1011+
1012+ return false;
1013+ }
10011014
10021015 string guessPhase(string phase, string phasorLabel)
10031016 {
10041017 if (!string.IsNullOrWhiteSpace(phase) && phase != "+")
10051018 return phase;
10061019
1007− if (phasorLabel.IndexOf("_VA", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_IA", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" A ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" APV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" API", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VA ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IA ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VAPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IAPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".AV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".AI", StringComparison.Ordinal) > -1)
1020+ if (phaseMatch(phasorLabel, new[] { "VA", " IA", "APV", "API", "VAPM", "IAPM", "AV", "AI" }))
10081021 return "A";
10091022
1010− if (phasorLabel.IndexOf("_VB", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_IB", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" B ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" BPV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" BPI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VB ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IB ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VBPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IBPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".BV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".BI", StringComparison.Ordinal) > -1)
1023+ if (phaseMatch(phasorLabel, new[] { "VB", "IB", "BPV", "BPI", "VBPM", "IBPM", "BV", "BI" }))
10111024 return "B";
10121025
1013− if (phasorLabel.IndexOf("_VC", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_IC", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" C ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" CPV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" CPI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VC ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IC ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VCPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("ICPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".CV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".CI", StringComparison.Ordinal) > -1)
1026+ if (phaseMatch(phasorLabel, new[] { "VC", "IC", "CPV", "CPI", "VCPM", "ICPM", "CV", "CI" }))
10141027 return "C";
10151028
1016− if (phasorLabel.IndexOf("_VN", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_IN", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" NEUT ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" NPV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" NPI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VN ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IN ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VNPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("INPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".NV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".NI", StringComparison.Ordinal) > -1)
1029+ if (phaseMatch(phasorLabel, new[] { "VN", "IN", "NEUT", "NPV", "NPI", "VNPM", "INPM", "NV", "NI" }))
10171030 return "N";
10181031
1019− if (phasorLabel.IndexOf("_V0", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_I0", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" ZERO ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" ZPV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" ZPI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VZ ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IZ ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VSPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("VZPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("IZPM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".ZV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".ZI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_ZS", StringComparison.Ordinal) > -1)
1032+ if (phaseMatch(phasorLabel, new[] { "V0", "I0", "ZERO", "ZPV", "ZPI", "VSPM", "VZPM", "IZPM", "ZS", "ZSV", "ZSI", "0SV", "0SI" }))
10201033 return "0";
10211034
1022− if (phasorLabel.IndexOf("_V2", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_I2", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" NEG ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" -SV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" -SI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("V2 ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("I2 ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("V2PM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("I2PM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".-V", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".-I", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_NS", StringComparison.Ordinal) > -1)
1035+ if (phaseMatch(phasorLabel, new[] { "V1", "I1", "POS", "V1PM", "I1PM", "PS", "PSV", "PSI", "+SV", "+SI", "+V", "+I" }))
1036+ return "+";
1037+
1038+ // -V and -I may match too often, so check these last
1039+ if (phaseMatch(phasorLabel, new[] { "V2", "I2", "NEG", "-SV", "-SI", "V2PM", "I2PM", "NS", "NSV", "NSI", "-V", "-I" }))
10231040 return "-";
10241041
1025− return phasorLabel.IndexOf("_V1", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_I1", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" POS ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" +SV", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" +SI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(" SI", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("V1 ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("I1 ", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("V1PM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("I1PM", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".+V", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf(".+I", StringComparison.Ordinal) > -1 || phasorLabel.IndexOf("_PS", StringComparison.Ordinal) > -1
1026− ? "+"
1027− : string.IsNullOrWhiteSpace(phase) ? "?" : phase;
1042+ return string.IsNullOrWhiteSpace(phase) ? "?" : phase;
10281043 }
10291044
10301045 string guessBaseKV(string baseKV, string phasorLabel, string deviceLabel)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t