2.4.9 • Published 3 months ago

@gesazumo/moving-chart v2.4.9

Weekly downloads
-
License
-
Repository
-
Last release
3 months ago

Draw realtime chart on Vue3

Installation

npm

npm install @gesazumo/moving-chart

Recent Updates

The open source chart library is no longer used. Use canvas to draw a chart yourself. Thanks to this, the performance has improved.


Usage

Please put data that keeps being added in real time. The y array is uniformly cut from the front and shown on the screen by moving the x-axis. If the y array is empty, NoSignal will be displayed on the screen. The srate of streamBuffer represents the number of y-values per second.

The information about parseFuc will be updated later. Use ecgNormalization, plethNormalization, which is provided by default now.

template

<template>
   <div style="display: flex; flex-wrap: wrap; gap: 10px">
      <div>ECG</div>
      <canvas-chart
        :streamBuffer="streamBuffer.value.ECG1"
        :width="'16%'"
        :height="'13%'"
        :drawSpeed="0.38"
        :parseFuc="ecgNormalization"
      />
      <div>PLETH</div>
      <canvas-chart
        :streamBuffer="streamBuffer.value.PLETH"
        :width="'16%'"
        :height="'13%'"
        :parseFuc="plethNormalization"
        :drawSpeed="1.2"
        :lineColor="'red'"
      />
  </div>
</template>

script

<script setup lang="ts">
import { ref } from 'vue'
import { CanvasChart, useMinMaxFilter } from '@gesazumo/moving-chart'

const streamBuffer = ref({
  ECG1: { ts: [], y: [], srate: 0, name: 'ECG1' },
  PLETH: { ts: [], y: [], srate: 0, name: 'PLETH' },
})
</script>

props

const props = defineProps({
  streamBuffer: {
    type: Object as PropType<buffer>,
    require: true,
  },
  width: {
    type: [Number, String],
    required: true,
    default: 400,
  },
  height: {
    type: [Number, String],
    required: true,
    default: 200,
  },
  parseFuc: {
    type: Function as PropType<
      (arr: Array<number>, newMin: number, newMax: number) => Array<number>
    >,
    required: false,
  },
  lineColor: {
    type: String,
    default: '#00FF00',
  },
  drawSpeed: {
    type: Number,
    default: 0.4,
  },
  padding: {
    type: Array<number>,
    default: [0.4, 0.4]
  }
})

Monitoring visibilitychange event

If you turn over or minimize tabs in Chrome. The javascript sliding StreamBuffer is not working. Therefore, it is recommended to stop pushing to StreamBuffer for memory management. Here is the example code.

onMounted(() => {
    document.addEventListener('visibilitychange', () => {
      visibilityState.value = document.visibilityState === 'visible'
    })
  })

When received data from outside

// Do not push the stream buffer according to the visibility state.
if(!visibilityState.value) return
else streamBuffer.push(data)

2.4.9

3 months ago

2.4.8

3 months ago

2.3.8

4 months ago

2.2.8

4 months ago

2.2.7

4 months ago

2.1.4

4 months ago

2.1.6

4 months ago

2.1.5

4 months ago

2.1.7

4 months ago

1.1.1

4 months ago

1.1.0

4 months ago

1.0.0

4 months ago

1.1.4

4 months ago

1.1.2

4 months ago

0.0.0

4 months ago