News in version
TreeGrid Gantt chart SpreadSheet Examples Documentation Download Development Licensing Prices References Contacts Buy Try it free
Documentation
Search in documentation
TreeGrid versions compatibility

Changes log (txt file) Using custom CSS from 13.3 to 14.0 Upgrading from 9.3 to 10.0 Upgrading from 5.9 to 6.0

Using in JavaScript frameworks

Angular React Vue Other frameworks NodeJS server

Creating grid

Simple examples Basic information Creating grid Deleting grid Reloading grid Rendering grid Accessing grid by API

Data & communication
Data communication with server

Communication types AJAX communication AJAX SOAP envelope Submit communication Directly included data Data from JavaScript Cross domain / local load by JSONP Sessions (AJAX) Server response (AJAX) Synchronous communication (AJAX) Caching (AJAX) API (AJAX)

Download data

Settings for data download Layout XML structure Data XML structure

Upload data

Settings for data upload API for upload XML structure sent to server

Changing data from server

XML structure of download changes XML structure of request for a cell Synchronizing data with server

Input / output data formats

Complete list of tags Internal XML format Short XML format Extra short XML format DTD XML format JSON format

Cells
Cell basics

Cell type Cell format Dynamic format Dynamic type Cell value Reading / writing attributes by API Cell HTML Cell default Range or more values in one cell Cell with link URL Cell hint Cell tooltip / title Cell popup menu

Cell editing and changing values

Cell editability Dynamic editing Locking Defaults list Suggest list (auto complete) Tags input Changing cell value Mass cell change Clearing cells Editing cells Controlling <input> tag by JavaScript Input validation and restrictions Side checkbox Cell selecting

Calculations - cell formulas

Basics Formulas Mathematical functions Aggregate functions Special functions for actions Custom functions

Calculations - editable cell formulas

Basics Suggest list (auto complete) Defined names Actions for choosing cells Conditional functions Lookup functions Cell reference functions Logical functions Informational functions Mathematical functions Trigonometry functions Rounding numbers Number conversions String functions Date functions Summary functions Custom functions

Cell side buttons

Introduction Right side Button Left side Icon

Cell spanning

Column span Row span Dynamic spanning

Cell style and color

Basic grid style Sizing and scaling - responsive design Dynamic cell style attributes Cell CSS class Cell background color Dynamic cell border Cell HTML style Row color alteration Cell mouse cursor

Editable cell images

Insert image Edit image

Cell types
Automatic type - Auto String - Text, Lines & Pass
Number - Int & Float

Format Localization

Date and time - Date

Format Calendar component Dates dialog Localization

List & combo - Enum & Radio

Introduction Definition Related lists Enum specific Radio specific

Checkbox - Bool
Action button - Button

Introduction Basic clickable button Switch button Radio / tab button Menu button Combo switch button Combo radio / tab button Special Space rows with buttons

Panel with more buttons - Panel

Definition Standard fast panel Custom panel

HTML and special types

Html type EHtml type (editable) Icon type Abs type List type Editable Link type Editable Img type DropCols type Upload File type

Columns

Column basics Column index Column visibility Column visibility menu Column selecting Column tree Auto column tree Column position and moving Column adding and copying Column deleting Column width Column API

Rows
Row basics

Rows by functionality Rows by position Row name Row id Row index

Default rows

Description Example of default rows Example of changing default row Attributes

Row tree

Tree attributes Actions & API for expand / collapse

Row identification

Setting row id attribute Row id attribute in tree Row id created from cell values API for row ids

Row visibility
Row adding and copying

Five ways of adding rows to grid Adding and copying restrictions Adding new empty rows Copying existing rows

Row deleting Row moving and dragging Row selecting Row height Row API Space rows
Features
Sorting rows

Sort settings Controlling sort position Comparing strings Sorting actions Sorting API

Grouping rows to tree

Group settings Creating groups Comparing strings Created group rows <D Group='1'/> User interface to choose grouping Grouping actions and API

Filtering rows

Filter settings Comparing strings User interface to choose filter Filter actions and API

Searching in rows and cells

Search settings User interface for search Search actions and API

Printing grid

Print settings Choosing items to print Page size Print API

Print / export to PDF

Introduction Client side settings Printing options Client side API Server side API Data sent from client to server

Export to Excel or CSV

Introduction and export types Basic settings Styling export XLSX export Gantt export CSV export Old XLS / XHTML export Export API Communication with server Client export Server export

Import from Excel

Basic settings Sheets manipulation

Copy & paste rows via clipboard

Copy & paste permissions Copying to clipboard Pasting from clipboard

Master - detail grids

Introduction External master - detail grids Nested master - detail grids Synchronizing grids Other attributes for master - detail

Pivot tables

Pivot attributes & API Pivot formulas

External objects (like Adobe Flash) Undo & Redo
Gantt and bar chart
Gantt objects

Gantt objects list Display settings Edit settings

Main bar

Definition of main bar and plans Main bar as Task Edit settings Main bar content and side html Tip on mouse hover Vertical position and height Style specific attributes API to manipulate Main bars Actions Side text (deprecated) Real Flow (deprecated)

Run bar

