Skip to content

Commit d20d666

Browse files
committed
Added baseline feature to measure file size differences
1 parent aeb5be9 commit d20d666

File tree

5 files changed

+63
-8
lines changed

5 files changed

+63
-8
lines changed

MiniWebCompiler/Resources/FlatStyle.xaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414
<SolidColorBrush x:Key="FlatDefaultBackground">#f4f4f4</SolidColorBrush>
1515
<SolidColorBrush x:Key="FlatHoveredBackground">#fafafa</SolidColorBrush>
1616
<SolidColorBrush x:Key="FlatPressedBackground">#e8e8e8</SolidColorBrush>
17+
<SolidColorBrush x:Key="FlatCheckedBackground">#a0a0a0</SolidColorBrush>
1718
<SolidColorBrush x:Key="FlatDisabledBackground">#ffffff</SolidColorBrush>
1819

1920
<SolidColorBrush x:Key="FlatDefaultBorder">#b0b0b0</SolidColorBrush>
2021
<SolidColorBrush x:Key="FlatHoveredBorder">#808080</SolidColorBrush>
2122
<SolidColorBrush x:Key="FlatFocusedBorder">#81b2ff</SolidColorBrush>
2223
<SolidColorBrush x:Key="FlatPressedBorder">#808080</SolidColorBrush>
24+
<SolidColorBrush x:Key="FlatCheckedBorder">#808080</SolidColorBrush>
2325
<SolidColorBrush x:Key="FlatDisabledBorder">#c8c8c8</SolidColorBrush>
2426

2527
<!-- All colours with lightness - 8 to compensate the circle rendering opacity loss in RadioButton -->
@@ -169,6 +171,11 @@
169171
<Setter Property="Background" Value="{StaticResource FlatPressedBackground}"/>
170172
<Setter Property="BorderBrush" Value="{StaticResource FlatPressedBorder}"/>
171173
</Trigger>
174+
<Trigger Property="IsChecked" Value="True">
175+
<Setter Property="Background" Value="{StaticResource FlatCheckedBackground}"/>
176+
<Setter Property="BorderBrush" Value="{StaticResource FlatCheckedBorder}"/>
177+
<Setter Property="Foreground" Value="#ffffff"/>
178+
</Trigger>
172179
<Trigger Property="IsEnabled" Value="False">
173180
<Setter Property="Background" Value="{StaticResource FlatDisabledBackground}"/>
174181
<Setter Property="BorderBrush" Value="{StaticResource FlatDisabledBorder}"/>

