Skip to main content
A newer version of this page is available. .

Client-Side Configuration (Vue)

  • 4 minutes to read

This approach is based on the client-server model. You need a server (backend) project and a client (frontend) application that includes all the necessary styles, scripts and HTML-templates. Note that the script version on the client should match with libraries version on the server up to a minor version.

The modular approach allows you to integrate the HTML JavaScript Dashboard control into web applications. This topic describes how to add the HTML JavaScript Dashboard control to a Vue application.

Prerequisites

  • Make sure you have Node.js 6+ and npm 5.2+ installed on your machine.
  • In the command prompt, install the Vue CLI (command line interface tool) globally:

    npm install -g @vue/cli
    

    Refer to the Vue CLI documentation for information on the application’s structure and the created files’ purposes.

Create Vue Application

In the command prompt, create a Vue application with a default preset and navigate to the created folder:

vue create dashboard-vue-app
cd dashboard-vue-app

Install Dashboard Package

The devexpress-dashboard npm package references devextreme and @devexpress/analytics-core as peerDependencies. The peerDependencies packages should be installed manually. This allows developers to control a version of the peerDependencies packages and guarantees that the package is installed once.

Install a dashboard package with required peerDependencies:

npm install devextreme @devexpress/analytics-core devexpress-dashboard --save

Create Dashboard Component

In the src | components folder, create a DashboardComponent.vue file and add the content below:

<template>
  <div v-bind:id="componentId" style="position: absolute; left: 0; right: 0; top: 0; bottom: 0">
  </div>
</template>

<script>
import { DashboardControl, ResourceManager, DashboardPanelExtension } from 'devexpress-dashboard';
import Globalize from 'globalize';

import cldrdata from "devextreme-cldr-data/en.json";
import supplemental from "devextreme-cldr-data/supplemental.json";

export default {
  name: 'DashboardComponent',
    props: {
        componentId: String
    },
  mounted () {
    Globalize.load(
      cldrdata, supplemental
    );
    Globalize.locale('en');

    ResourceManager.embedBundledResources();

    this.dashboardControl = new DashboardControl(document.getElementById(this.componentId),  {          
        // Specifies the URL where the Web Dashboard's server side is hosted.
        endpoint: "https://demos.devexpress.com/services/dashboard/api",
        workingMode: "Designer",
    });
    this.dashboardControl.registerExtension(new DashboardPanelExtension(this.dashboardControl));
    this.dashboardControl.render();
  },
  beforeDestroy() {
    this.dashboardControl.dispose();
  },
}
</script>

The DashboardControlOptions.endpoint property specifies the URL used to send data requests to a server. The value should consist of a base URL where the Web Dashboard’s server side is hosted and a route prefix - a value that is set in the MVC / .NET Core MapDashboardRoute properties.

Modify App Content

Open the src | App.vue file and modify its content to display a dashboard component on the page:

<template>
  <div>
    <DashboardComponent componentId="dashboardControl1"/>
  </div>
</template>

<script>
import DashboardComponent from './components/DashboardComponent';

export default {
  name: 'app',
  components: {
    DashboardComponent
  }
}
</script>

Add Global Styles

Open the src | main.js file and the following global styles:

import "jquery-ui/themes/base/all.css";
import "devextreme/dist/css/dx.common.css";
import "devextreme/dist/css/dx.light.css";
import "@devexpress/analytics-core/dist/css/dx-analytics.common.css";
import "@devexpress/analytics-core/dist/css/dx-analytics.light.css";
import "@devexpress/analytics-core/dist/css/dx-querybuilder.css";
import "devexpress-dashboard/dist/css/dx-dashboard.light.css";

import Vue from 'vue'
import App from './App.vue'

new Vue({
  render: h => h(App)
}).$mount('#app');

Customize Webpack

Create a vue.config.js file at the root of your application and add the following content:

var path = require('path');

module.exports = {
    chainWebpack: config => {
        config.resolve.alias
        .set('globalize$', path.resolve(__dirname, 'node_modules/globalize/dist/globalize.js'))
        .set('globalize', path.resolve(__dirname, 'node_modules/globalize/dist/globalize'))
        .set('cldr$', path.resolve(__dirname, 'node_modules/cldrjs/dist/cldr.js'))
        .set('cldr', path.resolve(__dirname, 'node_modules/cldrjs/dist/cldr'))
    }
}

Support Culture-Specific Data

Web Dashboard uses the globalize library to display culture-specific data.

Add the required cultures and specify one of the added locales in the Globalize.locale method to change the culture:

import cldrdata from "devextreme-cldr-data/de.json";
import supplemental from "devextreme-cldr-data/supplemental.json";

export default {
  name: 'DashboardComponent',
    props: {
        componentId: String
    },
  mounted () {
    Globalize.load(
      cldrdata, supplemental
    );
    Globalize.locale('de');
    // ...   
  }
}

Tip

See Localize Web Dashboard Control for information about UI localization.

Run the Application

Run the application.

npm run serve 

Open http://localhost:8080/ in your browser to see the result. The HTML JavaScript Dashboard displays the dashboard stored on the preconfigured server (https://demos.devexpress.com/services/dashboard/api).