Ejemplo n.º 1
0
        /// <summary>
        /// 著者情報表示
        /// </summary>
        /// <param name=""></param>
        public void Arrange(DB.Author author)
        {
            ArrangedAuthor = author;
            ArrangedTitle  = null;

            chDate.Text = "Title";
            lvDisplay.BeginUpdate();
            lvDisplay.Items.Clear();
            var mobileColumnWidth = 0;

            foreach (var title in author.Titles)
            {
                var item    = new ListViewItem($"{title.ID} {title.Name}");
                var score   = title.LatestScore;
                var scoreD  = AuthorSummaryDiffDays <= 0 ? null : title.GetScore(score.Date.AddDays(-1 * AuthorSummaryDiffDays));
                var pvScore = title.SumUpPv(AuthorSummaryPvSums);
                if (pvScore.Mobile != 0)
                {
                    mobileColumnWidth = DefaultMobileColumnWidth;
                }
                if (score != null)
                {
                    registorScoreInfo(pvScore, score, scoreD, item);
                }
                lvDisplay.Items.Add(item);
            }
            lvDisplay.Columns[indexOfMobileColumn].Width = mobileColumnWidth;
            lvDisplay.EndUpdate();
        }
Ejemplo n.º 2
0
        public void Set(DB.Author author, DB.Title title, DB.DailyScore daily)
        {
            var s = new StringBuilder();

            if (author != null)
            {
                s.AppendLine($"{author.Name}[{author.ID}]");
            }
            if (title != null)
            {
                s.AppendLine($"{title.Name}");
                s.AppendLine($"{title.ID} since {title.FirstUp:yyyy/MM/dd}");
            }
            if (daily != null)
            {
                Text = daily.Date.ToString("yyyy/MM/dd");
                s.AppendLine($"{daily.PageView} pv.");
                if (daily.HasScoreInfo)
                {
                }
                if (daily.PartPvChecked)
                {
                    s.AppendLine("[部位別PV取得済]");
                }
                txtEvent.Text = daily.Event;
            }
            lblInfo.Text = s.ToString();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// REST APIの戻り値(Yaml)を著者情報オブジェクトに変換
        /// </summary>
        /// <param name="yaml">レスポンス</param>
        /// <param name="authorId">誰の?</param>
        /// <returns>著者情報オブジェクト(今回APIで取得した分のみ)</returns>
        private DB.Author parseAuthorInfo(string yaml, string authorId)
        {
            if (string.IsNullOrEmpty(yaml))
            {
                return(null);
            }
            var a = new DB.Author();

            a.ID = authorId;

            //yamlの解釈
            var parser = new YamlStream();

            using (var tr = new StringReader(yaml))
            {
                parser.Load(tr);

                var sequence = (YamlSequenceNode)parser.Documents[0].RootNode;
                foreach (var yTitle in sequence.Skip(1))
                {
                    var title = YamlMapToTitleObj(yTitle as YamlMappingNode);
                    if (title != null)
                    {
                        a.Titles.Add(title);
                    }
                }
            }

            return(a);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// こいつの奴表示
 /// </summary>
 /// <param name="author"></param>
 public void Arrange(DB.Author author)
 {
     auth = author;
     lstTitles.Items.Clear();
     lstTitles.Items.AddRange(author.Titles.ToArray());
     for (var i = 0; i < lstTitles.Items.Count; i++)
     {
         lstTitles.SetSelected(i, true);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 基本情報更新
        /// </summary>
        /// <param name="id">ユーザーID</param>
        public void UpdateUserData(string id, bool updatePv)
        {
            AnalyzingLockContext(() =>
            {
                //カレントと違うものなら、一度消してロードする。
                if ((authorInfo == null) || (authorInfo.ID != id))
                {
                    authorInfo = null;
                    Load(id);
                }

                //解析API準備
                var narou = new NarouAPI();
                var info  = narou.GetAuthorInfo(id);

                //PVデータ初回参照
                if (authorInfo == null)
                {
                    authorInfo = info;
                    authorInfo.Normalize();

                    if (updatePv)
                    {
                        GetPVData(true);
                    }
                }
                //当月度&先月度分PVデータ参照
                else
                {
                    //マージ
                    authorInfo.Merge(info);

                    if (updatePv)
                    {
                        //今月
                        var dt = DateTime.Now;
                        GetPVData(dt.Year, dt.Month, false);

                        //今日が1,2,3日であれば先月も見る(ユニークが反映されてないかもなので)
                        if (dt.Day <= 3)
                        {
                            //先月
                            dt = dt.AddMonths(-1);
                            GetPVData(dt.Year, dt.Month, false);
                        }
                    }
                }

                //著者名解決
                authorInfo.ResolveAuthorName();
                authorInfo.CheckedDate = DateTime.Now;
            });
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 指定IDのデータをロード
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public bool Load(string id)
 {
     lock (lockObj)
     {
         var path = Path.Combine(StoragePath, $"{id}.xml");
         if (File.Exists(path))
         {
             using (var f = new StreamReader(path))
             {
                 var ser  = new XmlSerializer(typeof(DB.Author));
                 var auth = ser.Deserialize(f) as DB.Author;
                 if (auth != null)
                 {
                     authorInfo = auth;
                     DebugReport.Log(this, $"Author DB Loaded {path}");
                     return(true);
                 }
             }
         }
         DebugReport.Log(this, $"Author DB Load failed {path}");
     }
     return(false);
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 作品一覧更新
        /// </summary>
        private void updateList()
        {
            lstTitles.Items.Clear();
            current = analyzer.Current;

            if (current == null)
            {
                return;
            }
            var order = cmbSortType.SelectedItem as SortOrderEntry;

            if (order == null)
            {
                order = new SortOrderEntry();
            }

            foreach (var title in order.Order(current.Titles))
            {
                var item = new TitleListEntry(title, order.TitlePicker(title));
                lstTitles.Items.Add(item);
            }
            lblAuthor.Text = current.Name;
            ShowUser();
        }