GanttRun Definition Extended definition Run bar as Task Edit settings Save format Selecting Run boxes Run box content and side html Tip on mouse hover Box identification Vertical position and height Style specific attributes Overlaid (Error) boxes Containers for more boxes Dragging - moving and resizing API to manipulate Run boxes Actions Run special formulas

Summary task

Main for Main Main for Run Editable Main Editable Run

Gantt icons - Flag & Point

Flag - icon with text Point - math points

Gantt display objects

Header - column captions Cell and column Background Vertical movable Line Mark & Progress line

Gantt zoom

Zoom options Chart size limits Zoom selection Paging in Gantt chart

Dependency, constraints & schedule

Introduction Data units Defining dependencies Dependency colors and shapes Changing dependencies Correcting dependencies Scheduling algorithm Project date constraints Task date constraints Critical path - Slack (Float)

Gantt calendars

Global base calendar Local calendar Calendar list Calendars dialog Other settings

Gantt resources

Resources list Resources assign Resources filter Resources calculations Availability chart Resource usage chart Generated resource usage chart

Gantt popup menu Gantt API
Line and XY points charts

Charts in grid cells Chart JSON definition Base chart settings Basic attributes Size Axis and caption Individual chart lines Data sources Visual settings API for standalone usage

Paging in large grids
Paging root rows

Paging types and attributes Auto adding root pages API for paging

Pager components

Side pager Side pager type Pages Side pager type Gantt Side pager type Custom Pager with navigation buttons & edit Pager as list of page indexes

Paging in tree

ChildPaging - load / render on expand MaxChildren - limit children count ChildParts - load / render on scroll

Paging columns

Paging types and attributes Auto adding column pages API for column paging

Server paging

Server paging for root rows Server communication in root paging Root paging in very large tables Server paging in tree Server communication in tree paging XML Request for Data in root paging XML Download Data in root paging XML Request for root Page / children XML Download root Page / children API for server paging

TreeGrid DLL/SO for server paging

Introduction Compatibility with TreeGrid control Using TreeGrid server DLL/SO ASP.NET C# ASP.NET VB PHP JSP Java TreeGrid server concepts Function reference Calculations

JSON menus and dialogs
JSON menu description JSON menu definition example
Menu settings

Base attributes Visual settings Key navigation Behavior Size and scroll

Menu item settings

Base attributes Clickable item Inactive caption Collapsible sub level Popup sub menu Columns Bool item Enum item Edit item

Custom menu in JavaScript

Show custom menu Custom menu position Custom menu advanced settings Custom menu JavaScript events Custom menu JavaScript methods

Calendar dialog Custom calendar & JavaScript events Custom dialog in JavaScript
Global grid settings
Grid size and scroll

Default behavior Maximize grid height and width Update size according to the content Let a user to control the grid size Widths of individual sections Other scrolling attributes and API

Media rules - responsive design
Languages

Language & regional setup (Text.xml) Translate texts dynamically Change language

Grid cursor - Focus & hover

Focused cell and row Focused cell range Move and copy focused cells Filling cell values by dragging Tabulator navigation Key navigation Cursor look - focus & hover

Selecting rows, cells and columns

Selecting base Selecting rows Selecting cells Selecting columns

Global settings

Status messages Configuration menus Configuration menu - options Configuration menu - columns Configuration menu - print / PDF Configuration menu - export Default toolbar Useful API function Help file

Animations

Animations base Row animations Column animations Cell animations Animations for undo / redo Animations for server side changes Dialog animations

Grid configuration in cookies
Mouse & key events & actions

List of event handler types TreeGrid mouse events Mouse event names Key and mouse button prefixes Touch event names Event targets Assigning event actions / callbacks Event action parameters Action name suffix Calling actions from JavaScript Creating custom actions Focused vs. Actual cell TreeGrid key events JavaScript API events

Mouse API event TreeGrid files
Debugging and testing

Debug window Automated testing

Gantt resources

TreeGrid documentation

The resource list is defined globally for whole chart in <Resources> root tag.
The individual resources can be assigned to tasks to compute their price.
The tasks can filtered according to the assigned resources.
TreeGrid provides various calculations for resources and prices.

Resources list

Resources are defined globally for the whole project in root tag <Resources>, individual resources are defined in nested <R> tags.

For example simple definition can be:
<Grid>
...
<Resources>
<R Name='Resource1' Price='100'/>
<R Name='Resource2' Price='200'/>
</Resources>
</Grid>
new 6.4 <Resources>

<R>

One resource definition. It can be placed only in root <Resources> tag.
new 6.4 <R> string

Name

Unique name of the resource.
new 6.4 <R> string

Text

Text displayed for the resource in the popup menu for assigning resources to the task.
If not set, the Name is used.
new 7.0 <R> int

Type

[1]
Type of the resource.
1 - Work, not consumed resource. The Availability is the maximal count per time unit.
2 - Material, consumed resource. The Availability is calculated from start and consumed per every used time unit.
new 11.0 <R> int

Consume

[0]
How the Material type resource is consumed.
0 - a part per every used time unit
1 - all on start
2 - all on end
3 - all on middle
new 6.4 <R> float

Price

Price per one resource unit.
The resource units are set by GanttDataUnits.
new 7.0 <R> string

Availability

