Beispiel #1
0
        /// <summary>
        /// Gets the timeline entry model from an idividual timeline enrty.
        /// </summary>
        /// <param name="entry">The entry.</param>
        /// <returns></returns>
        private TimelineEntryModel GetTimelineEntryModel(ITimeLine entry)
        {
            TimelineEntryModel timelineEntryModel = new TimelineEntryModel(entry);

            timelineEntryModel.User = repository.GetUser(entry.UserId);

            // Get the meme referenced by the time line entry
            timelineEntryModel.Meme = new MemeLiteModel(repository, repository.GetMeme(entry.TimeLineRefId));

            // Resolve the comment
            if (entry.EntryType == TimeLineEntry.Comment ||
                entry.EntryType == TimeLineEntry.LikeComment ||
                entry.EntryType == TimeLineEntry.DislikeComment)
            {
                IUserComment userComment = repository.GetUserComment(entry.TimeLineRefAlternateId);
                userComment.Comment = WebUtility.HtmlEncode(userComment.Comment);
                IUser user = userComment.UserId != null?repository.GetUser(userComment.UserId) : new Domain.User();

                timelineEntryModel.UserComment = new TimeLineUserCommentModel(userComment, user);
            }

            // Resolve the alternative ref id (always a meme)
            if (entry.EntryType == TimeLineEntry.Reply)
            {
                timelineEntryModel.AlternateMeme = new MemeLiteModel(repository, repository.GetMeme(entry.TimeLineRefAlternateId));
            }
            return(timelineEntryModel);
        }
Beispiel #2
0
        /// <summary>
        /// 指定したタイムラインをコントロールに追加します。
        /// </summary>
        /// <param name="timeline">追加するタイムライン。</param>
        private async Task AddTimeLine(ITimeLine timeline)
        {
            // 既に存在するタイムラインなら終了
            if (timelines.Find(x => x.TimeLineName == timeline.TimeLineName) != null)
            {
                return;
            }

            Utilities.BeginUpdate(this);
            // 枠の大きさを調整
            if (timelines.Count > 0)
            {
                tableLayoutPanel.ColumnCount++;
                tableLayoutPanel.ColumnStyles.Add(new ColumnStyle());
                for (int i = 0; i < tableLayoutPanel.ColumnCount; i++)
                {
                    tableLayoutPanel.ColumnStyles[i] = new ColumnStyle(SizeType.Percent, 100f / tableLayoutPanel.ColumnCount);
                }
            }

            // タイムラインの追加
            var tlf = new TimeLineFrame(this, timeline);
            await tlf.StartStreaming();

            timelines.Add(tlf);
            tlf.Size   = Size;
            tlf.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
            tableLayoutPanel.Controls.Add(tlf, timelines.Count - 1, 0);
            Utilities.EndUpdate(this);
        }
Beispiel #3
0
        /// <summary>
        /// コンストラクタです。
        /// </summary>
        /// <param name="owner">タイムラインが描画されている親フォーム。</param>
        /// <param name="timeline">このインスタンスに紐付けるタイムライン。</param>
        public TimeLineFrame(MainForm owner, ITimeLine timeline)
        {
            InitializeComponent();
            this.owner        = owner;
            panel.MouseWheel += Panel_MouseWheel;

            // タイムラインにこの枠を紐付ける
            this.timeline          = timeline;
            timeline.Panel         = panel;
            labelTimeLineName.Text = timeline.TimeLineName;

            // ストリーミングイベントの設定、ストリーミングの開始
            if (timeline is TimeLineMastodon)
            {
                var tl = timeline as TimeLineMastodon;
                tl.SetOnUpdate((_, e) =>
                {
                    tl.AddStatus(new TwitdonMastodonStatus(e.Status));
                });
            }
            else if (timeline is TimeLineTwitter)
            {
                var tl = timeline as TimeLineTwitter;
                tl.OnGetStatusMessage.Subscribe(x => tl.AddStatus(new TwitdonTwitterStatus(x.Status)));
            }

            // タイマーイベントの追加
            var timer = new Timer.Timer();

            timer.Elapsed  += new Timer.ElapsedEventHandler(Timer_Update);
            timer.Interval  = 1000;
            timer.AutoReset = true;
            timer.Enabled   = true;
        }
        public TwitterClient(TwitterCredential credential)
        {
            this.Credential = credential;

            this.m_tlHome    = new TlHome(this);
            this.m_tlAboutMe = new TlAboutMe(this);
            this.m_tlDm      = new TlDirectMessage(this);
        }
