private void LoadDisturbances(MeterDataSet meterDataSet, List <DataGroup> dataGroups) { SagDataResource sagDataResource = SagDataResource.GetResource(meterDataSet, m_dbAdapterContainer); SwellDataResource swellDataResource = SwellDataResource.GetResource(meterDataSet, m_dbAdapterContainer); InterruptionDataResource interruptionDataResource = InterruptionDataResource.GetResource(meterDataSet, m_dbAdapterContainer); EventKey eventKey; List <Disturbance> disturbances; m_disturbanceTable = new MeterData.DisturbanceDataTable(); m_disturbanceList = new List <Tuple <EventKey, MeterData.DisturbanceRow> >(); foreach (DataGroup dataGroup in dataGroups) { if (dataGroup.Classification == DataClassification.Trend || dataGroup.Classification == DataClassification.Unknown) { continue; } eventKey = CreateEventKey(meterDataSet.FileGroup, dataGroup); if (sagDataResource.Sags.TryGetValue(dataGroup, out disturbances)) { foreach (Disturbance sag in disturbances) { AddDisturbanceRow(eventKey, dataGroup, sag); } } if (swellDataResource.Swells.TryGetValue(dataGroup, out disturbances)) { foreach (Disturbance swell in disturbances) { AddDisturbanceRow(eventKey, dataGroup, swell); } } if (interruptionDataResource.Interruptions.TryGetValue(dataGroup, out disturbances)) { foreach (Disturbance interruption in disturbances) { AddDisturbanceRow(eventKey, dataGroup, interruption); } } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request["eventId"] != null) { if (Request["faultcurves"] != null) { postedShowFaultCurves = Request["faultcurves"]; } if (Request["breakerdigitals"] != null) { postedShowBreakerDigitals = Request["breakerdigitals"]; } postedURLQueryString = string.Concat(Request.QueryString.AllKeys .Where(key => !key.Equals("eventId", StringComparison.OrdinalIgnoreCase)) .Select(key => "&" + HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(Request.QueryString[key]))); postedEventId = Request["eventId"]; using (DbAdapterContainer dbAdapterContainer = new DbAdapterContainer(connectionString)) { try { EventTypeTableAdapter eventTypeAdapter = dbAdapterContainer.GetAdapter <EventTypeTableAdapter>(); EventTableAdapter eventAdapter = dbAdapterContainer.GetAdapter <EventTableAdapter>(); MeterInfoDataContext meterInfo = dbAdapterContainer.GetAdapter <MeterInfoDataContext>(); FaultSummaryTableAdapter summaryInfo = dbAdapterContainer.GetAdapter <FaultSummaryTableAdapter>(); DisturbanceTableAdapter disturbanceAdapter = dbAdapterContainer.GetAdapter <DisturbanceTableAdapter>(); MeterData.EventRow theevent = eventAdapter.GetDataByID(Convert.ToInt32(postedEventId)).First(); JavaScriptSerializer serializer = new JavaScriptSerializer(); postedSeriesList = serializer.Serialize(signalService.GetFlotInfo(theevent.ID)); postedMeterId = theevent.MeterID.ToString(); postedDate = theevent.StartTime.ToShortDateString(); postedEventId = theevent.ID.ToString(); postedEventDate = theevent.StartTime.ToString("yyyy-MM-dd HH:mm:ss.fffffff"); postedEventMilliseconds = theevent.StartTime.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString(); postedMeterName = meterInfo.Meters.Single(m => m.ID == theevent.MeterID).Name; MeterData.EventTypeDataTable eventTypes = eventTypeAdapter.GetData(); postedAdjacentEventIds = GetPreviousAndNextEventIds(theevent.ID, dbAdapterContainer.Connection); postedLineName = meterInfo.MeterLines.Where(row => row.LineID == theevent.LineID) .Where(row => row.MeterID == theevent.MeterID) .Select(row => row.LineName) .FirstOrDefault() ?? ""; postedLineLength = meterInfo.Lines .Where(row => row.ID == theevent.LineID) .Select(row => row.Length) .AsEnumerable() .Select(length => length.ToString()) .FirstOrDefault() ?? ""; postedEventName = eventTypes .Where(row => row.ID == theevent.EventTypeID) .Select(row => row.Name) .DefaultIfEmpty("") .Single(); if (postedEventName.Equals("Fault")) { FaultLocationData.FaultSummaryDataTable thesummarydatatable = summaryInfo.GetDataBy(Convert.ToInt32(postedEventId)); FaultLocationData.FaultSummaryRow thesummary = thesummarydatatable .Where(row => row.IsSelectedAlgorithm == 1) .OrderBy(row => row.IsSuppressed) .ThenBy(row => row.Inception) .FirstOrDefault(); if ((object)thesummary != null) { postedStartTime = thesummary.Inception.TimeOfDay.ToString(); postedDurationPeriod = thesummary.DurationCycles.ToString("##.##", CultureInfo.InvariantCulture) + " cycles"; postedMagnitude = thesummary.CurrentMagnitude.ToString("####.#", CultureInfo.InvariantCulture) + " Amps (RMS)"; } } else if (new[] { "Sag", "Swell" }.Contains(postedEventName)) { MeterData.DisturbanceDataTable disturbanceTable = disturbanceAdapter.GetDataBy(theevent.ID); MeterData.DisturbanceRow disturbance = disturbanceTable .Where(row => row.EventTypeID == theevent.EventTypeID) .OrderBy(row => row.StartTime) .FirstOrDefault(); if ((object)disturbance != null) { postedStartTime = disturbance.StartTime.TimeOfDay.ToString(); postedDurationPeriod = disturbance.DurationCycles.ToString("##.##", CultureInfo.InvariantCulture) + " cycles"; if (disturbance.PerUnitMagnitude != -1.0e308) { postedMagnitude = disturbance.PerUnitMagnitude.ToString("N3", CultureInfo.InvariantCulture) + " pu (RMS)"; } } } } catch (Exception ex) { postedErrorMessage = ex.Message; } } } } }