Test and measurement
Resource Picker <smart-resource-picker>
ResourcePicker selects an instrument or a channel: it lists the resources the application has found, grouped by interface and named by alias, filters them as text is typed, and reads a typed resource string before it is accepted.
Getting Started with Vue ResourcePicker 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-resource-picker 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-resource-picker>, sets the properties the demo sets and handles the refreshRequest 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.resourcepicker.js';
// Raised when the refresh button is pressed.
function onRefreshRequest(event) {
// The component waits. The application carries out the request here.
console.log('refreshRequest', event.detail);
}
</script>
<template>
<smart-resource-picker
theme="industrial"
label="Instrument"
value="GPIB0::16::INSTR"
:allowCustom="true"
@refreshRequest="onRefreshRequest"
></smart-resource-picker>
</template>
Strings are plain attributes. Numbers and booleans are bound with a colon, such as :allowCustom="true". 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.
A listener for an event with an uppercase letter in its name, such as @refreshRequest, needs Vue 3.2.38 or later. Earlier versions listen for refresh-request, which the component never raises.
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.