Exemplo n.º 1
0
        ImmutableArray <StateHistoryItem> MakeSelectedObjectHistory(
            ImmutableArray <IInspectedObject> selectedObjects,
            ImmutableArray <StateInspectorEvent> selectedEvents
            )
        {
            var result  = ImmutableArray.CreateBuilder <StateHistoryItem>();
            var changes =
                selectedObjects
                .ZipWithIndex()
                .Where(obj => !obj.Value.IsTimeless)
                .Select(obj => obj.Value.StateChangeHistory.Select(e => new StateInspectorEventInfo()
            {
                Object            = obj.Value,
                InspectedObjectNr = selectedObjects.Length >= 2 ? obj.Key + 1 : 0,
                Event             = e
            }))
                .ToArray()
                .MergeSortedSequences(new EventsComparer())
                .ToList();

            var selectedEventsSet = selectedEvents.Select(e => (e.Output, e.Index)).ToHashSet();

            bool isEventSelected(StateInspectorEvent e) => selectedEventsSet.Contains((e.Output, e.Index));

            var messageFormatter = new StateHistoryMessageFormatter {
                shortNames = this.shortNames
            };
            bool showTimeDeltas = changes.Where(c => isEventSelected(c.Event)).Take(2).Count() > 1;
            StateInspectorEvent prevSelectedEvent = null;

            foreach (var change in changes.ZipWithIndex())
            {
                messageFormatter.currentObject = change.Value.Object;
                bool isSelected = isEventSelected(change.Value.Event);
                result.Add(MakeStateHistoryItem(change.Value, isSelected,
                                                showTimeDeltas, prevSelectedEvent, messageFormatter, change.Key));
                if (isSelected)
                {
                    prevSelectedEvent = change.Value.Event;
                }
            }

            return(result.ToImmutable());
        }
Exemplo n.º 2
0
        StateHistoryItem MakeStateHistoryItem(StateInspectorEventInfo evtInfo, bool isSelected, bool showTimeDeltas, StateInspectorEvent prevSelectedEvent)
        {
            var evt = evtInfo.Event;
            StateHistoryItem ret = new StateHistoryItem()
            {
                Data = evt
            };

            if (showTimeDeltas)
            {
                if (isSelected && prevSelectedEvent != null)
                {
                    ret.Time = TimeUtils.TimeDeltaToString(
                        evt.Trigger.Timestamp.ToUnspecifiedTime() - prevSelectedEvent.Trigger.Timestamp.ToUnspecifiedTime(),
                        addPlusSign: true);
                }
                else
                {
                    ret.Time = "";
                }
            }
            else
            {
                ret.Time = FormatTimestampt(evt);
            }
            var messageFormatter = new StateHistoryMessageFormatter()
            {
                shortNames = this.shortNames
            };

            evt.OriginalEvent.Visit(messageFormatter);
            if (evtInfo.InspectedObjectNr != 0)
            {
                ret.Message = string.Format("#{0}: {1}", evtInfo.InspectedObjectNr, messageFormatter.message);
            }
            else
            {
                ret.Message = messageFormatter.message;
            }
            return(ret);
        }
Exemplo n.º 3
0
        StateHistoryItem MakeStateHistoryItem(StateInspectorEventInfo evtInfo,
                                              bool isSelected, bool showTimeDeltas, StateInspectorEvent prevSelectedEvent,
                                              StateHistoryMessageFormatter messageFormatter, int index)
        {
            var    evt = evtInfo.Event;
            string time;

            if (showTimeDeltas)
            {
                if (isSelected && prevSelectedEvent != null)
                {
                    time = TimeUtils.TimeDeltaToString(
                        evt.Trigger.Timestamp.ToUnspecifiedTime() - prevSelectedEvent.Trigger.Timestamp.ToUnspecifiedTime(),
                        addPlusSign: true);
                }
                else
                {
                    time = "";
                }
            }
            else
            {
                time = FormatTimestampt(evt);
            }
            string message;

            messageFormatter.Reset();
            evt.OriginalEvent.Visit(messageFormatter);
            if (evtInfo.InspectedObjectNr != 0)
            {
                message = string.Format("#{0}: {1}", evtInfo.InspectedObjectNr, messageFormatter.message);
            }
            else
            {
                message = messageFormatter.message;
            }
            return(new StateHistoryItem(evt, time, message, isSelected, index));
        }