Skip to content

Commit

Permalink
New Cultering option to have clusters of roughly the same size
Browse files Browse the repository at this point in the history
Added ability to choose Clustering options
  • Loading branch information
RNoeldner committed Nov 26, 2023
1 parent 52af95a commit 97a0034
Show file tree
Hide file tree
Showing 8 changed files with 259 additions and 94 deletions.
9 changes: 1 addition & 8 deletions Library/WinFormControls/ColumnFilterLogic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -194,14 +194,7 @@ public string FilterExpression
return m_FilterExpressionValue.Length > 0 ? m_FilterExpressionValue : m_FilterExpressionOperator;
}
}
/// <summary>
/// Rebuild the ValueClusters based on the data passed in
/// </summary>
/// <param name="columnValues">The avalibale values</param>
/// <param name="maxValues">Maximun number of items to show</param>
/// <returns><see cref="BuildValueClustersResult"/></returns>
public BuildValueClustersResult ReBuildValueClusters(in ICollection<object> columnValues, int maxValues) => ValueClusterCollection.ReBuildValueClusters(DataType, columnValues, DataPropertyNameEscaped, Active, maxValues);


/// <summary>
/// Gets or sets the operator, setting the operator will build the filter
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@
<Compile Update="FromColumnsFilter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="FromColumnFilter.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Update="FromColumnFilter.cs" />
<Compile Update="FormColumnUIRead.cs" />
<Compile Update="FormPasswordAndKey.cs" />
<Compile Update="FormSelectInDropdown.cs">
Expand Down
71 changes: 63 additions & 8 deletions Library/WinFormControls/FromColumnFilter.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

79 changes: 50 additions & 29 deletions Library/WinFormControls/FromColumnFilter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ namespace CsvTools
public sealed partial class FromColumnFilter : ResizeForm
{
private readonly ColumnFilterLogic m_DataGridViewColumnFilter;

private readonly ICollection<object> m_Values;
private readonly int m_MaxCluster;
/// <summary>
/// Initializes a new instance of the <see cref="FromColumnFilter" /> class.
/// </summary>
Expand All @@ -38,7 +39,8 @@ public sealed partial class FromColumnFilter : ResizeForm
public FromColumnFilter(in ColumnFilterLogic dataGridViewColumnFilter, in ICollection<object> columnValues, int maxCluster)
{
m_DataGridViewColumnFilter = dataGridViewColumnFilter??throw new ArgumentNullException(nameof(dataGridViewColumnFilter));

m_Values = columnValues;
m_MaxCluster = maxCluster;
InitializeComponent();

Text = $"Filter : {m_DataGridViewColumnFilter.DataPropertyName}";
Expand All @@ -48,34 +50,15 @@ public FromColumnFilter(in ColumnFilterLogic dataGridViewColumnFilter, in IColle
// ReSharper disable once CoVariantArrayConversion
comboBoxOperator.Items.AddRange(ColumnFilterLogic.GetOperators(m_DataGridViewColumnFilter.DataType));
comboBoxOperator.SelectedIndex = 0;
comboBoxOperator.EndUpdate();
comboBoxOperator.EndUpdate();

var result = m_DataGridViewColumnFilter.ReBuildValueClusters(columnValues, maxCluster);
if (result == BuildValueClustersResult.ListFilled)
{
FilterItems("");
}
else
timerRebuild.Start();

if (m_DataGridViewColumnFilter.DataType == DataTypeEnum.String || m_DataGridViewColumnFilter.DataType == DataTypeEnum.Guid || m_DataGridViewColumnFilter.DataType == DataTypeEnum.Boolean)
{
listViewCluster.CheckBoxes = false;
var explain = "Error collecting the values";
switch (result)
{
case BuildValueClustersResult.WrongType:
explain="Datatype did not match";
break;
case BuildValueClustersResult.TooManyValues:
explain="Too many different values";
break;
case BuildValueClustersResult.NoValues:
explain="No value found";
break;
}
toolTip.SetToolTip(this.listViewCluster, explain);
labelError.Text = explain;
labelError.Visible=true;
toolTip.SetToolTip(this.labelError, explain);
listViewCluster.Enabled = false;
radioButtonCombine.Enabled = false;
radioButtonEven.Enabled = false;
radioButtonReg.Enabled = false;
}
}

Expand Down Expand Up @@ -254,6 +237,44 @@ private void TimerFilter_Tick(object sender, EventArgs e)
{
ParentForm.ShowError(ex);
}
}
}

private void timerRebuild_Tick(object sender, EventArgs e)
{
timerRebuild.Stop();
var result = m_DataGridViewColumnFilter.ValueClusterCollection.ReBuildValueClusters(m_DataGridViewColumnFilter.DataType, m_Values, m_DataGridViewColumnFilter.DataPropertyNameEscaped, m_DataGridViewColumnFilter.Active, m_MaxCluster, radioButtonCombine.Checked, radioButtonEven.Checked);
if (result == BuildValueClustersResult.ListFilled)
{
FilterItems("");
}
else
{
listViewCluster.CheckBoxes = false;
var explain = "Error collecting the values";
switch (result)
{
case BuildValueClustersResult.WrongType:
explain="Datatype did not match";
break;
case BuildValueClustersResult.TooManyValues:
explain="Too many different values";
break;
case BuildValueClustersResult.NoValues:
explain="No value found";
break;
}
toolTip.SetToolTip(this.listViewCluster, explain);
labelError.Text = explain;
labelError.Visible=true;
toolTip.SetToolTip(this.labelError, explain);
listViewCluster.Enabled = false;
}
}

private void ClusterTypeChanged(object sender, EventArgs e)
{
timerRebuild.Stop();
timerRebuild.Start();
}
}
}
6 changes: 6 additions & 0 deletions Library/WinFormControls/FromColumnFilter.resx
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,13 @@
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>140, 17</value>
</metadata>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>140, 17</value>
</metadata>
<metadata name="timerFilter.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>231, 17</value>
</metadata>
<metadata name="timerRebuild.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>328, 19</value>
</metadata>
</root>
Loading

0 comments on commit 97a0034

Please sign in to comment.