Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diagram - add snippets to Linear Array section (#6614) #6621

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
269 changes: 264 additions & 5 deletions concepts/05 UI Components/Diagram/10 Data Binding/20 Linear Array.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Specify the following **required properties**: [nodes.keyExpr](/api-reference/10

During the binding process, the UI component creates a shape for every bound node and a connector between every pair of nodes linked by the _Key_ - _Parent Key_ reference. Note that edges are not maintained as entities in a data source, thus a detached connector disappears after rebinding.

![Diagram - Linear Array](/images/diagram/db-linear-array.png)

---
##### jQuery

Expand All @@ -23,14 +25,13 @@ During the binding process, the UI component creates a shape for every bound nod
}),
keyExpr: "ID",
parentKeyExpr: "Head_ID",
textExpr: "Title",
heightExpr: function() {return 0.4}
textExpr: "Title"
},
});
});

<!-- tab: data.js -->
var employees = [{
const employees = [{
"ID": 3,
"Full_Name": "Arthur Miller",
"Title": "CTO",
Expand Down Expand Up @@ -66,6 +67,264 @@ During the binding process, the UI component creates a shape for every bound nod
"Title": "Programmer",
}];

---
##### Angular

<!-- tab: app.component.html -->
<dx-diagram>
<dxo-nodes
[dataSource]="dataSource"
keyExpr="ID"
textExpr="Title"
parentKeyExpr="Head_ID"
>
</dxo-nodes>
</dx-diagram>

<!-- tab: app.component.ts -->
import { Component } from '@angular/core';
import ArrayStore from "devextreme/data/array_store";
import { Service } from "./app.service";

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [Service]
})

export class AppComponent {
dataSource: ArrayStore;
constructor(service: Service) {
this.dataSource = new ArrayStore({
key: "ID",
data: service.getEmployees(),
});
}
}

<!-- tab: app.service.ts -->
import { Injectable } from "@angular/core";

export class Employee {
ID: number;
Head_ID?: number;
Full_Name: string;
Title: string;
}

const employees: Employee[] = [
{
ID: 3,
Full_Name: "Arthur Miller",
Title: "CTO",
},
{
ID: 6,
Head_ID: 3,
Full_Name: "Brett Wade",
Title: "IT Manager",
},
{
ID: 9,
Head_ID: 3,
Full_Name: "Barb Banks",
Title: "Support Manager",
},
{
ID: 18,
Head_ID: 9,
Full_Name: "James Anderson",
Title: "Support Assistant",
},
{
ID: 21,
Head_ID: 6,
Full_Name: "Taylor Riley",
Title: "Network Admin",
},
{
ID: 23,
Head_ID: 6,
Full_Name: "Wally Hobbs",
Title: "Programmer",
},
{
ID: 24,
Head_ID: 6,
Full_Name: "Brad Jameson",
Title: "Programmer",
},
];

@Injectable()
export class Service {
getEmployees() {
return employees;
}
}

##### Vue

<!-- tab: App.vue -->
<template>
<DxDiagram>
<DxNodes
:data-source="dataSource"
:key-expr="'ID'"
:text-expr="'Title'"
:parent-key-expr="'Head_ID'"
/>
</DxDiagram>
</template>

<script>
import {
DxDiagram, DxNodes
} from 'devextreme-vue/diagram';
import ArrayStore from 'devextreme/data/array_store';
import service from './data.js';

export default {
components: {
DxDiagram, DxNodes, DxEdges
},
data() {
return {
dataSource: new ArrayStore({
key: 'id',
data: service.getEmployees(),
})
};
}
};
</script>

<!-- tab: data.js -->
const employees = [
{
ID: 3,
Full_Name: "Arthur Miller",
Title: "CTO",
},
{
ID: 6,
Head_ID: 3,
Full_Name: "Brett Wade",
Title: "IT Manager",
},
{
ID: 9,
Head_ID: 3,
Full_Name: "Barb Banks",
Title: "Support Manager",
},
{
ID: 18,
Head_ID: 9,
Full_Name: "James Anderson",
Title: "Support Assistant",
},
{
ID: 21,
Head_ID: 6,
Full_Name: "Taylor Riley",
Title: "Network Admin",
},
{
ID: 23,
Head_ID: 6,
Full_Name: "Wally Hobbs",
Title: "Programmer",
},
{
ID: 24,
Head_ID: 6,
Full_Name: "Brad Jameson",
Title: "Programmer",
},
];

export default {
getEmployees() {
return employees;
}
}

<!-- tab: App.js -->
import React from "react";
import Diagram, { Nodes } from "devextreme-react/diagram";
import ArrayStore from "devextreme/data/array_store";
import service from "./data.js";

const dataSource = new ArrayStore({
key: 'ID',
data: service.getEmployees(),
});

const App = () => {
return (
<Diagram>
<Nodes
dataSource={dataSource}
keyExpr="ID"
textExpr="Title"
parentKeyExpr="Head_ID"
/>
</Diagram>
);
};

export default App;

<!-- tab: data.js -->
const employees = [
{
ID: 3,
Full_Name: "Arthur Miller",
Title: "CTO",
},
{
ID: 6,
Head_ID: 3,
Full_Name: "Brett Wade",
Title: "IT Manager",
},
{
ID: 9,
Head_ID: 3,
Full_Name: "Barb Banks",
Title: "Support Manager",
},
{
ID: 18,
Head_ID: 9,
Full_Name: "James Anderson",
Title: "Support Assistant",
},
{
ID: 21,
Head_ID: 6,
Full_Name: "Taylor Riley",
Title: "Network Admin",
},
{
ID: 23,
Head_ID: 6,
Full_Name: "Wally Hobbs",
Title: "Programmer",
},
{
ID: 24,
Head_ID: 6,
Full_Name: "Brad Jameson",
Title: "Programmer",
},
];

export default {
getEmployees() {
return employees;
}
}

![Diagram - Node and Edge Arrays](/images/diagram/db-linear-array.png)
---
Loading