diff --git a/Source/Applications/SystemCenter/Controllers/OpenXDA/Assets/OpenXDAAssetController.cs b/Source/Applications/SystemCenter/Controllers/OpenXDA/Assets/OpenXDAAssetController.cs index fabcc4c32..019ae00e5 100644 --- a/Source/Applications/SystemCenter/Controllers/OpenXDA/Assets/OpenXDAAssetController.cs +++ b/Source/Applications/SystemCenter/Controllers/OpenXDA/Assets/OpenXDAAssetController.cs @@ -383,11 +383,11 @@ public int PostNewAsset(JObject record) Description = asset["Description"].ToString(), AssetName = asset["AssetName"].ToString(), AssetTypeID = assetTypeID, - R0 = asset["Segment"]["R0"].ToObject(), - X0 = asset["Segment"]["X0"].ToObject(), - R1 = asset["Segment"]["R1"].ToObject(), - X1 = asset["Segment"]["X1"].ToObject(), - Length = asset["Segment"]["Length"].ToObject(), + R0 = asset["Detail"]?.Value("R0") ?? 0, + X0 = asset["Detail"]?.Value("X0") ?? 0, + R1 = asset["Detail"]?.Value("R1") ?? 0, + X1 = asset["Detail"]?.Value("X1") ?? 0, + Length = asset["Detail"]?.Value("Length") ?? 0 }; lineSegment.AssetTypeID = connection.ExecuteScalar("SELECT ID FROM AssetType WHERE Name = 'LineSegment'"); @@ -478,6 +478,12 @@ public int PostNewAsset(JObject record) CreateTransformerFromJToken(transformer, asset); new TableOperations(connection).AddNewRecord(transformer); } + else if (assetType == "DER") + { + DER der = new DER(); + CreateDERFromJToken(der, asset); + new TableOperations(connection).AddNewRecord(der); + } else { Asset newAsset = new Asset(); @@ -913,28 +919,29 @@ private void CreateCapBankFromJToken(CapBank capBank, JToken record) capBank.PosReactanceTol = record["PosReactanceTol"].ToObject(); capBank.Nparalell = record["Nparalell"].ToObject(); capBank.Nseries = record["Nseries"].ToObject(); - capBank.NSeriesGroup = record["NSeriesGroup"].ToObject(); - capBank.NParalellGroup = record["NParalellGroup"].ToObject(); - capBank.Fused = record["Fused"].ToObject(); - capBank.VTratioBus = record["VTratioBus"].ToObject(); - capBank.NumberLVCaps = record["NumberLVCaps"].ToObject(); - capBank.NumberLVUnits = record["NumberLVUnits"].ToObject(); - capBank.LVKVAr = record["LVKVAr"].ToObject(); - capBank.LVKV = record["LVKV"].ToObject(); - capBank.LVNegReactanceTol = record["LVNegReactanceTol"].ToObject(); - capBank.LVPosReactanceTol = record["LVPosReactanceTol"].ToObject(); + capBank.NSeriesGroup = record.Value("NSeriesGroup") ?? 0; + capBank.NParalellGroup = record.Value("NParalellGroup") ?? 0; + capBank.Fused = record.Value("Fused") ?? true; + capBank.VTratioBus = record.Value("VTratioBus") ?? 0; + capBank.NumberLVCaps = record.Value("NumberLVCaps") ?? 0; + capBank.NumberLVUnits = record.Value("NumberLVUnits") ?? 0; + capBank.LVKVAr = record.Value("LVKVAr") ?? 0; + capBank.LVKV = record.Value("LVKV") ?? 0; + capBank.LVNegReactanceTol = record.Value("LVNegReactanceTol") ?? 0; + capBank.LVPosReactanceTol = record.Value("LVPosReactanceTol") ?? 0; + capBank.LowerXFRRatio = record["LowerXFRRatio"].ToObject(); capBank.Nshorted = record["Nshorted"].ToObject(); capBank.BlownFuses = record["BlownFuses"].ToObject(); capBank.BlownGroups = record["BlownGroups"].ToObject(); - capBank.ShortedGroups = record["ShortedGroups"].ToObject(); - capBank.NLowerGroups = record["NLowerGroups"].ToObject(); - - capBank.RelayPTRatioPrimary = record["RelayPTRatioPrimary"].ToObject(); - capBank.RelayPTRatioSecondary = record["RelayPTRatioSecondary"].ToObject(); - capBank.Sh = record["Sh"].ToObject(); - capBank.Rv = record["Rv"].ToObject(); - capBank.Rh = record["Rh"].ToObject(); + capBank.ShortedGroups = record.Value("ShortedGroups") ?? 0; + capBank.NLowerGroups = record.Value("NLowerGroups") ?? 0; + + capBank.RelayPTRatioPrimary = record.Value("RelayPTRatioPrimary") ?? 0; + capBank.RelayPTRatioSecondary = record.Value("RelayPTRatioSecondary") ?? 0; + capBank.Sh = record.Value("Sh") ?? 0; + capBank.Rv = record.Value("Rv") ?? 0; + capBank.Rh = record.Value("Rh") ?? 0; capBank.Compensated = record["Compensated"].ToObject(); } @@ -961,13 +968,22 @@ private void CreateTransformerFromJToken(Transformer transformer, JToken record) transformer.ThermalRating = record["ThermalRating"].ToObject(); transformer.PrimaryVoltageKV = record["PrimaryVoltageKV"].ToObject(); transformer.SecondaryVoltageKV = record["SecondaryVoltageKV"].ToObject(); - transformer.TertiaryVoltageKV = record["TertiaryVoltageKV"].ToObject(); + transformer.TertiaryVoltageKV = record.Value("TertiaryVoltageKV") ?? 0; transformer.PrimaryWinding = record["PrimaryWinding"].ToObject(); transformer.SecondaryWinding = record["SecondaryWinding"].ToObject(); - transformer.TertiaryWinding = record["TertiaryWinding"].ToObject(); + transformer.TertiaryWinding = record.Value("TertiaryWinding") ?? 0; transformer.Tap = record["Tap"].ToObject(); transformer.Spare = record["Spare"].ToObject(); } + private void CreateDERFromJToken(DER der, JToken record) + { + der.VoltageKV = record["VoltageKV"].ToObject(); + der.AssetKey = record["AssetKey"].ToString(); + der.Description = record["Description"].ToString(); + der.AssetName = record["AssetName"].ToString(); + der.FullRatedOutputCurrent = record["FullRatedOutputCurrent"].ToObject(); + der.VoltageLevel = record["VoltageLevel"].ToString(); + } ////Need to Override the external DB Function to return the list for all Assets //public override IHttpActionResult GetExtendedDataBases() diff --git a/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/AssetAttribute/Asset.tsx b/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/AssetAttribute/Asset.tsx index b754d1a5b..d3b392bf2 100644 --- a/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/AssetAttribute/Asset.tsx +++ b/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/AssetAttribute/Asset.tsx @@ -200,6 +200,7 @@ export namespace AssetAttributes { record.TripTime = null; record.PickupTime = null; record.TripCoilCondition = null; + record.AirGapResistor = false; return record; } else if (type == 'Bus') { @@ -256,6 +257,8 @@ export namespace AssetAttributes { record.ThermalRating = null; record.PrimaryVoltageKV = null; record.SecondaryVoltageKV = null; + record.TertiaryVoltageKV = null; + record.TertiaryWinding = null; record.Tap = null; return record } @@ -320,7 +323,6 @@ export namespace AssetAttributes { errors.push('A valid Pickup Time Limit is required.') if ((asset as OpenXDA.Types.Breaker).TripCoilCondition == null || !AssetAttributes.isRealNumber((asset as OpenXDA.Types.Breaker).TripCoilCondition)) errors.push('A valid Trip Coil Condition Limit is required.') - } if (type == 'CapacitorBankRelay') { diff --git a/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/Meter/MeterAsset.tsx b/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/Meter/MeterAsset.tsx index 5194b0d96..60c0cd0f7 100644 --- a/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/Meter/MeterAsset.tsx +++ b/Source/Applications/SystemCenter/wwwroot/Scripts/TSX/SystemCenter/Meter/MeterAsset.tsx @@ -27,6 +27,7 @@ import { Application, OpenXDA } from '@gpa-gemstone/application-typings'; import BusAttributes from '../AssetAttribute/Bus'; import BreakerAttributes from '../AssetAttribute/Breaker'; import CapBankAttributes from '../AssetAttribute/CapBank'; +import CapBankRelayAttributes from '../AssetAttribute/CapBankRelay'; import LineAttributes from '../AssetAttribute/Line'; import TransformerAttributes from '../AssetAttribute/Transformer'; import { useNavigate } from 'react-router-dom'; @@ -335,6 +336,8 @@ const MeterAssetWindow = (props: IProps) => { return ; else if (activeAsset.AssetType == 'Bus') return ; + else if (activeAsset.AssetType == 'CapacitorBankRelay') + return else if (activeAsset.AssetType == 'CapacitorBank') return ; else if (activeAsset.AssetType == 'Line')