GUI Expert Table
Stackblitz
You can find it on stackblitz: stackblitz-guiexpert-angular-simple.
Installation
Add the following NPM package to your existing angular project (run this in your project root directory):
npm install --save @guiexpert/table @guiexpert/angular-table
Import standalone component
Import the (standalone) table component in your angular module (or in your angular standalone component, if you don’t work with modules):
@NgModule({
imports: [
CommonModule,
TableComponent, ...
Add global table CSS
To add the global guiexpert CSS file in your Angular project, you can include the file in the styles array within the angular.json file.
-
Open the
angular.jsonfile of your project. -
Look for the styles section within the configuration object for your project. It typically looks like this:
"styles": [
"src/styles.css",
"node_modules/@guiexpert/table/css/main.css"
...
],
Create an example component
Create a component and include the guiexpert tag in the template of your component
<div class="content">
<guiexpert-table
[tableModel]="tableModel"
[tableOptions]="tableOptions"
class="ge-table"
></guiexpert-table>
</div>
Be sure, that your div container expands. Add this CSS rule to your component’s style.
.content {
width: 100%;
height: 100%;
padding: 0;
border: 0;
}
Create a table model
Add two properties (tableModel and tableOptions) to the component. Generate a simple table model by the helper
function TableFactory.createTableModel. The properties headerData, bodyData, and footerData are simple arrays of arrays.
tableModel: TableModelIf;
tableOptions = {
...new TableOptions(),
hoverColumnVisible: false,
defaultRowHeights: {
header: 40,
body: 34,
footer: 0
}
};
constructor() {
this.tableModel = this.generateSimpleModel(100, 10);
}
generateSimpleModel(
rowCount: number = 1000,
columnCount: number = 1000
): TableModelIf {
const bodyData: string[][] =
Array.from(Array(rowCount).keys())
.map((r) =>
Array.from(Array(columnCount).keys())
.map((c) => `Body ${r}/${c}`)
);
const headerData: string[][] =
Array.from(Array(2).keys())
.map((r) =>
Array.from(Array(columnCount).keys())
.map((c) => `Header ${r}/${c}`)
);
const footerData: string[][] =
Array.from(Array(2).keys())
.map((r) =>
Array.from(Array(columnCount).keys())
.map((c) => `Footer ${r}/${c}`)
);
return TableFactory.createTableModel({
headerData,
bodyData,
footerData,
overridingColumnWidth: 110,
fixedLeftColumnCount: 1,
fixedRightColumnCount: 1
});
}
Here you can see an alternate simple table model creation:
TableFactory.createTableModel({
headerData: [
["Column1", "Column2", "Column3"]
],
bodyData: [
["This", "is", "a"],
["very", "simple", "demo"]
],
overridingColumnWidth: 110
});