sharee.bike-App/TINKLib/ViewModel/Map/GroupFilterMapPage.cs
2021-11-07 21:28:13 +01:00

68 lines
2.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TINK.Model;
using TINK.Model.Connector.Filter;
namespace TINK.ViewModel.Map
{
public class GroupFilterMapPage : IGroupFilterMapPage
{
public GroupFilterMapPage(IDictionary<string, FilterState> filterDictionary = null)
{
FilterDictionary = filterDictionary ?? new Dictionary<string, FilterState>();
Filter = filterDictionary != null
? (IGroupFilter)new IntersectGroupFilter(FilterDictionary.Where(x => x.Value == FilterState.On).Select(x => x.Key))
: new NullGroupFilter();
}
private IGroupFilter Filter { get; }
/// <summary> Gets the active filters.</summary>
/// <param name="filterCollection">Filter collection to get group from.</param>
/// <returns>List of active filters.</returns>
/// <todo>Rename to ToFilterList</todo>
public IList<string> GetGroup()
{
return this.Where(x => x.Value == FilterState.On).Select(x => x.Key).ToList();
}
/// <summary> Performs filtering on response-group. </summary>
public IEnumerable<string> DoFilter(IEnumerable<string> filter = null) => Filter.DoFilter(filter);
private IDictionary<string, FilterState> FilterDictionary { get; }
public FilterState this[string key] { get => FilterDictionary[key]; set => FilterDictionary[key] = value ; }
public ICollection<string> Keys => FilterDictionary.Keys;
public ICollection<FilterState> Values => FilterDictionary.Values;
public int Count => FilterDictionary.Count;
public bool IsReadOnly => true;
public void Add(string key, FilterState value) => throw new System.NotImplementedException();
public void Add(KeyValuePair<string, FilterState> item) => throw new System.NotImplementedException();
public void Clear() => throw new System.NotImplementedException();
public bool Contains(KeyValuePair<string, FilterState> item) => FilterDictionary.Contains(item);
public bool ContainsKey(string key) => FilterDictionary.ContainsKey(key);
public void CopyTo(KeyValuePair<string, FilterState>[] array, int arrayIndex) => FilterDictionary.CopyTo(array, arrayIndex);
public IEnumerator<KeyValuePair<string, FilterState>> GetEnumerator() => FilterDictionary.GetEnumerator();
public bool Remove(string key) => throw new System.NotImplementedException();
public bool Remove(KeyValuePair<string, FilterState> item) => throw new System.NotImplementedException();
public bool TryGetValue(string key, out FilterState value) => FilterDictionary.TryGetValue(key, out value);
IEnumerator IEnumerable.GetEnumerator() => FilterDictionary.GetEnumerator();
}
}