提交记录修改UI/Models/ChartPageModel.cs+27 −0看文件
修改UI/ViewModels/ChartPageVM.cs+91 −1看文件
修改UI/Views/ChartPage.xaml+51 −4看文件
| @@ -134,5 +134,32 @@ namespace UI.Models | ||
| 134 | 134 | /// 是否以堆叠形式展示 |
| 135 | 135 | /// </summary> |
| 136 | 136 | public bool IsChartStack { get { return IsChartStack_; } set { IsChartStack_ = value; OnPropertyChanged(); } } |
| 137 | 新增: | |
| 138 | 新增: private Core.Models.AppModel Top1App_; | |
| 139 | 新增: /// <summary> | |
| 140 | 新增: /// 使用时间最长的应用 | |
| 141 | 新增: /// </summary> | |
| 142 | 新增: public Core.Models.AppModel Top1App { get { return Top1App_; } set { Top1App_ = value; OnPropertyChanged(); } } | |
| 143 | 新增: | |
| 144 | 新增: private string DiffTotalTimeType_; | |
| 145 | 新增: /// <summary> | |
| 146 | 新增: /// 时长对比上一周期变化(0无变化,1增加,-1减少) | |
| 147 | 新增: /// </summary> | |
| 148 | 新增: public string DiffTotalTimeType { get { return DiffTotalTimeType_; } set { DiffTotalTimeType_ = value;OnPropertyChanged(); } } | |
| 149 | 新增: private string DiffAppCountType_; | |
| 150 | 新增: /// <summary> | |
| 151 | 新增: /// 应用量对比上一周期变化(0无变化,1增加,-1减少) | |
| 152 | 新增: /// </summary> | |
| 153 | 新增: public string DiffAppCountType { get { return DiffAppCountType_; } set { DiffAppCountType_ = value; OnPropertyChanged(); } } | |
| 154 | 新增: private string DiffTotalTimeValue_; | |
| 155 | 新增: /// <summary> | |
| 156 | 新增: /// 时长差异值 | |
| 157 | 新增: /// </summary> | |
| 158 | 新增: public string DiffTotalTimeValue { get { return DiffTotalTimeValue_; } set { DiffTotalTimeValue_ = value;OnPropertyChanged(); } } | |
| 159 | 新增: private string DiffAppCountValue_; | |
| 160 | 新增: /// <summary> | |
| 161 | 新增: /// 应用量差异值 | |
| 162 | 新增: /// </summary> | |
| 163 | 新增: public string DiffAppCountValue { get { return DiffAppCountValue_; } set { DiffAppCountValue_ = value; OnPropertyChanged(); } } | |
| 137 | 164 | } |
| 138 | 165 | } |
| @@ -6,6 +6,7 @@ using System.Collections.Generic; | ||
| 6 | 6 | using System.Diagnostics; |
| 7 | 7 | using System.Linq; |
| 8 | 8 | using System.Text; |
| 9 | 新增:using System.Text.RegularExpressions; | |
| 9 | 10 | using System.Threading.Tasks; |
| 10 | 11 | using UI.Controls; |
| 11 | 12 | using UI.Controls.Charts.Model; |
| @@ -23,6 +24,9 @@ namespace UI.ViewModels | ||
| 23 | 24 | private readonly MainViewModel mainVM; |
| 24 | 25 | private readonly IAppContextMenuServicer appContextMenuServicer; |
| 25 | 26 | private readonly IInputServicer inputServicer; |
| 27 | 新增: | |
| 28 | 新增: private double totalTime_ = 0; | |
| 29 | 新增: private int appCount_ = 0; | |
| 26 | 30 | public Command ToDetailCommand { get; set; } |
| 27 | 31 | public Command RefreshCommand { get; set; } |
| 28 | 32 | public List<SelectItemModel> ChartDataModeOptions { get; set; } |
| @@ -268,6 +272,7 @@ namespace UI.ViewModels | ||
| 268 | 272 | RadarData = chartData; |
| 269 | 273 | |
| 270 | 274 | double totalUse = Data.Sum(m => m.Values.Sum()); |
| 275 | 新增: totalTime_ = totalUse; | |
| 271 | 276 | TotalHours = Time.ToHoursString(totalUse); |
| 272 | 277 | LoadTopData(); |
| 273 | 278 | }); |
| @@ -345,6 +350,7 @@ namespace UI.ViewModels | ||
| 345 | 350 | |
| 346 | 351 | RadarData = chartData; |
| 347 | 352 | double totalUse = Data.Sum(m => m.Values.Sum()); |
| 353 | 新增: totalTime_ = totalUse; | |
| 348 | 354 | TotalHours = Time.ToHoursString(totalUse); |
| 349 | 355 | }); |
| 350 | 356 | |
| @@ -418,6 +424,7 @@ namespace UI.ViewModels | ||
| 418 | 424 | |
| 419 | 425 | RadarData = chartData; |
| 420 | 426 | double totalUse = Data.Sum(m => m.Values.Sum()); |
| 427 | 新增: totalTime_ = totalUse; | |
| 421 | 428 | TotalHours = Time.ToHoursString(totalUse); |
| 422 | 429 | LoadTopData(); |
| 423 | 430 | }); |
| @@ -499,6 +506,7 @@ namespace UI.ViewModels | ||
| 499 | 506 | RadarData = chartData; |
| 500 | 507 | |
| 501 | 508 | double totalUse = Data.Sum(m => m.Values.Sum()); |
| 509 | 新增: totalTime_ = totalUse; | |
| 502 | 510 | TotalHours = Time.ToHoursString(totalUse); |
| 503 | 511 | LoadTopData(); |
| 504 | 512 | }); |
| @@ -539,10 +547,92 @@ namespace UI.ViewModels | ||
| 539 | 547 | |
| 540 | 548 | TopHours = TopData.Count > 0 ? Time.ToHoursString(TopData[0].Value) : "0"; |
| 541 | 549 | |
| 542 | 删除: AppCount = data.GetDateRangeAppCount(dateStart, dateEnd).ToString(); | |
| 550 | 新增: appCount_ = data.GetDateRangeAppCount(dateStart, dateEnd); | |
| 551 | 新增: AppCount = appCount_.ToString(); | |
| 552 | 新增: | |
| 553 | 新增: Top1App = null; | |
| 554 | 新增: | |
| 555 | 新增: if (TopData.Count > 0) | |
| 556 | 新增: { | |
| 557 | 新增: var model = TopData[0].Data as DailyLogModel; | |
| 558 | 新增: Top1App = model != null ? model.AppModel : null; | |
| 559 | 新增: } | |
| 560 | 新增: | |
| 561 | 新增: LoadDiffData(); | |
| 543 | 562 | }); |
| 544 | 563 | } |
| 545 | 564 | |
| 565 | 新增: private void LoadDiffData() | |
| 566 | 新增: { | |
| 567 | 新增: var dateStart = Date.Date.AddDays(-1); | |
| 568 | 新增: var dateEnd = Date.Date.AddDays(-1); | |
| 569 | 新增: if (TabbarSelectedIndex == 1) | |
| 570 | 新增: { | |
| 571 | 新增: // 周 | |
| 572 | 新增: var weekDateArr = Time.GetLastWeekDate(); | |
| 573 | 新增: dateStart = weekDateArr[0]; | |
| 574 | 新增: dateEnd = weekDateArr[1]; | |
| 575 | 新增: | |
| 576 | 新增: } | |
| 577 | 新增: else if (TabbarSelectedIndex == 2) | |
| 578 | 新增: { | |
| 579 | 新增: // 月 | |
| 580 | 新增: var dateArr = Time.GetMonthDate(MonthDate.AddMonths(-1)); | |
| 581 | 新增: dateStart = dateArr[0]; | |
| 582 | 新增: dateEnd = dateArr[1]; | |
| 583 | 新增: } | |
| 584 | 新增: else if (TabbarSelectedIndex == 3) | |
| 585 | 新增: { | |
| 586 | 新增: // 年 | |
| 587 | 新增: var dateArr = Time.GetYearDate(YearDate.AddYears(-1)); | |
| 588 | 新增: dateStart = dateArr[0]; | |
| 589 | 新增: dateEnd = dateArr[1]; | |
| 590 | 新增: } | |
| 591 | 新增: | |
| 592 | 新增: // 应用量 | |
| 593 | 新增: int lastAppCount = data.GetDateRangeAppCount(dateStart, dateEnd); | |
| 594 | 新增: // 使用总时长 | |
| 595 | 新增: var lastTotalTime = data.GetRangeTotalData(dateStart, dateEnd).Sum(); | |
| 596 | 新增: | |
| 597 | 新增: double diffTotalTime = ((totalTime_ - lastTotalTime) / lastTotalTime) * 100; | |
| 598 | 新增: if (totalTime_ > 0 && lastTotalTime == 0) | |
| 599 | 新增: { | |
| 600 | 新增: diffTotalTime = 100; | |
| 601 | 新增: } | |
| 602 | 新增: else if (totalTime_ == 0 && lastTotalTime == 0) | |
| 603 | 新增: { | |
| 604 | 新增: diffTotalTime = 0; | |
| 605 | 新增: } | |
| 606 | 新增: if (diffTotalTime > 0) | |
| 607 | 新增: { | |
| 608 | 新增: DiffTotalTimeType = "1"; | |
| 609 | 新增: } | |
| 610 | 新增: else if (diffTotalTime < 0) | |
| 611 | 新增: { | |
| 612 | 新增: DiffTotalTimeType = "-1"; | |
| 613 | 新增: } | |
| 614 | 新增: else | |
| 615 | 新增: { | |
| 616 | 新增: DiffTotalTimeType = "0"; | |
| 617 | 新增: } | |
| 618 | 新增: DiffTotalTimeValue = DiffTotalTimeType == "0" ? string.Empty : diffTotalTime == 100 ? "100%" : Math.Abs(diffTotalTime).ToString("f2") + "%"; | |
| 619 | 新增: | |
| 620 | 新增: int diffAppCount = appCount_ - lastAppCount; | |
| 621 | 新增: if (diffAppCount > 0) | |
| 622 | 新增: { | |
| 623 | 新增: DiffAppCountType = "1"; | |
| 624 | 新增: } | |
| 625 | 新增: else if (diffAppCount < 0) | |
| 626 | 新增: { | |
| 627 | 新增: DiffAppCountType = "-1"; | |
| 628 | 新增: } | |
| 629 | 新增: else | |
| 630 | 新增: { | |
| 631 | 新增: DiffAppCountType = "0"; | |
| 632 | 新增: } | |
| 633 | 新增: DiffAppCountValue = DiffAppCountType == "0" ? string.Empty : Math.Abs(diffAppCount).ToString(); | |
| 634 | 新增: } | |
| 635 | 新增: | |
| 546 | 636 | private List<ChartsDataModel> MapToChartsData(IEnumerable<Core.Models.DailyLogModel> list) |
| 547 | 637 | { |
| 548 | 638 | var resData = new List<ChartsDataModel>(); |
| @@ -53,6 +53,8 @@ | ||
| 53 | 53 | <Grid.ColumnDefinitions> |
| 54 | 54 | <ColumnDefinition Width="auto"/> |
| 55 | 55 | <ColumnDefinition Width="*"/> |
| 56 | 新增: <ColumnDefinition Width="auto"/> | |
| 57 | 新增: | |
| 56 | 58 | </Grid.ColumnDefinitions> |
| 57 | 59 | <Border Width="40" Height="40" CornerRadius="14"> |
| 58 | 60 | <Border.Background> |
| @@ -75,6 +77,20 @@ | ||
| 75 | 77 | <TextBlock Grid.Row="1" Margin="0,3,0,0" Text="总计" Foreground="{DynamicResource SubTextBrush}"/> |
| 76 | 78 | |
| 77 | 79 | </Grid> |
| 80 | 新增: <Border Grid.Column="2" VerticalAlignment="Bottom"> | |
| 81 | 新增: <StackPanel Orientation="Horizontal"> | |
| 82 | 新增: <base:View Condition="=1" Value="{Binding DiffTotalTimeType}"> | |
| 83 | 新增: <base:Icon VerticalAlignment="Center" IconType="ArrowUp8" FontSize="10" /> | |
| 84 | 新增: </base:View> | |
| 85 | 新增: <base:View Condition="=0" Value="{Binding DiffTotalTimeType}"> | |
| 86 | 新增: <base:Icon VerticalAlignment="Center" IconType="SubtractBold" FontSize="10" /> | |
| 87 | 新增: </base:View> | |
| 88 | 新增: <base:View Condition="=-1" Value="{Binding DiffTotalTimeType}"> | |
| 89 | 新增: <base:Icon VerticalAlignment="Center" IconType="ArrowDown8" FontSize="10" /> | |
| 90 | 新增: </base:View> | |
| 91 | 新增: <TextBlock Text="{Binding DiffTotalTimeValue}" VerticalAlignment="Center"/> | |
| 92 | 新增: </StackPanel> | |
| 93 | 新增: </Border> | |
| 78 | 94 | </Grid> |
| 79 | 95 | </Border> |
| 80 | 96 | <Border Grid.Column="1" Margin="20,5,0,0" Background="{DynamicResource SettingPanelBgBrush}" Padding="10" CornerRadius="10"> |
| @@ -82,6 +98,7 @@ | ||
| 82 | 98 | <Grid.ColumnDefinitions> |
| 83 | 99 | <ColumnDefinition Width="auto"/> |
| 84 | 100 | <ColumnDefinition Width="*"/> |
| 101 | 新增: <ColumnDefinition Width="auto"/> | |
| 85 | 102 | </Grid.ColumnDefinitions> |
| 86 | 103 | <Border Width="40" Height="40" CornerRadius="14"> |
| 87 | 104 | <Border.Background> |
| @@ -90,7 +107,7 @@ | ||
| 90 | 107 | <!--<GradientStop Color="#2b20d9" Offset="1"/>--> |
| 91 | 108 | </LinearGradientBrush> |
| 92 | 109 | </Border.Background> |
| 93 | 删除: <base:Icon IconType="FavoriteStarFill" Foreground="White"/> | |
| 110 | 新增: <base:Icon IconType="Apps" Foreground="White"/> | |
| 94 | 111 | </Border> |
| 95 | 112 | <Grid Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"> |
| 96 | 113 | <Grid.RowDefinitions> |
| @@ -105,13 +122,29 @@ | ||
| 105 | 122 | |
| 106 | 123 | |
| 107 | 124 | </Grid> |
| 125 | 新增: <Border Grid.Column="2" VerticalAlignment="Bottom"> | |
| 126 | 新增: <StackPanel Orientation="Horizontal"> | |
| 127 | 新增: <base:View Condition="=1" Value="{Binding DiffAppCountType}"> | |
| 128 | 新增: <base:Icon VerticalAlignment="Center" IconType="ArrowUp8" FontSize="10" /> | |
| 129 | 新增: </base:View> | |
| 130 | 新增: <base:View Condition="=0" Value="{Binding DiffAppCountType}"> | |
| 131 | 新增: <base:Icon VerticalAlignment="Center" IconType="SubtractBold" FontSize="10" /> | |
| 132 | 新增: </base:View> | |
| 133 | 新增: <base:View Condition="=-1" Value="{Binding DiffAppCountType}"> | |
| 134 | 新增: <base:Icon VerticalAlignment="Center" IconType="ArrowDown8" FontSize="10" /> | |
| 135 | 新增: </base:View> | |
| 136 | 新增: <TextBlock Text="{Binding DiffAppCountValue}" VerticalAlignment="Center"/> | |
| 137 | 新增: | |
| 138 | 新增: </StackPanel> | |
| 139 | 新增: </Border> | |
| 108 | 140 | </Grid> |
| 109 | 141 | </Border> |
| 110 | 删除: <Border Grid.Column="2" Margin="20,5,0,0" Background="{DynamicResource SettingPanelBgBrush}" Padding="10" CornerRadius="10"> | |
| 142 | 新增: <Border Grid.Column="2" Margin="20,5,0,0" Background="{DynamicResource SettingPanelBgBrush}" Padding="10" CornerRadius="10" ToolTip="{Binding Top1App.Description}"> | |
| 111 | 143 | <Grid> |
| 112 | 144 | <Grid.ColumnDefinitions> |
| 113 | 145 | <ColumnDefinition Width="auto"/> |
| 114 | 146 | <ColumnDefinition Width="*"/> |
| 147 | 新增: <ColumnDefinition Width="auto"/> | |
| 115 | 148 | </Grid.ColumnDefinitions> |
| 116 | 149 | <Border Width="40" Height="40" CornerRadius="14"> |
| 117 | 150 | <Border.Background> |
| @@ -128,12 +161,26 @@ | ||
| 128 | 161 | <RowDefinition Height="auto"/> |
| 129 | 162 | </Grid.RowDefinitions> |
| 130 | 163 | |
| 131 | 删除: <TextBlock > | |
| 164 | 新增: <TextBlock> | |
| 132 | 165 | <Run Text="{Binding TopHours}" FontSize="20"/> |
| 133 | 166 | <Run Text="小时" FontSize="12" Foreground="{DynamicResource SubTextBrush}"/> |
| 134 | 167 | </TextBlock> |
| 135 | 168 | <TextBlock Grid.Row="1" Margin="0,3,0,0" Text="最长使用" Foreground="{DynamicResource SubTextBrush}"/> |
| 136 | 169 | </Grid> |
| 170 | 新增: <Border Grid.Column="2"> | |
| 171 | 新增: <!--<Border Width="16" Height="16"> | |
| 172 | 新增: <Border.Background> | |
| 173 | 新增: <ImageBrush Stretch="Fill" x:Name="image" ImageSource="{Binding Top1App.IconFile}"/> | |
| 174 | 新增: </Border.Background> | |
| 175 | 新增: </Border>--> | |
| 176 | 新增: <Border CornerRadius="6" VerticalAlignment="Bottom" > | |
| 177 | 新增: <base:View Value="{Binding Top1App}" Condition="not null"> | |
| 178 | 新增: <base:Img URL="{Binding Top1App.IconFile}" VerticalAlignment="Center" HorizontalAlignment="Center" Width="16" Height="16"/> | |
| 179 | 新增: </base:View> | |
| 180 | 新增: | |
| 181 | 新增: </Border> | |
| 182 | 新增: | |
| 183 | 新增: </Border> | |
| 137 | 184 | </Grid> |
| 138 | 185 | </Border> |
| 139 | 186 | </Grid> |
| @@ -150,7 +197,7 @@ | ||
| 150 | 197 | |
| 151 | 198 | <Border Grid.Row="1" Margin="0,20,0,0" Width="680" HorizontalAlignment="Left" Background="{DynamicResource SettingPanelBgBrush}" Padding="20" CornerRadius="10"> |
| 152 | 199 | <StackPanel > |
| 153 | 删除: <select:Select Height="30" IsShowIcon="False" SelectedItem="{Binding ChartDataMode,Mode=TwoWay}" Options="{Binding ChartDataModeOptions}"/> | |
| 200 | 新增: <select:Select Padding="0" Height="30" IsShowIcon="False" SelectedItem="{Binding ChartDataMode,Mode=TwoWay}" Options="{Binding ChartDataModeOptions}"/> | |
| 154 | 201 | <charts:Charts IsStack="{Binding IsChartStack}" Height="310" ColumnSelectedIndex="{Binding ColumnSelectedIndex,Mode=TwoWay}" IsShowTotal="False" DataMaximum="{Binding DataMaximum}" NameIndexStart="{Binding NameIndexStart}" ChartsType="Column" Data="{Binding Data}" IsCanColumnSelect="{Binding IsCanColumnSelect}"/> |
| 155 | 202 | <base:View Value="{Binding DayHoursSelectedTime}" Condition="not empty"> |
| 156 | 203 | <StackPanel> |

