Skip to content

Commit b875752

Browse files
author
pipeline
committed
v28.1.35 is released
1 parent 415453f commit b875752

File tree

566 files changed

+67185
-742
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

566 files changed

+67185
-742
lines changed

controls/barcodegenerator/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 28.1.33 (2024-12-12)
5+
## 28.1.35 (2024-12-18)
66

77
### Barcode
88

controls/buttons/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 28.1.33 (2024-12-12)
5+
## 28.1.35 (2024-12-18)
66

77
### Switch
88

controls/charts/CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
## [Unreleased]
44

5+
## 28.1.35 (2024-12-18)
6+
7+
### Chart
8+
9+
#### Bug Fixes
10+
11+
- `#I662154` - Axis labels are now rendered correctly in the exported PDF, even when headers and footers are included.
12+
- `#I662546` - Tooltip highlighting functions correctly when the column series width is specified using `columnWidthInPixel`.
13+
- `#I662277` - The intermediate sum index is no longer included in the calculation of the sum index.
14+
- `#I663653` - Data labels are now rendered correctly when the intermediate sum index is empty.
15+
- `#I663652` - The calculations for both sum and intermediate sum indexes have been corrected.
16+
517
## 28.1.33 (2024-12-12)
618

719
### Chart

controls/charts/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-charts",
3-
"version": "20.22.1",
3+
"version": "28.1.33",
44
"description": "Feature-rich chart control with built-in support for over 25 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball.",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

controls/charts/spec/chart/axis/axis.spec.ts