Beispiel #5
0
 public static T ConvertTo <T>(this ITimeLine timeLine) where T : ITimeLine, new()
 => new T
 {
     Id        = timeLine.Id,
     Descricao = timeLine.Descricao,
     Hora      = timeLine.Hora,
     Titulo    = timeLine.Titulo
 };
Beispiel #6
0
 public OperationMetric(string className,
                        ITimeLine timeLine,
                        string methodName = "Undefined Operation",
                        string tag        = "Operation",
                        string moduleName = "Undefned") :
     base(className, timeLine, methodName, tag, moduleName)
 {
 }
Beispiel #7
0
 public TimelineEntryModel(ITimeLine timeLineEntry)
 {
     this.TimelineId             = timeLineEntry.Id;
     this.DateOfEntry            = timeLineEntry.DateOfEntry;
     this.UserId                 = timeLineEntry.UserId;
     this.EntryType              = timeLineEntry.EntryType;
     this.TimeLineRefId          = timeLineEntry.TimeLineRefId;
     this.TimeLineRefAlternateId = timeLineEntry.TimeLineRefAlternateId;
     this.Message                = timeLineEntry.Message;
 }
Beispiel #8
0
 /// <summary>
 /// Add a time line entry
 /// </summary>
 /// <returns></returns>
 public ITimeLine Save(ITimeLine timeLine)
 {
     if (timeLine.EntryType == TimeLineEntry.All)
     {
         throw new Exception("All not a valid type for time line entry. Only when reading!");
     }
     timeLine.Id = NewLongId();
     timeLineCollection.Save(timeLine.ToBsonDocument());
     return(timeLine);
 }
Beispiel #9
0
 public OperationMetricCall(string moduleName,
                            string className,
                            string methodName,
                            string tag,
                            ITimeLine timeLine) :
     base(moduleName,
          className,
          methodName,
          tag,
          timeLine)
 {
 }
 public BaseMetric(string className,
                   ITimeLine timeLine,
                   string methodName = "Undefined",
                   string tag        = "",
                   string moduleName = "Undefned")
 {
     BoundedTimeLine = timeLine;
     BoundedTimeLine.BoundMetric(this);
     Tag               = tag;
     MethodName        = methodName;
     ClassName         = className;
     ModuleName        = moduleName;
     SessionIdentifier = TaskSessionMetadata.CurrentSession.SessionIdentifier;
 }
Beispiel #11
0
 public BaseMetricCall(string moduleName,
                       string className,
                       string methodName,
                       string tag,
                       ITimeLine timeLine)
 {
     _moduleName         = moduleName;
     _boundedTimeLine    = timeLine;
     _className          = className;
     _methodName         = methodName;
     _timePoint          = DateTime.Now;
     _tag                = tag;
     _metricResultStatus = (int)MetricResultStatus.Started;
     _callId             = Guid.NewGuid();
     //Collect Start Data
     _boundedTimeLine.CollectMetricResult(GetResult((int)MetricResultStatus.Started, _callId));
 }
        public void AggregatedTimeLine_ReturnsAggregatedTimeLine(ITimeLine timeline)
        {
            var user = new User
                       (
                "James",
                timeline,
                Mock.Of <IDictionary <string, ITimeLine> >()
                       );

            var result = user.AggregatedTimeLine
                         (
                new DateTimeOffset(2018, 11, 16, 16, 30, 0, TimeSpan.Zero),
                new TimeSpanDisplayFormatter()
                         );


            Assert.NotNull(result);
            Assert.Equal(98, result.Length);
        }
