Skip to content

Commit bddd5ab

Browse files
Merge pull request #1 from vinoth-Kumar-S/master
Vue Tree Grid filtering sample
2 parents cb0a1c1 + 0d742f1 commit bddd5ab

File tree

13 files changed

+415
-1
lines changed

13 files changed

+415
-1
lines changed

README.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,23 @@
1-
# how-to-filter-records-in-vue-tree-grid-component
1+
# How to Filter Records in Vue Tree Grid Component
2+
23
A quick-start project that helps you filter records in the Vue Tree Grid component. This project contains code to enable filters with their different modes and types. It also has code to filter a tree grid records on initial loading.
4+
5+
Refer to the following documentation on filtering in the Syncfusion Vue Tree Grid component:
6+
https://ej2.syncfusion.com/vue/documentation/treegrid/filtering/filtering/
7+
8+
Refer to the following documentation to learn about filter operators:
9+
https://ej2.syncfusion.com/vue/documentation/treegrid/filtering/filtering/#filter-operators
10+
11+
Check out this online filtering example of the Syncfusion Vue Tree Grid component:
12+
https://ej2.syncfusion.com/vue/demos/#/bootstrap5/tree-grid/filtering.html
13+
14+
Refer to the following Syncfusion Vue Tree Grid getting started video:
15+
https://www.youtube.com/watch?v=FEMyOHKjjao
16+
17+
## Project prerequisites
18+
19+
Make sure that you have the latest versions of Vue, Node, Vue Class Component, and Visual Studio Code in your machine before starting to work on this project.
20+
21+
### How to run this application?
22+
23+
To run this application, you need to clone the `how-to-filter-records-in-vue-tree-grid-component` repository and then open it in Visual Studio Code. Now, simply install all the necessary react packages into your current project using the `npm install` command and run your project using the `npm run serve` command.

babel.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
presets: [
3+
'@vue/cli-plugin-babel/preset'
4+
]
5+
}

jsconfig.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"module": "esnext",
5+
"baseUrl": "./",
6+
"moduleResolution": "node",
7+
"paths": {
8+
"@/*": [
9+
"src/*"
10+
]
11+
},
12+
"lib": [
13+
"esnext",
14+
"dom",
15+
"dom.iterable",
16+
"scripthost"
17+
]
18+
}
19+
}

package.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"name": "myvueproject",
3+
"version": "0.1.0",
4+
"private": true,
5+
"scripts": {
6+
"serve": "vue-cli-service serve",
7+
"build": "vue-cli-service build",
8+
"lint": "vue-cli-service lint"
9+
},
10+
"dependencies": {
11+
"@syncfusion/ej2-vue-buttons": "^20.2.46",
12+
"@syncfusion/ej2-vue-grids": "^20.2.45",
13+
"@syncfusion/ej2-vue-treegrid": "^20.2.49",
14+
"core-js": "^3.8.3",
15+
"vue": "^3.2.13",
16+
"vue-class-component": "^8.0.0-rc.1"
17+
},
18+
"devDependencies": {
19+
"@babel/core": "^7.12.16",
20+
"@babel/eslint-parser": "^7.12.16",
21+
"@vue/cli-plugin-babel": "~5.0.0",
22+
"@vue/cli-plugin-eslint": "~5.0.0",
23+
"@vue/cli-service": "~5.0.0",
24+
"eslint": "^7.32.0",
25+
"eslint-plugin-vue": "^8.0.3"
26+
},
27+
"eslintConfig": {
28+
"root": true,
29+
"env": {
30+
"node": true
31+
},
32+
"extends": [
33+
"plugin:vue/vue3-essential",
34+
"eslint:recommended"
35+
],
36+
"parserOptions": {
37+
"parser": "@babel/eslint-parser"
38+
},
39+
"rules": {}
40+
},
41+
"browserslist": [
42+
"> 1%",
43+
"last 2 versions",
44+
"not dead",
45+
"not ie 11"
46+
]
47+
}

public/favicon.ico

4.19 KB
Binary file not shown.

public/index.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html lang="">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
7+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
8+
<title><%= htmlWebpackPlugin.options.title %></title>
9+
</head>
10+
<body>
11+
<noscript>
12+
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
13+
</noscript>
14+
<div id="app"></div>
15+
<!-- built files will be auto injected -->
16+
</body>
17+
</html>

src/App.vue

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<template>
2+
<ejs-treegrid :dataSource="data"
3+
childMapping="subtasks"
4+
:treeColumnIndex="1"
5+
:height='400'
6+
:allowFiltering="true"
7+
:filterSettings="filterOptions"
8+
:allowPaging='true'
9+
:pageSettings='pageSettings'>
10+
<e-columns>
11+
<e-column field='taskID' headerText='Task ID' width='80' textAlign='Right'></e-column>
12+
<e-column field='taskName' headerText='Task Name' width='190'></e-column>
13+
<e-column field='startDate' headerText='Start Date' width='100' format="yMd" textAlign='Right'></e-column>
14+
<e-column field='duration' headerText='Duration' width='90' textAlign='Right'></e-column>
15+
<e-column field='progress' headerText='Progress' width='90' textAlign='Right'></e-column>
16+
</e-columns>
17+
</ejs-treegrid>
18+
</template>
19+
20+
<script>
21+
import { TreeGridComponent, ColumnsDirective, ColumnDirective, Page, Filter} from "@syncfusion/ej2-vue-treegrid";
22+
import {sampleData} from './data.js';
23+
24+
export default{
25+
name: 'App',
26+
components: {
27+
'ejs-treegrid': TreeGridComponent,
28+
'e-columns': ColumnsDirective,
29+
'e-column': ColumnDirective
30+
},
31+
data: () => {
32+
return {
33+
data: sampleData,
34+
filterOptions: {
35+
ignoreAccent:true,
36+
hierarchyMode:"None",
37+
type: "Excel",
38+
// Uncomment below code for initial filtering
39+
// columns:[{
40+
// field: "taskName",
41+
// matchCase: false,
42+
// operator: "startswith",
43+
// predicate: "and",
44+
// value: "plan"
45+
// }]
46+
},
47+
pageSettings: { pageSize: 12 }
48+
}
49+
},
50+
provide:{
51+
treegrid:[Page, Filter]
52+
}
53+
}
54+
</script>
55+
56+
<style>
57+
@import "../node_modules/@syncfusion/ej2-base/styles/material.css";
58+
@import "../node_modules/@syncfusion/ej2-buttons/styles/material.css";
59+
@import "../node_modules/@syncfusion/ej2-calendars/styles/material.css";
60+
@import "../node_modules/@syncfusion/ej2-dropdowns/styles/material.css";
61+
@import "../node_modules/@syncfusion/ej2-inputs/styles/material.css";
62+
@import "../node_modules/@syncfusion/ej2-navigations/styles/material.css";
63+
@import "../node_modules/@syncfusion/ej2-popups/styles/material.css";
64+
@import "../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css";
65+
@import "../node_modules/@syncfusion/ej2-vue-grids/styles/material.css";
66+
@import "../node_modules/@syncfusion/ej2-vue-treegrid/styles/material.css";
67+
</style>

src/__VLS_template.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { TreeGridComponent } from '@syncfusion/ej2-vue-treegrid';
2+
3+
export default (await import('vue')).defineComponent({
4+
name: 'App',
5+
components: {
6+
'ejs-treegrid': TreeGridComponent
7+
}
8+
});
9+
const __VLS_template = () => ({});

src/assets/logo.png

6.69 KB
Loading

src/components/HelloWorld.vue

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<template>
2+
<div class="hello">
3+
<h1>{{ msg }}</h1>
4+
<p>
5+
For a guide and recipes on how to configure / customize this project,<br>
6+
check out the
7+
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
8+
</p>
9+
<h3>Installed CLI Plugins</h3>
10+
<ul>
11+
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
12+
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
13+
</ul>
14+
<h3>Essential Links</h3>
15+
<ul>
16+
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
17+
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
18+
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
19+
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
20+
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
21+
</ul>
22+
<h3>Ecosystem</h3>
23+
<ul>
24+
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
25+
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
26+
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
27+
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
28+
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
29+
</ul>
30+
</div>
31+
</template>
32+
33+
<script>
34+
export default {
35+
name: 'HelloWorld',
36+
props: {
37+
msg: String
38+
}
39+
}
40+
</script>
41+
42+
<!-- Add "scoped" attribute to limit CSS to this component only -->
43+
<style scoped>
44+
h3 {
45+
margin: 40px 0 0;
46+
}
47+
ul {
48+
list-style-type: none;
49+
padding: 0;
50+
}
51+
li {
52+
display: inline-block;
53+
margin: 0 10px;
54+
}
55+
a {
56+
color: #42b983;
57+
}
58+
</style>

0 commit comments

Comments
 (0)