diff --git a/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.spec.ts b/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.spec.ts index 152ec5abef3..20428ffa6b1 100644 --- a/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.spec.ts +++ b/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.spec.ts @@ -24,34 +24,46 @@ describe('Unit testing SortingStrategy', () => { strategy: DefaultSortingStrategy.instance() }]); expect(dataGenerator.getValuesForColumn(res, 'number')) - .toEqual([4, 2, 0, 3, 1]); + .toEqual([4, 2, 0, 3, 1]); }); it('tests `compareObjects`', () => { const strategy = DefaultSortingStrategy.instance(); expect(strategy.compareValues(1, 0) === 1 && - strategy.compareValues(true, false) === 1 && - strategy.compareValues('bc', 'adfc') === 1) + strategy.compareValues(true, false) === 1 && + strategy.compareValues('bc', 'adfc') === 1) .toBeTruthy('compare first argument greater than second'); expect(strategy.compareValues(1, 2) === -1 && - strategy.compareValues('a', 'b') === -1 && - strategy.compareValues(false, true) === -1) + strategy.compareValues('a', 'b') === -1 && + strategy.compareValues(false, true) === -1) .toBeTruthy('compare 0, 1'); expect(strategy.compareValues(0, 0) === 0 && - strategy.compareValues(true, true) === 0 && - strategy.compareValues('test', 'test') === 0 - ) + strategy.compareValues(true, true) === 0 && + strategy.compareValues('test', 'test') === 0 + ) .toBeTruthy('Comare equal variables'); }); it('tests default settings', () => { (data[4] as { string: string }).string = 'ROW'; const res = sorting.sort(data, [{ - dir: SortingDirection.Asc, - fieldName: 'string', - ignoreCase: true, - strategy: DefaultSortingStrategy.instance() - }]); + dir: SortingDirection.Asc, + fieldName: 'string', + ignoreCase: true, + strategy: DefaultSortingStrategy.instance() + }]); expect(dataGenerator.getValuesForColumn(res, 'number')) - .toEqual([4, 0, 1, 2, 3]); + .toEqual([4, 0, 1, 2, 3]); + }); + + it('should not sort when sorting direction is None', () => { + const unsortedData = [{ number: 3 }, { number: 1 }, { number: 4 }, { number: 0 }, { number: 2 }]; + const res = sorting.sort(unsortedData, [{ + dir: SortingDirection.None, + fieldName: 'number', + ignoreCase: false, + strategy: DefaultSortingStrategy.instance() + }]); + expect(res.map(d => d.number)) + .toEqual([3, 1, 4, 0, 2]); }); }); diff --git a/projects/igniteui-angular/src/lib/grids/common/strategy.ts b/projects/igniteui-angular/src/lib/grids/common/strategy.ts index d951a4d38bc..3da2f12876e 100644 --- a/projects/igniteui-angular/src/lib/grids/common/strategy.ts +++ b/projects/igniteui-angular/src/lib/grids/common/strategy.ts @@ -5,7 +5,7 @@ import { IGroupingState } from '../../data-operations/groupby-state.interface'; import { IGroupingExpression } from '../../data-operations/grouping-expression.interface'; import { IGroupByResult } from '../../data-operations/grouping-result.interface'; import { getHierarchy, isHierarchyMatch } from '../../data-operations/operations'; -import { DefaultSortingStrategy, ISortingExpression } from '../../data-operations/sorting-strategy'; +import { DefaultSortingStrategy, ISortingExpression, SortingDirection } from '../../data-operations/sorting-strategy'; import { GridType } from './grid.interface'; const DATE_TYPE = 'date'; @@ -141,6 +141,9 @@ export class IgxSorting implements IGridSortingStrategy { private prepareExpressions(expressions: ISortingExpression[], grid: GridType): IGridInternalSortingExpression[] { const multipleSortingExpressions: IGridInternalSortingExpression[] = []; for (const expr of expressions) { + if (expr.dir === SortingDirection.None) { + continue; + } if (!expr.strategy) { expr.strategy = DefaultSortingStrategy.instance(); } diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.spec.ts b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.spec.ts index 481c29cfec1..223899f40d7 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { CellType, FilteringExpressionsTree, FilteringLogic, GridColumnDataType, IGridCellEventArgs, IgxIconComponent, IgxPivotGridComponent, IgxStringFilteringOperand } from 'igniteui-angular'; +import { FilteringExpressionsTree, FilteringLogic, GridColumnDataType, IGridCellEventArgs, IgxGridCell, IgxIconComponent, IgxPivotGridComponent, IgxStringFilteringOperand } from 'igniteui-angular'; import { IgxChipComponent } from '../../chips/chip.component'; import { IgxChipsAreaComponent } from '../../chips/chips-area.component'; import { DefaultPivotSortingStrategy } from '../../data-operations/pivot-sort-strategy'; @@ -22,7 +22,6 @@ import { Size } from '../common/enums'; import { setElementSize } from '../../test-utils/helper-utils.spec'; import { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component'; import { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component'; -import { IgxGridCellComponent } from '../cell.component'; const CSS_CLASS_LIST = 'igx-drop-down__list'; const CSS_CLASS_ITEM = 'igx-drop-down__item'; @@ -760,7 +759,7 @@ describe('IgxPivotGrid #pivotGrid', () => { expect(pivotGrid.columns.length).toBe(3); }); - it('should calculate row headers according to grid size', async() => { + it('should calculate row headers according to grid size', async () => { const pivotGrid = fixture.componentInstance.pivotGrid; const rowHeightSmall = 32; const rowHeightMedium = 40; @@ -797,7 +796,7 @@ describe('IgxPivotGrid #pivotGrid', () => { expect(rowHeader[0].nativeElement.offsetHeight).toBe(rowHeightMedium); }); - it('should render with correct width when set to 100% inside of flex container', async() => { + it('should render with correct width when set to 100% inside of flex container', async () => { fixture = TestBed.createComponent(IgxPivotGridFlexContainerComponent); fixture.detectChanges(); await wait(100); @@ -1415,7 +1414,7 @@ describe('IgxPivotGrid #pivotGrid', () => { GridFunctions.clickHeaderSortIcon(headerCell); fixture.detectChanges(); expect(pivotGrid.sortingExpressions.length).toBe(0); - expectedOrder = [829, 293, undefined, 296, 240]; + expectedOrder = [829, 296, undefined, 293, 240]; columnValues = pivotGrid.dataView.map(x => (x as IPivotGridRecord).aggregationValues.get('USA-UnitsSold')); expect(columnValues).toEqual(expectedOrder); }); @@ -2113,15 +2112,16 @@ describe('IgxPivotGrid #pivotGrid', () => { spyOn(pivotGrid.cellClick, 'emit').and.callThrough(); fixture.detectChanges(); - const cell = pivotGrid.gridAPI.get_cell_by_index(0, 'Bulgaria-UnitsSold') as CellType; + const cell = pivotGrid.gridAPI.get_cell_by_index(0, 'Bulgaria-UnitsSold'); - pivotGrid.cellClick.emit({ cell, event: null }); - cell.nativeElement.click(); - const cellClickargs: IGridCellEventArgs = { cell, event: new MouseEvent('click') }; + const event = new Event('click'); + cell.nativeElement.dispatchEvent(event); + fixture.detectChanges(); + + const expectedCell = new IgxGridCell(pivotGrid, 0, cell.column); - const gridCell = cellClickargs.cell as IgxGridCellComponent; - const firstEntry = gridCell.rowData.aggregationValues.entries().next().value; - expect(firstEntry).toEqual(['USA-UnitsSold', 829]); + const cellClickArgs: IGridCellEventArgs = { cell: expectedCell, event }; + expect(pivotGrid.cellClick.emit).toHaveBeenCalledOnceWith(cellClickArgs); }); }); }); @@ -2139,7 +2139,7 @@ describe('IgxPivotGrid #pivotGrid', () => { const pivotGrid = fixture.componentInstance.pivotGrid; expect(pivotGrid.selectedRows).toEqual([]); const pivotRows = GridFunctions.getPivotRows(fixture); - const row = pivotRows[2].componentInstance; + const row = pivotRows[1].componentInstance; const rowHeaders = fixture.debugElement.queryAll( By.directive(IgxPivotRowDimensionHeaderComponent)); const secondDimCell = rowHeaders.find(x => x.componentInstance.column.header === 'Clothing'); @@ -2177,13 +2177,17 @@ describe('IgxPivotGrid #pivotGrid', () => { [ { AllProducts: 'AllProducts', 'All cities': 'All Cities' - }, { - ProductCategory: 'Bikes', 'All cities': 'All Cities' - }, { + }, + { ProductCategory: 'Clothing', 'All cities': 'All Cities' - }, { + }, + { + ProductCategory: 'Bikes', 'All cities': 'All Cities' + }, + { ProductCategory: 'Accessories', 'All cities': 'All Cities' - }, { + }, + { ProductCategory: 'Components', 'All cities': 'All Cities' } ]; @@ -2233,38 +2237,38 @@ describe('IgxPivotGrid #pivotGrid', () => { columns: fixture.componentInstance.pivotConfigHierarchy.columns, rows: fixture.componentInstance.pivotConfigHierarchy.rows, values: [ - { - member: 'UnitsSold', - aggregate: { - aggregator: IgxPivotNumericAggregate.sum, - key: 'SUM', - label: 'Sum' - }, - enabled: true, - formatter: (value, row, column) => { - if (!column || !column.value || column.value.member !== 'UnitsSold') { - correctFirstColumnData = false; + { + member: 'UnitsSold', + aggregate: { + aggregator: IgxPivotNumericAggregate.sum, + key: 'SUM', + label: 'Sum' + }, + enabled: true, + formatter: (value, row, column) => { + if (!column || !column.value || column.value.member !== 'UnitsSold') { + correctFirstColumnData = false; + } + return value; } - return value; - } - }, - { - member: 'AmountOfSale', - displayName: 'Amount of Sale', - aggregate: { - aggregator: IgxTotalSaleAggregate.totalSale, - key: 'TOTAL', - label: 'Total' }, - enabled: true, - formatter: (value, row, column) => { - if (!column || !column.value || column.value.member !== 'AmountOfSale') { - correctSecondColumnData = false; + { + member: 'AmountOfSale', + displayName: 'Amount of Sale', + aggregate: { + aggregator: IgxTotalSaleAggregate.totalSale, + key: 'TOTAL', + label: 'Total' + }, + enabled: true, + formatter: (value, row, column) => { + if (!column || !column.value || column.value.member !== 'AmountOfSale') { + correctSecondColumnData = false; + } + return value; } - return value; } - } - ] + ] }; pivotGrid.width = '1500px'; @@ -2528,7 +2532,7 @@ describe('IgxPivotGrid #pivotGrid', () => { const dimensionContents = fixture.debugElement.queryAll(By.css('.igx-grid__tbody-pivot-dimension')); const rowHeaders = dimensionContents[1].queryAll(By.directive(IgxPivotRowDimensionHeaderGroupComponent)); const first = rowHeaders.map(x => x.componentInstance.column.header)[0]; - expect(first).toBe('Larry Lieb'); + expect(first).toBe('Stanley Brooker'); // insert in columns pivotGrid.insertDimensionAt({ memberName: 'SellerNameColumn', memberFunction: (rec) => rec.SellerName, enabled: true }, PivotDimensionType.Column, 0); @@ -2822,7 +2826,7 @@ describe('IgxPivotGrid #pivotGrid', () => { //check rows const rows = pivotGrid.rowList.toArray(); expect(rows.length).toBe(4); - const expectedHeaders = ['Accessories', 'Bikes', 'Clothing', 'Components']; + const expectedHeaders = ['Clothing', 'Bikes', 'Accessories', 'Components']; const rowHeaders = fixture.debugElement.queryAll( By.directive(IgxPivotRowDimensionHeaderComponent)); const rowDimensionHeaders = rowHeaders.map(x => x.componentInstance.column.header); @@ -2835,7 +2839,7 @@ describe('IgxPivotGrid #pivotGrid', () => { // check data const pivotRecord = (pivotGrid.rowList.first as IgxPivotRowComponent).data; - expect(pivotRecord.aggregationValues.get('London')).toBe(293); + expect(pivotRecord.aggregationValues.get('New York')).toBe(296); }); @@ -2868,8 +2872,8 @@ describe('IgxPivotGrid #pivotGrid', () => { ] }; fixture.detectChanges(); - expect(pivotGrid.gridAPI.get_cell_by_index(0, 0).nativeElement.innerText).toBe('Accessories/Plovdiv:undefined'); - expect(pivotGrid.gridAPI.get_cell_by_index(0, 3).nativeElement.innerText).toBe('Accessories/London:293'); + expect(pivotGrid.gridAPI.get_cell_by_index(0, 0).nativeElement.innerText).toBe('Clothing/Plovdiv:282'); + expect(pivotGrid.gridAPI.get_cell_by_index(0, 3).nativeElement.innerText).toBe('Clothing/London:undefined'); }); it('should allow filtering a dimension runtime.', () => { @@ -3029,7 +3033,7 @@ describe('IgxPivotGrid #pivotGrid', () => { const rowDimensionHeadersCol2 = rowDimensionCol2.map(x => x.componentInstance.rowDimensionColumn.header); dimensions = rowDimensionCol2.map(x => x.componentInstance.dimension); expect(dimensions.every(x => x.memberName === "City")).toBeTruthy(); - expect(rowDimensionHeadersCol2).toEqual(["Ciudad de la Costa", "London", "New York", "Plovdiv", "Sofia", "Yokohama"]); + expect(rowDimensionHeadersCol2).toEqual(['Plovdiv', 'New York', 'Ciudad de la Costa', 'London', 'Yokohama', 'Sofia']); const rowDimensionCol3 = contentRowHeaders.filter(y => y.componentInstance.layout.colStart === 3); const rowDimensionHeadersCol3 = rowDimensionCol3.map(x => x.componentInstance.rowDimensionColumn.header); @@ -3042,8 +3046,8 @@ describe('IgxPivotGrid #pivotGrid', () => { .map(x => x.componentInstance.rowDimensionColumn.header); dimensions = rowDimensionCol4.map(x => x.componentInstance.dimension); expect(dimensions.every(x => x.memberName === "ProductCategory")).toBeTruthy(); - expect(rowDimensionHeadersCol4).toEqual(["Bikes", "Clothing", "Accessories", - "Clothing", "Clothing", "Components", "Components"]); + expect(rowDimensionHeadersCol4).toEqual(["Clothing", "Clothing", "Bikes", + "Clothing", "Accessories", "Components", "Components"]); }); it("should horizontally expand/collapse on a single dimension hierarchy.", () => { @@ -3262,11 +3266,14 @@ describe('IgxPivotGrid #pivotGrid', () => { const allGroups = layoutContainer.queryAll( By.directive(IgxPivotRowDimensionHeaderComponent)); const row0Col0 = allGroups[0]; - const row0Col1 = allGroups.filter(x => x.componentInstance.column.header === "Ciudad de la Costa")[0]; + const row0Col1 = allGroups.filter(x => x.componentInstance.column.header === "Plovdiv")[0]; + const row1Col1 = allGroups.filter(x => x.componentInstance.column.header === "New York")[0]; + const row0Col2 = allGroups.filter(x => x.componentInstance.column.header === "AllProducts")[0]; - const row0Col3 = allGroups.filter(x => x.componentInstance.column.header === "Bikes")[0]; - const row1Col3 = allGroups.filter(x => x.componentInstance.column.header === "Clothing")[0]; - const row2Col3 = allGroups.filter(x => x.componentInstance.column.header === "Accessories")[0]; + const row1Col2 = allGroups.filter(x => x.componentInstance.column.header === "AllProducts")[1]; + const row0Col3 = allGroups.filter(x => x.componentInstance.column.header === "Clothing")[0]; + const row1Col3 = allGroups.filter(x => x.componentInstance.column.header === "Clothing")[1]; + const row2Col3 = allGroups.filter(x => x.componentInstance.column.header === "Bikes")[0]; UIInteractions.simulateClickAndSelectEvent(row0Col0); fixture.detectChanges(); @@ -3320,18 +3327,18 @@ describe('IgxPivotGrid #pivotGrid', () => { UIInteractions.triggerKeyDownEvtUponElem('ArrowLeft', row1Col3.nativeElement); tick(); fixture.detectChanges(); - GridFunctions.verifyHeaderIsFocused(row0Col2.parent); + GridFunctions.verifyHeaderIsFocused(row1Col2.parent); activeCells = fixture.debugElement.queryAll(By.css(`${ACTIVE_CELL_CSS_CLASS}`)); expect(activeCells.length).toBe(1); - UIInteractions.triggerKeyDownEvtUponElem('ArrowLeft', row0Col2.nativeElement); + UIInteractions.triggerKeyDownEvtUponElem('ArrowLeft', row1Col2.nativeElement); tick(); fixture.detectChanges(); - GridFunctions.verifyHeaderIsFocused(row0Col1.parent); + GridFunctions.verifyHeaderIsFocused(row1Col1.parent); activeCells = fixture.debugElement.queryAll(By.css(`${ACTIVE_CELL_CSS_CLASS}`)); expect(activeCells.length).toBe(1); - UIInteractions.triggerKeyDownEvtUponElem('ArrowLeft', row0Col1.nativeElement); + UIInteractions.triggerKeyDownEvtUponElem('ArrowLeft', row1Col1.nativeElement); tick(); fixture.detectChanges(); GridFunctions.verifyHeaderIsFocused(row0Col0.parent); @@ -3385,7 +3392,7 @@ describe('IgxPivotGrid #pivotGrid', () => { const productRowContents = rowHeaders.filter(x => x.componentInstance.column.field === "ProductCategory"); const productRowContentsHeaders = productRowContents.map(x => x.componentInstance.column.header); - expect(productRowContentsHeaders).toEqual(['ProductCategory', 'Accessories', 'Bikes', 'Clothing', 'Components']); + expect(productRowContentsHeaders).toEqual(['ProductCategory', 'Clothing', 'Bikes', 'Accessories', 'Components']); const sortIcon = productsHeaderColumn.querySelectorAll('igx-icon')[0]; sortIcon.click(); @@ -3408,7 +3415,7 @@ describe('IgxPivotGrid #pivotGrid', () => { By.directive(IgxPivotRowDimensionHeaderComponent)); expect(pivotGrid.selectedRows).toEqual([]); const pivotRows = GridFunctions.getPivotRows(fixture); - const row = pivotRows[2].componentInstance; + const row = pivotRows[4].componentInstance; const secondDimCell = rowHeaders.find(x => x.componentInstance.column.header === 'Accessories'); secondDimCell.nativeElement.click(); fixture.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/state.pivotgrid.spec.ts b/projects/igniteui-angular/src/lib/grids/state.pivotgrid.spec.ts index 7ef2e6779cc..bbc6bf04b4e 100644 --- a/projects/igniteui-angular/src/lib/grids/state.pivotgrid.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/state.pivotgrid.spec.ts @@ -228,7 +228,7 @@ describe('IgxPivotGridState #pivotGrid :', () => { pivotGrid.rowSelection = 'single'; const state = fixture.componentInstance.state; expect(state).toBeDefined('IgxGridState directive is initialized'); - const headerRow = fixture.nativeElement.querySelector('igx-pivot-row-dimension-content'); + const headerRow = fixture.nativeElement.querySelectorAll('igx-pivot-row-dimension-content')[2]; const header = headerRow.querySelector('igx-pivot-row-dimension-header'); header.click(); fixture.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/services/csv/csv-verification-wrapper.spec.ts b/projects/igniteui-angular/src/lib/services/csv/csv-verification-wrapper.spec.ts index 105cd01b132..65639433acc 100644 --- a/projects/igniteui-angular/src/lib/services/csv/csv-verification-wrapper.spec.ts +++ b/projects/igniteui-angular/src/lib/services/csv/csv-verification-wrapper.spec.ts @@ -291,9 +291,9 @@ export class CSVWrapper { public get pivotGridData() { return `ProductCategory${this._delimiter}Bulgaria${this._delimiter}USA${this._delimiter}Uruguay${this._eor}` + - `Accessories${this._delimiter}${this._delimiter}293${this._delimiter}${this._eor}` + - `Bikes${this._delimiter}${this._delimiter}${this._delimiter}68${this._eor}` + `Clothing${this._delimiter}774${this._delimiter}296${this._delimiter}456${this._eor}` + + `Bikes${this._delimiter}${this._delimiter}${this._delimiter}68${this._eor}` + + `Accessories${this._delimiter}${this._delimiter}293${this._delimiter}${this._eor}` + `Components${this._delimiter}${this._delimiter}240${this._delimiter}${this._eor}`; } } diff --git a/projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts b/projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts index 07322d9553e..97ed95aeb96 100644 --- a/projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts +++ b/projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts @@ -1292,7 +1292,6 @@ export class FileContentData { 012345657891011121311141524253637 `; - return this.createData(); } @@ -1658,7 +1657,7 @@ export class FileContentData { public get exportPivotGridData() { this._sharedStringsData = - `count="38" uniqueCount="23">AccessoriesBikesClothingComponentsUSAUruguayBulgaria04/07/202101/06/202001/01/202102/19/202001/05/201905/12/202012/08/2021StanleyElisaLydiaDavidJohnLarryWalterUnitsSoldUnitPrice`; + `count="38" uniqueCount="23">ClothingBikesAccessoriesComponentsBulgariaUSAUruguay01/01/202102/19/202001/05/201905/12/202001/06/202004/07/202112/08/2021StanleyElisaLydiaDavidJohnLarryWalterUnitsSoldUnitPrice`; this._worksheetData = ` @@ -1666,38 +1665,44 @@ export class FileContentData { topLeftCell="D1" activePane="topRight" state="frozen"/> - 14151617181920212221222122212221222122212204729385.58158683.5626928212.811049216.0541129649.5751245668.33341324018.13 `; + 14151617181920212221222122212221222122212204728212.81849216.055929649.5761045668.331611683.56251229385.58351324018.13 `; return this.createData(); } public get exportPivotGridDataWithHeaders() { this._sharedStringsData = - `count="41" uniqueCount="26">ProductCategoryAccessoriesBikesClothingComponentsCountryUSAUruguayBulgariaDate04/07/202101/06/202001/01/202102/19/202001/05/201905/12/202012/08/2021StanleyElisaLydiaDavidJohnLarryWalterUnitsSoldUnitPrice`; + `count="41" uniqueCount="26">ProductCategoryClothingBikesAccessoriesComponentsCountryBulgariaUSAUruguayDate01/01/202102/19/202001/05/201905/12/202001/06/202004/07/202112/08/2021StanleyElisaLydiaDavidJohnLarryWalterUnitsSoldUnitPrice`; this._worksheetData = ` + topLeftCell="D1" activePane="topRight" state="frozen"/> - 059171819202122232425242524252425242524252425161029385.582711683.56381228212.811349216.0561429649.5771545668.33461624018.13 `; + 059171819202122232425242524252425242524252425161028212.811149216.0571229649.5781345668.332814683.56371529385.58471624018.13 `; return this.createData(); } public get exportPivotGridDataHorizontal() { this._sharedStringsData = - `count="41" uniqueCount="26">ProductCategoryAccessoriesBikesClothingComponentsCountryUSAUruguayBulgariaDate04/07/202101/06/202001/01/202102/19/202001/05/201905/12/202012/08/2021StanleyElisaLydiaDavidJohnLarryWalterUnitsSoldUnitPrice`; + `count="41" uniqueCount="26">ProductCategoryClothingBikesAccessoriesComponentsCountryBulgariaUSAUruguayDate01/01/202102/19/202001/05/201905/12/202001/06/202004/07/202112/08/2021StanleyElisaLydiaDavidJohnLarryWalterUnitsSoldUnitPrice`; this._worksheetData = - `059171819202122232425242524252425242524252425161029385.582711683.56381228212.811349216.0561429649.5771545668.33461624018.13 `; + ` + + + + + 059171819202122232425242524252425242524252425161028212.811149216.0571229649.5781345668.332814683.56371529385.58471624018.13 `; return this.createData(); } public get exportPivotGridHierarchicalData() { this._sharedStringsData = - `count="40" uniqueCount="19">All CitiesCiudad de la CostaLondonNew YorkPlovdivSofiaYokohamaAllProductsBikesClothingAccessoriesComponentsBulgariaUSUruguayUKJapanUnitsSoldAmount of Sale`; + `count="40" uniqueCount="19">All CitiesPlovdivNew YorkCiudad de la CostaLondonYokohamaSofiaAllProductsClothingBikesAccessoriesComponentsBulgariaUSUruguayUKJapanUnitsSoldAmount of Sale`; this._worksheetData = ` @@ -1706,7 +1711,7 @@ export class FileContentData { topLeftCell="C1" activePane="topRight" state="frozen"/> - 1213141516171817181718171817180777411509.0229614672.7252431400.5629325074.942404351.2868242.0892823612.4229614672.7245631158.481029325074.94114927896.62404351.21752431400.56868242.08945631158.482729325074.941029325074.943729614672.72929614672.72472823612.4292823612.42574927896.6114927896.6672404351.2112404351.2 `; + 1213141516171817181718171817180777411509.0229614672.7252431400.5629325074.942404351.282823612.4229614672.7245631158.48968242.081029325074.94114927896.62404351.2172823612.4282823612.422729614672.72829614672.723752431400.56968242.08845631158.484729325074.941029325074.94572404351.2112404351.2674927896.6114927896.6 `; return this.createData(); }