Trends and signals

Control Chart <smart-control-chart>

ControlChart is a Shewhart control chart for statistical process control.

Getting Started with Vue ControlChart Component

Smart.Industrial supports Vue 3.2.38 and later, with Vite. Vue uses the custom elements directly, so there is no wrapper to install.

The complete demo in Vue is on the demo page, file by file.

Scaffold with Vite (Vue 3)

The official scaffolding tool creates the project:

npm create vue@latest

The tool asks about TypeScript, Router, Pinia and other options. The defaults are enough for the sample.

cd <your-project-name>
npm install
npm install smart-industrial
npm run dev
	

Vue + TypeScript

A TypeScript project has vite.config.ts in place of vite.config.js, with the same configuration.

Teach Vue about custom elements

The isCustomElement option of the Vue plugin passes smart-* tags to the browser as custom elements. Without it, Vue looks for a Vue component named smart-control-chart and warns that it cannot resolve it. Other plugins that the scaffold added, such as vueDevTools(), stay in the list.

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [
    vue({
      template: {
        compilerOptions: {
          isCustomElement: (tag) => tag.startsWith('smart-')
        }
      }
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})
	

App.vue example

The sample replaces src/App.vue. It imports the stylesheets and the module that defines <smart-control-chart>, sets the properties the demo sets and handles the violation event.

<script setup>
import 'smart-industrial/source/styles/smart.default.css';
import 'smart-industrial/source/styles/smart.industrial-elements.css';
import 'smart-industrial/source/styles/smart.industrial.css';
import 'smart-industrial/source/modules/smart.controlchart.js';

// Raised when the set of offending points changes, after new data, new limits
// or a different rule set, and not on every redraw.
function onViolation(event) {
  const { violations, count } = event.detail;
  console.log('violation', violations, count);
}
</script>

<template>
  <smart-control-chart
    theme="industrial"
    type="xbar-r"
    label="Shaft diameter"
    unit="mm"
    :precisionDigits="3"
    @violation="onViolation"
  ></smart-control-chart>
</template>

Strings are plain attributes. Numbers and booleans are bound with a colon, such as :precisionDigits="3". A plain attribute would hand the property a string, and a property that takes a number or a boolean rejects a string with an error.

The minimum of Vue 3.2.38 comes from events with an uppercase letter in their name, such as @setpointChange on the faceplate. Vue 3.2.38 and later listen for such an event under its own name. Earlier versions listen for the kebab-case name, which the components never raise.

With TypeScript, the script tag is <script setup lang="ts"> and the handler's parameter is typed as CustomEvent.

Run and build

The development server runs at http://localhost:5173/:

npm run dev

The production build goes to ./dist:

npm run build

Read more about using Smart UI for Vue.

Accessibility

The keyboard interaction, roles and announcements of the component are on its accessibility page; they are the same in Vue.