5.2.0 • Published 7 months ago

@kong-ui-public/analytics-chart v5.2.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
7 months ago

@kong-ui-public/analytics-chart

Dynamic chart component for kong analytics.

Features

  • Display kong analytics in a graph.

Requirements

  • vue must be initialized in the host application
  • @kong-ui-public/i18n must be available as a dependency in the host application.

Install

Install the component in your host application

yarn add @kong-ui-public/analytics-chart

AnalyticsChart

Props

allowCsvExport

  • type: boolean
  • required: false

chartData

chartOptions

  • type: AnalyticsChartOptions
  • required: true
  • stacked option applies to timeseries charts as well as vertical/horizontal bar charts.
  • fill only applies to time series line chart
  • chartTypes defined here
  • chartDatasetColors are optional
    • If no colors are provided, the default color palette will be used
    • If custom colors are needed you may provide a custom color palette in the form of:
      • Array of hex color codes which will be cycled through for each dataset:
        const colors = [
          '#a86cd5',
          '#6a86d2',
          '#00bbf9',
          '#00c4b0',
          '#ffdf15',
        ]
      • A mapping of dataset labels to hex color code:
          const statusCodeColors = {
            '200': '#a86cd5',
            '300': '#6a86d2',
            '400': '#00bbf9',
          }
  • chartLegendSortFn
    • Exposed sorting fn for datasets as they appear in the legend
    • Sorts in descending order of raw value by default.
  • chartTooltipSortFn
    • Exposed sorting fn for datasets as they appear in the tooltip
    • Sorts in descending order of raw value by default.

chartTitle

  • type: string
  • required: true

emptyStateTitle

  • type: string
  • required: false

emptyStateDescription

  • type: string
  • required: false

tooltipTitle

  • type: string
  • required: true

legendPosition

showLegendValues

  • type: boolean
  • required: false
  • default: true
  • Show the sum of each dataset in the legend

timeseriesZoom

  • type: boolean
  • required: false
  • default: false
  • Enable zooming on timeseries charts

Events

@zoom-time-range - event emitted representing a new time range on zoom selection see AbsoluteTimeRangeV4

Usage Example AnalyticsChart

<template>
  <AnalyticsChart
    :chart-data="chartData"
    :chart-options="chartOptions"
    tooltip-title="Total Requests"
    chart-title="Requests by Service"
    :legend-position="legendPosition"
  />
</template>

<script>
import { AnalyticsChart } from '@kong-ui-public/analytics-chart'
import type { ExploreResultV4 } from '@kong-ui-public/analytics-utilities'
import type { AnalyticsChartOptions } from '@kong-ui-public/analytics-chart'

import { defineComponent, ref } from 'vue'