+155
Original file line numberDiff line numberDiff line change
@@ -1909,6 +1909,161 @@ describe('Chart Control', () =>{
19091909
chart.enableRtl = true;
19101910
chart.appendTo('#container');
19111911
});
1912+
describe('Checking the titlePadding and labelPadding', function () {
1913+
let chart: Chart;
1914+
let ele: HTMLElement;
1915+
let loaded: EmitType<ILoadedEventArgs>;
1916+
let element: Element;
1917+
let posX: string;
1918+
beforeAll((): void => {
1919+
ele = createElement('div', { id: 'container' });
1920+
document.body.appendChild(ele);
1921+
chart = new Chart(
1922+
{
1923+
primaryXAxis: {
1924+
valueType: 'Category',
1925+
rangePadding: 'Normal',
1926+
title: 'Country',
1927+
},
1928+
primaryYAxis: {
1929+
title: 'PrimaryYAxis',
1930+
},
1931+
series: [{
1932+
dataSource: categoryData,
1933+
xName: 'x',
1934+
yName: 'y',
1935+
fill: 'red',
1936+
}],
1937+
height: '400px',
1938+
width: '900px',
1939+
});
1940+
});
1941+
afterAll((): void => {
1942+
chart.destroy();
1943+
ele.remove();
1944+
});
1945+
it('Checking yAxis with labelPosition Inside', (done: Function) => {
1946+
loaded = (args: Object): void => {
1947+
element = document.getElementById('container_AxisTitle_1');
1948+
let element1 = document.getElementById('container1_AxisLabel_6');
1949+
let titleX = element.getAttribute('x');
1950+
let titleY = element.getAttribute('y');
1951+
let labelX = element1.getAttribute('x');
1952+
let labelY = element1.getAttribute('y');
1953+
expect(titleX === '26.5' || titleX === '27.5').toBe(true);
1954+
expect(titleY === '176.875').toBe(true);
1955+
expect(labelX === '138' || labelX === '139').toBe(true);
1956+
expect(labelY === '107.25' || labelY === '106.5' ).toBe(true);
1957+
done();
1958+
};
1959+
chart.loaded = loaded;
1960+
chart.primaryYAxis.titlePadding = 50;
1961+
chart.primaryYAxis.labelPadding = 50;
1962+
chart.primaryYAxis.labelPosition = 'Inside';
1963+
chart.appendTo('#container');
1964+
});
1965+
it('Checking yAxis with tickPosition Inside', (done: Function) => {
1966+
loaded = (args: Object): void => {
1967+
element = document.getElementById('container_AxisTitle_1');
1968+
let element1 = document.getElementById('container1_AxisLabel_5');
1969+
let titleX = element.getAttribute('x');
1970+
let titleY = element.getAttribute('y');
1971+
let labelX = element1.getAttribute('x');
1972+
let labelY = element1.getAttribute('y');
1973+
expect(titleX === '71.5' || titleX === '72.5').toBe(true);
1974+
expect(titleY === '126.875').toBe(true);
1975+
expect(labelX === '82' || labelX === '83').toBe(true);
1976+
expect(labelY === '135').toBe(true);
1977+
done();
1978+
};
1979+
chart.loaded = loaded;
1980+
chart.primaryYAxis.labelPosition = 'Outside';
1981+
chart.primaryYAxis.tickPosition = 'Inside';
1982+
chart.appendTo('#container');
1983+
});
1984+
it('Checking yAxis with both Position Inside', (done: Function) => {
1985+
loaded = (args: Object): void => {
1986+
element = document.getElementById('container_AxisTitle_1');
1987+
let element1 = document.getElementById('container1_AxisLabel_4');
1988+
let titleX = element.getAttribute('x');
1989+
let titleY = element.getAttribute('y');
1990+
let labelX = element1.getAttribute('x');
1991+
let labelY = element1.getAttribute('y');
1992+
expect(titleX === '26.5' || titleX === '27.5').toBe(true);
1993+
expect(titleY === '176.875').toBe(true);
1994+
expect(labelX === '138' || labelX === '139').toBe(true);
1995+
expect(labelY === '190.25' || labelY === '189.5').toBe(true);
1996+
done();
1997+
};
1998+
chart.loaded = loaded;
1999+
chart.primaryYAxis.labelPosition = 'Inside';
2000+
chart.primaryYAxis.tickPosition = 'Inside';
2001+
chart.appendTo('#container');
2002+
});
2003+
it('Checking xAxis with labelPosition Inside', (done: Function) => {
2004+
loaded = (args: Object): void => {
2005+
element = document.getElementById('container_AxisTitle_0');
2006+
let element1 = document.getElementById('container0_AxisLabel_6');
2007+
let titleX = element.getAttribute('x');
2008+
let titleY = element.getAttribute('y');
2009+
let labelX = element1.getAttribute('x');
2010+
let labelY = element1.getAttribute('y');
2011+
expect(titleX === '471.75' || titleX === '472.25').toBe(true);
2012+
expect(titleY === '385.5' || titleY === '385.25').toBe(true);
2013+
expect(labelX === '722.15625' || labelX === '722.34375').toBe(true);
2014+
expect(labelY === '268' || labelY === '267').toBe(true);
2015+
done();
2016+
};
2017+
chart.loaded = loaded;
2018+
chart.primaryYAxis.titlePadding = 5;
2019+
chart.primaryYAxis.labelPadding = 5;
2020+
chart.primaryYAxis.labelPosition = 'Outside';
2021+
chart.primaryYAxis.tickPosition = 'Outside';
2022+
chart.primaryXAxis.titlePadding = 50;
2023+
chart.primaryXAxis.labelPadding = 50;
2024+
chart.primaryXAxis.labelPosition = 'Inside';
2025+
chart.appendTo('#container');
2026+
});
2027+
it('Checking xAxis with tickPosition Inside', (done: Function) => {
2028+
loaded = (args: Object): void => {
2029+
element = document.getElementById('container_AxisTitle_0');
2030+
let element1 = document.getElementById('container0_AxisLabel_3');
2031+
let titleX = element.getAttribute('x');
2032+
let titleY = element.getAttribute('y');
2033+
let labelX = element1.getAttribute('x');
2034+
let labelY = element1.getAttribute('y');
2035+
expect(titleX === '471.75' || titleX === '472.25').toBe(true);
2036+
expect(titleY === '385.5' || titleY === '385.25').toBe(true);
2037+
expect(labelX === '397.46875' || labelX === '398.03125').toBe(true);
2038+
expect(labelY === '320.25' || labelY === '319.5').toBe(true);
2039+
done();
2040+
};
2041+
chart.loaded = loaded;
2042+
chart.primaryXAxis.labelPosition = 'Outside';
2043+
chart.primaryXAxis.tickPosition = 'Inside';
2044+
chart.appendTo('#container');
2045+
});
2046+
it('Checking xAxis with both Position Inside', (done: Function) => {
2047+
loaded = (args: Object): void => {
2048+
element = document.getElementById('container_AxisTitle_0');
2049+
let element1 = document.getElementById('container0_AxisLabel_4');
2050+
let titleX = element.getAttribute('x');
2051+
let titleY = element.getAttribute('y');
2052+
let labelX = element1.getAttribute('x');
2053+
let labelY = element1.getAttribute('y');
2054+
expect(titleX === '471.75' || titleX === '472.25' ).toBe(true);
2055+
expect(titleY === '385.5' || titleY === '385.25').toBe(true);
2056+
expect(labelX === '507.53125' || labelX === '507.96875').toBe(true);
2057+
expect(labelY === '268' || labelY === '267').toBe(true);
2058+
done();
2059+
};
2060+
chart.loaded = loaded;
2061+
chart.primaryXAxis.labelPosition = 'Inside';
2062+
chart.primaryXAxis.tickPosition = 'Inside';
2063+
chart.appendTo('#container');
2064+
});
2065+
2066+
})
19122067
});
19132068

