Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
import { IgxHierarchicalGridExportComponent,
IgxHierarchicalGridMCHCollapsibleComponent,
IgxHierarchicalGridMultiColumnHeaderIslandsExportComponent,
IgxHierarchicalGridMultiColumnHeadersExportComponent,
IgxHierarchicalGridSummariesExportComponent
Expand Down Expand Up @@ -1013,6 +1014,27 @@ describe('Excel Exporter', () => {

await exportAndVerify(hGrid, options, actualData.exportEmptyMultiColumnHeadersDataWithExportedHeaders);
});

it('should export collapsible MCH with visibleWhenCollapsed set on 2 columns with the same field', async () => {
const fix = TestBed.createComponent(IgxHierarchicalGridMCHCollapsibleComponent);
fix.detectChanges();

const hGrid = fix.componentInstance.hGrid;
GridFunctions.clickGroupExpandIndicator(fix, hGrid.columnList.get(1));
fix.detectChanges();

const firstRow = hGrid.gridAPI.get_row_by_index(0) as IgxHierarchicalRowComponent;
UIInteractions.simulateClickAndSelectEvent(firstRow.expander);
fix.detectChanges();

const rowIsland = hGrid.childLayoutList.first;
GridFunctions.clickGroupExpandIndicator(fix, rowIsland.columnList.get(1));
fix.detectChanges();


options = createExportOptions('HierarchicalGridCollapsibleMCHExcelExport');
await exportAndVerify(hGrid, options, actualData.exportHierarchicalDataWithCollapsibleMCH);
})
});