export default defineComponent({
  components: {
    AnalyticsChart,
  },
  setup() {
    const chartData = ref<ExploreResultV4>({
      data: [
        {
          timestamp: '2023-04-24T10:27:22.798Z',
          event: {
            Service: 'service-a-id',
            TotalRequests: 849,
          },
        },
        {
          timestamp: '2023-04-24T10:27:22.798Z',
          event: {
            Service: 'service-b-id',
            TotalRequests: 5434,
          },
        },
        // more data...
      ],
      meta: {
        start_ms: 1682332042798,
        end_ms: 1682353642798,
        granularity_ms: 3600000,
        query_id: '12345',
        display: {
          Service: {
            'service-a-id': { name: 'Service A' },
            'service-b-id': { name: 'Service B' },
        },
        metric_names: ['TotalRequests'],
        metric_units: {
          TotalRequests: 'requests',
        },
        truncated: false,
        limit: 1000,
      },
    })

    const chartOptions = ref<AnalyticsChartOptions>({
      type: 'timeseries_line',
      stacked: true,
      fill: false
    })

    const legendPosition = ref(ChartLegendPosition.Right)


    return {
      chartData,
      chartOptions,
      legendPosition
    }
  },
})
</script>

SimpleChart

Props

chartData

chartOptions

emptyStateTitle

  • type: string
  • required: false

metricDisplay

Optional value which can be any one of the following:

  • Hidden: will only show the outer doughnut chart
  • SingleMetric: displays only the large metric value
  • Full: displays both the large metric and subtext

reverseDataset

Optional. Determines the order of the datasets. In the case of a Gauge Chart, it reverses the display order of the two color fills.

  • type: boolean
  • required: false

numerator

Optional. Array index which specifies the dataset value to be shown in the center of the Gauge.

  • type: number
  • required: false

Usage Example SimpleChart

<template>
  <SimpleChart
    :chart-data="chartData"
    :chart-options="simpleChartOptions"
  />
</template>

<script>
import { SimpleChart } from '@kong-ui-public/analytics-chart'
import type { ExploreResultV4 } from '@kong-ui-public/analytics-utilities'
import type { SimpleChartOptions } from '@kong-ui-public/analytics-chart'

import { defineComponent, ref } from 'vue'

export default defineComponent({
  components: {
    SimpleChart,
  },
  setup() {
    const chartData = ref<ExploreResultV4>({
      data: [
        {
          timestamp: '2023-04-24T10:27:22.798Z',
          event: {
            Service: 'service-a-id',
            TotalRequests: 849,
          },
        },
        {
          timestamp: '2023-04-24T10:27:22.798Z',
          event: {
            Service: 'service-b-id',
            TotalRequests: 5434,
          },
        },
      ],
      meta: {
        start_ms: 1682332042798,
        end_ms: 1682353642798,
        granularity_ms: 21600000,
        query_id: '12345',
        display: {
          Service: {
            'service-a-id': { name: 'Service A' },
            'service-b-id': { name: 'Service B' },
        },
        metric_names: ['TotalRequests'],
        metric_units: {
          TotalRequests: 'requests',
        },
      },
    })

    const chartOptions = ref<SimpleChartOptions>({
      type: 'gauge',
      metricDisplay: ChartMetricDisplay.Full
    })

    return {
      chartData,
      chartOptions,
    }
  },
})
</script>

CsvExportButton

Props

data

Chart data to be exported

text

Text to appear in the button

  • type: string
  • required: false
  • default: 'Export'

buttonAppearance

Text to appear in the button

  • type: 'primary' | 'secondary' | 'tertiary' | 'danger'
  • required: false
  • default: 'tertiary'

filenamePrefix

Resulting csv filename

  • type: string
  • required: false
  • default: 'Chart Export'

Usage Example CsvExportButton

<template>
  <CsvExportButton
    :data="(chartData as ExploreResultV4)"
    :filename-prefix="filenamePrefix"
  />
</template>

<script setup lang="ts">

import type { ExploreResultV4 } from '@kong-ui-public/analytics-utilities'
import { CsvExportButton } from '@kong-ui-public/analytics-chart'

const chartData = ref<ExploreResultV4>({
  data: [
    {
      timestamp: '2023-04-24T10:27:22.798Z',
      event: {
        Service: 'service-a-id',
        TotalRequests: 849,
      },
    },
    {
      timestamp: '2023-04-24T10:27:22.798Z',
      event: {
        Service: 'service-b-id',
        TotalRequests: 5434,
      },
    },
  ],
  meta: {
    start_ms: 1682332042798,
    end_ms: 1682353642798,
    granularity_ms: 3600000,
    query_id: '12345',
    display: {
      Service: {
        'service-a-id': { name: 'Service A' },
        'service-b-id': { name: 'Service B' },
    },
    metric_names: ['TotalRequests'],
    metric_units: {
      TotalRequests: 'requests',
    },
  },
})

const fileName = ref('exportFilename')

</script>

CsvExportModal

Props

chartData

Chart data to be exported

filename

Resulting csv filename

  • type: string
  • required: true

modalDescription

Desctiption text that appears in the modal

  • type: string
  • required: false
  • default: 'Exports a CSV of the data represented in the chart.'

CsvExportModal Events

@toggle-modal event is emitted when the modal is toggled (dismissed)

Usage Example CsvExportModal

<template>
  <button @click.prevent="exportCsv">
    Export to CSV
  </button>

  <CsvExportModal
    v-if="exportModalVisible"
    :chart-data="chartData"
    filename="exportCsvFilename"
    @toggle-modal="setModalVisibility"
  />
</template>

<script setup lang="ts">

import type { ExploreResultV4 } from '@kong-ui-public/analytics-utilities'
import { CsvExportModal } from '@kong-ui-public/analytics-chart'

const exportModalVisible = ref(false)

const setModalVisibility = (val: boolean) => {
  exportModalVisible.value = val
}
const exportCsv = () => {
  setModalVisibility(true)
}

const chartData = ref<ExploreResultV4>({
  data: [
    {
      timestamp: '2023-04-24T10:27:22.798Z',
      event: {
        Service: 'service-a-id',
        TotalRequests: 849,
      },
    },
    {
      timestamp: '2023-04-24T10:27:22.798Z',
      event: {
        Service: 'service-b-id',
        TotalRequests: 5434,
      },
    },
  ],
  meta: {
    start_ms: 1682332042798,
    end_ms: 1682353642798,
    granularity_ms: 3600000,
    query_id: '12345',
    display: {
      Service: {
        'service-a-id': { name: 'Service A' },
        'service-b-id': { name: 'Service B' }
      },
    },
    metric_names: ['TotalRequests'],
    metric_units: {
      TotalRequests: 'requests',
    },
  },
})

const fileName = ref('exportFilename')

</script>
5.1.9

8 months ago

5.1.12

8 months ago

5.1.11

8 months ago

5.1.10

8 months ago

5.2.0

8 months ago

5.1.8

8 months ago

5.1.7

8 months ago

5.1.6

8 months ago

5.1.5

8 months ago

5.1.4

8 months ago

5.1.3

8 months ago

5.1.2

8 months ago

5.1.1

8 months ago

5.1.0

8 months ago

5.0.11

8 months ago

5.0.12

8 months ago

5.0.9

8 months ago

5.0.8

8 months ago

5.0.7

8 months ago

5.0.6

8 months ago

5.0.5

8 months ago

5.0.4

8 months ago

5.0.3

8 months ago

5.0.2

8 months ago

5.0.1

8 months ago

5.0.10

8 months ago

5.0.0

8 months ago

4.6.22

9 months ago

4.6.23

9 months ago

4.6.20

9 months ago

4.6.21

9 months ago

4.6.26

8 months ago

4.6.24

9 months ago

4.6.25

9 months ago

4.6.19

9 months ago

4.6.18

9 months ago

4.6.16

9 months ago

4.6.17

9 months ago

4.6.15

9 months ago

4.6.12

9 months ago

4.6.13

9 months ago

4.6.14

9 months ago

4.6.9

9 months ago

4.6.11

9 months ago

4.6.10

9 months ago

4.6.7

9 months ago

4.6.6

9 months ago

4.6.8

9 months ago

4.6.5

9 months ago

4.6.1

9 months ago

4.6.0

9 months ago

4.6.3

9 months ago

4.6.2

9 months ago

4.6.4

9 months ago

4.5.2

9 months ago

4.5.1

9 months ago

4.4.1

9 months ago

4.4.0

9 months ago

4.4.3

9 months ago

4.4.2

9 months ago

4.5.0

9 months ago

4.3.0

9 months ago

4.2.29

10 months ago

4.2.31

10 months ago

4.2.30

10 months ago

4.1.8

12 months ago

4.1.7

1 year ago

4.1.9

12 months ago

4.1.4

1 year ago

4.1.3

1 year ago

4.1.6

1 year ago

4.1.5

1 year ago

4.1.0

1 year ago

4.1.2

1 year ago

4.1.1

1 year ago

4.2.20

10 months ago

4.2.21

10 months ago

4.2.22

10 months ago

4.2.23

10 months ago

4.2.28

10 months ago

4.2.24

10 months ago

4.2.25

10 months ago

4.2.26

10 months ago

4.2.27

10 months ago

4.2.10

11 months ago

4.2.11

11 months ago

4.2.12

11 months ago

4.2.17

11 months ago

4.2.18

11 months ago

4.2.19

11 months ago

4.2.13

11 months ago

4.2.14

11 months ago

4.2.15

11 months ago

4.2.16

11 months ago

4.0.19

1 year ago

4.0.16

1 year ago

4.0.18

1 year ago

4.0.17

1 year ago

4.2.3

11 months ago

4.2.2

12 months ago

4.2.5

11 months ago

4.2.4

11 months ago

4.2.1

12 months ago

4.2.0

12 months ago

4.2.7

11 months ago

4.2.6

11 months ago

4.2.9

11 months ago

4.2.8

11 months ago

4.1.10

12 months ago

4.0.15

1 year ago

4.0.12

1 year ago

4.0.11

1 year ago

4.0.14

1 year ago

4.0.13

1 year ago

4.0.10

1 year ago

4.0.9

1 year ago

4.0.8

1 year ago

4.0.7

1 year ago

4.0.5

1 year ago

4.0.6

1 year ago

4.0.4

1 year ago

4.0.3

1 year ago

3.0.13

1 year ago

4.0.1

1 year ago

4.0.0

1 year ago

4.0.2

1 year ago

3.0.12

1 year ago

3.0.11

1 year ago

3.0.10

1 year ago

3.0.9

1 year ago

3.0.8

1 year ago

3.0.7

1 year ago

3.0.6

1 year ago

3.0.5

1 year ago

3.0.4

1 year ago

3.0.3

1 year ago

3.0.2

1 year ago

3.0.1

1 year ago

2.5.5

1 year ago

3.0.0

1 year ago

2.5.4

1 year ago

2.5.3

1 year ago

2.5.2

1 year ago

2.5.1

1 year ago

2.5.0

1 year ago

2.4.3

1 year ago

2.4.5

1 year ago

2.4.4

1 year ago

2.4.7

1 year ago

2.4.6

1 year ago

2.4.8

1 year ago

2.4.2

1 year ago

2.4.1

1 year ago

2.4.0

1 year ago

2.3.4

1 year ago

2.3.3

1 year ago

2.3.2

1 year ago

2.3.1

1 year ago

2.3.0

1 year ago

2.2.3

1 year ago

2.2.2

1 year ago

2.2.5

1 year ago

2.2.4

1 year ago

2.2.1

1 year ago

2.2.0

1 year ago

2.1.2

1 year ago

2.1.1

1 year ago

2.1.4

1 year ago

2.1.3

1 year ago

2.1.0

1 year ago

2.0.6

1 year ago

2.0.5

1 year ago

2.0.3

1 year ago

2.0.2

1 year ago

2.0.4

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.3.6

1 year ago

1.3.5

1 year ago

1.3.4

1 year ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.1.16

1 year ago

1.1.15

1 year ago

1.1.17

1 year ago

1.2.0

1 year ago

1.1.12

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.1.14

1 year ago

1.1.13

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

0.25.0

1 year ago

0.24.10

1 year ago

0.24.9

1 year ago

0.24.8

1 year ago

0.24.7

1 year ago

0.24.6

1 year ago

0.24.5

1 year ago

0.24.4

1 year ago

0.24.3

1 year ago

0.24.2

1 year ago

0.24.1

1 year ago

0.24.0

1 year ago

0.23.3

1 year ago

0.23.2

1 year ago

0.23.1

1 year ago

0.23.0

1 year ago

0.22.1

1 year ago

0.22.0

1 year ago

0.20.0

1 year ago

0.21.0

1 year ago

0.18.1

2 years ago

0.19.0

2 years ago

0.17.5

2 years ago

0.18.0

2 years ago

0.17.4

2 years ago

0.17.3

2 years ago

0.17.2

2 years ago

0.17.1

2 years ago

0.8.9

2 years ago

0.8.8

2 years ago

0.8.5

2 years ago

0.8.4

2 years ago

0.8.7

2 years ago

0.8.6

2 years ago

0.17.0

2 years ago

0.7.2

2 years ago

0.7.1

2 years ago

0.7.3

2 years ago

0.7.0

2 years ago

0.9.8

2 years ago

0.9.7

2 years ago

0.9.9

2 years ago

0.9.4

2 years ago

0.9.3

2 years ago

0.9.6

2 years ago

0.9.5

2 years ago

0.10.1

2 years ago

0.10.2

2 years ago

0.10.3

2 years ago

0.10.4

2 years ago

0.10.5

2 years ago

0.10.6

2 years ago

0.10.7

2 years ago

0.10.8

2 years ago

0.9.20

2 years ago

0.10.0

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.8.3

2 years ago

0.8.2

2 years ago

0.15.4

2 years ago

0.15.5

2 years ago

0.15.0

2 years ago

0.15.1

2 years ago

0.15.2

2 years ago

0.15.3

2 years ago

0.5.0

2 years ago

0.16.10

2 years ago

0.16.11

2 years ago

0.16.12

2 years ago

0.16.13

2 years ago

0.16.3

2 years ago

0.16.4

2 years ago

0.16.5

2 years ago

0.16.6

2 years ago

0.16.7

2 years ago

0.16.8

2 years ago

0.16.9

2 years ago

0.16.0

2 years ago

0.16.1

2 years ago

0.16.2

2 years ago

0.6.0

2 years ago

0.13.6

2 years ago

0.13.0

2 years ago

0.13.1

2 years ago

0.13.2

2 years ago

0.13.3

2 years ago

0.13.4

2 years ago

0.13.5

2 years ago

0.3.0

2 years ago

0.3.1

2 years ago

0.14.0

2 years ago

0.14.1

2 years ago

0.14.2

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.9.12

2 years ago

0.9.13

2 years ago

0.9.14

2 years ago

0.9.15

2 years ago

0.9.10

2 years ago

0.9.11

2 years ago

0.9.16

2 years ago

0.9.17

2 years ago

0.9.18

2 years ago

0.9.19

2 years ago

0.11.0

2 years ago

0.11.1

2 years ago

0.11.2

2 years ago

0.11.3

2 years ago

0.11.4

2 years ago

0.11.5

2 years ago

0.11.6

2 years ago

0.11.7

2 years ago

0.8.30

2 years ago

0.8.31

2 years ago

0.9.0

2 years ago

0.9.2

2 years ago

0.9.1

2 years ago

0.8.23

2 years ago

0.8.22

2 years ago

0.8.25

2 years ago

0.8.24

2 years ago

0.8.21

2 years ago

0.8.20

2 years ago

0.8.27

2 years ago

0.8.26

2 years ago

0.8.29

2 years ago

0.8.28

2 years ago

0.12.0

2 years ago

0.12.1

2 years ago

0.12.2

2 years ago

0.12.3

2 years ago

0.8.12

2 years ago

0.8.11

2 years ago

0.8.14

2 years ago

0.8.13

2 years ago

0.8.10

2 years ago

0.8.19

2 years ago

0.8.16

2 years ago

0.8.15

2 years ago

0.8.18

2 years ago

0.8.17

2 years ago

0.2.1

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.1.2

2 years ago

0.2.0

2 years ago

0.1.1

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.0

2 years ago