/// <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(); }
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(); }
/// <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); }
/// <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); } }
/// <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; }); }
/// <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); }
/// <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(); }