describe('', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1283,6 +1283,20 @@ export class FileContentData {
return this.createData();
}

public get exportHierarchicalDataWithCollapsibleMCH() {
this._sharedStringsData =
`count="53" uniqueCount="38"><si><t>ID</t></si><si><t>Location</t></si><si><t>City</t></si><si><t>ALFKI</t></si><si><t>Berlin</t></si><si><t>CompanyName</t></si><si><t>Personal Details</t></si><si><t>ContactName</t></si><si><t>ContactTitle</t></si><si><t>Ana Trujillo Emparedados y helados</t></si><si><t>Ana Trujillo</t></si><si><t>Owner</t></si><si><t>Antonio Moreno Taquería</t></si><si><t>Antonio Moreno</t></si><si><t>COMMI</t></si><si><t>Sao Paulo</t></si><si><t>Consolidated Holdings</t></si><si><t>Elizabeth Brown</t></si><si><t>Sales Representative</t></si><si><t>Drachenblut Delikatessen</t></si><si><t>Sven Ottlieb</t></si><si><t>Order Administrator</t></si><si><t>Du monde entier</t></si><si><t>Janine Labrune</t></si><si><t>FISSA</t></si><si><t>Madrid</t></si><si><t>Folies gourmandes</t></si><si><t>Martine Rancé</t></si><si><t>Assistant Sales Agent</t></si><si><t>Folk och fä HB</t></si><si><t>Maria Larsson</t></si><si><t>Frankenversand</t></si><si><t>Peter Franken</t></si><si><t>Marketing Manager</t></si><si><t>France restauration</t></si><si><t>Carine Schmitt</t></si><si><t>FRANS</t></si><si><t>Torino</t></si>`;

this._worksheetData =
`<sheetPr><outlinePr summaryBelow="0"/></sheetPr>
<sheetViews><sheetView tabSelected="1" workbookViewId="0"></sheetView></sheetViews>
<sheetFormatPr defaultRowHeight="15" outlineLevelRow="1" x14ac:dyDescent="0.25"/>
<cols><col min="1" max="5" width="20" customWidth="1"/></cols>
<sheetData><row r="1"><c r="A1" s="3" t="s"><v>0</v></c><c r="B1" s="3" t="s"><v>1</v></c></row><row r="2"><c r="B2" s="3" t="s"><v>2</v></c></row><row r="3"><c r="A3" t="s"><v>3</v></c><c r="B3" t="s"><v>4</v></c></row><row r="4" outlineLevel="1"><c r="B4" s="3" t="s"><v>5</v></c><c r="C4" s="3" t="s"><v>6</v></c><c r="D4" s="3" /></row><row r="5" outlineLevel="1"><c r="B5" t="s" s="3"><v>5</v></c><c r="C5" t="s" s="3"><v>7</v></c><c r="D5" t="s" s="3"><v>8</v></c></row><row r="6" outlineLevel="1"><c r="B6" t="s"><v>9</v></c><c r="C6" t="s"><v>10</v></c><c r="D6" t="s"><v>11</v></c></row><row r="7" outlineLevel="1"><c r="B7" t="s"><v>12</v></c><c r="C7" t="s"><v>13</v></c><c r="D7" t="s"><v>11</v></c></row><row r="8"><c r="A8" t="s"><v>14</v></c><c r="B8" t="s"><v>15</v></c></row><row r="9" outlineLevel="1" hidden="1"><c r="B9" s="3" t="s"><v>5</v></c><c r="C9" s="3" t="s"><v>6</v></c><c r="D9" s="3" /></row><row r="10" outlineLevel="1" hidden="1"><c r="B10" t="s" s="3"><v>5</v></c><c r="C10" t="s" s="3"><v>7</v></c><c r="D10" t="s" s="3"><v>8</v></c></row><row r="11" outlineLevel="1" hidden="1"><c r="B11" t="s"><v>16</v></c><c r="C11" t="s"><v>17</v></c><c r="D11" t="s"><v>18</v></c></row><row r="12" outlineLevel="1" hidden="1"><c r="B12" t="s"><v>19</v></c><c r="C12" t="s"><v>20</v></c><c r="D12" t="s"><v>21</v></c></row><row r="13" outlineLevel="1" hidden="1"><c r="B13" t="s"><v>22</v></c><c r="C13" t="s"><v>23</v></c><c r="D13" t="s"><v>11</v></c></row><row r="14"><c r="A14" t="s"><v>24</v></c><c r="B14" t="s"><v>25</v></c></row><row r="15" outlineLevel="1" hidden="1"><c r="B15" s="3" t="s"><v>5</v></c><c r="C15" s="3" t="s"><v>6</v></c><c r="D15" s="3" /></row><row r="16" outlineLevel="1" hidden="1"><c r="B16" t="s" s="3"><v>5</v></c><c r="C16" t="s" s="3"><v>7</v></c><c r="D16" t="s" s="3"><v>8</v></c></row><row r="17" outlineLevel="1" hidden="1"><c r="B17" t="s"><v>26</v></c><c r="C17" t="s"><v>27</v></c><c r="D17" t="s"><v>28</v></c></row><row r="18" outlineLevel="1" hidden="1"><c r="B18" t="s"><v>29</v></c><c r="C18" t="s"><v>30</v></c><c r="D18" t="s"><v>11</v></c></row><row r="19" outlineLevel="1" hidden="1"><c r="B19" t="s"><v>31</v></c><c r="C19" t="s"><v>32</v></c><c r="D19" t="s"><v>33</v></c></row><row r="20" outlineLevel="1" hidden="1"><c r="B20" t="s"><v>34</v></c><c r="C20" t="s"><v>35</v></c><c r="D20" t="s"><v>33</v></c></row><row r="21"><c r="A21" t="s"><v>36</v></c><c r="B21" t="s"><v>37</v></c></row></sheetData><mergeCells count="8"> <mergeCell ref="A1:A2" /> <mergeCell ref="B1:B1" /> <mergeCell ref="B4:B5" /> <mergeCell ref="C4:D4" /> <mergeCell ref="B9:B10" /> <mergeCell ref="C9:D9" /> <mergeCell ref="B15:B16" /> <mergeCell ref="C15:D15" /></mergeCells>`;

return this.createData();
}

public get exportMultiColumnHeadersData() {
this._sharedStringsData =
`count="195" uniqueCount="162"><si><t>ID</t></si><si><t>General Information</t></si><si><t>Address Information</t></si><si><t>Personal Details</t></si><si><t>Location</t></si><si><t>Contact Information</t></si><si><t>ContactName</t></si><si><t>ContactTitle</t></si><si><t>Country</t></si><si><t>Phone</t></si><si><t>Fax</t></si><si><t>PostalCode</t></si><si><t>ALFKI</t></si><si><t>Maria Anders</t></si><si><t>Sales Representative</t></si><si><t>Germany</t></si><si><t>030-0074321</t></si><si><t>030-0076545</t></si><si><t>12209</t></si><si><t>ANATR</t></si><si><t>Ana Trujillo</t></si><si><t>Owner</t></si><si><t>Mexico</t></si><si><t>(5) 555-4729</t></si><si><t>(5) 555-3745</t></si><si><t>05021</t></si><si><t>ANTON</t></si><si><t>Antonio Moreno</t></si><si><t>(5) 555-3932</t></si><si><t>05023</t></si><si><t>AROUT</t></si><si><t>Thomas Hardy</t></si><si><t>UK</t></si><si><t>(171) 555-7788</t></si><si><t>(171) 555-6750</t></si><si><t>WA1 1DP</t></si><si><t>BERGS</t></si><si><t>Christina Berglund</t></si><si><t>Order Administrator</t></si><si><t>Sweden</t></si><si><t>0921-12 34 65</t></si><si><t>0921-12 34 67</t></si><si><t>S-958 22</t></si><si><t>BLAUS</t></si><si><t>Hanna Moos</t></si><si><t>0621-08460</t></si><si><t>0621-08924</t></si><si><t>68306</t></si><si><t>BLONP</t></si><si><t>Frédérique Citeaux</t></si><si><t>Marketing Manager</t></si><si><t>France</t></si><si><t>88.60.15.31</t></si><si><t>88.60.15.32</t></si><si><t>67000</t></si><si><t>BOLID</t></si><si><t>Martín Sommer</t></si><si><t>Spain</t></si><si><t>(91) 555 22 82</t></si><si><t>(91) 555 91 99</t></si><si><t>28023</t></si><si><t>BONAP</t></si><si><t>Laurence Lebihan</t></si><si><t>91.24.45.40</t></si><si><t>91.24.45.41</t></si><si><t>13008</t></si><si><t>BOTTM</t></si><si><t>Elizabeth Lincoln</t></si><si><t>Accounting Manager</t></si><si><t>Canada</t></si><si><t>(604) 555-4729</t></si><si><t>(604) 555-3745</t></si><si><t>T2F 8M4</t></si><si><t>BSBEV</t></si><si><t>Victoria Ashworth</t></si><si><t>(171) 555-1212</t></si><si><t>EC2 5NT</t></si><si><t>CACTU</t></si><si><t>Patricio Simpson</t></si><si><t>Sales Agent</t></si><si><t>Argentina</t></si><si><t>(1) 135-5555</t></si><si><t>(1) 135-4892</t></si><si><t>1010</t></si><si><t>CENTC</t></si><si><t>Francisco Chang</t></si><si><t>(5) 555-3392</t></si><si><t>(5) 555-7293</t></si><si><t>05022</t></si><si><t>CHOPS</t></si><si><t>Yang Wang</t></si><si><t>Switzerland</t></si><si><t>0452-076545</t></si><si><t>3012</t></si><si><t>COMMI</t></si><si><t>Pedro Afonso</t></si><si><t>Sales Associate</t></si><si><t>Brazil</t></si><si><t>(11) 555-7647</t></si><si><t>05432-043</t></si><si><t>CONSH</t></si><si><t>Elizabeth Brown</t></si><si><t>(171) 555-2282</t></si><si><t>(171) 555-9199</t></si><si><t>WX1 6LT</t></si><si><t>DRACD</t></si><si><t>Sven Ottlieb</t></si><si><t>0241-039123</t></si><si><t>0241-059428</t></si><si><t>52066</t></si><si><t>DUMON</t></si><si><t>Janine Labrune</t></si><si><t>40.67.88.88</t></si><si><t>40.67.89.89</t></si><si><t>44000</t></si><si><t>EASTC</t></si><si><t>Ann Devon</t></si><si><t>(171) 555-0297</t></si><si><t>(171) 555-3373</t></si><si><t>WX3 6FW</t></si><si><t>ERNSH</t></si><si><t>Roland Mendel</t></si><si><t>Sales Manager</t></si><si><t>Austria</t></si><si><t>7675-3425</t></si><si><t>7675-3426</t></si><si><t>8010</t></si><si><t>FAMIA</t></si><si><t>Aria Cruz</t></si><si><t>Marketing Assistant</t></si><si><t>(11) 555-9857</t></si><si><t>05442-030</t></si><si><t>FISSA</t></si><si><t>Diego Roel</t></si><si><t>(91) 555 94 44</t></si><si><t>(91) 555 55 93</t></si><si><t>28034</t></si><si><t>FOLIG</t></si><si><t>Martine Rancé</t></si><si><t>Assistant Sales Agent</t></si><si><t>20.16.10.16</t></si><si><t>20.16.10.17</t></si><si><t>59000</t></si><si><t>FOLKO</t></si><si><t>Maria Larsson</t></si><si><t>0695-34 67 21</t></si><si><t>S-844 67</t></si><si><t>FRANK</t></si><si><t>Peter Franken</t></si><si><t>089-0877310</t></si><si><t>089-0877451</t></si><si><t>80805</t></si><si><t>FRANR</t></si><si><t>Carine Schmitt</t></si><si><t>40.32.21.21</t></si><si><t>40.32.21.20</t></si><si><t>FRANS</t></si><si><t>Paolo Accorti</t></si><si><t>Italy</t></si><si><t>011-4988260</t></si><si><t>011-4988261</t></si><si><t>10100</t></si>`;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export interface IExportRecord {
hidden?: boolean;
summaryKey?: string;
hierarchicalOwner?: string;
references?: IColumnInfo[];
}

export interface IColumnList {
Expand Down Expand Up @@ -484,8 +485,7 @@ export abstract class IgxBaseExporter {
return a;
}, {});
} else {
const filteredHeaders = ownerCols.filter(c => c.skip).map(c => c.header ? c.header : c.field);
record.data = record.data.filter(d => filteredHeaders.indexOf(d) === -1);
record.data = record.data.filter((_, i) => !record.references[i].skip)
}
}