Resource availability. Maximal summary count of resource units assigned to all tasks at one time unit (Type=1) or for whole project (Type=2).
Since 7.0 it can contain more values for given date ranges, in format: repeater1#date1a~date1b#count1;repeater2#date2a~date2b#count2;....
The possible values of repeater are the same as GanttUnits, e.g. "w", "d", "h" or "1", "0.5", "2", ... If the repeater is not present, the date range is not repeated
The date range is range where the count of resources is available. The date range can be periodically repeated by the repeater.
For Material Type resources is used only the first date from date range as date when the count of resources arrives.
If some date ranges are overlapped, the count values are summed. The count can be also negative to reduce the count for some range.
For example "3;w#1/3/2011~1/4/2011#-1" - The resource count is 3 except Mondays when is 2.
It is possible to limit the repeating - when the date range is wider than the repeater, the range is rounded to the repeater range and repeated only between the dates.
For example 'w#1/5/2008~12/29/2008#1' marks all weekends, but only in year 2008.
The availability can be easily edited by users in dialog for Dates type Button.
new 6.4 deleted 7.0 <R> float

MaxCount

Renamed to Availability
new 6.4 API variable object[ ]

Resources

The array of all resources in grid, accessible by its name.
The resource objects contain all the XML attributes like Price or Availability.
Example: Grid.Resources.Worker.Price = 150;

Resources assign

Every task can have assigned one or more resources from global <Resources> list. It can have also specified how many resource units it uses.
chg 10.0 <C> <cell> string

GanttResourcesX

Gantt source - column name or exact value
The resources assigned to the main bar task. It can be column name or string.
It is used only for Gantt tasks listed in GanttTask (by default it is only the first main bar plan)
Since 10.0 it is not used for run, for run bar use GanttRunResources, for run box use Resources.
The X is main bar plan, for the first main plan is empty (GanttResources, GanttResources1, GanttResources2, ...). See GanttCount.
It is in format: name1*amount1+extra1;name2*amount2+extra2;...
Resources are separated by semicolon (defined by <Format ValueSeparator/>) (note, in Run box Resources is used '#' instead of the semicolon)
The name and amount are separated by asterisk (defined by <Format CountSeparator/>)
The extra is separated by plus (defined by <Format AddSeparator/>)
The name is resource Name.
The amount is amount of resource units per task data unit. The amount can be omitted if it is 1 and extra is not defined. Or is 0 and extra is defined.
The extra is extra amount of resource units independent on the task duration. The extra can be omitted if it is 0. This item changed its meaning in 7.0!
If the name and amount are both omitted, the extra is extra price for the task independent on resources and task duration. There should be only one such extra price per task.
The GanttResources can be also just plain text to display it next to task, without filtering and pricing functionality.
new 10.0 <C> <cell> string

GanttRunResources

Gantt source - column name or exact value
Resources assigned to run bar task, only if set Run in GanttTask.
For resources added to run box use box Resources instead.
Format is the same as GanttResources.
new 6.4 <C> int

GanttResourcesAssign

[4]
How the resources can be assigned to the task, affects the menu for assigning resources.
The behavior can be more modified also by GanttResourcesMenu.
0 - Only one resource can be assigned to the task, the menu is clickable. The Extra prices are not shown.
1 - The resources can be assigned only as 0/1, the checkboxes are shown - set Default: { Bool:1 }
2 - The resources can be assigned as 0 - 10, the enums are shown - set Default: { Enum:1, Width:22, Items:["","1","2","3","4","5","6","7","8","9","10"] }
3 - The resources can be assigned as integers, the edits are shown - set Default: { Edit:1, Width:40, Type:”Int”, Size:5 }
4 - The resources can be assigned as floats, the edits are shown -
set Default: { Edit:1, Width:60, Type:"Float", Format:"0.##;;", DisplayFormat:"0.00;;", EditMask:"^\\d{0,5}(\\.\\d{0,2})?$"}
5 - Only extra price and resource units permitted by GanttResourcesExtra are shown.
new 6.4 chg 7.0 <C> int

GanttResourcesExtra

[0]
If and how will be possible to add extra prices and resource units to tasks when editing resources from menu.
0 - no extra price possible.
1 - one extra price per whole task
2 - extra resource units per task
3 - both extra price and extra units
If set to 1 or 3, the resource names should not be numbers.
new 6.4 <C> <cell> string

GanttResourcesMenu

Optional menu to assign the resources to the task. Here is possible to specify which resources and how can be assigned to the individual task.
It is standard TreeGrid menu.
The items must be named (Name attribute) as resource names to be correctly assigned.
The Name of the extra task price item must be "Extra", the names of extra resource units must be name+"Extra"
<Actions>

EditGanttResource

Attached to OnDblClickGantt event
Lets a user to assign resources for the task in popup menu

Resources filter

The tasks can be easily filtered according to assigned resources.
User interface for filtering by resources can be added to grid by cell Type='SelectGanttResources'
new 6.3 <Space cell> string

Type

Type="

SelectGanttResources

"
Special combo box to choose resources to display in grid. It hides all rows that do not contain any selected resources.
It presets these cell attribute: Type="Html" Button="Defaults" Defaults= "|*None|-|*RowsVariableCol"+resource col+"*"
OnChange= "Grid.FilterTextRange('"+ resource col +"',Value);" Range="1"
Requires GanttResources to be defined in <C> tag.
new 6.4 <C> string

