Skip to content

Commit 8fcefa7

Browse files
author
Mariela Tihova
authored
ERP HGrid: Small edits and code cleanup (#103)
1 parent d4cdd03 commit 8fcefa7

5 files changed

Lines changed: 65 additions & 42 deletions

File tree

projects/erp-hgrid/src/app/data/dataModels.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,5 @@ export enum OrderStatus {
4747
CUSTOMS = "Customs",
4848
DELIVERED = "Delivered"
4949
}
50+
51+
export type BadgeVariant = "primary" | "info" | "success" | "warning" | "error";

projects/erp-hgrid/src/app/erp-hgrid-sample/erp-hgrid-sample.component.html

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,8 @@
3838
[src]="cell.value"
3939
alt="Product"
4040
igxRipple="white"
41-
(mouseenter)="onImageHover($event, imageDialog)"
41+
(mouseenter)="onImageHover($event, cell.row.data.productName, imageDialog)"
4242
(mouseleave)="onImageLeave($event, imageDialog)"/>
43-
<igx-dialog
44-
#imageDialog
45-
isModal="false"
46-
[title]="cell.row.data.productName">
47-
<img [src]="cell.value" width="312px" alt="Product View"/>
48-
</igx-dialog>
4943
</ng-template>
5044
</igx-column>
5145
<igx-column field="productName" header="Product Name" dataType="string" [sortable]="true" width="12%"></igx-column>
@@ -61,7 +55,7 @@
6155
</ng-template>
6256
</igx-column>
6357
<igx-column field="unitsSold" header="Sold Units Last Month" dataType="number" width="10%" [sortable]="true"></igx-column>
64-
<igx-column field="salesTrendData" header="Mothly Sales Trends" filterable="false" width="15%">
58+
<igx-column field="salesTrendData" header="Monthly Sales Trends" filterable="false" width="15%">
6559
<ng-template igxCell let-cell="cell" let-val>
6660
@defer {
6761
<sales-trends-chart [dataSource]="cell.value"></sales-trends-chart>
@@ -94,18 +88,12 @@
9488
<ng-template igxCell let-cell="cell">
9589
<div class="status-cell">
9690
<span>
97-
<igx-badge *ngIf="cell.value === orderStatus.PACKED" type="primary" shape="rounded" elevated>
98-
<igx-icon family="imx-icons" name="dropbox" class="custom-icon"></igx-icon>
99-
</igx-badge>
100-
<igx-badge *ngIf="cell.value === orderStatus.IN_TRANSIT" type="warning" shape="rounded">
101-
<igx-icon family="imx-icons" name="delivery" class="custom-icon"></igx-icon>
102-
</igx-badge>
103-
<igx-badge *ngIf="cell.value === orderStatus.CUSTOMS" type="error" shape="rounded">
104-
<igx-icon family="imx-icons" name="bill-paid" class="custom-icon"></igx-icon>
105-
</igx-badge>
106-
<igx-badge *ngIf="cell.value === orderStatus.DELIVERED" type="success" shape="rounded">
107-
<igx-icon family="imx-icons" name="check" class="custom-icon"></igx-icon>
108-
</igx-badge>
91+
<igx-badge
92+
type={{getOrderStatusBadgeVariant(cell.value)}}
93+
shape="rounded"
94+
elevated>
95+
<igx-icon family="imx-icons" name={{getOrderStatusIconName(cell.value)}} class="custom-icon"></igx-icon>
96+
</igx-badge>
10997
</span>
11098
<span>{{cell.value}}</span>
11199
</div>
@@ -249,4 +237,12 @@
249237
</igx-column-group>
250238
</igx-row-island>
251239
</igx-hierarchical-grid>
240+
241+
<!-- Overay shown when hovering on product image -->
242+
<igx-dialog
243+
#imageDialog
244+
isModal="false"
245+
[title]="this.hoveredImageProductName">
246+
<img [src]="this.hoveredImageUrl" width="312px" alt="Product View"/>
247+
</igx-dialog>
252248
</div>

projects/erp-hgrid/src/app/erp-hgrid-sample/erp-hgrid-sample.component.scss

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@
88
--ig-size: var(--ig-size-medium);
99
height: 100%;
1010

11-
igx-badge[type="primary"]{
11+
.igx-badge {
1212
background-color: var(--ig-primary-50);
1313
}
1414

15-
igx-badge[type="warning"]{
15+
.igx-badge--warning {
1616
background-color: var(--ig-warn-100);
1717
}
1818

19-
igx-badge[type="error"]{
19+
.igx-badge--error {
2020
background-color: var(--ig-error-50);
2121
}
2222

23-
igx-badge[type="success"]{
23+
.igx-badge--success {
2424
background-color: var(--ig-success-100);
2525
}
2626
}
@@ -55,11 +55,6 @@
5555
gap: 8px;
5656
}
5757

58-
.sales-sparkline {
59-
padding-top: 5px;
60-
padding-bottom: 5px;
61-
}
62-
6358
// Overridden styles for design purposes
6459
::ng-deep {
6560

projects/erp-hgrid/src/app/erp-hgrid-sample/erp-hgrid-sample.component.ts

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, CUSTOM_ELEMENTS_SCHEMA, ViewChild, AfterViewInit, ElementRef, OnInit } from '@angular/core';
2-
import { CommonModule, NgIf } from '@angular/common';
2+
import { CommonModule } from '@angular/common';
33
import {
44
IgxHierarchicalGridComponent,
55
IgxColumnGroupComponent,
@@ -46,7 +46,7 @@ import { fadeIn } from 'igniteui-angular/animations'
4646
import { IgxSparklineModule } from 'igniteui-angular-charts';
4747
import { defineComponents, IgcRatingComponent } from 'igniteui-webcomponents';
4848
import { dropbox, delivery, billPaid, check } from '@igniteui/material-icons-extended';
49-
import { OrderDetails, OrderStatus, TemplateDataModel } from '../data/dataModels';
49+
import { BadgeVariant, OrderDetails, OrderStatus, TemplateDataModel } from '../data/dataModels';
5050
import { SalesTrendsChartComponent } from '../sales-trends-chart/sales-trends-chart.component';
5151
import { ErpDataService } from '../services/erp-data.service';
5252
import { BehaviorSubject } from 'rxjs';
@@ -87,7 +87,6 @@ defineComponents(IgcRatingComponent);
8787
IgxIconModule,
8888
IgxBadgeModule,
8989
IgxBadgeComponent,
90-
NgIf,
9190
IgxSparklineModule,
9291
IgxButtonModule,
9392
IgxDialogModule,
@@ -104,7 +103,6 @@ export class ErpHGridSampleComponent implements OnInit, AfterViewInit {
104103
public hierarchicalGrid!: IgxHierarchicalGridComponent;
105104
@ViewChild('rowisland', { read: IgxRowIslandComponent, static: true })
106105
public rowisland!: IgxRowIslandComponent;
107-
@ViewChild('imageElement', { static: true }) imageElement!: ElementRef;
108106
@ViewChild('imageDialog', { static: true }) imageDialog!: IgxDialogComponent;
109107
public fullAddressFilteringOperand = FullAddressFilteringOperand.instance();
110108
public shortAddressFilteringOperand = new FullAddressFilteringOperand(true);
@@ -115,6 +113,10 @@ export class ErpHGridSampleComponent implements OnInit, AfterViewInit {
115113
public data$: BehaviorSubject<TemplateDataModel[]> = new BehaviorSubject<TemplateDataModel[]>([]);
116114
public isLoading = true;
117115

116+
// Image tooltip for each product fields
117+
public hoveredImageUrl: string = '';
118+
public hoveredImageProductName: string = '';
119+
118120
constructor(
119121
private iconService: IgxIconService,
120122
private erpDataService: ErpDataService
@@ -139,12 +141,6 @@ export class ErpHGridSampleComponent implements OnInit, AfterViewInit {
139141

140142
public ngAfterViewInit(): void {
141143
// Default sortings
142-
this.hierarchicalGrid.sortingExpressions = [
143-
{
144-
dir: SortingDirection.Asc, fieldName: 'sku',
145-
ignoreCase: true, strategy: DefaultSortingStrategy.instance()
146-
}
147-
];
148144
this.rowisland.sortingExpressions = [
149145
{
150146
dir: SortingDirection.Desc, fieldName: 'delivery.dateOrdered',
@@ -158,6 +154,36 @@ export class ErpHGridSampleComponent implements OnInit, AfterViewInit {
158154
'The column is expanded! Click here to collapse.' : 'The column is collapsed! Click here to expand';
159155
}
160156

157+
public getOrderStatusBadgeVariant = (status: string): BadgeVariant => {
158+
switch (status) {
159+
case OrderStatus.PACKED:
160+
return "primary";
161+
case OrderStatus.IN_TRANSIT:
162+
return "warning";
163+
case OrderStatus.CUSTOMS:
164+
return "error";
165+
case OrderStatus.DELIVERED:
166+
return "success";
167+
default:
168+
return "primary";
169+
}
170+
};
171+
172+
public getOrderStatusIconName = (status: string): string => {
173+
switch (status) {
174+
case OrderStatus.PACKED:
175+
return "dropbox";
176+
case OrderStatus.IN_TRANSIT:
177+
return "delivery";
178+
case OrderStatus.CUSTOMS:
179+
return "bill-paid";
180+
case OrderStatus.DELIVERED:
181+
return "check";
182+
default:
183+
return "dropbox";
184+
}
185+
};
186+
161187
public formatDate(value: string): string {
162188
return value || 'N/A';
163189
}
@@ -179,13 +205,18 @@ export class ErpHGridSampleComponent implements OnInit, AfterViewInit {
179205
public exportStarted(args: IgxExporterEvent): void {
180206
args.exporter.columnExporting.subscribe((columnArgs: IColumnExportingEventArgs) => {
181207
// Don't export Performance column
182-
columnArgs.cancel = columnArgs.header === 'Performance';
208+
columnArgs.cancel = columnArgs.field === 'salesTrendData';
183209
});
184210
}
185211

186-
public onImageHover(event: MouseEvent, dialog: IgxDialogComponent) {
212+
public onImageHover(event: MouseEvent, productName: string, dialog: IgxDialogComponent) {
187213
if (dialog) {
188214
const targetEl = event.target as HTMLElement;
215+
const imageUrl = targetEl.getAttribute("src") || '';
216+
217+
// Set current hovered image properties
218+
this.hoveredImageUrl = imageUrl;
219+
this.hoveredImageProductName = productName;
189220

190221
const positionSettings: PositionSettings = {
191222
openAnimation: useAnimation(fadeIn, {

projects/erp-hgrid/src/app/sales-trends-chart/sales-trends-chart.component.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
showDefaultTooltip="true"
2727
brush="#8A8A8A"
2828
outline="#8A8A8A"
29-
highlightingMode="fadeOthersOnHover"
3029
highlightingFadeOpacity="0.3">
3130
</igx-column-series>
3231
</igx-data-chart>

0 commit comments

Comments
 (0)