DevExtreme v24.1 is now available.

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

Your search did not match any results.

Read Only Mode

The Diagram component can operate in Read Only mode. In this mode, users are not permitted to edit a diagram; therefore, most of the UI elements are disabled. It is for this reason that the Toolbox and Properties panel in this demo are hidden.

To switch the Diagram to Read Only mode, set the readOnly property to true.

Backend API
<template> <DxDiagram id="diagram" ref="diagram" :read-only="true" /> </template> <script setup lang="ts"> import { watch, ref } from 'vue'; import { DxDiagram } from 'devextreme-vue/diagram'; import 'whatwg-fetch'; const diagram = ref(); watch(diagram, ({ instance }) => { fetch('../../../../data/diagram-structure.json') .then((response) => response.json()) .then((json) => { instance.import(JSON.stringify(json)); }) .catch(() => { throw new Error('Data Loading Error'); }); }); </script> <style scoped> #diagram { height: 700px; } </style>
window.exports = window.exports || {}; window.config = { transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader', }, '*.ts': { loader: 'demo-ts-loader', }, '*.svg': { loader: 'svg-loader', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, }, paths: { 'root:': '../../../../', 'npm:': 'https://unpkg.com/', }, map: { 'vue': 'npm:vue@3.2.47/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.1.1/index.js', 'demo-ts-loader': 'root:utils/demo-ts-loader.js', 'svg-loader': 'root:utils/svg-loader.js', 'whatwg-fetch': 'npm:whatwg-fetch@2.0.4/fetch.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.1/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@24.1.3/cjs', 'devextreme-vue': 'npm:devextreme-vue@24.1.3/cjs', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.8/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.56/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.13', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.11/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.8/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js', }, packages: { 'devextreme-vue': { main: 'index.js', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.13/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, }, }; System.config(window.config);
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/24.1.3/css/dx-diagram.min.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/24.1.3/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" /> <script src="https://unpkg.com/typescript@4.9.5/lib/typescript.js"></script> <script type="module"> import * as vueCompilerSFC from "https://unpkg.com/@vue/compiler-sfc@3.4.16/dist/compiler-sfc.esm-browser.js"; window.vueCompilerSFC = vueCompilerSFC; </script> <script src="https://unpkg.com/core-js@2.6.12/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.ts"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>
{ "page": { "width": 11906, "height": 8391, "pageColor": "white", "pageWidth": 8391, "pageHeight": 11906, "pageLandscape": true, "units": 0 }, "connectors": [], "shapes": [ { "key": "0", "locked": false, "zIndex": 0, "type": "verticalContainer", "text": "Development", "x": 720, "y": 720, "width": 10440.000000000002, "height": 7020, "childKeys": [ "1", "2", "4", "3" ] }, { "key": "1", "locked": false, "zIndex": 0, "type": "verticalContainer", "text": "ASP.NET Team", "x": 1080, "y": 1440, "width": 2160, "height": 5760, "childKeys": [ "5", "6" ] }, { "key": "2", "locked": false, "zIndex": 0, "type": "verticalContainer", "text": "Javascript Team", "x": 3600, "y": 1440, "width": 2160, "height": 5760, "childKeys": [ "7", "8" ] }, { "key": "3", "locked": false, "zIndex": 0, "type": "verticalContainer", "text": "WPF Team", "x": 6120, "y": 1440, "width": 2160, "height": 5760, "childKeys": [ "9", "10", "11" ] }, { "key": "4", "locked": false, "zIndex": 0, "type": "verticalContainer", "text": "WinForms Team", "x": 8640, "y": 1440, "width": 2160, "height": 5760, "childKeys": [ "12", "13" ] }, { "key": "5", "dataKey": "119", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Laurence\nLebihan", "x": 1440, "y": 2160, "width": 1440, "height": 1080 }, { "key": "6", "dataKey": "120", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Elizabeth\nLincoln", "x": 1440, "y": 3600, "width": 1440, "height": 1080 }, { "key": "7", "dataKey": "122", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Patricio\nSimpson", "x": 3960, "y": 2160, "width": 1440, "height": 1080 }, { "key": "8", "dataKey": "123", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Francisco\nChang", "x": 3960, "y": 3600, "width": 1440, "height": 1080 }, { "key": "9", "dataKey": "115", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Christina\nBerglund", "x": 6480, "y": 2160, "width": 1440, "height": 1080 }, { "key": "10", "dataKey": "116", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Hanna\nMoos", "x": 6480, "y": 3600, "width": 1440, "height": 1080 }, { "key": "11", "dataKey": "117", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Frederique\nCiteaux", "x": 6480, "y": 5040, "width": 1440, "height": 1080 }, { "key": "12", "dataKey": "112", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Ana\nTrujillo", "x": 9000, "y": 2160, "width": 1440, "height": 1080 }, { "key": "13", "dataKey": "113", "locked": false, "zIndex": 0, "type": "rectangle", "text": "Antonio\nMoreno", "x": 9000, "y": 3600, "width": 1440, "height": 1080 } ] }