GanttResourcesFilter

Saved to cookies, to avoid it set <Cfg GanttLap='1'/>
Predefined filter for the resources, contains the resource names separated by semicolon.
The grid will show only tasks containing these resources.

Resources calculations

new 6.4 chg 10.0 API method float

GetGanttPrice

(TRow row, string col, int plan = null)
Returns price of the bar according to its duration and assigned resources.
plan meaning changed in 10.0.
plan is main bar plan or run box id or '-' for run bar.
If plan is null, calculates sum of all prices of all main bar plans and run boxes/bar in GanttTask.
If plan is '-' calculates the whole run bar if GanttTask is 'Run', or calculates sum of all prices of all run boxes if GanttTask is 'Box'.
In Formula it can be called as Grid.GetGanttPrice(Row,"XXX") where XXX is Gantt column name.
new 6.4 API method float

GetGanttResourceCount

(string res, int start, int end, int type, string col, string def)
Returns information about the resource res usage between dates start and end.
The start and end can be Date object, number of milliseconds or date string in English.
def - name of default row (Def attribute). Only variable rows with this default will be iterated. If not set, all variable rows are iterated.
col - gantt column to use, if not set, the first gantt column in grid will be used.
type = 0 - returns Peak - Maximum count of the resource in the range at the same time
type = 1 - returns Total - Sum of all resource units used in the range
type = 2 - returns Average - Average usage of the resource in the range
new 8.0 API method type[ ][ ]

GetResourceErrors

(string name, int type = 6)
Returns all errors or usage in grid for the resource name.
Returns two dimensional array [[Start1,End1,Count1], [Start2,End2,Count2], [Start3,End3,Count3],...]
In date range Start-End there is resource available Count. Negative Count means resource error.
type =1 - resources usage (only usage)
3 - resource availability (only availability),
5 - free resources (availability - usage),
6 - only resource errors (availability - usage, only negative Count),
Other values reserved.
new 8.0 chg 11.0 API method string

GetResourceUsage

(string name, int type, int consume, TRow row, int opt, string def, string col)
Returns Availability string as usage of given resource in chart.
Use it in formulas for own calculation and showing Availability chart.
The returned string can differ from standard availability format, but it is supported in availability chart and in negav.
name is the name of the resource. It does not need to be defined by <R> tag, it just checks the GanttResource attribute values of given tasks.
type is type of the resource, 1 - work, 2 - material.
consume (new 11.0) is consume type of material type resource, 0 per time unit, 1 all on start, 2 all on end, 3 all in the middle.
opt specifies which rows will be iterated: 0 - only the row, or the bit array:
1.bit (&1) - children of the row, 2.bit (&2) - deep (all nested children in tree), 3.bit (&4) - all siblings of the row, 4.bit (&8) - the row itself
5.bit (&16) reserved, 6.bit (&32) - (since 9.2) including hidden rows (prior 9.2 the hidden rows were calculated by default)
def if set, only rows with Def attribute named def will be iterated
col the Gantt column
new 9.2 API event type

OnGetResourceUsageRow

(TGrid grid, TRow row, bool use, string def)
Called for every source row if its data will be added to the resource usage chart. It is called for every iterated rows (hidden, deleted, with different default).
use is true if the row would be added to the resource usage chart if this event would not be defined.
def is expected row def name, set in resource usage chart definition.
return true to use this row, false to ignore it or another row to be used instead.
new 10.0 API method string

GetGanttRunResourcesString

(TRow row, string col = null)
Returns semicolon separated all resources used in the GanttRun in the row when GanttTask contains Box. col is Gantt column.
Usable to filter the row by this string in resources filter.
new 6.4 deleted 8.0 API method float[ ][ ]

GetGanttResourcesUsage

(string def, TRow row, string col, string units, int bar, bool notmp)
Removed, replaced by GetResourceErrors.
new 7.0 deleted 8.0 API method float[ ]

GetGanttResourceAvailability

(string resource, string col)
Removed, replaced by GetResourceErrors.
new 6.4 formula float

ganttresourcepeak

(string resource, string def)
Returns maximal count of the resource used in grid at one time.
resource is Name of the resource.
def is name of default row (Def attribute). Only variable rows with this default will be iterated. If not set, all variable rows are iterated.
new 6.4 formula float

ganttresourceunits

(string resource, string def)
Returns count of all allocated units for given resource in the whole grid.
If the value is multiplied by resource price, you will get the summary cost of the resource in the project.
def is name of default row (Def attribute). Only variable rows with this default will be iterated. If not set, all variable rows are iterated.
new 7.0 formula float

ganttresourcesextra

(string def)
Returns summary of extra prices assigned to all tasks.
def is name of default row (Def attribute). Only variable rows with this default will be iterated. If not set, all variable rows are iterated.
deleted 7.0 formula float

ganttresourceextra

(string resource, string def)
Since 7.0 version there are no extra prices per resource, only per task.

Availability chart

Universal chart to show availability or usage of normal or custom/not defined resource.
new 8.0 upd 11.0 <C> <cell> string

GanttAvailability

