blob: 4b75ea6fdfcee762c36e84f8e2aa18427a342f1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using Tango.Core.Commands;
using Tango.Core.DI;
using Tango.FSE.Common;
using Tango.FSE.Common.Storage;
using Tango.FSE.Insights.SciChart;
using Tango.SharedUI.Components;
namespace Tango.FSE.Insights.Dialogs
{
public class ExportToCsvDialogViewVM : FSEDialogViewVM
{
private ICollectionView _view;
private bool _preventSelectAllChange;
[TangoInject]
private IStorageProvider StorageProvider { get; set; }
public SelectedObjectCollection<InsightsChart> SelectedCharts { get; set; }
private String _filter;
public String Filter
{
get { return _filter; }
set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
}
private bool? _selectAll;
public bool? SelectAll
{
get { return _selectAll; }
set
{
if (_selectAll != value)
{
_selectAll = value;
RaisePropertyChangedAuto();
OnSelectAllChanged();
}
}
}
private String _selectedFile;
public String SelectedFile
{
get { return _selectedFile; }
set { _selectedFile = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
}
public RelayCommand SelectFileCommand { get; set; }
public ExportToCsvDialogViewVM(List<InsightsChart> availableCharts, List<InsightsChart> visibleCharts)
{
TangoIOC.Default.Inject(this);
OKText = "EXPORT";
SelectedCharts = new SelectedObjectCollection<InsightsChart>(availableCharts.OrderByDescending(x => visibleCharts.Contains(x)).ToObservableCollection(), visibleCharts.ToObservableCollection());
SelectedCharts.SelectionChanged += SelectedCharts_SelectionChanged;
_view = CollectionViewSource.GetDefaultView(SelectedCharts);
_view.Filter = FilterCharts;
SelectFileCommand = new RelayCommand(SelectFile);
}
private async void SelectFile()
{
var result = await StorageProvider.SaveFile("Export Monitors CSV", "CSV Files|*.csv", null, ".csv");
if (result.Confirmed)
{
SelectedFile = result.SelectedItem;
}
}
private bool FilterCharts(object obj)
{
if (String.IsNullOrWhiteSpace(Filter)) return true;
return (obj as SelectedObject<InsightsChart>).Data.Description.ToLower().Contains(Filter.ToLower());
}
private void SelectedCharts_SelectionChanged(object sender, EventArgs e)
{
if (!_preventSelectAllChange)
{
if (SelectedCharts.All(x => x.IsSelected))
{
_selectAll = true;
}
else if (SelectedCharts.Any(x => x.IsSelected))
{
_selectAll = null;
}
else
{
_selectAll = false;
}
}
RaisePropertyChanged(nameof(SelectAll));
InvalidateRelayCommands();
}
protected override bool CanOK()
{
return base.CanOK() && SelectedCharts.SynchedSource.Count > 0 && SelectedFile != null;
}
private void OnFilterChanged()
{
_view?.Refresh();
}
private void OnSelectAllChanged()
{
if (SelectAll != null)
{
_preventSelectAllChange = true;
SelectedCharts.ToList().ForEach(x => x.IsSelected = SelectAll.Value);
_preventSelectAllChange = false;
}
}
}
}
|