NormalizeMode: VisualizatorDataAdapterMode;
NormalizeMode: Prognoz.Platform.Interop.Visualizators.VisualizatorDataAdapterMode;
Свойство NormalizeMode определяет режим нормализации данных.
Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором «EXP». В отчете для пузырькового дерева должна быть выбрана метрика «Размер». Модуль, в котором размещается пример, должен иметь ссылки на системные сборки Express, Metabase и Visualizators. Указанная процедура должна вызываться из точки входа Main.
Выполним логарифмическое преобразование чисел -0.05, 0, 0.05, 5 и 1000:
Sub UserProc;
Var
Metabase: IMetabase; // Метабаза
EaxAnalyzer: IEaxAnalyzer; // Экспресс-отчёт
DataSourceMapping: IVZDataSourceMapping; // Настройки сопоставления данных
SizeVisual: IVZNumericVisual; // Визуализатор размера пузырьков дерева
DataSource: IVZMultiplyDataSource; // Источник данных
DataTransformer: IVZDataNormalizeAdapter; // Преобразователь данных
Begin
// Получим объект метабазы
Metabase := MetabaseClass.Active;
// Получим объект экспресс-отчёта
EaxAnalyzer := Metabase.ItemById("EXP").Edit As IEaxAnalyzer;
// Получим визуализатор текста
SizeVisual := EaxAnalyzer.BubbleTree.BubbleTree.SizeVisual;
// Получим настройки сопоставления данных
DataSourceMapping := SizeVisual.NumericMapping;
// Установим тип сопоставления "Преобразователь данных"
DataSourceMapping.MappingType := VisualizatorDataMappingType.DataMappingTransformer;
// Установим заголовок для источника данных, соответствующий идентификатору
DataSource := DataSourceMapping.DataSource;
// Создадим преобразователь данных
DataTransformer := New VZDataNormalizeAdapter.Create;
// Загрузим данные из источника
DataTransformer.InitializeFromDataSource(DataSource);
// Установим логарифмический
режим нормализации данных
DataTransformer.NormalizeMode := VisualizatorDataAdapterMode.Logarithm;
// Установим данный преобразователь
DataSourceMapping.DataTransformer := DataTransformer As IVZDataAdapter;
Debug.WriteLine("Преобразование данных:");
Debug.IndentLevel := 1;
Debug.WriteLine("Вход: -0.05, выход: " +
((DataTransformer.GetData(-0.05)) As Double).ToString);
Debug.WriteLine("Вход: 0, выход: " +
((DataTransformer.GetData(0)) As Double).ToString);
Debug.WriteLine("Вход: 0.05, выход: " +
((DataTransformer.GetData(0.05)) As Double).ToString);
Debug.WriteLine("Вход: 5, выход: " +
((DataTransformer.GetData(5)) As Double).ToString);
Debug.WriteLine("Вход: 1000, выход: " +
((DataTransformer.GetData(1000)) As Double).ToString);
End Sub UserProc;
В результате выполнения примера было выполнено логарифмическое преобразование чисел -0.05, 0, 0.05, 5 и 1000. Результаты данного преобразования были выведены в консоли среды разработки:
Преобразование данных:
Вход: -0.05, выход: -1.#IND
Вход: 0, выход: 0.2
Вход: 0.05, выход: 0.2
Вход: 5, выход: 1.6094379124341
Вход: 1000, выход: 6.90775527898214
Для выполнения примера предполагается наличие в репозитории экспресс-отчета с идентификатором «EXP». Указанная процедура является точкой входа Main в модуле Program .NET-сборки. В данный модуль должны быть импортированы сборки Express, Metabase и Visualizators из системной сборки Prognoz.Platform.Interop.
Выполним логарифмическое преобразование чисел -0.05, 0, 0.05, 5 и 1000:
Public Shared Sub Main(Params: StartParams);
Var
Metabase: IMetabase; // Метабаза
EaxAnalyzer: IEaxAnalyzer; // Экспресс-отчёт
BubbleTree: IVZBubbleTree; // Пузырьковое дерево
DataSourceMapping: IVZDataSourceMapping; // Настройки сопоставления данных
SizeVisual: IVZNumericVisual; // Визуализатор размера пузырьков дерева
DataSource: IVZMultiplyDataSource; // Источник данных
DataTransformer: IVZDataNormalizeAdapter; // Преобразователь данных
Begin
// Получим объект метабазы
Metabase := Params.Metabase;
// Получим объект экспресс-отчёта
EaxAnalyzer := Metabase.ItemById["EXP"].Edit() As IEaxAnalyzer;
// Получим визуализатор текста
SizeVisual := EaxAnalyzer.BubbleTree.BubbleTree.SizeVisual;
// Получим настройки сопоставления данных
DataSourceMapping := SizeVisual.NumericMapping;
// Установим тип сопоставления "Преобразователь данных"
DataSourceMapping.MappingType := VisualizatorDataMappingType.vdmtDataMappingTransformer;
// Установим заголовок для источника данных, соответствующий идентификатору
DataSource := DataSourceMapping.DataSource;
// Создадим преобразователь данных
DataTransformer := New VZDataNormalizeAdapter();
// Загрузим данные из источника
DataTransformer.InitializeFromDataSource(DataSource As VZMultiplyDataSource);
// Установим логарифмический режим нормализации данных
DataTransformer.NormalizeMode := VisualizatorDataAdapterMode.vdamLogarithm;
System.Diagnostics.Debug.WriteLine("Преобразование данных:");
System.Diagnostics.Debug.IndentLevel := 1;
System.Diagnostics.Debug.WriteLine("Вход: -0.05, выход: " +
((DataTransformer.GetData(-0.05)) As Double).ToString());
System.Diagnostics.Debug.WriteLine("Вход: 0, выход: " +
((DataTransformer.GetData(0)) As Double).ToString());
System.Diagnostics.Debug.WriteLine("Вход: 0.05, выход: " +
((DataTransformer.GetData(0.05)) As Double).ToString());
System.Diagnostics.Debug.WriteLine("Вход: 5, выход: " +
((DataTransformer.GetData(5)) As Double).ToString());
System.Diagnostics.Debug.WriteLine("Вход: 1000, выход: " +
((DataTransformer.GetData(1000)) As Double).ToString());
End Sub;
Результат выполнения примера аналогичен результату, полученному после выполнения примера для языка Fore.
См. также: