diff --git a/11-tree/a-basic-tree/package-lock.json b/11-tree/a-basic-tree/package-lock.json index c575830..48282e6 100644 --- a/11-tree/a-basic-tree/package-lock.json +++ b/11-tree/a-basic-tree/package-lock.json @@ -78,6 +78,11 @@ "resolved": "https://registry.npmjs.org/ag-grid/-/ag-grid-15.0.0.tgz", "integrity": "sha1-cwSNgSpDVHSU1D3H9culM0Y/zD4=" }, + "ag-grid-enterprise": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-15.0.0.tgz", + "integrity": "sha1-AkDq1UAPGvPwdT9JE3vEg2o7kns=" + }, "ag-grid-react": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-15.0.0.tgz", diff --git a/11-tree/a-basic-tree/package.json b/11-tree/a-basic-tree/package.json index b19e70f..df014a2 100644 --- a/11-tree/a-basic-tree/package.json +++ b/11-tree/a-basic-tree/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "ag-grid": "^15.0.0", + "ag-grid-enterprise": "^15.0.0", "ag-grid-react": "^15.0.0", "autoprefixer": "7.1.6", "babel-core": "6.26.0", diff --git a/11-tree/a-basic-tree/src/App.js b/11-tree/a-basic-tree/src/App.js index 67824e0..17d153b 100644 --- a/11-tree/a-basic-tree/src/App.js +++ b/11-tree/a-basic-tree/src/App.js @@ -1,11 +1,124 @@ import React, { Component } from 'react'; -import Tree from './Tree'; -import './App.css'; +import { AgGridReact } from 'ag-grid-react'; +import 'ag-grid/dist/styles/ag-grid.css'; +import 'ag-grid/dist/styles/ag-theme-material.css'; +import 'ag-grid-enterprise'; + +import {LicenseManager} from "ag-grid-enterprise/main"; +// The tree view from ag-Grid requires an enterprise license and a product key +// Pricing: https://www.ag-grid.com/license-pricing.php +// Trial: https://www.ag-grid.com/start-trial.php +LicenseManager.setLicenseKey("your license key"); + +const data = [ + { + orgHierarchy: ['Erica Rogers'], + jobTitle: 'CEO', + employmentType: 'Permanent', + email: 'erica.rogers@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett'], + jobTitle: 'Exec. Vice President', + employmentType: 'Permanent', + email: 'malcolm.barrett@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker'], + jobTitle: 'Director of Operations', + employmentType: 'Permanent', + email: 'esther.baker@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson'], + jobTitle: 'Fleet Coordinator', + employmentType: 'Permanent', + email: 'brittany.hanson@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Leah Flowers'], + jobTitle: 'Parts Technician', + employmentType: 'Contract', + email: 'leah.flowers@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Tammy Sutton'], + jobTitle: 'Service Technician', + employmentType: 'Contract', + email: 'tammy.sutton@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Derek Paul'], + jobTitle: 'Inventory Control', + employmentType: 'Permanent', + email: 'derek.paul@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland'], + jobTitle: 'VP Sales', + employmentType: 'Permanent', + email: 'francis.strickland@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Morris Hanson'], + jobTitle: 'Sales Manager', + employmentType: 'Permanent', + email: 'morris.hanson@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Todd Tyler'], + jobTitle: 'Sales Executive', + employmentType: 'Contract', + email: 'todd.tyler@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Bennie Wise'], + jobTitle: 'Sales Executive', + employmentType: 'Contract', + email: 'bennie.wise@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Joel Cooper'], + jobTitle: 'Sales Executive', + employmentType: 'Permanent', + email: 'joel.cooper@acme.com' + } +]; class App extends Component { - render() { + columns = [ + { + field: 'jobTitle' + }, + { + field: 'employmentType' + } + ] + + getDataPath = (data) => { + return data.orgHierarchy; + } + + autoGroupColumnDef = { + headerName: 'Organisation Hierarchy', + width: 300, + cellRendererParams: { + suppressCount: true + } + } + + render () { return ( - +
+ +
); } } diff --git a/11-tree/a-basic-tree/src/Tree.js b/11-tree/a-basic-tree/src/Tree.js deleted file mode 100644 index 5b239e2..0000000 --- a/11-tree/a-basic-tree/src/Tree.js +++ /dev/null @@ -1,115 +0,0 @@ -import React, { Component } from 'react'; -import { AgGridReact } from 'ag-grid-react'; -import 'ag-grid/dist/styles/ag-grid.css'; -import 'ag-grid/dist/styles/ag-theme-material.css'; -import 'ag-grid/dist/styles/theme-material.css'; -class Tree extends Component { - columns = [ - { - field: 'jobTitle' - }, - { - field: 'employmentType' - } - ] - getDataPath = (data) => { - return data.orgHierarchy; - } - autoGroupColumnDef = { - headerName: 'Organisation Hierarchy', - cellRendererParams: { - suppressCount: true - } - } - render () { - return ( -
- -
- ); - } -} -const data = [ - { - orgHierarchy: ['Erica Rogers'], - jobTitle: 'CEO', - employmentType: 'Permanent', - email: 'erica.rogers@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett'], - jobTitle: 'Exec. Vice President', - employmentType: 'Permanent', - email: 'malcolm.barrett@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker'], - jobTitle: 'Director of Operations', - employmentType: 'Permanent', - email: 'esther.baker@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson'], - jobTitle: 'Fleet Coordinator', - employmentType: 'Permanent', - email: 'brittany.hanson@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Leah Flowers'], - jobTitle: 'Parts Technician', - employmentType: 'Contract', - email: 'leah.flowers@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Tammy Sutton'], - jobTitle: 'Service Technician', - employmentType: 'Contract', - email: 'tammy.sutton@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Derek Paul'], - jobTitle: 'Inventory Control', - employmentType: 'Permanent', - email: 'derek.paul@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland'], - jobTitle: 'VP Sales', - employmentType: 'Permanent', - email: 'francis.strickland@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Morris Hanson'], - jobTitle: 'Sales Manager', - employmentType: 'Permanent', - email: 'morris.hanson@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Todd Tyler'], - jobTitle: 'Sales Executive', - employmentType: 'Contract', - email: 'todd.tyler@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Bennie Wise'], - jobTitle: 'Sales Executive', - employmentType: 'Contract', - email: 'bennie.wise@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Joel Cooper'], - jobTitle: 'Sales Executive', - employmentType: 'Permanent', - email: 'joel.cooper@acme.com' - } -]; - -export default Tree; - diff --git a/11-tree/b-advanced-tree/package-lock.json b/11-tree/b-advanced-tree/package-lock.json index 35c0441..39dd357 100644 --- a/11-tree/b-advanced-tree/package-lock.json +++ b/11-tree/b-advanced-tree/package-lock.json @@ -78,6 +78,11 @@ "resolved": "https://registry.npmjs.org/ag-grid/-/ag-grid-15.0.0.tgz", "integrity": "sha1-cwSNgSpDVHSU1D3H9culM0Y/zD4=" }, + "ag-grid-enterprise": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-15.0.0.tgz", + "integrity": "sha1-AkDq1UAPGvPwdT9JE3vEg2o7kns=" + }, "ag-grid-react": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-15.0.0.tgz", diff --git a/11-tree/b-advanced-tree/package.json b/11-tree/b-advanced-tree/package.json index cbc53cb..19feaf6 100644 --- a/11-tree/b-advanced-tree/package.json +++ b/11-tree/b-advanced-tree/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "ag-grid": "^15.0.0", + "ag-grid-enterprise": "^15.0.0", "ag-grid-react": "^15.0.0", "autoprefixer": "7.1.6", "babel-core": "6.26.0", diff --git a/11-tree/b-advanced-tree/src/App.js b/11-tree/b-advanced-tree/src/App.js index 67824e0..9135766 100644 --- a/11-tree/b-advanced-tree/src/App.js +++ b/11-tree/b-advanced-tree/src/App.js @@ -1,11 +1,133 @@ import React, { Component } from 'react'; -import Tree from './Tree'; -import './App.css'; +import { AgGridReact } from 'ag-grid-react'; +import 'ag-grid/dist/styles/ag-grid.css'; +import 'ag-grid/dist/styles/ag-theme-material.css'; +import 'ag-grid-enterprise'; + +import {LicenseManager} from "ag-grid-enterprise/main"; +// The tree view from ag-Grid requires an enterprise license and a product key +// Pricing: https://www.ag-grid.com/license-pricing.php +// Trial: https://www.ag-grid.com/start-trial.php +LicenseManager.setLicenseKey("your license key"); + +const data = [ + { + orgHierarchy: ['Erica Rogers'], + jobTitle: 'CEO', + employmentType: 'Permanent', + email: 'erica.rogers@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett'], + jobTitle: 'Exec. Vice President', + employmentType: 'Permanent', + email: 'malcolm.barrett@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker'], + jobTitle: 'Director of Operations', + employmentType: 'Permanent', + email: 'esther.baker@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson'], + jobTitle: 'Fleet Coordinator', + employmentType: 'Permanent', + email: 'brittany.hanson@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Leah Flowers'], + jobTitle: 'Parts Technician', + employmentType: 'Contract', + email: 'leah.flowers@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Tammy Sutton'], + jobTitle: 'Service Technician', + employmentType: 'Contract', + email: 'tammy.sutton@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Derek Paul'], + jobTitle: 'Inventory Control', + employmentType: 'Permanent', + email: 'derek.paul@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland'], + jobTitle: 'VP Sales', + employmentType: 'Permanent', + email: 'francis.strickland@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Morris Hanson'], + jobTitle: 'Sales Manager', + employmentType: 'Permanent', + email: 'morris.hanson@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Todd Tyler'], + jobTitle: 'Sales Executive', + employmentType: 'Contract', + email: 'todd.tyler@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Bennie Wise'], + jobTitle: 'Sales Executive', + employmentType: 'Contract', + email: 'bennie.wise@acme.com' + }, + { + orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Joel Cooper'], + jobTitle: 'Sales Executive', + employmentType: 'Permanent', + email: 'joel.cooper@acme.com' + } +]; class App extends Component { - render() { + columns = [ + { + field: 'jobTitle', + editable: true + }, + { + field: 'employmentType' + }, + { + field: 'email', + cellRenderer: params => { + return `${params.value}`; + } + } + ] + + getDataPath = (data) => { + return data.orgHierarchy; + } + autoGroupColumnDef = { + headerName: 'Organisation Hierarchy', + width: 300, + pinned: 'left', + editable: true, + cellRendererParams: { + suppressCount: true + } + } + + render () { return ( - +
+ +
); } } diff --git a/11-tree/b-advanced-tree/src/Tree.js b/11-tree/b-advanced-tree/src/Tree.js deleted file mode 100644 index 065e39b..0000000 --- a/11-tree/b-advanced-tree/src/Tree.js +++ /dev/null @@ -1,126 +0,0 @@ -import React, { Component } from 'react'; -import { AgGridReact } from 'ag-grid-react'; -import 'ag-grid/dist/styles/ag-grid.css'; -import 'ag-grid/dist/styles/ag-theme-material.css'; -import 'ag-grid/dist/styles/theme-material.css'; -class Tree extends Component { - columns = [ - { - field: 'jobTitle', - editable: true - }, - { - field: 'employmentType' - }, - { - field: 'email', - cellRenderer: params => { - return `${params.value}`; - } - } - ] - getDataPath = (data) => { - return data.orgHierarchy; - } - autoGroupColumnDef = { - headerName: 'Organisation Hierarchy', - pinned: 'left', - editable: true, - cellRendererParams: { - suppressCount: true - } - } - render () { - return ( -
- -
- ); - } -} - -const data = [ - { - orgHierarchy: ['Erica Rogers'], - jobTitle: 'CEO', - employmentType: 'Permanent', - email: 'erica.rogers@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett'], - jobTitle: 'Exec. Vice President', - employmentType: 'Permanent', - email: 'malcolm.barrett@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker'], - jobTitle: 'Director of Operations', - employmentType: 'Permanent', - email: 'esther.baker@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson'], - jobTitle: 'Fleet Coordinator', - employmentType: 'Permanent', - email: 'brittany.hanson@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Leah Flowers'], - jobTitle: 'Parts Technician', - employmentType: 'Contract', - email: 'leah.flowers@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Brittany Hanson', 'Tammy Sutton'], - jobTitle: 'Service Technician', - employmentType: 'Contract', - email: 'tammy.sutton@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Esther Baker', 'Derek Paul'], - jobTitle: 'Inventory Control', - employmentType: 'Permanent', - email: 'derek.paul@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland'], - jobTitle: 'VP Sales', - employmentType: 'Permanent', - email: 'francis.strickland@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Morris Hanson'], - jobTitle: 'Sales Manager', - employmentType: 'Permanent', - email: 'morris.hanson@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Todd Tyler'], - jobTitle: 'Sales Executive', - employmentType: 'Contract', - email: 'todd.tyler@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Bennie Wise'], - jobTitle: 'Sales Executive', - employmentType: 'Contract', - email: 'bennie.wise@acme.com' - }, - { - orgHierarchy: ['Erica Rogers', 'Malcolm Barrett', 'Francis Strickland', 'Joel Cooper'], - jobTitle: 'Sales Executive', - employmentType: 'Permanent', - email: 'joel.cooper@acme.com' - } -]; - -export default Tree; -