Beispiel #13
0
        /// <summary>
        /// Create a TimeBar
        /// </summary>
        /// <param name="timeLine">TimeLine</param>
        public TimeBar(ITimeLine timeLine)
        {
            if (timeLine == null)
            {
                throw new System.ArgumentNullException("Invalid timeLine");
            }
            this.TimeStyle        = true;
            this._MouseButton     = MouseButton.None;
            this._TimeLine        = timeLine;
            this.WantsMouseEvents = true;
            this._StartTime       = 0.0f;
            this._EndTime         = 0.01f;
            this._IsChanged       = true;
            this.SnapTime         = 0;
            this.ShowTimePosition = true;

            this._SampleText = new GUIContent()
            {
                text = "00.000"
            };
            this.ThumbWidth        = 6.0f;
            this.ShowSelectionTime = true;

            this.ThumbColor         = Resources.Colors.ThumbColor;
            this.SelectionTimeColor = new Color(1.0f, 0.1f, 0.0f, 0.3f);

            if (UnityEditor.EditorGUIUtility.isProSkin)
            {
                this.TimePositionBackColor = new Color(0.9f, 0.9f, 0.9f, 0.8f);
            }
            else
            {
                this.TimePositionBackColor = new Color(0.7f, 0.7f, 0.7f, 0.8f);
            }

            _ThickLinePoints = new List <Vector2>();
            _ThinLinePoints  = new List <Vector2>();
            _ThickLineCount  = 0;
            _ThinLineCount   = 0;
        }
 public static void Initialize()
 {
     _timeLine = new TimeLine.TimeLine();
     _metricsResultRepository = new MetricsResultRepository();
 }
Beispiel #15
0
 public User(string name, ITimeLine timeline, IDictionary <string, ITimeLine> subscriptions)
 {
     Name           = name;
     TimeLine       = timeline;
     _subscriptions = subscriptions;
 }
Beispiel #16
0
        /// <summary>
        /// Add the supplied time line activity to the time lien groups
        /// </summary>
        /// <param name="timelineGroupModel">timline group model updated</param>
        /// <param name="activityOnMeme"></param>
        /// <param name="maxCount"></param>
        private void AddActivitytoTimeLineGroups(ref TimelineGroupModel timelineGroupModel, ITimeLine activityOnMeme, int maxCount)
        {
            // Find a time line group has has activity on thie meme already
            TimelineGroup existingTimelineGroup =
                timelineGroupModel.TimelineGroups.FirstOrDefault(x => x.Meme.Id == activityOnMeme.TimeLineRefId);

            if (existingTimelineGroup != null)
            {
                // Don't add more than 10
                if (existingTimelineGroup.TimelineEntries.Count < maxCount)
                {
                    // Don't re-add an timeline entry that is already there
                    if (existingTimelineGroup.TimelineEntries.Any(x => x.TimelineId == activityOnMeme.Id) == false)
                    {
                        existingTimelineGroup.TimelineEntries.Add(GetTimelineEntryModel(activityOnMeme));
                    }
                }
                else
                {
                    // If more than 10 just flag as having more
                    existingTimelineGroup.HasMore = true;
                }
            }
            else
            {
                var timeLineGroup = new TimelineGroup();
                timeLineGroup.TimeStamp       = activityOnMeme.DateOfEntry;
                timeLineGroup.Meme            = new MemeLiteModel(repository, repository.GetMeme(activityOnMeme.TimeLineRefId));
                timeLineGroup.TimelineEntries = new List <TimelineEntryModel> {
                    GetTimelineEntryModel(activityOnMeme)
                };

                timelineGroupModel.TimelineGroups.Add(timeLineGroup);
            }
        }
Beispiel #17
0
 public MeteredClass(Type derivedClass)
 {
     _timeLine         = FlashTuna.Core.Configuration.FlashTunaAnalyzer.CurrentTimeLine;
     _derivedClassName = derivedClass;
 }