DevExtreme v26.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Vue Gauges - Circular Gauge

This demo illustrates how to bind an array of subvalues to the CircularGauge. Since an array can not be bound to a field as a regular value, it is bound as a computed one.

Backend API
<template> <div> <div id="gauge-demo"> <DxCircularGauge id="gauge" :value="value?.mean" :subvalues="subValue" > <DxScale :start-value="10" :end-value="40" :tick-interval="5" > <DxLabel :customize-text="customizeText" /> </DxScale> <DxRangeContainer> <DxRange :start-value="10" :end-value="20" color="#0077BE" /> <DxRange :start-value="20" :end-value="30" color="#E6E200" /> <DxRange :start-value="30" :end-value="40" color="#77DD77" /> </DxRangeContainer> <DxTooltip :enabled="true" /> <DxTitle text="Temperature in the Greenhouse" > <DxFont :size="28" /> </DxTitle> </DxCircularGauge> <DxSelectBox id="seasons" :width="150" :input-attr="{ 'aria-label': 'Season' }" :data-source="dataSource" v-model:value="selected" display-expr="name" value-expr="name" /> </div> </div> </template> <script setup lang="ts"> import { ref, computed } from 'vue'; import { DxCircularGauge, DxScale, DxLabel, DxRangeContainer, DxRange, DxTooltip, DxTitle, DxFont, } from 'devextreme-vue/circular-gauge'; import { DxSelectBox } from 'devextreme-vue/select-box'; import { dataSource } from './data.ts'; const selected = ref(dataSource[0].name); const value = computed(() => dataSource.find((item) => item.name === selected.value)); const subValue = computed(() => value.value ? [value.value.min, value.value.max] : []); const customizeText = ({ valueText }: Record<string, any>) => `${valueText} °C`; </script> <style> #gauge-demo { height: 440px; width: 100%; } #gauge { width: 80%; height: 100%; float: left; } #seasons { width: 20%; float: left; text-align: left; margin-top: 20px; } </style>
export const dataSource = [{ name: 'Summer', mean: 35, min: 28, max: 38, }, { name: 'Autumn', mean: 24, min: 20, max: 32, }, { name: 'Winter', mean: 18, min: 16, max: 23, }, { name: 'Spring', mean: 27, min: 18, max: 31, }];
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app');
<!DOCTYPE html> <html lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/26.1.5/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="./bundle.css" /> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> <script src="bundles/vendor/vue.vendor.js"></script> <script src="./bundle.js"></script> </body> </html>