Expand Down Expand Up @@ -762,16 +762,16 @@ export abstract class IgxBaseExporter {
childData: any[], expansionStateVal: boolean, grid: GridType) {
const hierarchicalOwner = `${GRID_CHILD}${++this.rowIslandCounter}`;
const columnList = this._ownersMap.get(island).columns;
const columnHeader = columnList
.filter(col => col.headerType === ExportHeaderType.ColumnHeader)
.map(col => col.header ? col.header : col.field);
const columnHeaders = columnList.filter(col => col.headerType === ExportHeaderType.ColumnHeader);
const columnHeader = columnHeaders.map(col => col.header ? col.header : col.field);

const headerRecord: IExportRecord = {
data: columnHeader,
level: island.level,
type: ExportRecordType.HeaderRecord,
owner: island,
hidden: !expansionStateVal,
references: columnHeaders,
hierarchicalOwner
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,33 @@ export class IgxHierarchicalGridMultiColumnHeadersExportComponent {
public data = HIERARCHICAL_SAMPLE_DATA;
}

@Component({
template: `
<igx-hierarchical-grid [data]="data" [height]="'1200px'" [width]="'700px'" #hierarchicalGrid [moving]="true">
<igx-column field="ID" [sortable]="true" [resizable]="true"></igx-column>
<igx-column-group header="Location" [collapsible]="true">
<igx-column field="Address" [sortable]="true" [resizable]="true" [visibleWhenCollapsed]="false"></igx-column>
<igx-column field="City" [sortable]="true" [resizable]="true" [visibleWhenCollapsed]="false"></igx-column>
<igx-column field="City" [sortable]="true" [resizable]="true" [visibleWhenCollapsed]="true"></igx-column>
</igx-column-group>
<igx-row-island [key]="'ChildCompanies'" [autoGenerate]="false">
<igx-column field="CompanyName" [sortable]="true" [resizable]="true"></igx-column>
<igx-column-group header="Personal Details" [collapsible]="true">
<igx-column field="ContactName" [sortable]="true" [resizable]="true" [visibleWhenCollapsed]="true"></igx-column>
<igx-column field="ContactName" [sortable]="true" [resizable]="true" [visibleWhenCollapsed]="false"></igx-column>
<igx-column field="ContactTitle" [sortable]="true" [resizable]="true" [visibleWhenCollapsed]="false"></igx-column>
</igx-column-group>
</igx-row-island>
</igx-hierarchical-grid>
`,
standalone: true,
imports: [IgxHierarchicalGridComponent, IgxColumnComponent, IgxColumnGroupComponent, IgxRowIslandComponent]
})
export class IgxHierarchicalGridMCHCollapsibleComponent {
@ViewChild('hierarchicalGrid', { read: IgxHierarchicalGridComponent, static: true }) public hGrid: IgxHierarchicalGridComponent;
public data = HIERARCHICAL_SAMPLE_DATA;
}

@Component({
template: `
<igx-hierarchical-grid [data]="data" [height]="'1200px'" [width]="'700px'" #hierarchicalGrid>
Expand Down
Loading