Defines the Availability chart sources.
Comma separated column (or row attribute) names, every value represents one chart.
For example GanttAvailability='A,B,C' shows three availability charts according to cell values in A, B and C column.

The Availability format (in the individual sources, e.g. in the cells A, B and C):
repeater1#date1a~date1b#count1;repeater2#date2a~date2b#count2;...
The possible values of repeater are the same as GanttUnits, e.g. "w", "d", "h" or "1", "0.5", "2", ... If the repeater is not present, the date range is not repeated.
The date range is range where the count of resources is available. The date range can be periodically repeated by the repeater.
For Material type resources is used only the first date from date range as date when the count of resources arrives.
If some date ranges are overlapped, the count values are summed. The count can be also negative to reduce the count for some range.
(Since 11.0) If count starts with '=', it resets the value in the range exactly to the count. For material it sets actual resource amount to the count. It affects only availability ranges before (in the Availability string).
If count is missing, it is 1.
All possible format combinations:
a) Set repeater, date1, date2 and the date range is less than repeater range e.g. "w#1/2/2016~1/4/2016#10", note 1/2/2016 is Saturday
Work: The date12 range is periodically repeated in the whole chart e.g. the count 10 is available on all weekends in the chart, on all workdays is 0
Material: The material arrives on every date1, periodically repeated, date2 is ignored, the first batch arrives before or on the chart start e.g. the count 10 arrives every Saturday in chart
b) Set repeater, date1, date2 and the date range is greater than or equal to the repeater range e.g. "w#1/2/2016~1/18/2016#10", note 1/2/2016 is Saturday, 1/18/2016 is Monday
Work: The date12 range is rounded to the repeater range and repeated only between the dates e.g. the count 10 is available on three weekends (1/2, 1/9 and 1/16), on other weekends and all workdays is 0
Material: The material arrives on date1 and next dates periodically repeated, until it reaches date2.
The date1 can be even less than chart start.
e.g. the count 10 arrives three times, on Saturdays 1/2, 1/9 and 1/16
c) Set repeater and date1 (date2 is missing) e.g. "w#1/2/2016#10", note 1/2/2016 is Saturday
Work: It is not repeated range starting on date1 and lasting one repeater unit e.g. the count 10 is available on one week 1/2/2016 - 1/11/2016
Material: The material arrives on the date1 and every next repeated date till chart end/td> e.g. the count 10 arrives on 1/2/2016 and every next Saturday
d) Set date1 and date2 (repeater is missing) e.g. "1/2/2016~1/4/2016#10", note 1/2/2016 is Saturday
Work: It is not repeated range between the dates e.g. the count 10 is available on one weekend 1/2/2016 - 1/4/2016
Material: The material arrives once on the date1, the date2 is ignored e.g. the count 10 arrives once on 1/2/2016
e) Set date1 (repeater and date2 is missing) e.g. "1/2/2016#10", note 1/2/2016 is Saturday
Work: It is not repeated range from date1 to chart end e.g. the count 10 is available since 1/2/2016 to chart end
Material: The material arrives once on the date1 e.g. the count 10 arrives once on 1/2/2016
f) Set repeater (date1 and date2 is missing) e.g. "w##10"
Work: The repeater is ignored, the count is available in the whole chart.
It has sense only if set GanttAvailabilityDivide, to use the repeater as the range length for dividing by.
e.g. the count 10 is available in the whole chart
Material: The material arrives on start of every repeated range in chart, the first batch arrives before or on the chart start e.g. if the chart starts on 1/1/2016 the count 10 arrives on Sundays 12/27/2015, 1/3/2016, 1/10/2016 and so on
g) Set nothing (only number as count)
Work: The count is available in the whole chart e.g. the count 10 is available in the whole chart
Material: The material arrives once on the chart start e.g. if the chart starts on 1/1/2016 the count 10 arrives on 1/1/2016

There are special settings to display global resource (defined in <R> tags) usage and availability charts. The resources are assigned to the Gantt tasks defined by GanttTask (main bar by default).
Instead of the column name use: resource_name#chart_type#def_name. It is possible to mix the resource and standard availability charts.
For example "R1#3,CellR2#1,A,B" it shows four charts, two for the resources R1 and R2 and two for the availability definition in cells A and B.
The resource_name can be direct resource name or column name where the resource name is stored.
The chart_type is:
1 - resource usage by the tasks in chart. Uses Green class by default.
2 - resource usage, for Work is the same as 1, for Material shows constant usage, not incremental. Uses Green class by default.
3 - availability chart, shows chart for the resource Availability value. Uses Yellow Class by default.
4 - actual availability at given times, for Work it is the same as 3, for Material is similar to 5, but shifted by one GanttDataUnit. Uses Yellow Class by default.
5 - free resources chart (availability minus usage). Uses default (blue/red) class by default.
6 - resource errors (availability minus usage, only negative values). Uses Red class by default.
7 - resource errors, positive (availability minus usage, only negative values as positive values). Uses Red class by default.
8 - resource errors, full (availability minus usage, only negative values as full usage at given time). Uses Red class by default.

The def_name is optional and if set, the resource usage chart iterates only rows with given Def name.
The resource usage for fixed row it counts all tasks in chart, for variable row it counts only children.
new 12.0 <C> <cell> string []

