LIDOR SYSTEMS

Advanced User Interface Controls and Components

IntegralUI Web

Native Angular and AngularJS UI Components


TreeGrid / Data Binding


In this sample we are using an arbitrary data source to load the content of TreeGrid. In order this to work, you need to match the data fields from your data source to the fields of column and row objects. You can use any custom names for your data, as long as you match those names with object fields, the TreeGrid will be populated.

For purpose of data binding, we are using the dataFields attribute which accepts an object containing all names for the data fields (this property can also be used as parameter in loadData method, as it is in this example case). This property allows you to link fields from your data source to the fields of objects in TreeGrid.

Default settings for this property are:

dataFields = {

cell: {

cid: 'cid',

content: 'content',

contextMenu: 'contextMenu',

enabled: 'enabled',

labelEdit: 'labelEdit',

style: 'style',

text : 'text',

value: 'value'

},

column: {

allowDrag: 'allowDrag',

allowDrop: 'allowDrop',

contentAlignment: 'contentAlignment',

contextMenu: 'contextMenu',

editorType: 'editorType',

editorSettings: 'editorSettings',

fixedWidth: 'fixedWidth',

footerAlignment: 'footerAlignment',

footerText : 'footerText',

headerAlignment: 'headerAlignment',

headerContent: 'headerContent',

headerText : 'headerText',

icon: 'icon',

id : 'id',

style: 'style'

width: 'width'

},

row: {

allowDrag: 'allowDrag',

allowDrop: 'allowDrop',

cells: 'cells',

content: 'content',

contextMenu: 'contextMenu',

enabled: 'enabled',

expanded: 'expanded',

hasChildren: 'hasChildren',

icon: 'icon',

id : 'id',

pid : 'pid',

rows: 'rows',

statusIcon: 'statusIcon',

style: 'style'

text : 'text'

}

}

<!DOCTYPE html>

<html>

<head>

<link rel="stylesheet" href="css/integralui.css" />

<link rel="stylesheet" href="css/integralui.treegrid.css" />

<link rel="stylesheet" href="css/themes/theme-flat-blue.css" />

<script type="text/javascript" src="external/angular.min.js"></script>

<script type="text/javascript" src="js/angular.integralui.min.js"></script>

<script type="text/javascript" src="js/angular.integralui.lists.min.js"></script>

<script type="text/javascript" src="js/angular.integralui.treegrid.min.js"></script>

</head>

<body>

<div ng-app="appModule" ng-controller="appCtrl">

<iui-treegrid name="{{gridName}}" columns="sampleColumns" rows="sampleRows" row-icon="defaultIcon" show-footer="false"></iui-treegrid>

</div>

</body>

</html>

angular

.module("appModule", ["integralui"])

.controller("appCtrl", ["$scope", "IntegralUITreeGridService", "$timeout", function($scope, $gridService, $timeout){

$scope.gridName = "gridSample";

$scope.sampleRows = [];

$scope.defaultIcon = "icons-medium empty-doc";

 

$scope.sampleColumns = [

{ id: 1, columnTitle: "Customer/Order ID", columnAlignment: "center", size: 180 },

{ id: 2, columnTitle: "Ordered", columnAlignment: "center", cellAlignment: "center", size: 90 },

{ id: 3, columnTitle: "Shipped", columnAlignment: "center", cellAlignment: "center", size: 90 },

{ id: 4, columnTitle: "Ship Via", columnAlignment: "center", size: 125 },

{ id: 5, columnTitle: "Freight", columnAlignment: "center", cellAlignment: "right", size: 80 },

{ id: 6, columnTitle: "Address", columnAlignment: "center", size: 200 },

{ id: 7, columnTitle: "City", columnAlignment: "center" },

{ id: 8, columnTitle: "Country", columnAlignment: "center" }

];

 

$scope.flatData = [

{

rowID: 1,

icon: "icons-medium people",

rowText: "Piccolo und mehr",

cells: [{ cid: 1, cellText: "Piccolo und mehr" }, { cid: 6, cellText: "Geislweg 14" }, { cid: 7, cellText: "Salzburg" }, { cid: 8, cellText: "Austria" }]

},

{

rowID: 11,

parentID: 1,

rowText: "Order #10259",

cells: [{ cid: 1, cellText: "10259" }, { cid: 2, cellText: "9/13/2012" }, { cid: 3, cellText: "9/27/2012" }, { cid: 4, cellText: "Federal Shipping" }, { cid: 5, cellText: "360.63" }]

},

{

rowID: 12,

parentID: 1,

rowText: "Order #11094",

cells: [{ cid: 1, cellText: "11094" }, { cid: 2, cellText: "1/20/2013" }, { cid: 3, cellText: "2/5/2013" }, { cid: 4, cellText: "Federal Shipping" }, { cid: 5, cellText: "200.14" }]

},

{

rowID: 2,

icon: "icons-medium people",

rowText: "Frankenversand",

cells: [{ cid: 1, cellText: "Frankenversand" }, { cid: 6, cellText: "Berliner Platz 43" }, { cid: 7, cellText: "München" }, { cid: 8, cellText: "Germany" }]

},

{

rowID: 21,

parentID: 2,

rowText: "Order #11536",

cells: [{ cid: 1, cellText: "11536" }, { cid: 2, cellText: "12/9/2013" }, { cid: 3, cellText: "1/7/2014" }, { cid: 4, cellText: "Speedy Express" }, { cid: 5, cellText: "85.53" } ]

},

{

rowID: 22,

parentID: 2,

rowText: "Order #14472",

cells: [{ cid: 1, cellText: "14472" }, { cid: 2, cellText: "11/14/2014" }, { cid: 3, cellText: "11/25/2014" }, { cid: 4, cellText: "Speedy Express" }, { cid: 5, cellText: "112.30" } ]

},

{

rowID: 3,

icon: "icons-medium people",

rowText: "Laughing Bacchus Wine Cellars",

cells: [{ cid: 1, cellText: "Laughing Bacchus Wine Cellars" }, { cid: 6, cellText: "1900 Oak St." }, { cid: 7, cellText: "Vancouver" }, { cid: 8, cellText: "Canada" }]

},

{

rowID: 31,

parentID: 3,

rowText: "Order #11495",

cells: [{ cid: 1, cellText: "11495" }, { cid: 2, cellText: "8/7/2013" }, { cid: 3, cellText: "9/20/2013" }, { cid: 4, cellText: "United Package" }, { cid: 5, cellText: "49.28" } ]

}

];

 

$scope.dataFields = {

column: {

headerText: 'columnTitle',

headerAlignment: 'columnAlignment',

contentAlignment: 'cellAlignment',

width: 'size'

},

row: {

id: 'rowID',

pid: 'parentID',

text: 'rowText'

},

cell: {

text: 'cellText'

}

}

 

var loadTimer = $timeout(function(){

$gridService.loadData($scope.gridName, $scope.flatData, null, $scope.dataFields, true);

 

$timeout.cancel(loadTimer);

}, 1);

}]);

.iui-treegrid-column-header-cell, .iui-treegrid-column-footer-cell

{

padding: 1px 3px;

}

.iui-treegrid-row-cell-content

{

padding: 1px 3px;

}