0.3.13 • Published 2 years ago

@hydro-g/graph v0.3.13

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

Graph

Установка

npm i @hydro-g/graph

Создание

import { GraphElement, defineGraph } from '@hydro-g/graph'

defineGraph()

const graphElement = new GraphElement({
  // 'x' | 'y' | 'xy' | 'none'
  autoGrid: 'xy',

  // Названия осей
  xName: 'Q, м3/c',
  yName: 'H, см',

  // Названия осей в подсказке движения курсора
  tooltipXName: 'Q',
  tooltipYName: 'H',

  // Ручная настройка сетки
  xValueMin: 0,
  yValueMin: 0,
  xValueMax: 100,
  yValueMax: 100,
  columns: 10,
  rows: 10,
  maxMult: 1.25,
  roundingX: 100,
  roundingY: 100,

  // 'left' | 'right' | 'none'
  yAxisSide: 'left',
  // 'bottom' | 'top' | 'none'
  xAxisSide: 'bottom',

  // Ручные отступы вокруг сетки
  paddingTop: 0,
  paddingRight: 0,
  paddingBottom: 0,
  paddingLeft: 0,
})

document.body.appendChild(graphElement)

Свойства

Название текущей редактируемой кривой безье

graphElement.editedBezierCurveName

Название текущей редактируемой косинусоиды

graphElement.editedCosineCurveName

Методы

Создание статичной кривой безье

graphElement.createStaticBezierCurve('name', {
  // Данные точек
  data: [
    {
      x: 50,
      y: 50,
    },
    {
      x: 100,
      y: 100,
    },
  ],

  // Цвет кривой
  color: 'black',

  // Цвет выделения кривой
  selectColor: 'black',

  // Размер поинта
  pointSize: 0.005,

  // Если указано, разбивает линию на сегменты
  lineDash: 5,
})

Создание изменяемой кривой безье

graphElement.createEditableBezierCurve('name', {
  data: [
    {
      x: 50,
      y: 50,
    },
    {
      x: 100,
      y: 100,
    },
  ],

  // Цвет кривой
  color: 'black',

  // Цвет выделения кривой
  selectColor: 'black',

  // Размер поинта
  pointSize: 0.005,

  // Если указано, разбивает линию на сегменты
  lineDash: 5,

  // Красит кривую в этот цвет если она построена правильно
  goodColor: 'green',

  // Красит кривую в этот цвет если она построена неверно
  badColor: 'red',

  // Показывается ли редактируемая кривая в том положении в котором был включен режим редактирвания
  previousVisible: true,
})

Включение режима редактирования для кривой безье

graphElement.enableBezierCurveEditing('name')

Обновления данных кривой безье

graphElement.updateBezierCurve(
  'name',

  // Новые точки
  [
    {
      x: 60,
      y: 60,
    },
    {
      x: 120,
      y: 120,
    },
  ]
)

Применение изменённых значений кривой безье

graphElement.applyBezierCurveChanges()

Выключение режима редактирования кривой безье

graphElement.disableBezierCurveEditing()

Скрытие кривой безье

graphElement.hideBezierCurve('name')

Открытие кривой безье

graphElement.showBezierCurve('name')

Получение текущих значений кривой безье

graphElement.getBezierCurveData('name')

Удаление кривой безье

graphElement.deleteBezierCurve('name')

Проверка на существование кривой безье

graphElement.hasBezierCurve('name')

Получение всех названий кривых безье

graphElement.getAllBezierCurvesNames()

Включение выделения кривой безье

// selectColor должен отличаться от color
graphElement.selectBezierCurve('name')

Выключение выделения кривой безье

// selectColor должен отличаться от color
graphElement.unselectBezierCurve('name')

Переименование кривой безье