GanttAvailabilityGroups

["Availability"]
List of availability groups, comma separated. The groups are rendered in the specified order.
By default there is one availability group called "Availability". It is possible to define more separated groups of availability charts, every the group can contain also more individual charts.
The item in the list sets the part of every availability attribute name, it replaces the word "Availability" in the names.
For example, if set GanttAvailabilityGroups="A1,A2", there will be read the GanttAvailability attribute as GanttA1 and GanttA2. And similarly GanttAvailabilityType as GanttA1Type and GanttA2Type and so on.
new 12.1 <C> <cell> int

GanttAvailabilityGroupsSpread

[0]
If set, stacks the availability groups horizontally.
If set to 2, it uses / calculates the GanttAvailabilityMax / GanttAvailabilityMin from the first availability group.
The availability groups must be defined / joined or split to the same Gantt units to show correct charts, see GanttAvailabilitySplit.
The individual availability groups can be also horizontally or vertically stacked by GanttAvailabilityStack.
The GanttAvailabilityGroupsStack is defined for all availability groups together.
new 8.0 <C> <cell> int

GanttAvailabilityType

[1]
Type of the resource.
1 - Work, not consumed resource. Work resource is available only in defined range. It can be defined absolute (e.g. workers) or per range (e.g. budget), see GanttAvailabilityDivide
2 - Material, consumed resource. Material resource arrives on defined date and is available forever.
It can be:
a) one number as type for all Availability charts,
b) comma separated numbers (the same count as the Availability definition), one number per availability chart
c) column or attribute name. This cell or attribute contains the one or more numbers as type definition.
new 8.0 <C> <cell> string

GanttAvailabilityClass

[ ]
Name of custom CSS class to be used for the availability chart(s). To this name is added prefix GxGanttAvailability, where Gx is grid style prefix, e.g. GW.
There are predefined color classes: Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, Maroon, Navy, Olive, Orange, Purple, Red, Silver, Teal, White, Yellow.
If no Class is defined, the chart is blue for positive numbers and red for negative number. These color classes provide the same color for both positive and negative numbers.
It can be:
a) one string as class for all Availability charts
b) comma separated strings (the same count as the Availability definition), one class name per availability chart
c) column or attribute name. This cell or attribute contains the one or more strings as class name
new 8.0 API event string

OnGetAvailabilityClass

(TGrid grid, TRow row, string col, int value, string src, string cls, string group)
Called to compute Availability CSS class dynamically according to the value.
value is the value to be shown in the chart, cls is predefined class.
src is source column, one part from GanttAvailability.
group (since 12.0) is actual item from GanttAvailabilityGroups.
Return new CSS class to be used as full class name including all prefixes, e.g. "GWGanttAvailabilityRed"
new 11.0 upd 12.0 API event bool

OnGetAvailability

(TGrid grid, TRow row, string col, int value, string src, type[] Values, int start, int end, int min, int max, string group)
Called to modify one Availability rectangle or value in Values array.
Values is a JavaScript array of [string text, int y, int left, int width, string cls]. It is possible to modify one or more of the values in Values array.
0 - text is actual value text shown on the rectangle, it is already formatted according to the GanttAvailabilityFormat. It can contain HTML code.
1 - y is the height above x axis (or negative below x axis). In pixels.
2 - left is left position from the chart start. In pixels.
3 - width is width of the rectangle in pixels.
4 - cls is class prefix, like "Red". Like in GanttAvailabilityClass.
row, col is actual Gantt cell.
value is the number from that is calculated the y and shown in text.
src is source column, one part from GanttAvailability.
start is start date of the rectangle, end is end date of the rectangle. In milliseconds.
min is minimal value permitted for the y. Usually negative or zero. In pixels.
max is maximal value permitted for the y. Usually positive or zero. In pixels.
group (since 12.0) is actual item from GanttAvailabilityGroups.
Return false to not display the rectangle at all.
new 8.0 <C> <cell> int

GanttAvailabilityExclude

[1]
How the GanttExclude in the target row will be applied to the chart.
0 - Ignore, the charts will be shown as defined, the chart boxes can start or end on excluded dates.
1 - Apply only to bounds, the chart boxes will not start and end on excluded dates, but can contain exclude dates.
2 - Apply everywhere, the chart boxes will be shown only on not excluded dates, they will be split to these ranges.
It can be: a) one number as value for all Availability charts, b) comma separated numbers (the same count as the Availability definition), one value per availability chart.
Ignored for Material resources.
new 8.0 <C> <cell> string

GanttAvailabilityFormat

[ ]
Format of the numbers shown in the availability chart.
The same as TreeGrid number format.
It can be: a) one number as value for all Availability charts, b) comma separated numbers (the same count as the Availability definition), one value per availability chart
new 8.0 <C> <cell> type

GanttAvailabilityTextWidth

[15]
Approximate width of one text label in the chart, in pixels.
Controls how many text values (the numbers), will be show in chart, the bigger value, the less texts.
It can be: a) one number as value for all Availability charts, b) comma separated numbers (the same count as the Availability definition), one value per availability chart
new 8.0 upd 12.0 <C> <cell> int

GanttAvailabilityShift

