The eXSuite/JS library includes several HTML5 standalone-components, written in pure JavaScript, that uses no third-party libraries. The eXSuite/JS library includes different type of components such as:
After you purchased the eXSuite/JS library you got a runtime-license key that allows you to use the eXSuite/JS library
(or any of our /JS components) with your web application. If you are not specifying the runtime-license key you may
get any of the following messages:
the license is missing
the license is invalid
the license is expired
In order to use the eXSuite/JS library you have to call exontrol.license() method as in the following samples:
The exontrol.license() method is defined by exontrol.common.min.js file
(<script type="text/javascript" src="exontrol.common.min.js"></script>,
var exontrol = require("app/exontrol.common.min.js"), ... ). Once this call is made you can use any component of eXSuite/JS with
your web application.
Each of our /JS component provides a Listeners field of exontrol.Lts type
that holds the events of the /JS component. The exontrol.Lts class supports the
following methods:
Add(name, callback) (or add(name, callback)) method adds a handler for the specified event (name indicates the name of the event to handle)
remove(name[, callback]) method removes the event handler
clear() method clears all the handlers for all events (previously added using the Add or add method)
forEach(callback, thisArg) method enumerates the handlers for the events, where callback is a function of callback(name) type and name specifies the name of the event
lock() method prevents firing any event until the unlock() method is called (use the lock() method to lock the events)
unlock() method resumes firing the events, previously locked by lock() method (use the unlock() method to unlock the events)
The help folder includes the documentation for the /JS component. The Events section lists and describes all events the control supports.
Each event provides zero or one parameter, that may include one or more members or fields (parameters).
For instance, the onselchange(oEvent) event (of exontrol.Gantt type) notifies that the control's selection has been changed
(items section), where oEvent parameter could be one of the following:
oEvent {null}, indicates that the control has no selected items
oEvent {Item}, indicates an object of Item type that defines the control's single-item selected
oEvent {array}, specifies an array of [Item] type that holds all selected items within the control
The following snippet of code shows you how to get list all the events the /JS component currently supports:
where oGantt is an object of exontrol.Gantt type. The Listeners member
is supported by all of our /JS components. Run the script and the output displays the following:
Each of our /JS component provides a Shortcuts field of exontrol.Sts type
that holds the keyboard shortcuts of the /JS component. The exontrol.Sts class supports the
following methods:
Add(shortcut, callback, thisArg, description), associates a callback to a keyboard
shortcut. The callback(oShortcut) is invoked once the user presses the keyboard
shortcut. The shortcut parameter is a string that specifies the keyboard
combination. The shortcut parameter supports meta keys as SHIFT, ALT or CTRL
to be combined with any other key using the + sign. The shortcut parameter supports digits from 0 to 9, letters from
A to Z, and the following special keys (: keycode)
For instance, "CTRL + Z" indicates that the shortcut is activated if the user press CTRL and Z keys.
Remove(shortcut[, thisArg]), removes the shortcut
Clear(), removes all shortcuts
Lock(shortcut, thisArg), locks the shortcuts, until the Unlock() method is called.
The shortcut's callback is not invoked while the shortcut is locked and the
user presses the keyboard shortcuts. You can lock all shortcut for all
controls Lock(null,null), you can lock the shortcut for all control Lock(shortcut,null), or any shortcut of a specified
control using Lock(null,thisArg) method
Unlock(shortcut, thisArg), unlocks the shortcut(s)
forEach(callback, thisArg), enumerates all shortcuts, where callback is a
function of callback(oShortcut) type
For instance, let's say we need to remove the control's selection
(bars, links or items) once the
user presses the Delete key. In order to provide keyboard support for the
component, the <canvas> element you must include the tabIndex
attribute, as
<canvasid="cvsGantt"width="1024"height="640"tabIndex="0">.
The following sample adds a shortcut to Delete key to call the control's
RemoveSelection() method (removes the selected-items):
The following sample adds a shortcut to Delete key to call the chart's RemoveSelection()
method, if there are bars, else the control's RemoveSelection() method (removes
the selected-bars if any, else removes the selected-items):
where oGantt is an object of exontrol.Gantt type. Run the script and the output
displays the following:
{shortcut: 'CTRL+SHIFT', description: 'toggles the type of exchange-windows', callback: �, thisArg: o, keyState: 0}
{shortcut: 'CTRL+Z', description: 'undos the last exchange-window operation.', callback: �, thisArg: o, keyState: -1}
{shortcut: 'CTRL+Y', description: 'redos the last exchange-window operation.', callback: �, thisArg: o, keyState: -1}
{shortcut: 'ALT+ArrowDown', description: 'focuses the filter-prompt', callback: �, thisArg: n, keyState: -1}
{shortcut: 'ALT+ArrowUp', description: 'focuses the filter-prompt', callback: �, thisArg: n, keyState: -1}
A Shape object represents a set of properties or attributes to apply to an UI
part of the component. For instance, the background color of a node within the
exontrol.OrgChart control. Almost all UI parts of the components support shapes.
A property or field of the object that includes "shape" supports
shapes, such as "shape", "shapes", "cellShape",
Shape / GetShape() / SetShape(value) , Shapes / GetShapes() / SetShapes(value),
CellShapes / GetCellShapes() / SetCellShapes(value).
The following screen shot shows the 'Anita' node of exontrol.OrgChart control with its default shape:
The shape (exontrol.Def.Shape) property or field can include one or more of the following attributes/options:
opacity {number}, sets the opacity level of the object, as a number between 0.0 (fully transparent) and 1.0 (fully opaque)
null {null}, the opacity field is ignored
0 {number}, completely transparent
0.5 {number}, semi-transparent
1 {number}, fully-opaque
client {string}, specifies a collection of up to four expressions that can define a different client area to show the object (see also padding). A string expression of
"[expression, expression, expression, expression]" type, that determines the x, y, width and height of the new client. The client field must starts with "[" and ends with "]", else it has no effect.
Each expression supports the following keywords:
x {number}, defines the object's default-left position
y {number}, defines the object's default-top position
width {number}, indicates the default-width of the object
height {number}, indicates the default-width of the object.
null {null}, the client field is ignored
"[x+64,y-32]" {string}, displays the object at a different position (offset by 64-pixels on x-axis, and 32-pixels up on y-axis)
"[x-8,y-4,width+2*8,height+2*4]" {string}, is equivalent of padding on [8,4]
"[x+(width-16)/2,y+(height-16)/2,16,16]" {string}, centers a 16x16 rectangle inside the client
pad {(number|string|array)}, defines how much the object's client area is increased or decreased (see also client). Defines a numeric, string or array value that determines the pad to apply.
null {null}, indicates that the pad field is ignored
4 {number}, increases the object's client with 2 4-pixels, which includes width and height
"8,4" {string}, increases the object's width with 2 8-pixels and object's height with 2 4-pixels
[8,4] {array}, increases the object's width with 2 8-pixels and object's height with 2 4-pixels
fillColor {string}, defines the color to show the object's background.
null {null}, indicates that the fillColor field is ignored
"transparent" {string}, fills the object's background with rgba(0,0,0,0)/transparent color
"red" {string}, fills the object's background with red color
"#ff0000" {string}, fills the object's background with red color
"rgba(255,0,0,0.5)" {string}, fills the object's background with semi-tranparent red color
fillGradientColor {string}, defines the gradient type and colors to show the object's background.
The fillColor field defines the starting color. The fillGradientColor field has effect only if the fillColor field is defined (not null or undefined).
The first field of the fillGradientColor field could start with any of the following:
"vertical", defines a vertical-gradient (default)
"horizontal", defines a horizontal-gradient
"diagonal", defines a diagonal-gradient
"radial", defines a radial-gradient
null {null}, specifies that the fillGradientColor field is ignored, so no gradient is applied on the object's background
"black" {string}, specifies a vertical-gradient that starts from fillColor and ends on black
"horizontal,red,green,blue" {string}, specifies a horizontal-gradient that starts from fillColor, continues with red, green and ends on blue
"diagonal,red,rgba(0,255,0,0.5),blue" {string}, specifies a diagonal-gradient that starts from fillColor, continues with red, 50% green and ends on blue
"radial,black" {string}, specifies a radial/circular-gradient that starts from fillColor and ends on black
clientText {string}, specifies a collection of up to four expressions that defines a new client area to display the text (offset, pad), relative to the shape's client. A string expression of
"[expression, expression, expression, expression]" type, that determines the x, y, width and height of the new client. The clientText field must starts with "[" and ends with "]", else it has no effect.
Each expression supports the following keywords:
x {number}, defines the object's default-left position
y {number}, defines the object's default-top position
width {number}, indicates the default-width of the object
height {number}, indicates the default-width of the object.
null {null}, the clientText field is ignored
"[x+64,y-32]" {string}, displays the object at a different position (offset by 64-pixels on x-axis, and 32-pixels up on y-axis)
"[x-8,y-4,width+2*8,height+2*4]" {string}, is equivalent of padding on [8,4]
"[x+(width-16)/2,y+(height-16)/2,16,16]" {string}, centers a 16x16 rectangle inside the client
text {string}, defines the (additional )caption to be displayed on the object.
The text supports ex-HTML tags as explained here.
null {null}, the text field is ignored
"this is a <fgcolor red>test</fgcolor>" {string}, where "test" is displayed in red color
"this is a <b><off 4>test</off></b> of ex-HTML caption" {string}, where "test" is displayed in bold with a different vertical-offset
formatText {exontrol.DrawTextFormatEnum}, specifies the format to display the object's
caption or text, as a combination of one or more exontrol.DrawTextFormatEnum
flags. The exontrol.DrawTextFormatEnum type support the following flags:
exTextAlignTop (0x00), justifies the text to the top of the rectangle
exTextAlignLeft (0x00), aligns text to the left
exTextAlignCenter (0x01), centers text horizontally in the rectangle
exTextAlignRight (0x02), aligns text to the right
exTextAlignVCenter (0x04), centers text vertically
exTextAlignBottom (0x08), justifies the text to the bottom of the rectangle.
exTextAlignMask (0x0F), specifies the mask for text's alignment.
exTextWordBreak (0x10), breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the lpRect parameter. A carriage return-line feed sequence also breaks the line. If this is not specified, output is on one line.
exTextSingleLine (0x20), displays text on a single line only. Carriage returns and line feeds do not break the line.
exTextExpandTabs (0x40), expands tab characters. The default number of characters per tab is eight.
exPlainText (0x80), treats the text as plain text.
exTextNoClip (0x0100), draws without clipping.
exHTMLTextNoColors (0x0200), ignores the <fgcolor> and </bgcolor> tags.
exTextCalcRect (0x0400), determines the width and height of the text.
exHTMLTextNoTags (0x0800), ignores all HTML tags.
exTextPathEllipsis (0x4000), for displayed text, replaces characters in the middle of the string with ellipses so that the result fits in the specified rectangle. If the string contains backslash (\) characters, exTextPathEllipsis preserves as much as possible of the text after the last backslash.
exTextEndEllipsis (0x8000), for displayed text, if the end of a string does not fit in the rectangle, it is truncated and ellipses are added. If a word that is not at the end of the string goes beyond the limits of the rectangle, it is truncated without ellipses.
exTextWordEllipsis (0x040000), truncates any word that does not fit in the rectangle and adds ellipses.
null {null}, defines a single-line centered text (equivalent of exontrol.DrawTextFormatEnum.exTextSingleLine | exontrol.DrawTextFormatEnum.exTextAlignCenter | exontrol.DrawTextFormatEnum.exTextAlignVCenter | exontrol.DrawTextFormatEnum.exTextWordEllipsis )
32 or exontrol.DrawTextFormatEnum.exTextSingleLine {number}, defines a single-line text
0x2A or exontrol.DrawTextFormatEnum.exTextSingleLine | exontrol.DrawTextFormatEnum.exTextAlignRight | exontrol.DrawTextFormatEnum.exTextAlignBottom {number}, defines a single-line text right/bottom-aligned
tfi {(string|exontrol.TFI)}, specifies the font-attributes (bold, italic, ...) to apply on the caption.
null {null}, the tfi field is ignored
"bold monospace 16 <fg blue>" {string}, defines Monospace font of 16px height, bold and blue
{bold: true} {object}, the caption shows in bold
{fontName: "monospace"} {object}, the caption shows with a different font
clipText {boolean}, indicates whether the caption is clipped to object.
false {boolean}, the text/caption is not clipped
true {boolean}, the text/caption is clipped to the object's client-rectangle
frameColor {string}, defines the color to show the object's frame (see also primitive)
null {null}, specifies no frame
"transparent" {string}, defines a transparent frame
"red" {string}, defines a red-frame
"#ff0000" {string}, defines a red-frame
"rgba(255,0,0,0.5)" {string}, defines a semi-transparent red-frame
frameSize {number}, defines size of the object's frame/border (requires
frameColor)
null {null}, draws the frame, only if the frameColor is defined
0 {number}, shows no frame
4 {number}, defines a 4-pixels frame
frameDash {array}, defines style of the object's frame (requires frameColor). An Array of numbers which specify distances to alternately draw a line and a gap (in coordinate space units). If the number of elements in the array is odd, the elements of the array get copied and concatenated.
null {null}, defines a solid frame
[] {array}, indicates a solid frame
2 {number}, will become [2, 2, ...]
[5, 15, 25] {array}, will become [5, 15, 25, 5, 15, 25, ...]
frameJoin {string}, determines how two connecting segments into the object's frame are joined
together (requires frameColor). There are three possible values for this property as follows::
"round", rounds off the corners of a object by filling an additional sector of disc centered at the common endpoint of connected segments. The radius for these rounded corners is equal to the line width
"bevel", fills an additional triangular area between the common endpoint of connected segments, and the separate outside rectangular corners of each segment
"miter", connected segments are joined by extending their outside edges to connect at a single point, with the effect of filling an additional lozenge-shaped area.
null {null}, defines a "miter" join
"round" {string}, rounds off the corners of a object by filling an additional sector of disc centered at the common endpoint of connected segments.
frameCap {string}, determines how the end points of every line into the object's frame are
drawn (requires frameColor, frameDash). There are three possible values for this property as follows:
"butt", the ends of lines are squared off at the endpoints
"round", the ends of lines are rounded
"square", the ends of lines are squared off by adding a box with an equal width and half the height of the line's thickness
null {null}, indicates "but" style
"round" {string}, the ends of lines are rounded
pattern {exontrol.PatternEnum}, defines the pattern to show on the object's background (see also patternColor).
The exontrol.PatternEnum type defines the following values:
exPatternEmpty (0), defines no pattern
exPatternSolid (1), defines a solid-pattern
exPatternDot (2), defines a dot-pattern
exPatternShadow (3), defines a shadow-pattern
exPatternNDot (4), defines a not-dot-pattern
exPatternFDiagonal (5), defines a forward-diagonal-pattern
exPatternBDiagonal (6), defines a backward-diagonal-pattern
exPatternDiagCross (7), defines a cross-diagonal-pattern
exPatternVertical (8), defines a vertical-pattern
exPatternHorizontal (9), defines a horizontal-pattern
exPatternCross (10), defines a cross-pattern
exPatternBrick (11), defines a brick-pattern
exPatternYard (12), defines a yard-pattern
null {null}, defines no pattern
0 or exontrol.PatternEnum.exPatternEmpty {number}, defines an empty pattern (no pattern)
7 or exontrol.PatternEnum.exPatternDiagCross {number}, defines a cross-diagonal-pattern
patternColor {string}, defines the color to show the object's pattern (see also pattern). The patternColor property has effect only if the pattern property is defined.
null {null}, indicates a black-color
"red" {string}, defines a red-pattern
"#ff0000" {string}, defines a red-pattern
"rgba(255,0,0,0.5)" {string}, defines a semi-transparent red-pattern
shadow {object}, keeps information about the box's shadow, as an object of
{color, blur, x, y} type.
The shadow object includes any of following fields:
blur {number}, defines the blur level for shadows (the blur field is
required, else color, x or y fields have no effect)
color {string}, defines the shadow's color
x {number}, defines the horizontal distance of the shadow from the
object
y {number}, defines the vertical distance of the shadow from the
object
null {null}, indicates no shadow
{blur: 4} {string}, defines a 4-pixels wide shadow
{blur: 4, x: 2, y: 2} {string}, defines a 4-pixels wide shadow
primitive {(string|callback)}, defines the type of frame the object is displaying (see also
pArg). The primitive can be any of the following predefined values:
"Rect" {string}, defines a rectangular-object
"RoundRect" {string}, defines a round rectangular-object. The pArg.x, pArg.y define the radius of round-corners.
"BevelRect" {string}, defines a bevel rectangular-object. The pArg.x, pArg.y define the radius of round-corners.
"Ellipse" {string}, defines an elliptic-object
"Pie" {string}, defines a pie-object. The pArg.startAngle property defines the angle (radians) the pie starts from. The pArg.sweepAngle property defines the length (radians) of the pie.
"Arc" {string}, defines an arc-object. The pArg.startAngle property defines the angle (radians) the arc starts from. The pArg.sweepAngle property defines the length (radians) of the arc.
"Oval" {string}, defines an oval-object.
"Circle" {string}, defines a circle-object.
"Triangle" {string}, defines a triangle-object.
"EllipticPolygon" {string}, defines an elliptic-polygon-object. The pArg.edges property defines the number of edges within the elliptic-polygon. The pArg.startAngle property defines the angle (radians) the elliptic-polygon starts from.
"Polygon" {string}, defines a polygon-object. The pArg.points property defines points of the polygon.
"Star" {string}, defines a star-object. The pArg.edges property defines the number of edges of the star. The pArg.startAngle property defines the angle (radians) the star-object starts from. The pArg.deep defines the star's depth, while pArg.tilt defines the star's tile as a number between 0 and 1
"Spline" {string}, defines the Catmull-Rom spline-primitive (a curve that goes through its control points). The pArg.points property defines the control-points of the curve. The pArg.tension property specifies the tension of the curve, as a value ptFrom 0(round) to 1 (rectangular). The pArg.alpha specifies the alpha of the curve (0.5 by default), while pArg.closed defines a closed curve
"Summary" {string}, defines a summary-object (outlines the summary-bar)
"Deadline" {string}, defines a deadline-object (outlines the deadline-bar)
Also, the primitive can be a function of callback(ctx, client) type (let you define any type of
shape), where:
ctx {CanvasRenderingContext2D}, indicates the context to draw
client {number[]} An array of [x, y, width, height] type that specifies the rectangle to be clipped by primitive
null {null}, defines a rectangular-object
"Ellipse" {string}, defines an elliptic-object
pArg {object}, defines an object that holds different options to apply on
the primitive. The pArg field supports any of the following fields:
x {number}, defines the x-radius of the round-rectangle object. The x field has effect only if the primitive is: "RoundRect" or "BevelRect"
y {number}, defines the y-radius of the round-rectangle object. The y field has effect only if the primitive is: "RoundRect" or "BevelRect"
startAngle {number}, defines the angle (radians) the object's primitive starts from. The startAngle field has effect only if the primitive is: "Arc", "Pie", "EllipticPolygon" or "Star"
sweepAngle {number}, defines the length (as an angle in radians) of the object's primitive. The sweepAngle field has effect only if the primitive is: "Arc" or "Pie"
edges {number}, defines the number of edges of the object's primitive. It should be greater or equal than 3. The edges field has effect only if the primitive is: "EllipticPolygon" or "Star"
points {array}, defines the points object's polygon, as an array of [[x,y]] or [{x,y}] type. There must be more than 3-points defined. The points field has effect only if the primitive is: "Polygon" or "Spline"
deep {number}, defines star's deep (defines the isotoxal star-polygon's deepness). The deep field has effect only if the primitive is: "Star"
tilt {number}, defines star's tilt, as a number between 0 and 1. The tilt field has effect only if the primitive is: "Star"
draw {callback}, specifies a function of callback(ctx, client, clientShape, oShapeData) type to let you perform custom drawing on the current shape. By default, the draw field is null, which indicates that it has no effect. The draw callback supports up to four parameters as explained:
ctx {CanvasRenderingContext2D}, An object of CanvasRenderingContext2D type that specifies the context to draw
client {number[]}, Indicates an array of [x,y,width,height] type that specifies the original client area to paint the shape
clientShape {number[]}, Indicates an array of [x,y,width,height] type that specifies the client area to paint the shape
oShapeData {object}, Indicates an extra-data associated with the shape
The following function draws a percent-bar inside the node, based on the percent field of the Options:
The console.log(exontrol.ToString.Quote(oShapeData)) statement is
provided for debugging purpose only, to display the information the oShapeData parameter is carrying.
The type of oShapeData parameter varies from the control to control. For
instance, for exontrol.OrgChart the oShapeData parameter is an object of
{node, expandType} type, that specifies the node the shape is applied too
(or child, assistant or group expand/collapse glyphs in case the shape is
applied to them too)
Some UI parts of the control supports different shapes on
different states, such as normal, hover, click or disabled.
In other words, you can define the shape to apply on the UI part once mouse
pointer hovers it, clicks it or it is disabled. The Shape field can be an object of {normal, hover, click, disabled} type. The normal, hover, click and disabled are objects of
exontrol.Def.Shape type.
Currently, the following UI parts support normal, hover, click and disabled shapes:
any item, column(header) of the exontrol.Tree, exontrol.Pivot, exontrol.Gantt component
any element of the exontrol.Surface, exontrol.Swimlane component
any node or expand/collapse glyphs of the exontrol.OrgChart component
any UI part of the exontrol.ScrollBar component
any UI part of the exontrol.Calendar component
any UI part of the exontrol.Menu component
Shortly, for any UI part mentioned above you can specify a normal, hover, click or disabled shape.
The following sample inflates the node's client area once the mouse-pointer hovers or clicks it:
The Shapes property specifies the shapes to apply on different group of UI parts. For instance, how a column's header shows or how an element is displayed.
For instance, the exontrol.OrgChart's shapes option can define the shape (or visual appearance) for the following UI parts:
"node" (node), defines the visual appearance for any node
"nodea" (assistant-node), defines the visual appearance for assistant-nodes
"nodeg" (group-node), defines the visual appearance for group-nodes
"expand", specifies the visual appearance for expand/collapse glyphs
"select" (selection), defines the visual appearance for selected nodes
"frameFit", defines the visual-appearance to display the frame while fitting nodes into the control's client area by drag
"frameSel", defines the visual appearance to display a frame while selecting nodes by drag
"frameDrag", specifies the visual appearance to display a frame while dragging the nodes
The shapes field defines the shapes each part of the control can display. The shapes field customizes the control's visual appearance.
The format of shapes property is:
"shape(part),shape(part),..."
where:
"shape", defines the shape to apply on the UI part as one of the following:
◦ any of 140 color names any browser supports (such as red, blue, green, ...)
◦ hexadecimal colors, is specified with: #RRGGBB, where the RR (red), GG (green) and BB (blue) hexadecimal integers specify the components of the color. All values must be between 00 and FF (such as #0000ff which defines a blue background)
◦ hexadecimal colors with transparency, is specified with: #RRGGBBAA, where AA (alpha) value must be between 00 and FF (such as #0000ff80 which defines a semi-transparent blue background)
◦ RGB colors, is specified with the RGB(red, green, blue) function. Each parameter (red, green, and blue) defines the intensity of the color and can be an integer between 0 and 255( such as rgb(0,0,255) that defines a blue background)
◦ RGBA colors, are an extension of RGB color values with an alpha channel as RGBA(red, green, blue, alpha) function, where the alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque) ( such as rgba(0,0,255,0.5) which defines a semi-transparent blue background)
◦ HSL colors, is specified with the HSL(hue, saturation, lightness) function, where hue is a degree on the color wheel (from 0 to 360) - 0 (or 360) is red, 120 is green, 240 is blue. saturation is a percentage value; 0% means a shade of gray and 100% is the full color. lightness is also a percentage; 0% is black, 100% is white. HSL stands for hue, saturation, and lightness - and represents a cylindrical-coordinate representation of colors (such as hsl(240, 100%, 50%) that defines a blue background)
◦ HSLA colors, are an extension of HSL color values with an alpha channel - which specifies the opacity of the object as HSLA(hue, saturation, lightness, alpha) function, where alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque) (such as hsla(240, 100%, 50%,0.5) that defines a semi-transparent blue background)
◦ a JSON representation of the shape object to apply (while it starts with { character, such as '{"normal": {"primitive": "RoundRect","fillColor":"black","tfi": {"fgColor": "white"}}}')
◦ specifies the name of the field within the exontrol.Shapes.OrgChart object (while it starts with a lowercase letter, such as nodeA which refers to exontrol.Shapes.OrgChart.nodeA shape)
◦ specifies the name of the field within the exontrol.Shapes object (while it starts with an uppercase letter, such as Button which refers to exontrol.Shapes.Button shape)
"part", defines the name of the part the shape is applied on
For instance:
"button(x),Button(y)" indicates that exontrol.Shapes.OrgChart.button is applied on part "x", while exontrol.Shapes.Button is applied to "y" part
"button(x,y),Button(y)" indicates that exontrol.Shapes.OrgChart.button is applied on part "x", , while exontrol.Shapes.OrgChart.button merged with exontrol.Shapes.Button is applied on y
By default, the shapes / Shapes / GetShapes() option / property / method of the exontrol.OrgChart control is:
node(node), every node on the chart is shown using the exontrol.Shapes.OrgChart.node shape ()
nodeA(nodea), every assistant-node on the chart is shown using the exontrol.Shapes.OrgChart.nodeA shape ()
nodeG(nodeg), every group-node on the chart is shown using the exontrol.Shapes.OrgChart.nodeG shape ()
Expand(expand), expand/collapse glyphs are shown using the exontrol.Shapes.Expand shape ()
frameSel(select), the selected-nodes displays over the exontrol.Shapes.OrgChart.frameSel shape ()
FrameSel(frameSel), defines the visual appearance to display a frame while selecting nodes by drag using the exontrol.Shapes.FrameSel shape ()
FrameFit(frameFit), defines the visual-appearance to display the frame while fitting nodes into the control's client area by drag using the exontrol.Shapes.FrameFit shape ()
Empty(frameDrag), specifies the visual appearance to display a frame while dragging the nodes using exontrol.Shapes.Empty ()
The tfi field of exontrol.TFI type (Tfi property, GetTfi() / SetTfi(value) method)
gets or sets the font attributes to apply on the entire control (tfi member of the control's options)
or on UI parts of the control (tfi member of the shape object). The tfi field
applies font attributes to captions within the control. The tfi field can be
defined using a string representation such as "b monospace 16" or "bold 16px monospace" or as
an object such as {bold: true, fontName: "monospace", fontSize: 16}.
The tfi option can be configured using any of the following methods:
"[font-style] [font-variant] [font-weight] [font-size]/[font-height] [font-family]" {string} format, mirroring the structure returned by the CSS font property, where:
[font-style]: Defines the style of the font. Common values include:
normal
italic
oblique
[font-variant]: Specifies the variant of the font. Common values include:
normal
small-caps
[font-weight]: Indicates the weight (or boldness) of the font. Common values include:
normal
bold
bolder
lighter
Numeric values from 100 to 900 (e.g., 400 for normal, 700 for bold)
[font-size]: Defines the size of the font. It can be specified in various units such as:
Pixels (e.g., 16px)
Em units (e.g., 1em)
Percentages (e.g., 100%)
Points (e.g., 12pt)
[font-height]: Optional and defines the line height, specifying the space between lines of text. It follows the font size and is separated by a slash (e.g., 16px/1.5).
[font-family]: Specifies the font family to use. Multiple font families can be listed, separated by commas, to provide fallback options. Examples include:
Arial
"Times New Roman"
Georgia
Generic family names like serif, sans-serif, monospace
For instance, oControl.Tfi = getComputedStyle(document.body).font, ensures that the control uses the document's font.
Any combination of the following flags separated by spaces. For instance, oControl.Tfi = "<fgColor blue> bold 16 cursive", shows the control in bold and blue using the 'Cursive' font family with a font size of 16 pixels.
TFI {object}, where the object supports fields such as: bold, italic, underline, strikeout, fontName, fontSize, fgColor, bgColor, shaColor, outColor and graColor. For instance, oControl.Tfi = {fontName: "cursive", fontSize: 16, fgColor: "blue"}, shows the control in bold and blue using the 'Cursive' font family with a font size of 16 pixels.
The tfi field as string supports any of the following keywords (each keyword
can be specified using first letters only such as "b" for "bold)
separated by space characters:
bold, displays the text in bold (equivalent of <b> tag)
italic, displays the text in italics (equivalent of <i> tag)
underline, underlines the text (equivalent of <u> tag)
strikeout, specifies whether the text is strike-through (equivalent of <s> tag)
<fontName name>, specifies the font's family (equivalent of <font name> tag)
<fontSize size>, specifies the size of the font (equivalent of <font ;size> tag)
<fgColor CSSColor>, specifies the text's foreground color (equivalent of <fgcolor> tag)
<bgColor CSSColor>, specifies the text's background color (equivalent of <bgcolor> tag)
<shaColor CSSColor;width;offset>, defines the text's shadow (equivalent of <sha color;width;offset> tag)
<outColor CSSColor>, shows the text with outlined characters (CSScolor) (equivalent of <out color> tag)
<graColor CSSColor;mode;blend>, defines a gradient text (equivalent of <gra color;mode;blend> tag)
Any other word within the tfi field that's not recognized as a keyword is interpreted as:
name of the font (not a number), specifies the font's family (equivalent of <font name> tag)
size of the font (number), specifies the size of the font (equivalent of <font ;size> tag)
For instance, "bold monospace 16 <fg blue>" defines Monospace font of 16px height, bold and blue
The tfi field as object supports any of the following fields:
bold {boolean}, displays the text in bold (equivalent of <b> tag)
italic {boolean}, displays the text in italics (equivalent of <i> tag)
underline {boolean}, underlines the text (equivalent of <u> tag)
strikeout {boolean}, specifies whether the text is strike-through (equivalent of <s> tag)
fontName {string}, specifies the font's family (equivalent of <font name> tag)
fontSize {number}, specifies the size of the font (equivalent of <font ;size> tag)
fgColor {string}, specifies the text's foreground color (CSScolor) (equivalent of <fgcolor> tag)
bgColor {string}, specifies the text's background color (CSScolor) (equivalent of <bgcolor> tag)
shaColor {object}, specifies an object of {color, width, offset} type that defines the text's shadow (equivalent of <sha color;width;offset> tag), where:
color {string}, defines the color of the text's shadow (CSScolor)
width {number}, defines the size of the text's shadow
offset {number}, defines the offset to show the text's shadow relative to the text
outColor {string}, shows the text with outlined characters (CSScolor) (equivalent of <out color> tag)
graColor {object}, specifies an object of {color, mode, blend} type that defines a gradient text (equivalent of <gra color;mode;blend> tag), where:
color {string}, defines the gradient-color (CSScolor)
mode {number}, defines the gradient mode as a value between 0 and 4
blend {number}, defines the gradient blend as a value between 0 and 1
For instance, { bold: true, fontName: "monospace", fontSize: 16, fgColor: "blue" }
equivalent of "bold monospace 16 <fg blue>" defines Monospace font of 16px
height, bold and blue
CSSColor or CSS legal color values can be specified by the following methods:
Hexadecimal colors, is specified with: #RRGGBB, where the RR (red), GG (green) and BB (blue) hexadecimal integers specify the components of the color. All values must be between 00 and FF. For example, #0000ff value is rendered as blue, because the blue component is set to its highest value (ff) and the others are set to 00.
Hexadecimal colors with transparency, is specified with: #RRGGBBAA, where AA (alpha) value must be between 00 and FF. For example, #0000ff80 defines a semi-transparent blue.
RGB colors, is specified with the RGB(red, green, blue) function. Each parameter (red, green, and blue) defines the intensity of the color and can be an integer between 0 and 255. For example, rgb(0,0,255) defines the blue color.
RGBA colors, are an extension of RGB color values with an alpha channel as RGBA(red, green, blue, alpha) function, where the alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). For example, rgba(0,0,255,0.5) defines a semi-transparent blue.
HSL colors, is specified with the HSL(hue, saturation, lightness) function, where hue is a degree on the color wheel (from 0 to 360) - 0 (or 360) is red, 120 is green, 240 is blue. saturation is a percentage value; 0% means a shade of gray and 100% is the full color. lightness is also a percentage; 0% is black, 100% is white. HSL stands for hue, saturation, and lightness - and represents a cylindrical-coordinate representation of colors. For example, hsl(240, 100%, 50%) defines the blue color.
HSLA colors, are an extension of HSL color values with an alpha channel - which specifies the opacity of the object as HSLA(hue, saturation, lightness, alpha) function, where alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). For example, hsla(240, 100%, 50%,0.5) defines a semi-transparent blue.
Predefined/Cross-browser color names, 140 color names are predefined in the HTML and CSS color specification. For example, blue defines the blue color.
Any caption the /JS component displays supports exHTML
tags. For instance, the caption / Caption / GetCaption() / SetCaption(value)
method of the Column object specifies the caption the column shows into the
control's header. For instance, "Column <b>1</b>" shows as
"Column 1". Shortly, you can use exHTML tags to specify
different font attributes for different parts of the caption.
The following exHTML tags support additions as explained:
<fgcolor=RRGGBB>?</fgcolor> displays text with a specified foreground color.
The fgcolor supports also <fgcolor CSSColor>?</fgcolor>
format where CSSColor
can be any CSS legal color values, as explained bellow. For example, "<fgcolor
blue>caption</fgcolor>" shows "caption" in
blue.
<bgcolor=RRGGBB>?</bgcolor> displays text with a specified background color.
The bgcolor supports also <bgcolor CSSColor>?</bgcolor>
format where CSSColor
can be any CSS legal color values, as explained bellow. For example, "<bgcolor
blue>caption</bgcolor>" shows "caption"'s
background in blue.
<gra rrggbb;mode;blend> ... </gra> defines a gradient text.
The gra supports also <gra CSSColor;mode;blend> ... </gra>
format where CSSColor
can be any CSS legal color values, as explained bellow. For example, "<gra blue;1;1>caption</gra>" shows
"caption" in gradient (from black (current foreground color) to
blue.
<out rrggbb;width> ... </out> shows the text with outlined characters.
The out supports also <out CSSColor;width> ... </out> format where CSSColor
can be any CSS legal color values, as explained bellow. For example, "<out blue;2>caption</out>" shows
"caption" outlined.
<sha rrggbb;width;offset> ... </sha> define a text with a shadow
The out supports also <sha CSSColor;width;offset> ... </sha>
format where CSSColor
can be any CSS legal color values, as explained bellow. For example, "<sha
blue;4;2>caption</sha>" shows "caption" with a
blue shadow.
<img>number[:width]</img> inserts an icon inside the text.
This syntax is not supported, instead you have to use the <img>key[:width]</img>
as explained next.
CSSColor or CSS legal color values can be specified by the following methods:
Hexadecimal colors, is specified with: #RRGGBB, where the RR (red), GG (green) and BB (blue) hexadecimal integers specify the components of the color. All values must be between 00 and FF. For example, #0000ff value is rendered as blue, because the blue component is set to its highest value (ff) and the others are set to 00.
Hexadecimal colors with transparency, is specified with: #RRGGBBAA, where AA (alpha) value must be between 00 and FF. For example, #0000ff80 defines a semi-transparent blue.
RGB colors, is specified with the RGB(red, green, blue) function. Each parameter (red, green, and blue) defines the intensity of the color and can be an integer between 0 and 255. For example, rgb(0,0,255) defines the blue color.
RGBA colors, are an extension of RGB color values with an alpha channel as RGBA(red, green, blue, alpha) function, where the alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). For example, rgba(0,0,255,0.5) defines a semi-transparent blue.
HSL colors, is specified with the HSL(hue, saturation, lightness) function, where hue is a degree on the color wheel (from 0 to 360) - 0 (or 360) is red, 120 is green, 240 is blue. saturation is a percentage value; 0% means a shade of gray and 100% is the full color. lightness is also a percentage; 0% is black, 100% is white. HSL stands for hue, saturation, and lightness - and represents a cylindrical-coordinate representation of colors. For example, hsl(240, 100%, 50%) defines the blue color.
HSLA colors, are an extension of HSL color values with an alpha channel - which specifies the opacity of the object as HSLA(hue, saturation, lightness, alpha) function, where alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). For example, hsla(240, 100%, 50%,0.5) defines a semi-transparent blue.
Predefined/Cross-browser color names, 140 color names are predefined in the HTML and CSS color specification. For example, blue defines the blue color.
In conclusion, the following statements are equivalents:
<fgcolor=0000FF>caption</fgcolor>
<fgcolor #0000FF>caption</fgcolor>
<fgcolor #0000FFFF>caption</fgcolor>
<fgcolor rgb(0,0,255)>caption</fgcolor>
<fgcolor rgba(0,0,255,1)>caption</fgcolor>
<fgcolor hsl(240, 100%, 50%)>caption</fgcolor>
<fgcolor hsla(240, 100%, 50%,1)>caption</fgcolor>
<fgcolor blue>caption</fgcolor>
For example, if you need to display plain-text only (ignore the exHTML tags),
you need to add exontrol.DrawTextFormatEnum.exPlainText flag to ft / formatText
/ GetFormatText() / SetFormatText(value) property. The following sample adds a column named "Plain" where all cells
are shown in in plain-text ("<b>caption</b>" is displayed
as is it, instead bolding the caption):
Any caption the /JS component displays can show images or pictures using the
<img> tag. The <img>key[:width]</img> inserts a custom size picture into the text.
The exontrol.HTMLPicture.Add(key, source) method loads the picture with
specified source and associates the key to it, so you can anytime refer using
the <img>key</img> tag.
The exontrol.HTMLPicture.Add(key, source) method supports the following parameters:
key {string}, specifies the unique key to identify the image or picture
source {any}, specifies an object of HTMLImageElement type, or a string that defines the path to the image
For instance, exontrol.HTMLPicture.Add("logo",
"images/exontrol.logo.png") loads the "exontrol.logo.png"
image, which can be displayed anywhere using the <img>logo</img>
tag. The exontrol.HTMLPicture.Add(key, source) method is asynchronous so the
picture or image may be displayed later only after fully load.
The following sample shows how you can display images (the
sample uses exontrol.OrgChart type, but the idea is the same for any of our /JS
component):
where oOrgChart variable is an object of exontrol.OrgChart type. The sample
displays the node's picture using the <img> tag and image property as
well.
The result may look as follows:
If loading the pictures fails (picture not found, network errors, ...), the control may show as:
Also, the exontrol.HTMPicture object supports the following methods:
Count(), returns the number of pictures within the collection
Remove(name), removes the picture with specified name
Clear(), removes all picture objects from the collection
Draw(name, ctx, client), draws the picture with specified name on the canvas's context
at specified location
DrawS2(ctx, name, client, limits, location), draws, scales and/or stretches the picture on specified context using giving
limits (the picture holder is shown if the picture has not been loaded yet).
GetSize(name), returns the an object of {width, height} type that indicates the original size of the
picture
forEachU(callback, thisArg), enumerates the pictures using the callback(oHPic, name)
{any} until it returns a truly value or no more pictures. The forEachU
method returns the last result the callback returns.
Yes. Download and unzip the suite.js.zip
file. Open the Window Explorer and locate the run.bat into the helper
folder. Double click the run.bat file and the exhelper/js should open and look
as:
In case the SecurityError: Blocked a frame with origin "null" from accessing a cross-origin
frame exception occurs, close all Chrome instances, and
run.bat it again.
Yes. The ExSuite/JS library can be used on any web-application that runs on any browser that supports HTML5. The ExSuite/JS library is a standalone-library that's written from scratch using pure-Javascript. The ExSuite/JS library requires no third party-libraries or frameworks. Each components includes a init.htm file that shows the minimal code to insert the component to a HTML page.
If you are wondering on how to use the component, please check the exhelper/js tool, that helps you to find the answers and source code for tons of how to questions. For instance, please go to:
that shows questions and answers on how to use the exorgchart/js components. Click the middle panels (the code panel), so it gets the focus and press ALT + 3 to get the HTML page that generates the view.
Yes. The ExSuite/JS library can be used on any web-application that runs on any browser that supports HTML5. The ExSuite/JS library is a standalone-library that's written from scratch using pure-Javascript. The ExSuite/JS library requires no third party-libraries or frameworks. Each components includes a init.htm file that shows the minimal code to insert the component to a HTML page.
If you are wondering on how to use the component, please check the exhelper/js tool, that helps you to find the answers and source code for tons of how to questions. For instance, please go to:
that shows questions and answers on how to use the exorgchart/js components. Click the middle panels (the code panel), so it gets the focus and press ALT + 3 to get the HTML page that generates the view.
The 'exontrol.XXX is not a constructor' error occurs if the library that implements the object is missing. In other words, the library has not been included.
The following table shows the XXX objects and the files your project should load:
For instance, if 'exontrol.Calendar is not a constructor' error occurs make sure your application includes exontrol.icalendar.min.js, exontrol.calendar.min.js, ... files as indicated in the above table. In conclusion, the <head section of your HTML must include the following files:
Yes. Our controls are highly flexible and can be tailored to meet your specific needs. You have the freedom to customize every element, enabling you to apply any visual appearance you wish. This ensures that you can achieve the exact look and feel that aligns with your vision and requirements.
The following examples demonstrate how you can modify the visual appearance of the object using CSS. These samples illustrate various techniques and styles, allowing you to customize the look to fit your specific design preferences and requirements.
Our controls are rendered within a <canvas> element, allowing you to display a wide range of content. The objects within the control, such as nodes, elements, items, cells, bars, ... are not traditional elements like <table>, <div>, or <span> that can be styled directly with CSS.
We are confident that our controls offer the best possible performance, even when managing and processing large data sets. Our controls are designed to handle extensive data loads efficiently, ensuring smooth and seamless operation without compromising speed or responsiveness. This allows you to maintain optimal performance levels regardless of the size or complexity of your data.
The examples provided will show you how to efficiently load and work with this file using different methods or tools. Click on any sample to see how the data is loaded and rendered, using:
extree/js component (loads the 'perf.csv' file with our /js component)
<table> element (dynamically creates an HTML <table> from the 'perf.csv' file)
<div> and <span> elements (simulates a table using <div> and <span> elements from the 'perf.csv' file)
The examples above show how to load the 'perf.csv' file from our web server. This file has several characteristics:
File Size: The file is 2.18 megabytes (MB), which indicates its storage size on the server. This gives you an idea of how large the file is and how long it might take to download.
Columns: The CSV file includes definitions for 21 different columns. Each column represents a different type of data or attribute related to the items in the file.
Items: There are 9,994 items in the file. Each item corresponds to a row in the CSV file, excluding the header row. These items could be anything from products, records, or entries, depending on the context of the data.
Cells: The file has a total of 209,874 cells. A cell is the intersection of a row and a column. The total number of cells is calculated by multiplying the number of items (rows) by the number of columns (21 columns * 9,994 items).
In summary, the 'perf.csv' file is a well-structured dataset that contains a significant amount of information distributed across 21 columns and nearly 10,000 items, resulting in over 200,000 individual data points (cells).
You can check a few more samples about performance here.
The exontrol.patch.min.js file includes browser-specific patches. One such patch, called '1px' changes the width of vertical and horizontal lines to 1 pixel instead of 2 pixels. To achieve full smoothness for the objects, you need to remove '1px' from the exontrol.fix field before loading exontrol.patch.min.js library, as shown in the following example:
Currently, the /JS library includes the following:
Calendar (provides calendar capabilities for your application),
ComboBox (allows you to display a drop-down panel (Bezier, Calendar, Gantt, Gauge, Menu, OrgChart, Pivot, RadialMenu, Schedule, ScrollBar, Surface, SwimLane Tree or any other HTML element) once the user clicks a button),
ICalendar (implements the iCalendar data format, according with Internet Calendaring and Scheduling Core Object Specification, RFC 5545, especially the RRULE property, which defines a rule or repeating pattern for recurring events, to-dos, journal entries, or time zone)
Gantt (is our approach to create timeline charts (also known as Gantt
charts)
Gauge (shows one or more layers, where each layer can display one or more transparent pictures, HTML captions which can be clipped, moved, rotated or combination of them, by dragging the mouse, rolling the mouse wheel, or using the keyboard),
Graph (offers excellent graphical data visualization)
Menu (provides menu-functionality which includes top-level menus, context, popup, drop down or shortcut
menus)
OrgChart (permits the totally automatic generation of organigrams)
Pivot (is our approach to provide data summarization, as a pivot table)
RadialMenu (component is similar to the Microsoft's OneNote radial menu with ability to customize the appearance and functionality),
Scheduler (is our approach to provide scheduling of appointments into your web application),
ScrollBar (provides scroll-bar/slider/track functionality for your application)
Surface (lets you organize your objects to a surface)
Swimlane (lets you draw swim lane diagrams)
Tree (allows you to display and edit hierarchical-data)
Here's how the /JS components use one with another:
RadialMenu (superset of Gauge): Incorporates all functionalities of a basic Gauge component but extends them with radial menu-specific features like circular arrangement and interactive
options
Swimlane (superset of Surface): Enhances the basic Surface component by adding features specific to organizing information into lanes or
phases, allowing for visual grouping of related items
Pivot (superset of Tree): Utilizes the hierarchical structure of a Tree component but adds capabilities for dynamic data pivoting, enabling users to rearrange and summarize data based on different dimensions or
criteria
Gantt (superset of Tree): Extends the Tree component by incorporating timeline visualization and task dependency management, facilitating project planning and tracking tasks over time.
In essence, the /JS components demonstrate how leveraging hierarchical relationships between base and superset components enhances the versatility and functionality of web applications, catering to diverse user requirements and enhancing user experience through specialized visualization and interaction features.
Although Surface and OrgChart may appear similar at first glance, they differ significantly in several aspects.
Here are a few differences:
OrgChart
Automatically arranges nodes in either left-to-right or top-to-bottom
orientation, using parent-children relationship
Does not allow manual adjustment of individual node positions
Offers standard linking options, from child to parent
Surface
Allows freehand drawing of organigrams, enabling placement of nodes anywhere on the
chart
Provides customizable linking options and ability to link any node with
any other node including itself
Does not require a parent-children relationship
In essence, OrgChart focuses on automated node organization with limited manual adjustments, while
Surface offers more creative freedom with flexible node placement and customizable
links
To resize an element in HTML using JavaScript, you can adjust the element's width and height properties through its style. Here's how to do it:
Access the Element
First, you need to select the HTML element you want to resize. You can do this using methods like document.getElementById, document.querySelector, or other DOM traversal methods.
Modify the Element's Size
Once you have access to the element, you can either adjust its style.width and style.height properties using plain JavaScript or use jQuery's .width(), .outerHeight(), and .outerWidth() methods to modify the element's size. jQuery methods provide more control, allowing you to include or exclude padding and borders in the size adjustments when necessary.
All of our components are embedded within <canvas> elements. For a <canvas> element, you should adjust its width and height attributes to change the drawing surface, not the style properties. This ensures that the resolution of the canvas content is preserved and not distorted. The attributes can be modified directly using JavaScript or jQuery, but remember that you need to set the width and height attributes, not the CSS properties.
Correct Way (changing Canvas Attributes):
const canvas = document.getElementById("cvsGantt");
canvas.width = 500; // Changes the actual canvas drawing width
canvas.height = 300; // Changes the actual canvas drawing height
Incorrect Way (using CSS Style, which only affects display size, not drawing
size):
const canvas = document.getElementById("cvsGantt");
canvas.style.width = "500px" // Only changes the visual size, not the drawing surface
canvas.style.height = "300px" // Only changes the visual size, not the drawing surface
Key Difference:
Canvas Attributes (width and height): Changes the actual resolution and size of the drawing surface.
Resizing the canvas attributes can result in a clearer and sharper image because it changes the resolution. If you increase the size, it allows for more detail to be displayed.
When you change the width and height attributes of a <canvas> element, all existing content is cleared. This is because the canvas maintains its content as a bitmap tied to its dimensions. Modifying these attributes discards the old bitmap and creates a new one, resulting in a blank canvas.
CSS Style (style.width and style.height): Only scales the canvas visually, which can lead to blurry or stretched content because it doesn't change the resolution of the drawing surface.
Scaling the canvas using CSS may not utilize the full potential of the drawing surface, resulting in a lower-quality rendering of graphics
In conclusion, after resizing any of our component(s), you must call the exontrol.CC.Resize(<canvas>, [width], [height]) method to resize and update the control's content simultaneously, as shown in the following example:
Very rarely, you may encounter a message (for a maximum of about one hour) in the lower-left corner of the control that states, "⚠ the license is missing." This message appears only if you do not have a valid license. During the display of this message, certain user interface actions may be limited. For instance, drag-and-drop operations might require multiple attempts, and clicking a checkbox may take several tries to register. Similarly, clicking on a column to drag might also necessitate multiple clicks to function properly.
Once you have obtained a valid license, which can only be acquired after purchasing the package, the warning message will no longer appear. This means that after your purchase is complete and you received the license, you can expect to use the library without encountering this message again.
the IDENTIFIER is the ID of the object being added. The ID attribute can be used by a JavaScript (via the HTML DOM) or by CSS to make changes or style the element with the specified id.
The id attribute specifies a unique id for an HTML element
the CLASSIDENTIFIER is the object's class identifier as
CD481F4D-2D25-4759-803F-752C568F53B7
The CLASSIDENTIFIER is unique for each /COM
object, and can be found on control's documentation on the main object page,
where something like follows is displaying, or
explained here;
Tip The /COM object can be placed on a HTML page (with
usage of the HTML object tag: <object classid="clsid:...">)
using the class identifier: {CD481F4D-2D25-4759-803F-752C568F53B7}. The
object's program identifier is: "Exontrol.G2antt". The /COM
object module is: "ExG2antt.dll"
The following sample adds the eXG2antt component to a web page:
where the IDENTIFIER is the ID of the object being handled, and the EVENT
is the name of the event being handled. The PARAMETERS gets the list of
parameters that the event carries.
Using the FOR and EVENT attributes to associate events
gives you access to custom events fired by embedded objects and to any
parameters that an event generates. Unlike standard events that can be bound
using attributes or properties, in the case of custom objects these are not
available.
Use the FOR attribute to specify which element or object to
handle, assigning it an identifier or the name of an object, application, or
control. If you don't specify this attribute, the handler is bound to the
window by default. Notice that JScript is case-sensitive, so you must type
the identifier or name exactly as it appears in the corresponding element or
object.
Use the EVENT attribute to specify which event to associate to,
assigning it an event name. If the event generates parameters (few
predefined events do), you can also specify a list of comma-separated
parameter names enclosed in parentheses immediately after the event name.
The parameters are untyped. Because JScript is case-sensitive, make sure you
always spell event names in lowercase letters. Also, if you give a parameter
list, VBScript requires that all parameters defined for the event be listed,
even if they are not used.
The following JScript example displays a message box when the user clicks
an anchor element in the gantt control:
Some of the events pass the parameters by reference. Such of event could be
the KeyDown
event, where the KeyCode parameter is passed by reference, so user can
change it runtime.
For instance, the following JScript sample changes the TAB behavior, so
if user presses the TAB, the control sends instead the RIGHT key, so it
advance to the next editable field:
locate and click the bold identifier (main object) in the control's objects list ( G2antt
)
Under the object's help you will find:
Tip The /COM object can be placed on a HTML page (with
usage of the HTML object tag: <object classid="clsid:...">)
using the class identifier: {CD481F4D-2D25-4759-803F-752C568F53B7}. The
object's program identifier is: "Exontrol.G2antt". The /COM object
module is: "ExG2antt.dll"