跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改UI/Controls/Charts/Charts.cs+82 −3看文件
@@ -456,6 +456,24 @@ namespace UI.Controls.Charts
456456 new PropertyMetadata((double)0)
457457 );
458458
459新增: #region 是否以堆叠的形式展示(仅柱状图有效)
460新增: /// <summary>
461新增: /// 是否以堆叠的形式展示(仅柱状图有效)
462新增: /// </summary>
463新增: public bool IsStack
464新增: {
465新增: get { return (bool)GetValue(IsStackProperty); }
466新增: set { SetValue(IsStackProperty, value); }
467新增: }
468新增: public static readonly DependencyProperty IsStackProperty =
469新增: DependencyProperty.Register("IsStack",
470新增: typeof(bool),
471新增: typeof(Charts),
472新增: new PropertyMetadata(false, new PropertyChangedCallback(OnPropertyChanged)));
473新增:
474新增:
475新增: #endregion
476新增:
459477 private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
460478 {
461479 var charts = (d as Charts);
@@ -1097,8 +1115,17 @@ namespace UI.Controls.Charts
10971115
10981116 double total = 0;
10991117 // 查找最大值
1118新增: int colValueCount = Data.FirstOrDefault().Values.Length;
1119新增: double[] tempValueArr = new double[colValueCount];
1120新增:
11001121 foreach (var item in Data)
11011122 {
1123新增:
1124新增: for (int i = 0; i < colValueCount; i++)
1125新增: {
1126新增: tempValueArr[i] += item.Values[i];
1127新增: }
1128新增:
11021129 // 查找最大值
11031130 double max = item.Values.Max();
11041131 if (max > maxValue)
@@ -1114,6 +1141,13 @@ namespace UI.Controls.Charts
11141141 {
11151142 maxValue = DataMaximum;
11161143 }
1144新增: else
1145新增: {
1146新增: if (IsStack)
1147新增: {
1148新增: maxValue = tempValueArr.Max();
1149新增: }
1150新增: }
11171151 if (maxValue == 0)
11181152 {
11191153 maxValue = 10;
@@ -1205,8 +1239,11 @@ namespace UI.Controls.Charts
12051239 colValueRect.Width = colValueRectWidth;
12061240 colValueRect.Height = value / maxValue * canvasHeight;
12071241 colValueRect.Fill = UI.Base.Color.Colors.GetFromString(colColor);
1208删除: colValueRect.RadiusX = 4;
1209删除: colValueRect.RadiusY = 4;
1242新增: if (!IsStack)
1243新增: {
1244新增: colValueRect.RadiusX = 4;
1245新增: colValueRect.RadiusY = 4;
1246新增: }
12101247 Canvas.SetLeft(colValueRect, i * columnBorderWidth + margin);
12111248 Canvas.SetBottom(colValueRect, colNameHeight);
12121249
@@ -1264,7 +1301,20 @@ namespace UI.Controls.Charts
12641301 for (int i = 0; i < rectList.Count; i++)
12651302 {
12661303 var rect = rectList[i];
1267删除: Panel.SetZIndex(rect, i);
1304新增: if (IsStack)
1305新增: {
1306新增: double marginBottom = 0;
1307新增: if (i > 0)
1308新增: {
1309新增: var lastRect = rectList[i - 1];
1310新增: marginBottom = Canvas.GetBottom(lastRect) + lastRect.Height;
1311新增: Canvas.SetBottom(rect, marginBottom);
1312新增: }
1313新增: }
1314新增: else
1315新增: {
1316新增: Panel.SetZIndex(rect, i);
1317新增: }
12681318 }
12691319 }
12701320
@@ -1320,6 +1370,35 @@ namespace UI.Controls.Charts
13201370 _typeColumnCanvas.Children.Add(midValueLine);
13211371
13221372
1373新增: // 平均
1374新增: double avg = tempValueArr.Average();
1375新增: double avgY = (avg) / maxValue * canvasHeight;
1376新增:
1377新增: var avgValueText = new TextBlock();
1378新增: avgValueText.Text = Covervalue(avg);
1379新增: avgValueText.FontSize = 12;
1380新增: avgValueText.Foreground = UI.Base.Color.Colors.GetFromString(StateData.ThemeColor);
1381新增: avgValueText.ToolTip = "平均值";
1382新增:
1383新增: var avgValueTextSize = UIHelper.MeasureString(avgValueText);
1384新增: Panel.SetZIndex(avgValueText, 1000);
1385新增: Canvas.SetRight(avgValueText, 0);
1386新增: Canvas.SetBottom(avgValueText, avgY + colNameHeight - avgValueTextSize.Height / 2);
1387新增: _typeColumnCanvas.Children.Add(avgValueText);
1388新增:
1389新增: var avgValueLine = new Line();
1390新增: avgValueLine.Stroke = UI.Base.Color.Colors.GetFromString(StateData.ThemeColor);
1391新增: avgValueLine.StrokeDashArray = new DoubleCollection() { 2, 5 };
1392新增: avgValueLine.StrokeThickness = 1;
1393新增: avgValueLine.X1 = colNameBottomMargin;
1394新增: avgValueLine.X2 = canvasWidth - colNameBottomMargin - (avgValueTextSize.Width);
1395新增: avgValueLine.Y1 = canvasHeight - avgY + colNameBottomMargin + avgValueLine.StrokeThickness;
1396新增: avgValueLine.Y2 = canvasHeight - avgY + colNameBottomMargin + avgValueLine.StrokeThickness;
1397新增: //avgValueLine.Width = canvasWidth;
1398新增: //avgValueLine.Height = 10;
1399新增: //Canvas.SetBottom(avgValueLine, avgY + colNameHeight);
1400新增: _typeColumnCanvas.Children.Add(avgValueLine);
1401新增:
13231402 // 组装分类统计数据
13241403 var infoList = new List<ChartColumnInfoModel>();
13251404 list = list.OrderByDescending(m => m.Values.Sum()).ToList();
修改UI/Models/ChartPageModel.cs+5 −0看文件
@@ -129,5 +129,10 @@ namespace UI.Models
129129 /// 雷达图数据
130130 /// </summary>
131131 public List<ChartsDataModel> RadarData { get { return RadarData_; } set { RadarData_ = value; OnPropertyChanged(); } }
132新增: private bool IsChartStack_ = true;
133新增: /// <summary>
134新增: /// 是否以堆叠形式展示
135新增: /// </summary>
136新增: public bool IsChartStack { get { return IsChartStack_; } set { IsChartStack_ = value; OnPropertyChanged(); } }
132137 }
133138}
修改UI/Themes/Charts/Charts.xaml+6 −6看文件
@@ -103,7 +103,7 @@
103103 PlacementTarget="{TemplateBinding ValuesPopupPlacementTarget}"
104104 HorizontalOffset="{TemplateBinding ValuesPopupHorizontalOffset}">
105105 <Border
106删除: Background="White"
106新增: Background="{DynamicResource PopupBackgroundBrush}"
107107 CornerRadius="12"
108108 Padding="10"
109109 Margin="10">
@@ -116,8 +116,8 @@
116116 Width="15"
117117 Height="15"
118118 SnapsToDevicePixels="False"
119删除: Data="M 0 0 L 7.5 7.5 L 15 0" Fill="White"
120删除: Stroke="White"
119新增: Data="M 0 0 L 7.5 7.5 L 15 0" Fill="{DynamicResource PopupBackgroundBrush}"
120新增: Stroke="{DynamicResource PopupBackgroundBrush}"
121121 StrokeThickness="1"
122122 VerticalAlignment="Bottom"
123123 HorizontalAlignment="Left"
@@ -144,7 +144,7 @@
144144 <Setter Property="Template">
145145 <Setter.Value>
146146 <ControlTemplate TargetType="{x:Type ListViewItem}">
147删除: <Border BorderBrush="Transparent" BorderThickness="2" x:Name="Border" Background="White" Margin="0" CornerRadius="10">
147新增: <Border BorderBrush="Transparent" BorderThickness="2" x:Name="Border" Margin="0" CornerRadius="10">
148148
149149 <ContentPresenter/>
150150 </Border>
@@ -176,11 +176,11 @@
176176
177177 <Border Grid.Column="1" Margin="5,0,0,0">
178178 <!--名称-->
179删除: <TextBlock Foreground="#3d3d3d" VerticalAlignment="Center" Text="{Binding Name}" FontSize="12"/>
179新增: <TextBlock Foreground="{DynamicResource DefaultTextBrush}" VerticalAlignment="Center" Text="{Binding Name}" FontSize="12"/>
180180 </Border>
181181 <Border Grid.Column="2">
182182 <!--总计和百分比-->
183删除: <TextBlock FontSize="12" Margin="5,0,0,0" Foreground="#FF8A8A8A" VerticalAlignment="Center" Text="{Binding Text}"/>
183新增: <TextBlock FontSize="12" Margin="5,0,0,0" Foreground="{DynamicResource SubTextBrush}" VerticalAlignment="Center" Text="{Binding Text}"/>
184184
185185 </Border>
186186
修改UI/ViewModels/ChartPageVM.cs+29 −14看文件
@@ -53,17 +53,24 @@ namespace UI.ViewModels
5353 Name = "上周"
5454 });
5555
56删除: var chartDataModeOptions = new List<SelectItemModel>();
57删除: chartDataModeOptions.Add(new SelectItemModel()
56新增: var chartDataModeOptions = new List<SelectItemModel>
5857 {
59删除: Id = 1,
60删除: Name = "分类",
61删除: });
62删除: chartDataModeOptions.Add(new SelectItemModel()
63删除: {
64删除: Id = 2,
65删除: Name = "汇总"
66删除: });
58新增: new SelectItemModel()
59新增: {
60新增: Id = 1,
61新增: Name = "默认视图",
62新增: },
63新增: new SelectItemModel()
64新增: {
65新增: Id = 2,
66新增: Name = "汇总视图"
67新增: },
68新增: new SelectItemModel()
69新增: {
70新增: Id = 3,
71新增: Name = "分类视图"
72新增: }
73新增: };
6774
6875 ChartDataModeOptions = chartDataModeOptions;
6976 ChartDataMode = chartDataModeOptions[0];
@@ -156,6 +163,14 @@ namespace UI.ViewModels
156163 }
157164 if (e.PropertyName == nameof(ChartDataMode))
158165 {
166新增: if (ChartDataMode.Id == 1)
167新增: {
168新增: IsChartStack = true;
169新增: }
170新增: else
171新增: {
172新增: IsChartStack = false;
173新增: }
159174 LoadData();
160175 }
161176 }
@@ -231,7 +246,7 @@ namespace UI.ViewModels
231246 chartData.Add(dataItem);
232247 }
233248 }
234删除: if (ChartDataMode.Id == 1)
249新增: if (ChartDataMode.Id == 1 || ChartDataMode.Id == 3)
235250 {
236251 Data = chartData;
237252 }
@@ -308,7 +323,7 @@ namespace UI.ViewModels
308323 }
309324 }
310325
311删除: if (ChartDataMode.Id == 1)
326新增: if (ChartDataMode.Id == 1 || ChartDataMode.Id == 3)
312327 {
313328 Data = chartData;
314329 }
@@ -384,7 +399,7 @@ namespace UI.ViewModels
384399 chartData.Add(dataItem);
385400 }
386401 }
387删除: if (ChartDataMode.Id == 1)
402新增: if (ChartDataMode.Id == 1 || ChartDataMode.Id == 3)
388403 {
389404 Data = chartData;
390405 }
@@ -463,7 +478,7 @@ namespace UI.ViewModels
463478
464479
465480
466删除: if (ChartDataMode.Id == 1)
481新增: if (ChartDataMode.Id == 1 || ChartDataMode.Id == 3)
467482 {
468483 Data = chartData;
469484 }
修改UI/Views/ChartPage.xaml+1 −1看文件
@@ -151,7 +151,7 @@
151151 <Border Grid.Row="1" Margin="0,20,0,0" Width="680" HorizontalAlignment="Left" Background="{DynamicResource SettingPanelBgBrush}" Padding="20" CornerRadius="10">
152152 <StackPanel >
153153 <select:Select Height="30" IsShowIcon="False" SelectedItem="{Binding ChartDataMode,Mode=TwoWay}" Options="{Binding ChartDataModeOptions}"/>
154删除: <charts:Charts Height="310" ColumnSelectedIndex="{Binding ColumnSelectedIndex,Mode=TwoWay}" IsShowTotal="False" DataMaximum="{Binding DataMaximum}" NameIndexStart="{Binding NameIndexStart}" ChartsType="Column" Data="{Binding Data}" IsCanColumnSelect="{Binding IsCanColumnSelect}"/>
154新增: <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}"/>
155155 <base:View Value="{Binding DayHoursSelectedTime}" Condition="not empty">
156156 <StackPanel>
157157 <Border Margin="0,10,0,5" HorizontalAlignment="Left" Padding="10" CornerRadius="10">