[ ]
Vertical position of the individual Availability charts, in pixels. Similar to GanttTop.
It can be: a) one number as value for all Availability charts, b) since 12.0 comma separated numbers (the same count as the Availability definition), one value per availability chart
new 12.0 <C> <cell> int

GanttAvailabilityHeight

[ ]
Height of every the availability chart, in pixels. If not set it set as row height minus the biggest GanttAvailabilityShift value.
The charts are not overflowed to this space, it is used just to calculate height of the charts.
new 12.0 <C> <cell> int

GanttAvailabilityStack

[0]
If and how the charts will be stacked to one bar. 0 no, 1 vertically, 2 horizontally.
If stacked, all the charts are automatically split to the smallest parts among the charts.
To display summary label for vertically stacked chart, define another availability chart that sums all the charts and set its GanttAvailabilityVPos to 16 to show only its label.
To stack some charts vertically and some horizontally, define more GanttAvailabilityGroups and set GanttAvailabilityGroupsSpread for horizontal stacking.
new 12.0 <C> int

GanttAvailabilityVPos

[0]
How the text will be vertically positioned. Bit array.
It can be: a) one number as value for all Availability charts, b) comma separated numbers (the same count as the Availability definition), one value per availability chart
1.-3. bit (&7)Vertical position of the text regarding to the bar.
0 above, 1 top, 2 center, 3 bottom, 4 below
4. bit (&8)If set, permits text showing outside the availability height
5. bit (&16)If set, does not show the bar, only the text. For stacked bars it takes the bar height as zero.
It can be: a) one number as value for all Availability charts, b) comma separated numbers (the same count as the Availability definition), one value per availability chart
new 12.0 <C> int

GanttAvailabilityHPos

[0]
How the text will be horizontally positioned. 0 center, 1 left, 2 right, 3 center left half, 4 center right half
It can be: a) one number as value for all Availability charts, b) comma separated numbers (the same count as the Availability definition), one value per availability chart
new 12.0 <C> string

GanttAvailabilityTextClass

[ ]
Color class of the texts. If not set, it is used bar color set by GanttAvailabilityClass.
new 12.0 <C> int

GanttAvailabilityTextRepeat

[500]
If set, it will repeat the text label every given pixels in large chart parts.
new 15.1 <C> int

GanttAvailabilityTextShift

[0]
If overlaying texts are vertically shifted. 0 - no, 1 - yes, 2 yes, and displays all text, including near ones.
It can slow down the Gantt render!
new 8.0 <C> bool

GanttAvailabilityZero

[0]
If set to 1, the zero values will be shown in chart too, as small positive boxes.
new 9.3 <C> bool

GanttAvailabilityJoin

[1]
If set to 0, it can display adjacent ranges with the same value.
If set to 1, the adjacent ranges with the same value will be joined to longer range.
new 10.0 <C> int

GanttAvailabilitySplit

[0]
If set to 1, all the ranges will be split to GanttAvailabilityUnits.
If set to 2, it works like 1 and also the adjacent ranges inside one GanttAvailabilityUnits unit will be joined. The resulted value will be summary or maximum according to the GanttAvailabilitySum.
new 9.3 chg 10.0 upd 11.0 <C> type

GanttAvailabilitySum

[0]
If set to 1, all the values shown on the chart will be multiplied by the length of the range in units set by GanttAvailabilityUnits.
If set to GanttUnits value, all the values shown on the chart will be multiplied by the length of the range in these units.
Since 11.0 it can be: a) one value as value for all Availability charts, b) comma separated values (the same count as the Availability definition), one value per availability chart
new 11.0 <C> type

GanttAvailabilitySumBars

[0]
If set to 1, all the bars' heights on the chart will be multiplied by the length of the range in units set by GanttAvailabilityUnits.
If set to GanttUnits value, all the bars' heights on the chart will be multiplied by the length of the range in these units.
It can be: a) one value as value for all Availability charts, b) comma separated values (the same count as the Availability definition), one value per availability chart
new 11.0 <C> type

GanttAvailabilityDivide

[0]
If set to 1, all the counts in the availability string are divided by the date range length in GanttAvailabilityUnits.
If set to GanttUnits value, all the counts in the availability string are divided by the date range length in these units.
So it shows ratio counts instead of absolute counts. It affects both the availability bars and texts.
Can be used only for work type resource. It defines range resource like budget.
The divided values can be summed back in the same or different ranges by GanttAvailabilitySum (values) and / or by GanttAvailabilitySumBars (bars).
It can be: a) one value as value for all Availability charts, b) comma separated values (the same count as the Availability definition), one value per availability chart
new 10.0 <C> string

GanttAvailabilityUnits

[""]
Units (like GanttUnits) used for GanttAvailabilitySplit, GanttAvailabilityDivide and GanttAvailabilitySum.
If not set, it is GanttDataUnits value. If set to "0", it is GanttUnits value.
new 9.3 <C> int

GanttAvailabilityTransparent

[1]
If the second and next level bars will be transparent to show also the bars under.
Showing many tags with opacity in Firefox can remarkably slow down the page.
0 - no, 1 - in all browsers except Firefox, 2 - in all browser
new 10.0 <C> int

GanttAvailabilityShow