MiniWebCompiler/ViewModels/MainViewModel.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ public MainViewModel()
2727
{
2828
Instance = this;
2929

30-
ProjectsListWidth = new GridLength(App.Settings?.ProjectsListWidth ?? 100);
31-
FilesListWidth = new GridLength(App.Settings?.FilesListWidth ?? 200);
30+
ProjectsListWidth = new GridLength(App.Settings?.ProjectsListWidth ?? 150);
31+
FilesListWidth = new GridLength(App.Settings?.FilesListWidth ?? 300);
3232

3333
if (App.Settings != null)
3434
{
@@ -82,10 +82,10 @@ private void OnSelectedProjectChanged()
8282

8383
private void OnProjectsListWidthChanged()
8484
{
85-
if (App.Settings != null && Views.MainWindow.Instance != null)
85+
if (App.Settings != null && MainWindow.Instance != null)
8686
{
8787
if (ProjectsListWidth.Value < 40) ProjectsListWidth = new GridLength(0);
88-
double maxWidth = Views.MainWindow.Instance.Width - 40 - FilesListWidth.Value - 40;
88+
double maxWidth = MainWindow.Instance.Width - 40 - FilesListWidth.Value - 40;
8989
if (ProjectsListWidth.Value > maxWidth) ProjectsListWidth = new GridLength(maxWidth);
9090
App.Settings.ProjectsListWidth = (int)ProjectsListWidth.Value;
9191
}
@@ -95,10 +95,10 @@ private void OnProjectsListWidthChanged()
9595

9696
private void OnFilesListWidthChanged()
9797
{
98-
if (App.Settings != null && Views.MainWindow.Instance != null)
98+
if (App.Settings != null && MainWindow.Instance != null)
9999
{
100100
if (FilesListWidth.Value < 100) FilesListWidth = new GridLength(100);
101-
double maxWidth = Views.MainWindow.Instance.Width - 40 - ProjectsListWidth.Value - 40;
101+
double maxWidth = MainWindow.Instance.Width - 40 - ProjectsListWidth.Value - 40;
102102
if (FilesListWidth.Value > maxWidth) FilesListWidth = new GridLength(maxWidth);
103103
App.Settings.FilesListWidth = (int)FilesListWidth.Value;
104104
}

MiniWebCompiler/ViewModels/Project.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,26 @@ private void OnCompileAll()
208208
}
209209
}
210210

211+
public bool HasBaseline { get; set; }
212+
213+
private void OnHasBaselineChanged()
214+
{
215+
if (HasBaseline)
216+
{
217+
foreach (var file in Files)
218+
{
219+
file.CompressedResultSizeBaseline = file.CompressedResultSize;
220+
}
221+
}
222+
else
223+
{
224+
foreach (var file in Files)
225+
{
226+
file.CompressedResultSizeBaseline = -1;
227+
}
228+
}
229+
}
230+
211231
#endregion Commands
212232

213233
#region Status handling

MiniWebCompiler/ViewModels/ProjectFile.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Security.Cryptography;
88
using System.Text.RegularExpressions;
99
using System.Threading.Tasks;
10+
using System.Windows;
1011
using fastJSON;
1112
using Unclassified.Util;
1213
using ViewModelKit;
@@ -33,6 +34,10 @@ public class ProjectFile : ViewModelBase
3334
public ProjectFile(Project project)
3435
{
3536
Project = project;
37+
if (project.HasBaseline)
38+
{
39+
CompressedResultSizeBaseline = CompressedResultSize;
40+
}
3641
compileDc = DelayedCall.Create(async () => await Compile(true), 500);
3742
}
3843

@@ -96,6 +101,26 @@ public void UpdateCompressedResultSizeStr()
96101
OnPropertyChanged(nameof(CompressedResultSizeStr));
97102
}
98103

104+
public long CompressedResultSizeBaseline { get; set; } = -1;
105+
106+
public string CompressedResultSizeDiffStr
107+
{
108+
get
109+
{
110+
if (CompressedResultSizeBaseline < 0)
111+
return "";
112+
long diff = CompressedResultSize - CompressedResultSizeBaseline;
113+
if (diff < 0)
114+
return $"−{-diff:#,##0}";
115+
if (diff > 0)
116+
return $"+{diff:#,##0}";
117+
return $"±0";
118+
}
119+
}
120+
121+
public Visibility BaselineSetVisibility =>
122+
CompressedResultSizeBaseline >= 0 ? Visibility.Visible : Visibility.Collapsed;
123+
99124
#endregion Properties
100125

101126
#region Commands

MiniWebCompiler/Views/MainWindow.xaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
x:Class="MiniWebCompiler.Views.MainWindow"
66
Title="Mini Web Compiler"
7-
Height="300" Width="800"
7+
Height="300" Width="900"
88
Cursor="{Binding Cursor}"
99
DataContextChanged="Window_DataContextChanged"
1010
StateChanged="Window_StateChanged"
@@ -19,7 +19,7 @@
1919
<ColumnDefinition Width="20"/>
2020
<ColumnDefinition Width="{Binding FilesListWidth, Mode=TwoWay}"/>
2121
<ColumnDefinition Width="20"/>
22-
<ColumnDefinition Width="3*"/>
22+
<ColumnDefinition Width="*"/>
2323
</Grid.ColumnDefinitions>
2424

2525
<Grid Grid.Column="0">
@@ -120,6 +120,7 @@
120120
<ColumnDefinition Width="*"/>
121121
<ColumnDefinition Width="Auto"/>
122122
<ColumnDefinition Width="Auto" SharedSizeGroup="Size"/>
123+
<ColumnDefinition Width="Auto" SharedSizeGroup="SizeDiff"/>
123124
</Grid.ColumnDefinitions>
124125
<Ellipse Width="10" Height="10" VerticalAlignment="Center">
125126
<Ellipse.Style>
@@ -139,6 +140,7 @@
139140
<TextBlock Grid.Column="1" Margin="6,0,0,0" Text="{Binding FilePath}"/>
140141
<TextBlock Grid.Column="2" Margin="10,0,0,0" Text="{Binding LastCompileTimeStr}" Opacity="0.6" ToolTip="Last compile time"/>
141142
<TextBlock Grid.Column="3" HorizontalAlignment="Right" Margin="10,0,0,0" Text="{Binding CompressedResultSizeStr}" Opacity="0.6" ToolTip="GZip-compressed file size"/>
143+
<TextBlock Grid.Column="4" HorizontalAlignment="Right" Margin="4,0,0,0" Text="{Binding CompressedResultSizeDiffStr}" Opacity="0.6" ToolTip="Difference to baseline" Visibility="{Binding BaselineSetVisibility}"/>
142144
</Grid>
143145
</DataTemplate>
144146
</ListBox.ItemTemplate>
@@ -151,6 +153,7 @@
151153
<Path Margin="0,3" Width="10" Height="10" Fill="Black" Data="M0,4 L10,4 10,6 0,6 z"/>
152154
</Button>
153155
<Button Margin="6,0,0,0" MinWidth="75" IsEnabled="{Binding IsProjectSelected}" Command="{Binding SelectedProject.CompileAllCommand}">Compile all</Button>
156+
<ToggleButton Margin="6,0,0,0" IsEnabled="{Binding IsProjectSelected}" IsChecked="{Binding SelectedProject.HasBaseline}">Baseline</ToggleButton>
154157
</StackPanel>
155158
</Grid>
156159

0 commit comments

Comments
 (0)