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 - Bar Gauge

This demo illustrates how to bind an array of values to the BarGauge. 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 class="long-title"> <h3>Colors Representation via Basic Colors</h3> </div> <div id="gauge-demo"> <DxBarGauge id="gauge" :start-value="0" :end-value="255" :palette="palette" :values="values" > <DxLabel :visible="false" /> </DxBarGauge> <div class="action-container"> <DxSelectBox :width="150" :input-attr="{ 'aria-label': 'Color' }" :data-source="colors" v-model:value="value" display-expr="name" value-expr="code" /> <div :style="{ 'background-color': value }" class="color-box" /> </div> </div> </div> </template> <script setup lang="ts"> import { computed, ref } from 'vue'; import { DxBarGauge, DxLabel } from 'devextreme-vue/bar-gauge'; import { DxSelectBox } from 'devextreme-vue/select-box'; import { colors } from './data.ts'; const palette = ['#ff0000', '#00ff00', '#0000ff']; const value = ref(colors[0].code); const values = computed(() => getBasicColors(value.value)); function getBasicColors(selectValue: string) { const code = Number(`0x${selectValue.slice(1)}`); return [ (code >> 16) & 0xff, (code >> 8) & 0xff, code & 0xff, ]; } </script> <style> #gauge-demo { height: 440px; width: 100%; } #gauge { width: 80%; height: 100%; margin-top: 20px; float: left; } .action-container { width: 20%; text-align: left; margin-top: 20px; float: left; } .color-box { width: 40px; height: 40px; margin-top: 20px; } .long-title h3 { font-weight: 200; font-size: 28px; text-align: center; margin-bottom: 20px; } </style>
export const colors = [{ name: 'Amaranth', code: '#e52b50', }, { name: 'Amethyst', code: '#9966cc', }, { name: 'Ash grey', code: '#b2beb5', }, { name: 'Barn red', code: '#7c0a02', }, { name: 'Imperial', code: '#602f6b', }, { name: 'Lemon lime', code: '#e3ff00', }, { name: 'Mountain Meadow', code: '#30ba8f', }, { name: 'Outer Space', code: '#414a4c', }, { name: 'Persian plum', code: '#701c1c', }, { name: 'Seal brown', code: '#321414', }, { name: 'Twilight lavender', code: '#8a496b', }, { name: 'Umber', code: '#635147', }];
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>