[3]
What will be shown in the chart: 0 - nothing, 1 - only bars, 2 - only texts, 3 - both bars and texts.
new 15.1 <C> bool

GanttAvailabilityHidden

[0]
If set, calculates resources chart from all rows, including hidden / filtered rows.
new 8.0 <C> <cell> int

GanttAvailabilityMin

[ ]
Minimal value in the chart, specifies height of the chart, lower limit. Lower values will be displayed as high as this limit, their size label will be unchanged.
If not set, the lower limit will be calculated as the smallest value in all the Availability charts in the row.
new 8.0 <C> <cell> int

GanttAvailabilityMax

[ ]
Maximal value in the chart, specifies height of the chart, upper limit. Higher values will be displayed as high as this limit, their size label will be unchanged.
If not set, the upper limit will be calculated as the biggest value in all the Availability charts in the row.
new 8.0 formula string

negav

(string availability)
Negates the Availability definition, just changes sign of all counts in the definition.
Use it in formulas to subtract Availability values.
Don't forget to add the ';' when summing or subtracting the Availability values!
For example Formula = " Col1 + ';' + Col2 + ";" + negav(Col3) ", all three columns contain the Availability definitions.

Resource usage chart

Replaced by GanttAvailability with special resource format string.

The usage of individual resource in grid can be shown in row in gantt Chart object of type "Resources".
Set attribute GanttChart="Resources".
The resources usage chart can be combined also with other Gantt objects.
new 6.4 deleted 8.0 <C> <cell> string

GanttChart

GanttChart = "Resources"
Shows the resource usage chart in the Gantt cell
new 6.4 deleted 8.0 <C> <cell> string

GanttChartResource

Name of the resource to show in the resource usage chart.
new 7.0 deleted 8.0 <C> <cell> int

GanttChartResourceType

[3]
What chart will be shown.
1 - resource usage, 2 - resource availability, 3 - both resource usage and availability
4 - resource errors, 6 - both resource errors and availability
The values 5 and 7 are also possible, but it has not sense to show both resource errors and usage charts.
new 6.4 deleted 8.0 <C> <cell> string

GanttChartResourceDef

If set, only rows with the given default name (Def attribute) are iterated for the resource usage.
new 6.4 deleted 8.0 <C> <cell> string

GanttChartResourceFormat

Format of the number shown in the resource chart.
The same as TreeGrid number format.

Automatically generated resource usage chart

The resource usage chart can be automatically generated from another (even invisible) grid.
The resources list can be modified, the resources can be added, deleted, changed or renamed.

There are must be two grids on page, master and detail.

Detail grid is the grid displaying the resources usage chart.
It should have defined only layout XML source.
The body rows are automatically generated from master's <Resources> list. This way is defined by detail's attributes <Cfg GanttResources... /> attributes.
The detail grid can contain Gantt column to show the resources usage from the master grid. Use the attributes for Resources usage chart.
The detail's Gantt column reads these attributes from master's Gantt column:
  DataUnits,LastUnit,Exclude,Include,MaxExclude,HeaderTrim,Background,Zoom,SmoothZoom,ZoomList,Width,Units and the <Zoom> tag
Changes in the resources list should be uploaded from detail grid as normal changes in data rows.

Master grid is the source grid.
The master grid must contain standard Gantt chart with tasks with assigned resources and global resources list in <Resources>.
The master's <Resources> list is automatically updated after any change (add, deleted, modify, rename) in the detail grid.
The master grid be displayed and recalculated according to the changes in resources.
The resources assigned to tasks are not automatically changed after resource is renamed or deleted and should be done manually in some API event.
Or the master grid can be hidden (<treegrid Hidden='1') and used only as resources list source
new 6.4 <Cfg> string

GanttResourcesMaster

Base attribute in automatically generated resource usage chart.
Specifies id of the master grid from where this detail grid's resource chart will be calculated.
new 6.4 <Cfg> string

GanttResourcesName

["Name"]
Name of column in detail grid where the resource Name will be displayed and edited
new 7.0 <Cfg> string

GanttResourcesType

["Type"]
Name of column in detail grid where the resource Type will be displayed and edited
new 6.4 <Cfg> string

GanttResourcesPrice

["Price"]
Name of column in detail grid where the resource Price will be displayed and edited
new 7.0 <Cfg> string

GanttResourcesAvailability

["Availability"]
Name of column in detail grid where the resource Availability will be displayed and edited
new 6.4 deleted 7.0 <Cfg> string

GanttResourcesMaxCount

["MaxCount"]
Renamed to GanttResourcesAvailability
new 6.4 <Cfg> string

GanttResourcesGantt

[first Gantt column in master grid]
The Gantt column in master grid where to read the resources usage (this attribute is still set in detail grid).
new 6.4 <Cfg> string

GanttResourcesChart

[first Gantt column in detail grid]
The Gantt column in detail grid where to display the resources chart
new 15.1 <Cfg> bool

GanttResourcesChart

[1]
If set to 0, the detail grid rows are not automatically generated according to master grid resources.
new 6.4 <treegrid,bdo> bool

Hidden

[0]
If set to 1 the grid is never rendered and can be used as invisible data source for other grids or other page components.
The hidden grid has not set MainTag and cannot be shown at all.
It can be set in master grid to use it just as data source.