19142069
});

controls/charts/spec/chart/series/waterfall-series.spec.ts

+82
Original file line numberDiff line numberDiff line change
@@ -1143,6 +1143,88 @@ describe('Waterfall Series', () => {
11431143
chart.refresh();
11441144
});
11451145
});
1146+
describe('Checking waterfall series with intermediate sum and sum index', () => {
1147+
let chart: Chart;
1148+
let loaded: EmitType<ILoadedEventArgs>;
1149+
let element: HTMLElement;
1150+
element = createElement('div', { id: 'container' });
1151+
beforeAll(() => {
1152+
document.body.appendChild(element);
1153+
chart = new Chart(
1154+
{
1155+
primaryXAxis: {
1156+
valueType: 'Category',
1157+
majorGridLines: { width: 0 },
1158+
plotOffset: 20
1159+
},
1160+
//Initializing Primary Y Axis
1161+
primaryYAxis: {
1162+
minimum: 0, maximum: 1250, interval: 250,
1163+
majorGridLines: { width: 1 }, lineStyle: { width: 0 }, majorTickLines: { width: 0 },
1164+
minorTickLines: { width: 0 },
1165+
title: 'USD',
1166+
labelFormat: "{value}K"
1167+
},
1168+
//Initializing Chart Series
1169+
series: [{
1170+
dataSource: [{ x: 'Income', y: 4711 },
1171+
{ x: 'Sales', y: -1015 },
1172+
{ x: 'Development', y: -688 },
1173+
{ x: 'Revenue', y: 1030 },
1174+
{ x: 'Balance', y: -100 },
1175+
{ x: 'Administrative' },
1176+
{ x: 'Expense', y: -361 },
1177+
{ x: 'Tax' },
1178+
{ x: 'maxim', y: -2000 },
1179+
{ x: 'maxi2', y: 200 },
1180+
{ x: 'Net Profit', y: 0 },],
1181+
width: 2, negativeFillColor: '#e56590',
1182+
xName: 'x', yName: 'y', intermediateSumIndexes: [], sumIndexes: [5,7,10],
1183+
columnWidth: 0.9,
1184+
type: 'Waterfall', animation: { enable: true },
1185+
marker: {
1186+
dataLabel: { visible: true, font: { color: '#ffffff' } }
1187+
}, connector: { color: '#5F6A6A', width: 2 }
1188+
}],
1189+
chartArea: { border: { width: 0 } },
1190+
title: 'Company Revenue and Profit',
1191+
legendSettings: { visible: false },
1192+
width: '100%',
1193+
});
1194+
chart.appendTo('#container');
1195+
});
1196+
1197+
afterAll((): void => {
1198+
chart.destroy();
1199+
element.remove();
1200+
});
1201+
it('Checking with intermediate sum index as empty', (done: Function) => {
1202+
loaded = (args: ILoadedEventArgs): void => {
1203+
let point: number = args.chart.visibleSeries[0].points[10].y as number;
1204+
expect(point).toBe(1777);
1205+
done();
1206+
};
1207+
chart.loaded = loaded;
1208+
chart.refresh();
1209+
});
1210+
it('Checking with intermediate sum index', (done: Function) => {
1211+
loaded = (args: ILoadedEventArgs): void => {
1212+
let point: number = args.chart.visibleSeries[0].points[8].y as number;
1213+
expect(point).toBe(2897);
1214+
done();
1215+
};
1216+
chart.loaded = loaded;
1217+
chart.series[0].dataSource = [ { x: 'Income', y: 4711 }, { x: 'Sales', y: -1015 },
1218+
{ x: 'Development', y: -688 },
1219+
{ x: 'Revenue', y: 1030 }, {x: 'Balance'},
1220+
{ x: 'Administrative', y: -780 },
1221+
{ x: 'Expense', y: -361 }, { x: 'Tax', y: -695 },
1222+
{ x: 'Net Profit'}];
1223+
chart.series[0].sumIndexes = [8];
1224+
chart.series[0].intermediateSumIndexes = [4, 7];
1225+
chart.refresh();
1226+
});
1227+
});
11461228
it('memory leak', () => {
11471229
profile.sample();
11481230
let average: any = inMB(profile.averageChange)

controls/charts/src/chart/axis/axis.ts

+3-14
Original file line numberDiff line numberDiff line change
@@ -1119,27 +1119,16 @@ export class Axis extends ChildProperty<Axis> {
11191119
}
11201120
const titlePadding: number = ((this.title !== '' && this.titlePadding !== 5) ? this.titlePadding : 0);
11211121
if (this.isAxisOpposedPosition) {
1122-
if (this.labelPosition === 'Inside' && definition.insideFarSizes.length < 1) {
1123-
definition.insideFarSizes.push(titleSize + innerPadding +
1124-
titlePadding + (this.tickPosition === 'Inside' ? 0 : this.majorTickLines.height));
1125-
}
1126-
else {
1127-
definition.insideFarSizes.push(labelSize);
1128-
}
1122+
definition.insideFarSizes.push(labelSize);
11291123
}
11301124
else {
1131-
if (this.labelPosition === 'Inside' && definition.insideNearSizes.length < 1) {
1132-
definition.insideNearSizes.push(titleSize + innerPadding +
1133-
titlePadding + (this.tickPosition === 'Inside' ? 0 : this.majorTickLines.height));
1134-
}
1135-
else {
1136-
definition.insideNearSizes.push(labelSize);
1137-
}
1125+
definition.insideNearSizes.push(labelSize);
11381126
}
11391127

11401128
if (this.labelPosition === 'Inside') {
11411129
if ((this.isAxisOpposedPosition && definition.farSizes.length < 1) ||
11421130
(!this.isAxisOpposedPosition && definition.nearSizes.length < 1)) {
1131+
innerPadding = (this.labelPosition === 'Inside' && (chart.axes.indexOf(this) > -1)) ? -5 : 5;
11431132
return titleSize + innerPadding + titlePadding;
11441133
}
11451134
else {

0 commit comments

Comments
 (0)