|
@@ -4,8 +4,10 @@ using System.Collections.Generic;
|
|
|
using System.Collections.ObjectModel;
|
|
using System.Collections.ObjectModel;
|
|
|
using System.Diagnostics;
|
|
using System.Diagnostics;
|
|
|
using System.Linq;
|
|
using System.Linq;
|
|
|
|
|
+using System.Reactive;
|
|
|
using System.Reactive.Linq;
|
|
using System.Reactive.Linq;
|
|
|
using qmonlib.ui.Models.General;
|
|
using qmonlib.ui.Models.General;
|
|
|
|
|
+using qmonlib.ui.Models.QMonitor;
|
|
|
using Quadarax.Foundation.Core.QMonitor;
|
|
using Quadarax.Foundation.Core.QMonitor;
|
|
|
using Quadarax.Foundation.Core.Value;
|
|
using Quadarax.Foundation.Core.Value;
|
|
|
using Quadarax.Foundation.Core.Value.Extensions;
|
|
using Quadarax.Foundation.Core.Value.Extensions;
|
|
@@ -18,10 +20,21 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
|
|
|
|
|
#region *** Private Fields ***
|
|
#region *** Private Fields ***
|
|
|
private readonly ObservableCollection<MonGeneral> _allData;
|
|
private readonly ObservableCollection<MonGeneral> _allData;
|
|
|
- private readonly ConcurrentDictionary<string,CheckBoxListItem> _instancesCache = new ConcurrentDictionary<string, CheckBoxListItem>();
|
|
|
|
|
|
|
+ private readonly ConcurrentDictionary<string,CheckBoxListItemModel> _instancesCache = new ConcurrentDictionary<string, CheckBoxListItemModel>();
|
|
|
private string? _searchText;
|
|
private string? _searchText;
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ #region *** Commands ***
|
|
|
|
|
+ public ReactiveCommand<MonItemGeneralModel, Unit> CmdOpenChannel { get; }
|
|
|
|
|
+
|
|
|
|
|
+ private void OnCmdOpenChannel(MonItemGeneralModel item)
|
|
|
|
|
+ {
|
|
|
|
|
+ throw new NotImplementedException();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ #endregion
|
|
|
|
|
+
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// Filter pattern expression
|
|
/// Filter pattern expression
|
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -34,7 +47,7 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// List of general metadata (filtered by <see cref="SearchText"/>)
|
|
/// List of general metadata (filtered by <see cref="SearchText"/>)
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
- public ObservableCollection<MonItemGeneral> DataFiltered
|
|
|
|
|
|
|
+ public ObservableCollection<MonItemGeneralModel> DataFiltered
|
|
|
{
|
|
{
|
|
|
get
|
|
get
|
|
|
{
|
|
{
|
|
@@ -44,8 +57,8 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
string.Equals(y.Name, x.InstanceIdentifier, StringComparison.InvariantCultureIgnoreCase) &&
|
|
string.Equals(y.Name, x.InstanceIdentifier, StringComparison.InvariantCultureIgnoreCase) &&
|
|
|
y.IsChecked));
|
|
y.IsChecked));
|
|
|
Debug.WriteLine($"*DataFiltered.dataInstances cnt = {dataInstances.Count()}");
|
|
Debug.WriteLine($"*DataFiltered.dataInstances cnt = {dataInstances.Count()}");
|
|
|
- var result = new ObservableCollection<MonItemGeneral>(
|
|
|
|
|
- dataInstances.SelectMany(x => x.Items).Where(x => x.Name.Like(SearchText))
|
|
|
|
|
|
|
+ var result = new ObservableCollection<MonItemGeneralModel>(
|
|
|
|
|
+ dataInstances.SelectMany(x => x.Items).Where(x => x.Name.Like(SearchText)).Select(x => new MonItemGeneralModel(x))
|
|
|
);
|
|
);
|
|
|
Debug.WriteLine($"*DataFiltered cnt = {result.Count}");
|
|
Debug.WriteLine($"*DataFiltered cnt = {result.Count}");
|
|
|
return result;
|
|
return result;
|
|
@@ -56,11 +69,11 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// List of general metadata source instances
|
|
/// List of general metadata source instances
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
- public ObservableCollection<CheckBoxListItem> DataInstances
|
|
|
|
|
|
|
+ public ObservableCollection<CheckBoxListItemModel> DataInstances
|
|
|
{
|
|
{
|
|
|
get
|
|
get
|
|
|
{
|
|
{
|
|
|
- var newInstances = _allData.Select(x => x.InstanceIdentifier).Distinct().Select(x => new CheckBoxListItem(x));
|
|
|
|
|
|
|
+ var newInstances = _allData.Select(x => x.InstanceIdentifier).Distinct().Select(x => new CheckBoxListItemModel(x));
|
|
|
foreach (var newInstance in newInstances)
|
|
foreach (var newInstance in newInstances)
|
|
|
{
|
|
{
|
|
|
if (_instancesCache.ContainsKey(newInstance.Name))
|
|
if (_instancesCache.ContainsKey(newInstance.Name))
|
|
@@ -69,7 +82,7 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
_instancesCache.TryAdd(newInstance.Name, newInstance);
|
|
_instancesCache.TryAdd(newInstance.Name, newInstance);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return new ObservableCollection<CheckBoxListItem>(_instancesCache.Select(x=>x.Value));
|
|
|
|
|
|
|
+ return new ObservableCollection<CheckBoxListItemModel>(_instancesCache.Select(x=>x.Value));
|
|
|
}
|
|
}
|
|
|
set => throw new NotSupportedException();
|
|
set => throw new NotSupportedException();
|
|
|
}
|
|
}
|
|
@@ -105,6 +118,10 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
|
|
|
|
|
public NavSearchViewModel()
|
|
public NavSearchViewModel()
|
|
|
{
|
|
{
|
|
|
|
|
+ // Commands binding
|
|
|
|
|
+ CmdOpenChannel = ReactiveCommand.Create<MonItemGeneralModel>(OnCmdOpenChannel);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
_allData = new ObservableCollection<MonGeneral>();
|
|
_allData = new ObservableCollection<MonGeneral>();
|
|
|
|
|
|
|
|
// refresh handling subscriptions
|
|
// refresh handling subscriptions
|
|
@@ -124,16 +141,16 @@ namespace qmonlib.ui.ViewModels.Navigator
|
|
|
{
|
|
{
|
|
|
InstanceIdentifier = "inst1",
|
|
InstanceIdentifier = "inst1",
|
|
|
};
|
|
};
|
|
|
- gen1.Items.Add(new MonItemGeneral() { Name = "Fee.Foo.Item1", Caption = "this is item1", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
- gen1.Items.Add(new MonItemGeneral() { Name = "Fee.Foo.Item2", Caption = "this is item2", ViewType = MonItemGeneral.MonViewType.List });
|
|
|
|
|
- gen1.Items.Add(new MonItemGeneral() { Name = "Fee.Foo.Item3", Caption = "this is item3", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
|
|
+ gen1.Items.Add(new MonItemGeneralModel() { Name = "Fee.Foo.Item1", Caption = "this is item1", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
+ gen1.Items.Add(new MonItemGeneralModel() { Name = "Fee.Foo.Item2", Caption = "this is item2", ViewType = MonItemGeneral.MonViewType.List });
|
|
|
|
|
+ gen1.Items.Add(new MonItemGeneralModel() { Name = "Fee.Foo.Item3", Caption = "this is item3", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
var gen2 = new MonGeneral()
|
|
var gen2 = new MonGeneral()
|
|
|
{
|
|
{
|
|
|
InstanceIdentifier = "inst2",
|
|
InstanceIdentifier = "inst2",
|
|
|
};
|
|
};
|
|
|
- gen2.Items.Add(new MonItemGeneral() { Name = "Fee.Frr.Item1", Caption = "this is item1", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
- gen2.Items.Add(new MonItemGeneral() { Name = "Fee.Frr.Item2", Caption = "this is item2", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
- gen2.Items.Add(new MonItemGeneral() { Name = "Fee.Frr.Item3", Caption = "this is item3", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
|
|
+ gen2.Items.Add(new MonItemGeneralModel() { Name = "Fee.Frr.Item1", Caption = "this is item1", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
+ gen2.Items.Add(new MonItemGeneralModel() { Name = "Fee.Frr.Item2", Caption = "this is item2", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
+ gen2.Items.Add(new MonItemGeneralModel() { Name = "Fee.Frr.Item3", Caption = "this is item3", ViewType = MonItemGeneral.MonViewType.Item });
|
|
|
|
|
|
|
|
_allData.Add(gen1);
|
|
_allData.Add(gen1);
|
|
|
_allData.Add(gen2);
|
|
_allData.Add(gen2);
|