graphElement.renameBezierCurve('oldName', 'newName`)

Создание косинусоиды

graphElement.createCosineCurve('name', {
  // 'symmetrical-left' | 'symmetrical-right' | 'two-branches'
  type: 'two-branches',

  // Цвет кривой
  color: 'black',

  // Цвет выделения кривой
  selectColor: 'black',

  // Размер поинта
  pointSize: 0.005,

  // Если указано, разбивает линию на сегменты
  lineDash: undefined,
})

Удаление косинусоиды

graphElement.deleteCosineCurve('name')

Включение режима редактирования косинусоиды

graphElement.enableCosineCurveEditing('name')

Выключение режима редактирования косинусоиды

graphElement.disableCosineCurveEditing()

Скрытие косинусоиды

graphElement.hideCosineCurve('name')

Открытие косинусоиды

graphElement.showCosineCurve('name')

Включение выделения косинусоиды

// selectColor должен отличаться от color
graphElement.selectCosineCurve('string')

Выключение выделения косинусоиды

graphElement.unselectCosineCurve('name')

Получение текущих значений косинусоиды

graphElement.getCosineCurveData(name)

Переименование косинусоиды

graphElement.renameCosineCurve('oldName', 'newName')

Проверка на существование косинусоиды

graphElement.hasCosineCurve('name')

Получение всех названий косинусоид

graphElement.getAllCosineCurvesNames()

Создание облака точек

graphElement.createPointCloud(
  'name',
  {
    // Массив точек.
    // Если для точки указано свойство info,
    // то при наведении на неё будет показываться подсказка
    // !Значениями x и y могут быть Date
    data: [
      { x: 20, y: 20, info: ['x: 20', 'y: 20'] },
      { x: 40, y: 50 },
      { x: 80, y: 80 },
    ],

    // Форма поинта. 'circle' | 'square' | 'triangle' | 'star'
    pointShapeType: 'circle',

    // Цвет закрашивая поинта
    pointFill: 'lightblue',

    // Цвет обводки поинта
    pointStroke: 'red',

    // Размер поинта
    pointSize: 0.005,
  },
  // Участвует ли облако в поиске ближайшей точки при добавлении ограничений
  false
)

Обновление данных облака точек

graphElement.updatePointCloud('name', [
  {
    x: 20,
    y: 20,
  },
  {
    x: 50,
    y: 50,
  },
])

Скрытие облака точек

graphElement.hidePointCloud('name')

Открытие облака точек

graphElement.showPointCloud('name')

Удаление облака точек

graphElement.deletePointCloud('name')

Проверка на существование облака точек

graphElement.hasPointCloud('name')

Получение всех названий облаков точек

graphElement.getAllPointCloudsNames()

Включение возможности добавлять ограничения

graphElement.enableLimits()

Выключение возможности добавлять ограничения

graphElement.disableLimits()

Удаление все ограничения

graphElement.clearLimits()

Скрытие всех ограничей(не отрисывываются на канвасе)

graphElement.hideLimits()

Открытие всех ограничей

graphElement.showLimits()

Создание интервалов

graphElement.createRanges('name', {
  data: [
    {
      // Дата стартовой линии
      from: new Date('2021-04-15'),

      // Дата конечной линии
      to: new Date('2021-06-15'),

      // Если указано, показывается при наведении
      fromInfo: ['2021-04-15'],

      // Если указано, показывается при наведении
      toInfo: ['2021-06-15'],
    },
    {
      ...
    },
    {
      ...
    },
  ],

  // Цвет между промежутками при наведении
  fillColor: '#4c6ef5',

  // Цвет стартовой линии
  fromColor: '#37A31D',

  // Цвет конечной линии
  toColor: '#9F6205',
})

Удаление интервалов

graphElement.removeRanges('name')

Обновление интервалов

graphElement.updateRanges('name', [
  {
    // Дата стартовой линии
    from: new Date('2021-04-15'),

    // Дата конечной линии
    to: new Date('2021-06-15'),

    // Если указано, показывается при наведении
    fromInfo: ['2021-04-15'],

    // Если указано, показывается при наведении
    toInfo: ['2021-06-15'],
  },
  {
    ...
  },
  {
    ...
  },
])

Скрытие интервалов

graphElement.hideRanges('name')

Открытие интервалов

graphElement.showRanges('name')

Проверка на существование интервалов

graphElement.hasRanges('name')

Получение всех названий интервалов

graphElement.getAllRangesNames()

Events

Подписка на изменения точек кривой безье

const curveDataChangeListener = ((event: CurveDataChangeEvent) => {
  console.log(event.detail.curveName, event.detail.data)
}) as EventListener

graphElement.addEventListener('curve-data-change', curveDataChangeListener)

Подписка на изменения точек косинусоиды

Тоже самое что и у кривой безье, но нужно сдвинуть данные по оси X на один день

import { shiftDataByOneDay } from '@hydro-g/graph'

const curveDataChangeListener = ((event: CurveDataChangeEvent) => {
  console.log(event.detail.curveName, shiftDataByOneDay(event.detail.data))
}) as EventListener

graphElement.addEventListener('curve-data-change', curveDataChangeListener)

Подписка на изменения ограничений

const limitsDataChangeListener = ((event: LimitsDataChangeEvent) => {
  console.log(event.detail.data)
}) as EventListener

graphElement.addEventListener('limits-data-change', limitsDataChangeListener)

Разное

Размер шрифта и семейство можно задать в css для x-graph

x-graph {
  width: 100%;
  height: 100%;
  font-size: 1vmin;
  font-family: sans-serif;
}

Создание таймлайна

import { getTimelineAxisParts, GraphElement } from '@hydro-g/graph'

const timelineAxisParts = getTimelineAxisParts(
  // Нужен ли январь или нет
  false
)

const graphElement = new GraphElement({
  ...timelineAxisParts.graphParameters,
  yName: 'y',
})

graphElement._isDrawXMark = timelineAxisParts.isDrawXMark
graphElement._getXMarkValue = timelineAxisParts.getXMarkValue
graphElement._getXPointerValue = timelineAxisParts.getXPointerValue
0.3.13

2 years ago

0.3.12

2 years ago

0.3.11

2 years ago

0.3.10

2 years ago

0.3.9

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2-r2

2 years ago

0.3.2-r1

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0-r-3

2 years ago

0.3.0-r-2

2 years ago

0.3.0-r-1

2 years ago

0.3.0

2 years ago

0.2.6

2 years ago

0.2.5-f1

2 years ago

0.2.5

2 years ago

0.2.4-t1

2 years ago

0.2.4

2 years ago

0.2.3-c1

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0-d1

2 years ago

0.2.0

2 years ago

0.1.12

2 years ago

0.1.11-d1

2 years ago

0.1.11

2 years ago

0.1.10

2 years ago

0.1.9-t1

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5-d1

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0-d1

2 years ago

0.1.0

2 years ago