Labels in EJ2 TypeScript Range navigator control
8 May 202313 minutes to read
Multilevel labels
The labelIntersectAction
property is used to avoid overlapping of labels. The following code sample shows the setting of labelIntersectAction
property to Hide.
import { RangeNavigator, DateTime, RangeTooltip } from '@syncfusion/ej2-charts';
RangeNavigator.Inject(DateTime, RangeTooltip);
let data: object[] = [];
let value: number = 0; let point: object = {};
for (let j: number = 1; j < 1090; j++) {
value += (Math.random() * 10 - 5);
value = value < 0 ? Math.abs(value) : value;
point = { x: new Date(2000, 0, j), y: value, z: value + 10 };
data.push(point);
}
let range: RangeNavigator = new RangeNavigator(
{
labelPosition: 'Outside',
tooltip: { enable: true },
valueType: 'DateTime',
intervalType: 'Quarter',
enableGrouping: true,
value: [new Date(2001, 0), new Date(2002, 0)],
dataSource: data,
xName: 'x',
yName: 'y'
}, '#element');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Animation</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container' style="margin-top: 125px">
<div id='element'></div>
</div>
</body>
</html>
Grouping
The second level axis labels can be grouped using “groupBy” property with the following interval types:
- Auto
- Years
- Quarter
- Months
- Weeks
- Days
- Hours
- Minutes
- Seconds
import { RangeNavigator, DateTime, RangeTooltip } from '@syncfusion/ej2-charts';
RangeNavigator.Inject(DateTime, RangeTooltip);
let data: object[] = [];
let value: number = 0; let point: object = {};
for (let j: number = 1; j < 1090; j++) {
value += (Math.random() * 10 - 5);
value = value < 0 ? Math.abs(value) : value;
point = { x: new Date(2000, 0, j), y: value, z: value + 10 };
data.push(point);
}
let range: RangeNavigator = new RangeNavigator(
{
labelPosition: 'Outside',
tooltip: { enable: true },
valueType: 'DateTime',
intervalType: 'Quarter',
enableGrouping: true,
groupBy: 'Years',
value: [new Date(2001, 0), new Date(2002, 0)],
dataSource: data,
xName: 'x',
yName: 'y'
}, '#element');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Animation</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container' style="margin-top: 125px">
<div id='element'></div>
</div>
</body>
</html>
Smart labels
The labelIntersectAction
property is used to avoid overlapping of labels. The following code sample shows the setting of labelIntersectAction
property to Hide.
import { RangeNavigator, StepLineSeries, DateTime } from "@syncfusion/ej2-charts";
RangeNavigator.Inject(StepLineSeries, DateTime);
import { datasrc } from "./datasource.ts";
let range: RangeNavigator = new RangeNavigator({
valueType: 'DateTime',
labelIntersectAction: 'Hide',
labelFormat: 'y/M/d',
value: [new Date("2017-08-13"), new Date("2017-12-28")],
series: [{
dataSource: datasrc, xName: 'x', yName: 'y', type: 'StepLine', width: 2,
}],
}, '#element');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Animation</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container' style="margin-top: 125px">
<div id='element'></div>
</div>
</body>
</html>
Label positioning
By default, the labels can be placed outside the Range Selector. It can also be placed inside the Range Selector using the labelPosition
property.
import { RangeNavigator, StepLineSeries, DateTime } from "@syncfusion/ej2-charts";
RangeNavigator.Inject(StepLineSeries, DateTime);
import { datasrc } from "./datasource.ts";
let range: RangeNavigator = new RangeNavigator({
valueType: 'DateTime',
labelPosition: 'Inside',
value: [new Date("2017-08-13"), new Date("2017-12-28")],
series: [{
dataSource: datasrc, xName: 'x', yName: 'y', type: 'StepLine', width: 2,
}],
}, '#element');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Animation</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container' style="margin-top: 125px">
<div id='element'></div>
</div>
</body>
</html>
Labels customization
The font size, color, family, etc. can be customized using the labelStyle
setting.
import { RangeNavigator, DateTime } from '@syncfusion/ej2-charts';
import { GetDateTimeData } from './datasource.ts';
RangeNavigator.Inject(DateTime);
let range: RangeNavigator = new RangeNavigator(
{
valueType: 'DateTime',
intervalType: 'Months',
labelFormat: 'MMM',
labelStyle: { color: 'red', size: '10px' },
value: [new Date(2018, 5, 1), new Date(2018, 6, 1)],
dataSource: GetDateTimeData(new Date(2018, 0, 1), new Date(2019, 0, 1)),
xName: 'x', yName: 'y'
}, '#element');
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Animation</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id='container' style="margin-top: 125px">
<div id='element'></div>
</div>
</body>
</html>