Компонент signals

Основноей компонент графика. Позволяет взаимодействовать с сигналами, влияя на их отображение.

Объявление компонента signals

Так как компонент signals является основным — он всегда присутствует в классе конструкторе и не требует дополнительного указания в файле конфигурации.
Однако, определение компонента signals в файле конфигурации позволят изменить некоторые настройки по-умолчанию.

{
  {
    "name": "signals",
    "settings": {...}
  }
}

Настройки

Свойство axis

Свойство axis позволяет задать масштаб осей X и Y. Масштаб может быть изменяемым, и для этого предусмотрены два режима:

  • Статический (static) масштаб — позволяет выбрать фиксированные значения масштаба из заданного списка:

    {
      "settings": {
        "axis": {
          "x": {
            "scale": {
              "type": "static",
              "values": [10],
              "currIndex": 0,
              "valueUnit": 1,
              "distanceUnit": 2
            }
          },
          "y": {
            "scale": {
              "type": "static",
              "values": [1],
              "currIndex": 0
            }
          }
        }
      }
    }
    
    Свойство Тип Значение поумолчанию Описание
    axis.[x/y].scale.type string "static" Тип масштаба: static или dynamic
    axis.[x/y].scale.values Array<number> [10] Список допустимых значений масштаба.
    axis.[x/y].scale.currIndex number 0 Индекс текущего значения в списке values.
    axis.[x/y].scale.valueUnit number 1 Размерность единицы измерения по оси.
    axis.[x/y].scale.distanceUnit number 1 Размерность оси.
  • Динамический (dynamic) масштаб — позволяет плавно изменять масштаб в пределах допустимого диапазона:

    {
      "settings": {
        "axis": {
          "x": {
            "scale": {
              "type": "dynamic",
              "step": 5,
              "minValue": 5,
              "maxValue": 20,
              "currValue": 10,
              "valueUnit": 1,
              "distanceUnit": 2
            }
          },
          "y": {
            "scale": {
              "type": "dynamic",
              "step": 1,
              "minValue": 1,
              "maxValue": 5,
              "currValue": 1,
              "valueUnit": 2
            }
          }
        }
      }
    }
    
    Свойство Тип Значение поумолчанию Описание
    axis.[x/y].scale.type string "static" Тип масштаба: static или dynamic
    axis.[x/y].scale.step number 2 Шаг изменения масштаба.
    axis.[x/y].scale.minValue number 0 Минимально допустимое значение масштаба.
    axis.[x/y].scale.maxValue number 0 Максимально допустимое значение масштаба.
    axis.[x/y].scale.currValue number 1 Текущее значение масштаба.
    axis.[x/y].scale.valueUnit number 1 Размерность единицы измерения по оси.
    axis.[x/y].scale.distanceUnit number 1 Размерность оси.

Свойство unitsYtoMmConvertKoef

{
  "settings": {
    "unitsYtoMmConvertKoef": 0.1,
  }
}
Свойство Тип Значение поумолчанию Описание
unitsYtoMmConvertKoef number 10 Коэффициент преобразования значений сигнала по оси Y в миллиметры.

Программное использование

Доступ к компоненту возможно получить через его контроллер.

import { JagmRootProvider } from "@incartdev/jagm-core";
import { JagmRawLineSignalData, JagmRawSignalsChartProvider } from "@incartdev/jagm-chart";
import { RawOfflineVisualizatorConfigJsUnpacker } from "@incartdev/jagm-visualizator";
import VisualConfig from "./VisualConfig.json";

// Получение ссылок на DOM элементы контейнера
const canvasRef = document.querySelector(".canvas-wrap");

// Создание экземпляра класса-конструктора графического полотна
const visProvider = new JagmRootProvider(new RawOfflineVisualizatorConfigJsUnpacker());

// Инициализация создания графических элементов
await visProvider.create({
  settings: VisualConfig,
  rootHtml: canvasRef
});

// Создание контроллера графических элементов библиотеки
const chartProvider = new JagmRawSignalsChartProvider(visProvider.builder);

// Получение контроллера компонента signals (для одного графика)
const signalGroup = chartProvider.charts[0].findContentGroup("signals");

API

Свойство Тип Описание
valueConverter Объект Объект, содержащий функции для контекстного преобразования значений. Подробнее см. в разделе Конвертер значений.
config Объект Объект, содержащий настройки компонента. Подробнее см. в разделе Объект настроек.
getSignalsWidthInMm() Функция Возвращает текущую ширину области отображения сигналов в миллиметрах.
getSignalsWidthInPoints(frequency: number) Функция Возвращает текущую ширину области отображения сигналов в отсчётах АЦП, исходя из указанной частоты дискретизации.
forEachSignal(callback: (signal: JagmSignalObject) => Promise<void>): Promise<void> Функция Асинхронно вызывает переданный колбэк для каждого сигнала, принадлежащего данной контент-группе.
setScaleY() Функция Устанавливает масштаб по оси Y для соответствующих графиков. Масштаб необходимо изменить в объекте config.
setScaleX() Функция Устанавливает масштаб по оси X для соответствующих графиков. Масштаб необходимо изменить в объекте config.

Конвертер значений

В работе с сигналами часто используются разные единицы измерения. Например, ЭКГ-сигнал традиционно выражается в милливольтах, для обработки удобнее использовать отсчёты АЦП, а отрисовка в браузере происходит в пикселях. Преобразование между этими единицами требует знания текущего масштаба и частоты дискретизации.

Для упрощения этой задачи в библиотеке реализован класс valueConverter — он содержит набор функций преобразования, которые автоматически учитывают масштаб и частоту дискретизации, действуя в текущем контексте отображения.

Каждый компонент signals имеет собственный конвертер значений, поскольку графическое полотно может одновременно отображать несколько графиков с различными масштабами. Подробнее см. в разделе Шаблоны расположения

API

Свойство Тип Описание
convertPointsToMm(points: number, frequency: number = 1000) Функция Преобразует отсчёты АЦП в миллиметры.
convertPointsToPixels(points: number, frequency: number = 1000) Функция Преобразует отсчёты АЦП в пиксели.
convertMmToPixels(mm: number) Функция Преобразует миллиметры в пиксели.
convertMmToPoints(mm: number, frequency: number = 1000) Функция Преобразует миллиметры в отсчёты АЦП.
convertPixelsToMm(pixels: number) Функция Преобразует пиксели в миллиметры.
convertPixelsToPoints(pixels: number, frequency: number = 1000) Функция Преобразует пиксели в отсчёты АЦП.

Объект настроек

Объект настроек предоставляет программный доступ к изменению параметров конфигурации.

С его помощью можно:

  • Управлять масштабом графика.

API

Свойство Тип Описание
axis Объект Содержит настройки масштабирования. Позволяет изменять параметры масштабов.

Изменения масштаба

Свойство axis предоставляет собственный интерфейс для управления масштабом для каждого из поддерживаемых типов масштабирования. Это упрощает процесс настройки отображения данных.

  • Статический (static) масштаб

  • Динамический (dynamic) масштаб

Следующая