Gallery
JS Org Level Select
<%@ Page Language="C#" Description="dotnetCHARTING Component" %>
<%@ Register TagPrefix="dotnet" Namespace="dotnetCHARTING" Assembly="dotnetCHARTING" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
// Demonstrates an organizational chart with interactive node level highlighting and selection.
Chart.TempDirectory = "temp";
Chart.Debug = true;
Chart.JS.Enabled = true;
Chart.JS.ControlID = "jsChart";
Chart.Size = "700x400";
Chart.TitleBox.Label.Text = "Click a name to select or deselect employees at a given level.";
Chart.TitleBox.Position = TitleBoxPosition.Center;
Chart.Type = ChartType.Organizational;
// Default Mode:
Chart.OrganizationalConnectorType = OrganizationalConnectorType.RightAngle;
//Disable tooltip
Chart.DefaultElement.ToolTip = "";
// Spacing between nodes:
Chart.ChartArea.Padding = 5;
// Alternatively, set CSS style px margin array values with:
// Chart.JS.Settings.Add("defaultPoint.annotation.margin", "[15,5]");
// Connector line style
Chart.DefaultSeries.Line.Width = 1;
// Node styling
// Initial outline width is 0.
Chart.DefaultElement.Outline.Width = 0;
Chart.DefaultElement.Color = Color.FromArgb(221,225,232);
Chart.DefaultElement.FocusGlow.Visible = false;
Chart.DefaultElement.Annotation.Padding = 9;
Chart.DefaultElement.Annotation.SyncHeight = SyncDimention.Level;
Chart.DefaultElement.Annotation.DefaultCorner = BoxCorner.Round;
Chart.DefaultElement.Annotation.CornerSize = 3;
// Wire up interactive functionality:
// Colorize node outlines after chart renders and determines the level for each element.
// Nodes: the outline width is 0 initially.
Chart.JS.RenderCallback = "myCallback";
Chart.JS.Settings.Add("defaultPoint.events.click", "JS:pointClick");
Chart.JS.Settings.Add("defaultPoint.events.mouseOver", "JS:pointMouseOver");
Chart.JS.Settings.Add("defaultPoint.events.mouseOut", "JS:pointMouseOut");
Chart.JS.Settings.Add("defaultPoint.states.mute", "JS:{ opacity: 1, outline_width: 1 }");
Chart.JS.Settings.Add("defaultPoint.states.select", "JS:{ enabled: true, outline_width: 2 }");
Chart.JS.Settings.Add("defaultPoint.states.hover", "JS:{ outline_width: 2 }");
// *DYNAMIC DATA NOTE*
// This sample uses random data to populate the chart. To populate
// a chart with database data see the following resources:
// - Use the getLiveData() method using the dataEngine to query a database.
// - Help File > Getting Started > Data Tutorials
// - DataEngine Class in the help file
// - Sample: features/DataEngine.aspx
SeriesCollection mySC = getData();
// Add the random data.
Chart.SeriesCollection.Add(mySC);
}
SeriesCollection getData()
{
Series ser = new Series("");
Element el1 = new Element();
el1.Name = "Eliott Nieves";
el1.CustomAttributes["role"] = "CEO";
ser.Elements.Add(el1);
Element el2 = new Element();
el2.Name = "Harvey-Lee Travis";
el2.Parent = el1;
el2.CustomAttributes["role"] = "Vice President";
ser.Elements.Add(el2);
Element el3 = new Element();
el3.Name = "Gethin Morley";
el3.Parent = el1;
el3.CustomAttributes["role"] = "Vice President";
ser.Elements.Add(el3);
Element el4 = new Element();
el4.Name = "Sonnie Kim";
el4.Parent = el1;
el4.CustomAttributes["role"] = "Vice President";
ser.Elements.Add(el4);
Element el5 = new Element();
el5.Name = "Dante Curtis";
el5.Parent = el2;
el5.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el5);
Element el6 = new Element();
el6.Name = "Honey Mullen";
el6.Parent = el2;
el6.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el6);
Element el7 = new Element();
el7.Name = "Steffan Taylor";
el7.Parent = el3;
el7.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el7);
Element el8 = new Element();
el8.Name = "Charlton Hester";
el8.Parent = el3;
el8.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el8);
Element el9 = new Element();
el9.Name = "Ishmael Orr";
el9.Parent = el3;
el9.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el9);
Element el10 = new Element();
el10.Name = "Dua Frost";
el10.Parent = el9;
el10.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el10);
Element el11 = new Element();
el11.Name = "Salahuddin Eastwood";
el11.Parent = el9;
el11.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el11);
Element el12 = new Element();
el12.Name = "Nicole Tapia";
el12.Parent = el10;
el12.CustomAttributes["role"] = "Employee";
ser.Elements.Add(el12);
Element el13 = new Element();
el13.Name = "Arisha Hinton";
el13.Parent = el10;
el13.CustomAttributes["role"] = "Employee";
ser.Elements.Add(el13);
Element el14 = new Element();
el14.Name = "Martha Morley";
el14.Parent = el10;
el14.CustomAttributes["role"] = "Employee";
ser.Elements.Add(el14);
Element el15 = new Element();
el15.Name = "Cathy Mcpherson";
el15.Parent = el10;
el15.CustomAttributes["role"] = "Employee";
ser.Elements.Add(el15);
Element el16 = new Element();
el16.Name = "Kiara Johns";
el16.Parent = el4;
el16.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el16);
Element el17 = new Element();
el17.Name = "Grant Cash";
el17.Parent = el4;
el17.CustomAttributes["role"] = "Manager";
ser.Elements.Add(el17);
Element el18 = new Element();
el18.Name = "Juanita Cottrell";
el18.Parent = el16;
el18.CustomAttributes["role"] = "Employee";
ser.Elements.Add(el18);
Element el19 = new Element();
el19.Name = "Allana Frey";
el19.Parent = el16;
el19.CustomAttributes["role"] = "Employee";
ser.Elements.Add(el19);
return new SeriesCollection(ser);
}
SeriesCollection getLiveData()
{
DataEngine de = new DataEngine("ConnectionString goes here");
de.ChartObject = Chart; // Necessary to view any errors the dataEngine may throw.
de.SqlStatement = "SELECT XAxisColumn, YAxisColumn FROM ....";
return de.GetSeries();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.netCHARTING Sample</title>
<script type="text/javascript">
var palette = ['#4285F4', '#fE4C14', '#DBCB18', '#15AC20', '#D150B1'];
function myCallback(chart) {
chart.series().points().each(function (p) {
/**
* Improve performance by setting second argument (updateOptions) to false and prevent chart
* redraw on every point options update.
*/
p.options({ outline_color: palette[p.y] }, false);
});
/**
* Update the chart fully and only once.
*/
chart.redraw();
}
var selectedLevel = null;
function pointClick() {
var point = this,
chart = point.chart;
reset(chart);
// Click again to unselect level.
if (selectedLevel === point.y) {
selectedLevel = null;
return;
}
selectedLevel = point.y;
chart
.series()
.points(function (p) {
return p.y === point.y;
})
.options({ selected: true });
}
function pointMouseOver() {
var point = this,
chart = point.chart;
// Highlight all points at this level using the muted state
chart
.series()
.points(function (p) {
return p.y === point.y;
})
.options({ muted: true });
}
function pointMouseOut() {
var point = this,
chart = this.chart;
// Highlight all points at this level
chart
.series()
.points()
.options({ muted: false });
return false;
}
function reset(c) {
// reset selected and muted styling
c.series()
.points()
.options({ selected: false, muted: false });
}
</script>
</head>
<body>
<div align="center">
<dotnet:Chart ID="Chart" runat="server" />
</div>
</body>
</html>
<%@ Page Language="vb" Description="dotnetCHARTING Component" %>
<%@ Register TagPrefix="dotnet" Namespace="dotnetCHARTING" Assembly="dotnetCHARTING" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<script runat="server">
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
' Demonstrates an organizational chart with interactive node level highlighting and selection.
Chart.TempDirectory = "temp"
Chart.Debug = True
Chart.JS.Enabled = True
Chart.JS.ControlID = "jsChart"
Chart.Size = "700x400"
Chart.TitleBox.Label.Text = "Click a name to select or deselect employees at a given level."
Chart.TitleBox.Position = TitleBoxPosition.Center
Chart.Type = ChartType.Organizational
' Default Mode:
Chart.OrganizationalConnectorType = OrganizationalConnectorType.RightAngle
'Disable tooltip
Chart.DefaultElement.ToolTip = ""
' Spacing between nodes:
Chart.ChartArea.Padding = 5
' Alternatively, set CSS style px margin array values with:
' Chart.JS.Settings.Add("defaultPoint.annotation.margin", "[15,5]");
' Connector line style
Chart.DefaultSeries.Line.Width = 1
' Node styling
' Initial outline width is 0.
Chart.DefaultElement.Outline.Width = 0
Chart.DefaultElement.Color = Color.FromArgb(221,225,232)
Chart.DefaultElement.FocusGlow.Visible = False
Chart.DefaultElement.Annotation.Padding = 9
Chart.DefaultElement.Annotation.SyncHeight = SyncDimention.Level
Chart.DefaultElement.Annotation.DefaultCorner = BoxCorner.Round
Chart.DefaultElement.Annotation.CornerSize = 3
' Wire up interactive functionality:
' Colorize node outlines after chart renders and determines the level for each element.
' Nodes: the outline width is 0 initially.
Chart.JS.RenderCallback = "myCallback"
Chart.JS.Settings.Add("defaultPoint.events.click", "JS:pointClick")
Chart.JS.Settings.Add("defaultPoint.events.mouseOver", "JS:pointMouseOver")
Chart.JS.Settings.Add("defaultPoint.events.mouseOut", "JS:pointMouseOut")
Chart.JS.Settings.Add("defaultPoint.states.mute", "JS:{ opacity: 1, outline_width: 1 }")
Chart.JS.Settings.Add("defaultPoint.states.select", "JS:{ enabled: true, outline_width: 2 }")
Chart.JS.Settings.Add("defaultPoint.states.hover", "JS:{ outline_width: 2 }")
' *DYNAMIC DATA NOTE*
' This sample uses random data to populate the chart. To populate
' a chart with database data see the following resources:
' - Use the getLiveData() method using the dataEngine to query a database.
' - Help File > Getting Started > Data Tutorials
' - DataEngine Class in the help file
' - Sample: features/DataEngine.aspx
Dim mySC As SeriesCollection = getData()
' Add the random data.
Chart.SeriesCollection.Add(mySC)
End Sub
Function getData() As SeriesCollection
Dim ser As Series = New Series("")
Dim el1 As Element = New Element()
el1.Name = "Eliott Nieves"
el1.CustomAttributes("role") = "CEO"
ser.Elements.Add(el1)
Dim el2 As Element = New Element()
el2.Name = "Harvey-Lee Travis"
el2.Parent = el1
el2.CustomAttributes("role") = "Vice President"
ser.Elements.Add(el2)
Dim el3 As Element = New Element()
el3.Name = "Gethin Morley"
el3.Parent = el1
el3.CustomAttributes("role") = "Vice President"
ser.Elements.Add(el3)
Dim el4 As Element = New Element()
el4.Name = "Sonnie Kim"
el4.Parent = el1
el4.CustomAttributes("role") = "Vice President"
ser.Elements.Add(el4)
Dim el5 As Element = New Element()
el5.Name = "Dante Curtis"
el5.Parent = el2
el5.CustomAttributes("role") = "Manager"
ser.Elements.Add(el5)
Dim el6 As Element = New Element()
el6.Name = "Honey Mullen"
el6.Parent = el2
el6.CustomAttributes("role") = "Manager"
ser.Elements.Add(el6)
Dim el7 As Element = New Element()
el7.Name = "Steffan Taylor"
el7.Parent = el3
el7.CustomAttributes("role") = "Manager"
ser.Elements.Add(el7)
Dim el8 As Element = New Element()
el8.Name = "Charlton Hester"
el8.Parent = el3
el8.CustomAttributes("role") = "Manager"
ser.Elements.Add(el8)
Dim el9 As Element = New Element()
el9.Name = "Ishmael Orr"
el9.Parent = el3
el9.CustomAttributes("role") = "Manager"
ser.Elements.Add(el9)
Dim el10 As Element = New Element()
el10.Name = "Dua Frost"
el10.Parent = el9
el10.CustomAttributes("role") = "Manager"
ser.Elements.Add(el10)
Dim el11 As Element = New Element()
el11.Name = "Salahuddin Eastwood"
el11.Parent = el9
el11.CustomAttributes("role") = "Manager"
ser.Elements.Add(el11)
Dim el12 As Element = New Element()
el12.Name = "Nicole Tapia"
el12.Parent = el10
el12.CustomAttributes("role") = "Employee"
ser.Elements.Add(el12)
Dim el13 As Element = New Element()
el13.Name = "Arisha Hinton"
el13.Parent = el10
el13.CustomAttributes("role") = "Employee"
ser.Elements.Add(el13)
Dim el14 As Element = New Element()
el14.Name = "Martha Morley"
el14.Parent = el10
el14.CustomAttributes("role") = "Employee"
ser.Elements.Add(el14)
Dim el15 As Element = New Element()
el15.Name = "Cathy Mcpherson"
el15.Parent = el10
el15.CustomAttributes("role") = "Employee"
ser.Elements.Add(el15)
Dim el16 As Element = New Element()
el16.Name = "Kiara Johns"
el16.Parent = el4
el16.CustomAttributes("role") = "Manager"
ser.Elements.Add(el16)
Dim el17 As Element = New Element()
el17.Name = "Grant Cash"
el17.Parent = el4
el17.CustomAttributes("role") = "Manager"
ser.Elements.Add(el17)
Dim el18 As Element = New Element()
el18.Name = "Juanita Cottrell"
el18.Parent = el16
el18.CustomAttributes("role") = "Employee"
ser.Elements.Add(el18)
Dim el19 As Element = New Element()
el19.Name = "Allana Frey"
el19.Parent = el16
el19.CustomAttributes("role") = "Employee"
ser.Elements.Add(el19)
Return New SeriesCollection(ser)
End Function
Function getLiveData() As SeriesCollection
Dim de As DataEngine = New DataEngine("ConnectionString goes here")
de.ChartObject = Chart ' Necessary to view any errors the dataEngine may throw.
de.SqlStatement = "SELECT XAxisColumn, YAxisColumn FROM ...."
Return de.GetSeries()
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.netCHARTING Sample</title>
<script type="text/javascript">
var palette = ['#4285F4', '#fE4C14', '#DBCB18', '#15AC20', '#D150B1'];
function myCallback(chart) {
chart.series().points().each(function (p) {
/**
* Improve performance by setting second argument (updateOptions) to false and prevent chart
* redraw on every point options update.
*/
p.options({ outline_color: palette[p.y] }, false);
});
/**
* Update the chart fully and only once.
*/
chart.redraw();
}
var selectedLevel = null;
function pointClick() {
var point = this,
chart = point.chart;
reset(chart);
// Click again to unselect level.
if (selectedLevel === point.y) {
selectedLevel = null;
return;
}
selectedLevel = point.y;
chart
.series()
.points(function (p) {
return p.y === point.y;
})
.options({ selected: true });
}
function pointMouseOver() {
var point = this,
chart = point.chart;
// Highlight all points at this level using the muted state
chart
.series()
.points(function (p) {
return p.y === point.y;
})
.options({ muted: true });
}
function pointMouseOut() {
var point = this,
chart = this.chart;
// Highlight all points at this level
chart
.series()
.points()
.options({ muted: false });
return false;
}
function reset(c) {
// reset selected and muted styling
c.series()
.points()
.options({ selected: false, muted: false });
}
</script>
</head>
<body>
<div align="center">
<dotnet:Chart ID="Chart" runat="server" />
</div>
</body>
</html>
- Sample FilenameJsOrgLevelSelect.aspx
- Version10.5
- Uses DatabaseNo