edit
This commit is contained in:
@@ -12,7 +12,7 @@ namespace XLAB2
|
||||
{
|
||||
private string _searchText;
|
||||
private AvailableInstrumentItem _selectedType;
|
||||
private string _serialNumber;
|
||||
private string _serialNumbersText;
|
||||
private string _statusText;
|
||||
|
||||
public SelectInstrumentTypeWindowViewModel(string customerName, IReadOnlyList<AvailableInstrumentItem> instrumentTypes)
|
||||
@@ -65,12 +65,12 @@ namespace XLAB2
|
||||
}
|
||||
}
|
||||
|
||||
public string SerialNumber
|
||||
public string SerialNumbersText
|
||||
{
|
||||
get { return _serialNumber; }
|
||||
get { return _serialNumbersText; }
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _serialNumber, value))
|
||||
if (SetProperty(ref _serialNumbersText, value))
|
||||
{
|
||||
((RelayCommand)ConfirmCommand).RaiseCanExecuteChanged();
|
||||
UpdateStatus();
|
||||
@@ -86,12 +86,13 @@ namespace XLAB2
|
||||
|
||||
public InstrumentTypeSelectionResult GetResult()
|
||||
{
|
||||
var serialNumbers = ParseSerialNumbers(SerialNumbersText);
|
||||
return SelectedType == null
|
||||
? null
|
||||
: new InstrumentTypeSelectionResult
|
||||
{
|
||||
TypeItem = SelectedType,
|
||||
SerialNumber = string.IsNullOrWhiteSpace(SerialNumber) ? string.Empty : SerialNumber.Trim()
|
||||
SerialNumbers = serialNumbers
|
||||
};
|
||||
}
|
||||
|
||||
@@ -103,7 +104,7 @@ namespace XLAB2
|
||||
private bool CanConfirm(object parameter)
|
||||
{
|
||||
return SelectedType != null
|
||||
&& !string.IsNullOrWhiteSpace(SerialNumber);
|
||||
&& ParseSerialNumbers(SerialNumbersText).Count > 0;
|
||||
}
|
||||
|
||||
private void Confirm(object parameter)
|
||||
@@ -138,6 +139,30 @@ namespace XLAB2
|
||||
&& source.IndexOf(searchText, StringComparison.OrdinalIgnoreCase) >= 0;
|
||||
}
|
||||
|
||||
private static List<string> ParseSerialNumbers(string value)
|
||||
{
|
||||
var serialNumbers = new List<string>();
|
||||
var unique = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
return serialNumbers;
|
||||
}
|
||||
|
||||
var separators = new[] { '\r', '\n', '\t', ',', ';' };
|
||||
foreach (var token in value.Split(separators, StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
var serialNumber = token.Trim();
|
||||
if (serialNumber.Length == 0 || !unique.Add(serialNumber))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
serialNumbers.Add(serialNumber);
|
||||
}
|
||||
|
||||
return serialNumbers;
|
||||
}
|
||||
|
||||
private void RaiseCloseRequested(bool? dialogResult)
|
||||
{
|
||||
var handler = CloseRequested;
|
||||
@@ -150,12 +175,13 @@ namespace XLAB2
|
||||
private void UpdateStatus()
|
||||
{
|
||||
var visibleCount = InstrumentTypesView.Cast<object>().Count();
|
||||
var serialCount = ParseSerialNumbers(SerialNumbersText).Count;
|
||||
StatusText = string.Format(
|
||||
"Всего типов: {0}. По фильтру: {1}. Выбран тип: {2}. Заводской номер: {3}.",
|
||||
"Всего типов: {0}. По фильтру: {1}. Выбран тип: {2}. Уникальных зав. №: {3}.",
|
||||
InstrumentTypes.Count,
|
||||
visibleCount,
|
||||
SelectedType == null ? "нет" : "да",
|
||||
string.IsNullOrWhiteSpace(SerialNumber) ? "не указан" : "указан");
|
||||
serialCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user