using DTS.Common.Base;
using DTS.Common.Enums.Sensors;
using DTS.Common.Interface.Pagination;
using System;
using System.Collections.Generic;
namespace DTS.Common.Interface.Sensors.SensorsList
{
public interface ISensorsListViewModel : IBaseViewModel, IFilterableListView
{
ISensorsListView View { get; set; }
IAnalogSensor[] AnalogSensors { get; set; }
ISquib[] Squibs { get; set; }
IDigitalInputSetting[] DigitalInputSettings { get; set; }
IDigitalOutputSetting[] DigitalOutputSettings { get; set; }
IUartIOSetting[] UartIOSettings { get; set; }
IStreamOutputSetting[] StreamOutputSettings { get; set; }
CalibrationBehaviors CalibrationBehavior { get; set; }
void HandleAssemblyVisibilityColumns(bool bDontAllowDataCollectionIfOverused);
void HandleInspectBeforeUseVisibilityColumn(bool show);
void GetSensors(int sensorCalWarningPeriodDays, bool dontAllowDataCollectionIfOverused, int sensorUsageWarningCount,
bool included, Action OnComplete);
///
/// retrieves and populates view model with all sensors matching sensors allowed
///
/// cal warning period in days, used for colorization
/// array of which sensors to display
/// dictionary look up of databaseid to ISensorData for sensors in a test
void GetSensors(int sensorCalWarningPeriodDays, int[] sensorsAllowed, IReadOnlyDictionary sensors);
void SetSelectedSerial(string serialNumber);
void Sort(object sortBy, bool bColumnClick);
void SortOverdue(object sortBy, bool bColumnClick);
void Unset();
void Filter(string currentFilter);
void FilterSquib(object columnTag, string searchTerm);
void FilterDigitalIn(object columnTag, string searchTerm);
void FilterDigitalOut(object columnTag, string searchTerm);
void FilterUartIO(object columnTag, string searchTerm);
void FilterStreamIn(object columnTag, string searchTerm);
void FilterStreamOut(object columnTag, string searchTerm);
void SetCachedSensors(ISensorData[] cachedSensors);
void SetCachedCalibrations(ISensorCalibration[] sensorCalibrations);
string CapacityFormat { get; set; }
///
/// determines whether included columns are used in models/views
///
///
void UseIncludedColumn(bool bUsesIncludedColumn);
///
///// determines whether the Assembly, Usage count, and Maximum usage columns are used in models/views
/////
/////
//void UseUsageCountColumns(bool bUsesUsageCountColumns);
///
/// sets the included property for all sensors
///
///
void SetIncludedAll(bool bIncluded);
///
/// returns all the included sensors
///
///
IDragAndDropItem[] GetIncludedSensors();
///
/// controls whether TDC incompatible sensors should be included or not
///
bool ShowOnlyTDCSensors { set; }
///
/// controls whether Sliceware incompatible sensors should be included or not
///
bool ShowOnlySlicewareSensors { set; }
}
}