diff --git a/CHANGELOG.md b/CHANGELOG.md index 105b4789221..06cb0912cad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,14 @@ All notable changes for each version of this project will be documented in this - The `hideDelay` input property now defaults to `300`. - The `showTooltip` and `hideTooltip` methods do not take `showDelay`/`hideDelay` into account. +- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`, `IgxPivotGrid` + - **Sorting improvements** + - Improved sorting algorithm efficiency using Schwartzian transformation. This is a technique, also known as decorate-sort-undecorate, which avoids recomputing the sort keys by temporarily associating them with the original data records. + - Refactored sorting algorithms from recursive to iterative. + - **Groupby improvements** + - Refactored grouping algorithm from recursive to iterative. + - Optimized grouping operations. + ## 20.0.6 ### General - `IgxSimpleCombo` diff --git a/angular.json b/angular.json index 421bc145a56..fcc527e239e 100644 --- a/angular.json +++ b/angular.json @@ -478,6 +478,97 @@ } } } + }, + "igniteui-angular-performance": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "projects/igniteui-angular-performance", + "sourceRoot": "projects/igniteui-angular-performance/src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular/build:application", + "options": { + "browser": "projects/igniteui-angular-performance/src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "projects/igniteui-angular-performance/tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "projects/igniteui-angular-performance/src/assets" + ], + "styles": [ + "projects/igniteui-angular-performance/src/styles.scss" + ], + "stylePreprocessorOptions": { + "includePaths": ["node_modules"] + } + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kB", + "maximumError": "1MB" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "4kB", + "maximumError": "8kB" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular/build:dev-server", + "configurations": { + "production": { + "buildTarget": "igniteui-angular-performance:build:production" + }, + "development": { + "buildTarget": "igniteui-angular-performance:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular/build:extract-i18n" + }, + "test": { + "builder": "@angular/build:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "projects/igniteui-angular-performance/tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + { + "glob": "**/*", + "input": "projects/igniteui-angular-performance/public" + } + ], + "styles": [ + "projects/igniteui-angular-performance/src/styles.scss" + ] + } + } + } } }, "cli": { diff --git a/package.json b/package.json index 0c98c55ea41..3f70a49727c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "ng": "ng", "start": "ng serve --open --hmr", "start:elements": "ng serve --project igniteui-angular-elements", + "start:performance": "ng serve --project igniteui-angular-performance", "build": "ng build --configuration production", "test": "ng test igniteui-angular", "lint": "ng lint", diff --git a/projects/igniteui-angular-performance/public/favicon.ico b/projects/igniteui-angular-performance/public/favicon.ico new file mode 100644 index 00000000000..57614f9c967 Binary files /dev/null and b/projects/igniteui-angular-performance/public/favicon.ico differ diff --git a/projects/igniteui-angular-performance/src/app/app.component.html b/projects/igniteui-angular-performance/src/app/app.component.html new file mode 100644 index 00000000000..8ca8b694e34 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/app.component.html @@ -0,0 +1,10 @@ +
+
+ @for (route of routes; track $index) { + + } +
+ +
diff --git a/projects/igniteui-angular-performance/src/app/app.component.scss b/projects/igniteui-angular-performance/src/app/app.component.scss new file mode 100644 index 00000000000..888a906b67e --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/app.component.scss @@ -0,0 +1,18 @@ +:host { + width: 100%; + height: 100%; + display: flex; +} + +.wrapper { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} + +.routes { + padding: 1rem; + display: flex; + gap: 1rem; +} diff --git a/projects/igniteui-angular-performance/src/app/app.component.spec.ts b/projects/igniteui-angular-performance/src/app/app.component.spec.ts new file mode 100644 index 00000000000..c7baa22fc4d --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/app.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + let component: AppComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AppComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AppComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/igniteui-angular-performance/src/app/app.component.ts b/projects/igniteui-angular-performance/src/app/app.component.ts new file mode 100644 index 00000000000..109d49db6d3 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/app.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterOutlet, Routes } from '@angular/router'; +import { IgxButtonDirective } from 'igniteui-angular'; +import { routes } from './app.routes'; + +@Component({ + selector: 'app-root', + imports: [RouterOutlet, IgxButtonDirective, RouterLink], + templateUrl: './app.component.html', + styleUrl: './app.component.scss' +}) +export class AppComponent { + protected routes: Routes = routes; +} diff --git a/projects/igniteui-angular-performance/src/app/app.config.ts b/projects/igniteui-angular-performance/src/app/app.config.ts new file mode 100644 index 00000000000..68c90364260 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/app.config.ts @@ -0,0 +1,14 @@ +import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core'; +import { provideRouter } from '@angular/router'; +import { provideAnimations } from '@angular/platform-browser/animations'; + +import { routes } from './app.routes'; + +export const appConfig: ApplicationConfig = { + providers: [ + provideBrowserGlobalErrorListeners(), + provideZoneChangeDetection({ eventCoalescing: true }), + provideRouter(routes), + provideAnimations() + ] +}; diff --git a/projects/igniteui-angular-performance/src/app/app.routes.ts b/projects/igniteui-angular-performance/src/app/app.routes.ts new file mode 100644 index 00000000000..190c44ecdb4 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/app.routes.ts @@ -0,0 +1,50 @@ +import { Routes } from '@angular/router'; +import { GridComponent } from './grid/grid.component'; +import { TreeGridComponent } from './tree-grid/tree-grid.component'; +import { PivotGridComponent } from './pivot-grid/pivot-grid.component'; + +export const routes: Routes = [ + { + path: "pivot-grid", + title: "Pivot Grid", + component: PivotGridComponent + }, + { + path: "tree-grid-1m", + title: "Tree Grid 1M records", + component: TreeGridComponent, + data: { rows: 1_000_000 } + }, + { + path: "tree-grid-100k", + title: "Tree Grid 100k records", + component: TreeGridComponent, + data: { rows: 100_000 } + }, + { + path: "tree-grid", + title: "Tree Grid 1k records", + component: TreeGridComponent, + data: { rows: 1000 } + }, + { + path: "grid-1m", + title: "Grid 1M records", + component: GridComponent, + data: { rows: 1_000_000 } + }, + { + path: "grid-100k", + title: "Grid 100k records", + component: GridComponent, + data: { rows: 100_000 } + }, + { + path: "", + title: "Grid 1k records", + pathMatch: 'full', + component: GridComponent, + data: { rows: 1000 } + } + +]; diff --git a/projects/igniteui-angular-performance/src/app/data/athletesData.ts b/projects/igniteui-angular-performance/src/app/data/athletesData.ts new file mode 100644 index 00000000000..f16f6c3f103 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/data/athletesData.ts @@ -0,0 +1,2037 @@ +/* eslint-disable */ +export const DATA = [{ + "Id": 84, + "Avatar": "assets/images/men/12.jpg", + "Position": "current", + "Name": "Abel Brun", + "AthleteNumber": 39315, + "NetWorth": 105, + "TopSpeed": 5.1, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/af.png", + "CountryName": "Afghanistan" +}, { + "Id": 65, + "Avatar": "assets/images/women/60.jpg", + "Position": "down", + "Name": "Keira Walker", + "AthleteNumber": 34116, + "NetWorth": 94, + "TopSpeed": 4.8, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/al.png", + "CountryName": "Albania" +}, { + "Id": 197, + "Avatar": "assets/images/men/93.jpg", + "Position": "current", + "Name": "Brent Lord", + "AthleteNumber": 20943, + "NetWorth": 92, + "TopSpeed": 4.8, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/dz.png", + "CountryName": "Algeria" +}, { + "Id": 66, + "Avatar": "assets/images/men/70.jpg", + "Position": "down", + "Name": "Moritz Braun", + "AthleteNumber": 48081, + "NetWorth": 107, + "TopSpeed": 6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ad.png", + "CountryName": "Andorra" +}, { + "Id": 58, + "Avatar": "assets/images/women/60.jpg", + "Position": "down", + "Name": "Zaina Pomp", + "AthleteNumber": 14109, + "NetWorth": 90, + "TopSpeed": 5.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ao.png", + "CountryName": "Angola" +}, { + "Id": 40, + "Avatar": "assets/images/men/33.jpg", + "Position": "down", + "Name": "Alberto Clark", + "AthleteNumber": 29912, + "NetWorth": 93, + "TopSpeed": 4.6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ag.png", + "CountryName": "Antigua and Barbuda" +}, { + "Id": 138, + "Avatar": "assets/images/men/38.jpg", + "Position": "current", + "Name": "Derrick Price", + "AthleteNumber": 19792, + "NetWorth": 94, + "TopSpeed": 5.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ar.png", + "CountryName": "Argentina" +}, { + "Id": 6, + "Avatar": "assets/images/women/26.jpg", + "Position": "up", + "Name": "Mira Campos", + "AthleteNumber": 39222, + "NetWorth": 95, + "TopSpeed": 5.9, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/am.png", + "CountryName": "Armenia" +}, { + "Id": 190, + "Avatar": "assets/images/women/44.jpg", + "Position": "current", + "Name": "Kiara Dubois", + "AthleteNumber": 49964, + "NetWorth": 97, + "TopSpeed": 5.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/au.png", + "CountryName": "Australia" +}, { + "Id": 168, + "Avatar": "assets/images/men/10.jpg", + "Position": "current", + "Name": "Calvin Hunt", + "AthleteNumber": 35535, + "NetWorth": 94, + "TopSpeed": 4.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/at.png", + "CountryName": "Austria" +}, { + "Id": 105, + "Avatar": "assets/images/men/5.jpg", + "Position": "down", + "Name": "Samu Hokkanen", + "AthleteNumber": 22469, + "NetWorth": 106, + "TopSpeed": 5.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/az.png", + "CountryName": "Azerbaijan" +}, { + "Id": 33, + "Avatar": "assets/images/men/18.jpg", + "Position": "up", + "Name": "Zackary Roy", + "AthleteNumber": 45996, + "NetWorth": 92, + "TopSpeed": 4.9, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/bs.png", + "CountryName": "Bahamas" +}, { + "Id": 83, + "Avatar": "assets/images/men/10.jpg", + "Position": "current", + "Name": "سینا مرادی", + "AthleteNumber": 10809, + "NetWorth": 105, + "TopSpeed": 5.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/bh.png", + "CountryName": "Bahrain" +}, { + "Id": 121, + "Avatar": "assets/images/men/45.jpg", + "Position": "current", + "Name": "Maurice Lambert", + "AthleteNumber": 17443, + "NetWorth": 96, + "TopSpeed": 5.6, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/bd.png", + "CountryName": "Bangladesh" +}, { + "Id": 111, + "Avatar": "assets/images/men/23.jpg", + "Position": "up", + "Name": "Connor Green", + "AthleteNumber": 44716, + "NetWorth": 95, + "TopSpeed": 4.4, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/bb.png", + "CountryName": "Barbados" +}, { + "Id": 75, + "Avatar": "assets/images/women/69.jpg", + "Position": "current", + "Name": "Ellen Leppo", + "AthleteNumber": 29286, + "NetWorth": 97, + "TopSpeed": 5.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/by.png", + "CountryName": "Belarus" +}, { + "Id": 68, + "Avatar": "assets/images/men/23.jpg", + "Position": "up", + "Name": "Sandro Carpentier", + "AthleteNumber": 23503, + "NetWorth": 96, + "TopSpeed": 5.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/be.png", + "CountryName": "Belgium" +}, { + "Id": 150, + "Avatar": "assets/images/men/52.jpg", + "Position": "up", + "Name": "Gustav Petersen", + "AthleteNumber": 20984, + "NetWorth": 107, + "TopSpeed": 4.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/bz.png", + "CountryName": "Belize" +}, { + "Id": 142, + "Avatar": "assets/images/women/63.jpg", + "Position": "current", + "Name": "Nicoline Thomsen", + "AthleteNumber": 36778, + "NetWorth": 99, + "TopSpeed": 5.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/bj.png", + "CountryName": "Benin" +}, { + "Id": 19, + "Avatar": "assets/images/women/6.jpg", + "Position": "current", + "Name": "Sedef Tunçeri", + "AthleteNumber": 48164, + "NetWorth": 108, + "TopSpeed": 5.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/bt.png", + "CountryName": "Bhutan" +}, { + "Id": 202, + "Avatar": "assets/images/women/92.jpg", + "Position": "down", + "Name": "Ilona Salonen", + "AthleteNumber": 27068, + "NetWorth": 91, + "TopSpeed": 5.4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/bo.png", + "CountryName": "Bolivia" +}, { + "Id": 191, + "Avatar": "assets/images/women/72.jpg", + "Position": "up", + "Name": "Clarisse Rey", + "AthleteNumber": 29795, + "NetWorth": 98, + "TopSpeed": 4.9, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ba.png", + "CountryName": "Bosnia and Herzegovina" +}, { + "Id": 71, + "Avatar": "assets/images/men/74.jpg", + "Position": "down", + "Name": "Jimmie Mcguinness", + "AthleteNumber": 20729, + "NetWorth": 90, + "TopSpeed": 4.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/bw.png", + "CountryName": "Botswana" +}, { + "Id": 82, + "Avatar": "assets/images/men/55.jpg", + "Position": "current", + "Name": "Johann Fischer", + "AthleteNumber": 37212, + "NetWorth": 98, + "TopSpeed": 5.8, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/br.png", + "CountryName": "Brazil" +}, { + "Id": 121, + "Avatar": "assets/images/men/31.jpg", + "Position": "down", + "Name": "Ivan Ivanov", + "AthleteNumber": 11054, + "NetWorth": 108, + "TopSpeed": 5.7, + "TrackProgress": 5, + "CountryFlag": "assets/images/flags/bg.png", + "CountryName": "Bulgaria" +}, { + "Id": 144, + "Avatar": "assets/images/women/57.jpg", + "Position": "down", + "Name": "Milja Leino", + "AthleteNumber": 33563, + "NetWorth": 110, + "TopSpeed": 4.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/bf.png", + "CountryName": "Burkina Faso" +}, { + "Id": 71, + "Avatar": "assets/images/men/81.jpg", + "Position": "down", + "Name": "آراد جعفری", + "AthleteNumber": 34962, + "NetWorth": 90, + "TopSpeed": 4.8, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/bi.png", + "CountryName": "Burundi" +}, { + "Id": 163, + "Avatar": "assets/images/women/21.jpg", + "Position": "up", + "Name": "Pippa Roberts", + "AthleteNumber": 15588, + "NetWorth": 105, + "TopSpeed": 4.1, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/kh.png", + "CountryName": "Cambodia" +}, { + "Id": 122, + "Avatar": "assets/images/men/57.jpg", + "Position": "down", + "Name": "Jack Jean-baptiste", + "AthleteNumber": 40427, + "NetWorth": 110, + "TopSpeed": 4.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/cm.png", + "CountryName": "Cameroon" +}, { + "Id": 199, + "Avatar": "assets/images/women/68.jpg", + "Position": "up", + "Name": "Lucie Dumont", + "AthleteNumber": 12104, + "NetWorth": 108, + "TopSpeed": 4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ca.png", + "CountryName": "Canada" +}, { + "Id": 136, + "Avatar": "assets/images/women/10.jpg", + "Position": "down", + "Name": "Elaine Matthews", + "AthleteNumber": 38574, + "NetWorth": 110, + "TopSpeed": 5.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/cv.png", + "CountryName": "Cape Verde" +}, { + "Id": 70, + "Avatar": "assets/images/women/14.jpg", + "Position": "up", + "Name": "Emily Olsen", + "AthleteNumber": 13887, + "NetWorth": 110, + "TopSpeed": 4.8, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/cf.png", + "CountryName": "Central African Republic" +}, { + "Id": 21, + "Avatar": "assets/images/men/73.jpg", + "Position": "down", + "Name": "Kuzey Aclan", + "AthleteNumber": 18583, + "NetWorth": 102, + "TopSpeed": 5.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/td.png", + "CountryName": "Chad" +}, { + "Id": 86, + "Avatar": "assets/images/women/82.jpg", + "Position": "current", + "Name": "Eloida Novaes", + "AthleteNumber": 30751, + "NetWorth": 107, + "TopSpeed": 4.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/cl.png", + "CountryName": "Chile" +}, { + "Id": 130, + "Avatar": "assets/images/women/24.jpg", + "Position": "down", + "Name": "آوا احمدی", + "AthleteNumber": 44347, + "NetWorth": 110, + "TopSpeed": 4.1, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/cn.png", + "CountryName": "China" +}, { + "Id": 127, + "Avatar": "assets/images/men/52.jpg", + "Position": "down", + "Name": "Gerardo Soto", + "AthleteNumber": 22958, + "NetWorth": 90, + "TopSpeed": 5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/co.png", + "CountryName": "Colombia" +}, { + "Id": 125, + "Avatar": "assets/images/women/16.jpg", + "Position": "current", + "Name": "Altiva Alves", + "AthleteNumber": 31850, + "NetWorth": 106, + "TopSpeed": 5.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/km.png", + "CountryName": "Comoros" +}, { + "Id": 38, + "Avatar": "assets/images/women/17.jpg", + "Position": "current", + "Name": "Charlotte Meyer", + "AthleteNumber": 21442, + "NetWorth": 110, + "TopSpeed": 4.6, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ck.png", + "CountryName": "Cook Islands" +}, { + "Id": 186, + "Avatar": "assets/images/men/42.jpg", + "Position": "up", + "Name": "Jimmy Bailey", + "AthleteNumber": 38510, + "NetWorth": 101, + "TopSpeed": 4.7, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/cr.png", + "CountryName": "Costa Rica" +}, { + "Id": 108, + "Avatar": "assets/images/men/31.jpg", + "Position": "up", + "Name": "Noah Bergeron", + "AthleteNumber": 35139, + "NetWorth": 110, + "TopSpeed": 5.6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ci.png", + "CountryName": "Cote DIvoire" +}, { + "Id": 176, + "Avatar": "assets/images/men/35.jpg", + "Position": "down", + "Name": "Laudelino Castro", + "AthleteNumber": 12711, + "NetWorth": 106, + "TopSpeed": 4.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/hr.png", + "CountryName": "Croatia" +}, { + "Id": 138, + "Avatar": "assets/images/men/78.jpg", + "Position": "current", + "Name": "Oscar Calvo", + "AthleteNumber": 45078, + "NetWorth": 109, + "TopSpeed": 4.3, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/cu.png", + "CountryName": "Cuba" +}, { + "Id": 137, + "Avatar": "assets/images/men/80.jpg", + "Position": "down", + "Name": "Lance Dunn", + "AthleteNumber": 10113, + "NetWorth": 94, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/cy.png", + "CountryName": "Cyprus" +}, { + "Id": 173, + "Avatar": "assets/images/women/18.jpg", + "Position": "current", + "Name": "Hassana Camp", + "AthleteNumber": 14467, + "NetWorth": 104, + "TopSpeed": 5.2, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/cz.png", + "CountryName": "Czech Republic" +}, { + "Id": 46, + "Avatar": "assets/images/women/55.jpg", + "Position": "current", + "Name": "Ronja Kraft", + "AthleteNumber": 21800, + "NetWorth": 101, + "TopSpeed": 5.3, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/dk.png", + "CountryName": "Denmark" +}, { + "Id": 8, + "Avatar": "assets/images/men/14.jpg", + "Position": "up", + "Name": "Hans Möller", + "AthleteNumber": 34122, + "NetWorth": 109, + "TopSpeed": 5.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/dj.png", + "CountryName": "Djibouti" +}, { + "Id": 188, + "Avatar": "assets/images/women/45.jpg", + "Position": "down", + "Name": "Ceylan Duygulu", + "AthleteNumber": 21527, + "NetWorth": 99, + "TopSpeed": 4.9, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/dm.png", + "CountryName": "Dominica" +}, { + "Id": 134, + "Avatar": "assets/images/women/66.jpg", + "Position": "down", + "Name": "Anni Waisanen", + "AthleteNumber": 32133, + "NetWorth": 99, + "TopSpeed": 5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/do.png", + "CountryName": "Dominican Republic" +}, { + "Id": 112, + "Avatar": "assets/images/women/53.jpg", + "Position": "down", + "Name": "Karen Shaw", + "AthleteNumber": 31048, + "NetWorth": 107, + "TopSpeed": 5.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ec.png", + "CountryName": "Ecuador" +}, { + "Id": 161, + "Avatar": "assets/images/men/38.jpg", + "Position": "current", + "Name": "Alex Martin", + "AthleteNumber": 27887, + "NetWorth": 96, + "TopSpeed": 4.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/eg.png", + "CountryName": "Egypt" +}, { + "Id": 196, + "Avatar": "assets/images/women/30.jpg", + "Position": "up", + "Name": "Begüm Erkekli", + "AthleteNumber": 37888, + "NetWorth": 104, + "TopSpeed": 4.6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/sv.png", + "CountryName": "El Salvador" +}, { + "Id": 24, + "Avatar": "assets/images/men/0.jpg", + "Position": "down", + "Name": "Joan Ortega", + "AthleteNumber": 49478, + "NetWorth": 103, + "TopSpeed": 5.4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/gq.png", + "CountryName": "Equatorial Guinea" +}, { + "Id": 174, + "Avatar": "assets/images/women/29.jpg", + "Position": "current", + "Name": "Beatriz Gallardo", + "AthleteNumber": 38538, + "NetWorth": 101, + "TopSpeed": 6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/er.png", + "CountryName": "Eritrea" +}, { + "Id": 193, + "Avatar": "assets/images/women/59.jpg", + "Position": "down", + "Name": "Sophia Carlson", + "AthleteNumber": 44183, + "NetWorth": 102, + "TopSpeed": 5.1, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ee.png", + "CountryName": "Estonia" +}, { + "Id": 85, + "Avatar": "assets/images/men/43.jpg", + "Position": "down", + "Name": "Niilo Laurila", + "AthleteNumber": 49215, + "NetWorth": 104, + "TopSpeed": 4.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/et.png", + "CountryName": "Ethiopia" +}, { + "Id": 201, + "Avatar": "assets/images/men/92.jpg", + "Position": "up", + "Name": "Kaya Tekand", + "AthleteNumber": 11028, + "NetWorth": 93, + "TopSpeed": 5.2, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/fj.png", + "CountryName": "Fiji" +}, { + "Id": 123, + "Avatar": "assets/images/men/31.jpg", + "Position": "current", + "Name": "Eeli Makinen", + "AthleteNumber": 45296, + "NetWorth": 106, + "TopSpeed": 5.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/fi.png", + "CountryName": "Finland" +}, { + "Id": 16, + "Avatar": "assets/images/men/72.jpg", + "Position": "down", + "Name": "Felix Olsen", + "AthleteNumber": 43198, + "NetWorth": 101, + "TopSpeed": 4.2, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/fr.png", + "CountryName": "France" +}, { + "Id": 62, + "Avatar": "assets/images/men/43.jpg", + "Position": "current", + "Name": "Roman Smith", + "AthleteNumber": 15531, + "NetWorth": 106, + "TopSpeed": 4.9, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ga.png", + "CountryName": "Gabon" +}, { + "Id": 69, + "Avatar": "assets/images/men/17.jpg", + "Position": "current", + "Name": "Emil Meißner", + "AthleteNumber": 37183, + "NetWorth": 97, + "TopSpeed": 4, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/gm.png", + "CountryName": "Gambia" +}, { + "Id": 182, + "Avatar": "assets/images/men/94.jpg", + "Position": "current", + "Name": "Gerald Schmidt", + "AthleteNumber": 47410, + "NetWorth": 102, + "TopSpeed": 5.8, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ge.png", + "CountryName": "Georgia" +}, { + "Id": 190, + "Avatar": "assets/images/women/53.jpg", + "Position": "current", + "Name": "Gladys Van Der Steeg", + "AthleteNumber": 20216, + "NetWorth": 94, + "TopSpeed": 4.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/de.png", + "CountryName": "Germany" +}, { + "Id": 100, + "Avatar": "assets/images/women/20.jpg", + "Position": "current", + "Name": "Alexis Walker", + "AthleteNumber": 43183, + "NetWorth": 103, + "TopSpeed": 5.8, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/gh.png", + "CountryName": "Ghana" +}, { + "Id": 85, + "Avatar": "assets/images/men/34.jpg", + "Position": "current", + "Name": "Jeffrey Medina", + "AthleteNumber": 42905, + "NetWorth": 100, + "TopSpeed": 5.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/gr.png", + "CountryName": "Greece" +}, { + "Id": 169, + "Avatar": "assets/images/men/21.jpg", + "Position": "down", + "Name": "Julian Barth", + "AthleteNumber": 19011, + "NetWorth": 91, + "TopSpeed": 5.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/gd.png", + "CountryName": "Grenada" +}, { + "Id": 116, + "Avatar": "assets/images/women/1.jpg", + "Position": "down", + "Name": "Sevcan Kollen", + "AthleteNumber": 13728, + "NetWorth": 104, + "TopSpeed": 5.3, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/gt.png", + "CountryName": "Guatemala" +}, { + "Id": 75, + "Avatar": "assets/images/men/88.jpg", + "Position": "down", + "Name": "Rafael Gutierrez", + "AthleteNumber": 38804, + "NetWorth": 100, + "TopSpeed": 5.9, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/gn.png", + "CountryName": "Guinea" +}, { + "Id": 121, + "Avatar": "assets/images/men/48.jpg", + "Position": "current", + "Name": "Väinö Salmi", + "AthleteNumber": 29839, + "NetWorth": 107, + "TopSpeed": 5.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/gw.png", + "CountryName": "Guinea-Bissau" +}, { + "Id": 180, + "Avatar": "assets/images/women/90.jpg", + "Position": "up", + "Name": "Lillian Bowman", + "AthleteNumber": 35323, + "NetWorth": 103, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/gy.png", + "CountryName": "Guyana" +}, { + "Id": 139, + "Avatar": "assets/images/women/28.jpg", + "Position": "current", + "Name": "Annabell Barth", + "AthleteNumber": 41130, + "NetWorth": 103, + "TopSpeed": 5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ht.png", + "CountryName": "Haiti" +}, { + "Id": 4, + "Avatar": "assets/images/men/34.jpg", + "Position": "down", + "Name": "Mathys Martin", + "AthleteNumber": 32928, + "NetWorth": 98, + "TopSpeed": 5.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/va.png", + "CountryName": "Holy See (Vatican City State)" +}, { + "Id": 1, + "Avatar": "assets/images/men/65.jpg", + "Position": "down", + "Name": "Louis Stewart", + "AthleteNumber": 48131, + "NetWorth": 103, + "TopSpeed": 5.7, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/hn.png", + "CountryName": "Honduras" +}, { + "Id": 190, + "Avatar": "assets/images/women/2.jpg", + "Position": "current", + "Name": "Venla Korpela", + "AthleteNumber": 16454, + "NetWorth": 92, + "TopSpeed": 4.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/hu.png", + "CountryName": "Hungary" +}, { + "Id": 167, + "Avatar": "assets/images/men/81.jpg", + "Position": "down", + "Name": "Milo Charles", + "AthleteNumber": 10661, + "NetWorth": 99, + "TopSpeed": 5.4, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/is.png", + "CountryName": "Iceland" +}, { + "Id": 62, + "Avatar": "assets/images/men/9.jpg", + "Position": "current", + "Name": "Anthony Harcourt", + "AthleteNumber": 33649, + "NetWorth": 109, + "TopSpeed": 5.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/in.png", + "CountryName": "India" +}, { + "Id": 72, + "Avatar": "assets/images/men/31.jpg", + "Position": "up", + "Name": "Aaron Robertson", + "AthleteNumber": 30727, + "NetWorth": 95, + "TopSpeed": 4.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/id.png", + "CountryName": "Indonesia" +}, { + "Id": 2, + "Avatar": "assets/images/men/14.jpg", + "Position": "up", + "Name": "Bill Fox", + "AthleteNumber": 18511, + "NetWorth": 91, + "TopSpeed": 5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ir.png", + "CountryName": "Iran, Islamic Republic Of" +}, { + "Id": 58, + "Avatar": "assets/images/women/30.jpg", + "Position": "up", + "Name": "Veera Saari", + "AthleteNumber": 40408, + "NetWorth": 100, + "TopSpeed": 4.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/iq.png", + "CountryName": "Iraq" +}, { + "Id": 87, + "Avatar": "assets/images/men/35.jpg", + "Position": "current", + "Name": "Loïc Gerard", + "AthleteNumber": 31706, + "NetWorth": 102, + "TopSpeed": 4.4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ie.png", + "CountryName": "Ireland" +}, { + "Id": 137, + "Avatar": "assets/images/women/75.jpg", + "Position": "up", + "Name": "Gloria Caballero", + "AthleteNumber": 43379, + "NetWorth": 103, + "TopSpeed": 4.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/il.png", + "CountryName": "Israel" +}, { + "Id": 5, + "Avatar": "assets/images/women/38.jpg", + "Position": "current", + "Name": "Gianne Godijn", + "AthleteNumber": 45945, + "NetWorth": 96, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/it.png", + "CountryName": "Italy" +}, { + "Id": 196, + "Avatar": "assets/images/women/17.jpg", + "Position": "current", + "Name": "Parel Zuidhof", + "AthleteNumber": 32718, + "NetWorth": 105, + "TopSpeed": 5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/jm.png", + "CountryName": "Jamaica" +}, { + "Id": 23, + "Avatar": "assets/images/men/72.jpg", + "Position": "down", + "Name": "Gökhan Aşıkoğlu", + "AthleteNumber": 13890, + "NetWorth": 105, + "TopSpeed": 5.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/jp.png", + "CountryName": "Japan" +}, { + "Id": 74, + "Avatar": "assets/images/women/9.jpg", + "Position": "up", + "Name": "Minea Rantanen", + "AthleteNumber": 18835, + "NetWorth": 105, + "TopSpeed": 5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/jo.png", + "CountryName": "Jordan" +}, { + "Id": 92, + "Avatar": "assets/images/women/4.jpg", + "Position": "down", + "Name": "Asta Hansen", + "AthleteNumber": 17222, + "NetWorth": 101, + "TopSpeed": 4.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/kz.png", + "CountryName": "Kazakhstan" +}, { + "Id": 191, + "Avatar": "assets/images/women/13.jpg", + "Position": "up", + "Name": "Sheryl Collins", + "AthleteNumber": 36473, + "NetWorth": 98, + "TopSpeed": 4.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ke.png", + "CountryName": "Kenya" +}, { + "Id": 166, + "Avatar": "assets/images/women/74.jpg", + "Position": "current", + "Name": "Maria Parra", + "AthleteNumber": 39861, + "NetWorth": 106, + "TopSpeed": 6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ki.png", + "CountryName": "Kiribati" +}, { + "Id": 73, + "Avatar": "assets/images/women/33.jpg", + "Position": "up", + "Name": "Annabelle Besteman", + "AthleteNumber": 30560, + "NetWorth": 105, + "TopSpeed": 5.3, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/kp.png", + "CountryName": "Korea, Democratic PeopleS Republic of" +}, { + "Id": 182, + "Avatar": "assets/images/women/14.jpg", + "Position": "up", + "Name": "Ariena Achterberg", + "AthleteNumber": 41330, + "NetWorth": 92, + "TopSpeed": 5.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/kr.png", + "CountryName": "Korea, Republic of" +}, { + "Id": 67, + "Avatar": "assets/images/men/50.jpg", + "Position": "current", + "Name": "Villads Larsen", + "AthleteNumber": 44677, + "NetWorth": 93, + "TopSpeed": 5.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/kw.png", + "CountryName": "Kuwait" +}, { + "Id": 110, + "Avatar": "assets/images/women/26.jpg", + "Position": "down", + "Name": "Emilie Morin", + "AthleteNumber": 26164, + "NetWorth": 98, + "TopSpeed": 4.9, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/kg.png", + "CountryName": "Kyrgyzstan" +}, { + "Id": 31, + "Avatar": "assets/images/men/56.jpg", + "Position": "up", + "Name": "Judd Campbell", + "AthleteNumber": 37365, + "NetWorth": 110, + "TopSpeed": 5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/la.png", + "CountryName": "Lao PeopleS Democratic Republic" +}, { + "Id": 110, + "Avatar": "assets/images/women/13.jpg", + "Position": "current", + "Name": "Özsu Keçeci", + "AthleteNumber": 29403, + "NetWorth": 106, + "TopSpeed": 4.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/lv.png", + "CountryName": "Latvia" +}, { + "Id": 123, + "Avatar": "assets/images/women/12.jpg", + "Position": "up", + "Name": "آنیتا كامياران", + "AthleteNumber": 18980, + "NetWorth": 90, + "TopSpeed": 4.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/lb.png", + "CountryName": "Lebanon" +}, { + "Id": 138, + "Avatar": "assets/images/men/31.jpg", + "Position": "down", + "Name": "Antoine Mackay", + "AthleteNumber": 34547, + "NetWorth": 104, + "TopSpeed": 5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ls.png", + "CountryName": "Lesotho" +}, { + "Id": 167, + "Avatar": "assets/images/men/19.jpg", + "Position": "down", + "Name": "Louis Smith", + "AthleteNumber": 31837, + "NetWorth": 98, + "TopSpeed": 5.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/lr.png", + "CountryName": "Liberia" +}, { + "Id": 29, + "Avatar": "assets/images/men/29.jpg", + "Position": "current", + "Name": "Selmo Caldeira", + "AthleteNumber": 21837, + "NetWorth": 110, + "TopSpeed": 4.9, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ly.png", + "CountryName": "Libyan Arab Jamahiriya" +}, { + "Id": 35, + "Avatar": "assets/images/women/42.jpg", + "Position": "down", + "Name": "Elaine Smith", + "AthleteNumber": 38243, + "NetWorth": 108, + "TopSpeed": 4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/li.png", + "CountryName": "Liechtenstein" +}, { + "Id": 75, + "Avatar": "assets/images/men/2.jpg", + "Position": "up", + "Name": "Fritz Sommer", + "AthleteNumber": 26210, + "NetWorth": 99, + "TopSpeed": 4.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/lt.png", + "CountryName": "Lithuania" +}, { + "Id": 40, + "Avatar": "assets/images/men/5.jpg", + "Position": "down", + "Name": "Carter Evans", + "AthleteNumber": 46961, + "NetWorth": 100, + "TopSpeed": 5.3, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/lu.png", + "CountryName": "Luxembourg" +}, { + "Id": 183, + "Avatar": "assets/images/women/53.jpg", + "Position": "up", + "Name": "رونیکا سلطانی نژاد", + "AthleteNumber": 35233, + "NetWorth": 99, + "TopSpeed": 4.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/mk.png", + "CountryName": "Macedonia, The Former Yugoslav Republic of" +}, { + "Id": 151, + "Avatar": "assets/images/women/88.jpg", + "Position": "current", + "Name": "Charlotte Mills", + "AthleteNumber": 49829, + "NetWorth": 92, + "TopSpeed": 5.3, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/mg.png", + "CountryName": "Madagascar" +}, { + "Id": 107, + "Avatar": "assets/images/men/33.jpg", + "Position": "up", + "Name": "Pedro Marquez", + "AthleteNumber": 16169, + "NetWorth": 97, + "TopSpeed": 5.4, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/mw.png", + "CountryName": "Malawi" +}, { + "Id": 65, + "Avatar": "assets/images/women/9.jpg", + "Position": "down", + "Name": "Jenny Burke", + "AthleteNumber": 15266, + "NetWorth": 99, + "TopSpeed": 5.4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/my.png", + "CountryName": "Malaysia" +}, { + "Id": 155, + "Avatar": "assets/images/men/82.jpg", + "Position": "up", + "Name": "Justin Philippe", + "AthleteNumber": 12858, + "NetWorth": 104, + "TopSpeed": 5.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/mv.png", + "CountryName": "Maldives" +}, { + "Id": 165, + "Avatar": "assets/images/men/79.jpg", + "Position": "down", + "Name": "Mario Ellis", + "AthleteNumber": 18026, + "NetWorth": 99, + "TopSpeed": 5.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ml.png", + "CountryName": "Mali" +}, { + "Id": 107, + "Avatar": "assets/images/women/92.jpg", + "Position": "down", + "Name": "Megan Webb", + "AthleteNumber": 30713, + "NetWorth": 93, + "TopSpeed": 5.6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/mt.png", + "CountryName": "Malta" +}, { + "Id": 52, + "Avatar": "assets/images/men/94.jpg", + "Position": "down", + "Name": "Adérito Lopes", + "AthleteNumber": 21320, + "NetWorth": 91, + "TopSpeed": 5.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/mh.png", + "CountryName": "Marshall Islands" +}, { + "Id": 99, + "Avatar": "assets/images/men/89.jpg", + "Position": "down", + "Name": "Victor Lévesque", + "AthleteNumber": 48375, + "NetWorth": 110, + "TopSpeed": 5.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/mr.png", + "CountryName": "Mauritania" +}, { + "Id": 188, + "Avatar": "assets/images/men/81.jpg", + "Position": "down", + "Name": "آراد یاسمی", + "AthleteNumber": 34370, + "NetWorth": 99, + "TopSpeed": 5.9, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/mu.png", + "CountryName": "Mauritius" +}, { + "Id": 10, + "Avatar": "assets/images/women/13.jpg", + "Position": "down", + "Name": "Maeva Bergeron", + "AthleteNumber": 15655, + "NetWorth": 94, + "TopSpeed": 5.9, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/mx.png", + "CountryName": "Mexico" +}, { + "Id": 41, + "Avatar": "assets/images/men/20.jpg", + "Position": "up", + "Name": "Oskari Karjala", + "AthleteNumber": 31498, + "NetWorth": 90, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/fm.png", + "CountryName": "Micronesia, Federated States of" +}, { + "Id": 51, + "Avatar": "assets/images/men/74.jpg", + "Position": "up", + "Name": "Alex Meyer", + "AthleteNumber": 44390, + "NetWorth": 94, + "TopSpeed": 4.3, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/md.png", + "CountryName": "Moldova, Republic of" +}, { + "Id": 128, + "Avatar": "assets/images/women/52.jpg", + "Position": "up", + "Name": "Sophie Lewis", + "AthleteNumber": 46222, + "NetWorth": 106, + "TopSpeed": 4.4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/mc.png", + "CountryName": "Monaco" +}, { + "Id": 79, + "Avatar": "assets/images/women/39.jpg", + "Position": "current", + "Name": "Ashley Romero", + "AthleteNumber": 36611, + "NetWorth": 104, + "TopSpeed": 5.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/mn.png", + "CountryName": "Mongolia" +}, { + "Id": 124, + "Avatar": "assets/images/women/19.jpg", + "Position": "current", + "Name": "Marie Poulsen", + "AthleteNumber": 44113, + "NetWorth": 109, + "TopSpeed": 4.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ma.png", + "CountryName": "Morocco" +}, { + "Id": 42, + "Avatar": "assets/images/women/83.jpg", + "Position": "down", + "Name": "Caitlin Jackson", + "AthleteNumber": 45472, + "NetWorth": 101, + "TopSpeed": 4.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/mz.png", + "CountryName": "Mozambique" +}, { + "Id": 15, + "Avatar": "assets/images/women/79.jpg", + "Position": "down", + "Name": "Marilou Hubert", + "AthleteNumber": 43655, + "NetWorth": 104, + "TopSpeed": 4.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/mm.png", + "CountryName": "Myanmar" +}, { + "Id": 63, + "Avatar": "assets/images/women/9.jpg", + "Position": "up", + "Name": "Estelle Vincent", + "AthleteNumber": 41700, + "NetWorth": 99, + "TopSpeed": 5.7, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/na.png", + "CountryName": "Namibia" +}, { + "Id": 154, + "Avatar": "assets/images/women/54.jpg", + "Position": "down", + "Name": "Rhonda Simmmons", + "AthleteNumber": 37139, + "NetWorth": 96, + "TopSpeed": 5.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/nr.png", + "CountryName": "Nauru" +}, { + "Id": 191, + "Avatar": "assets/images/men/42.jpg", + "Position": "current", + "Name": "آرش احمدی", + "AthleteNumber": 36948, + "NetWorth": 90, + "TopSpeed": 4.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/np.png", + "CountryName": "Nepal" +}, { + "Id": 141, + "Avatar": "assets/images/men/15.jpg", + "Position": "current", + "Name": "Miro Korpela", + "AthleteNumber": 40544, + "NetWorth": 104, + "TopSpeed": 5.3, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/nl.png", + "CountryName": "Netherlands" +}, { + "Id": 73, + "Avatar": "assets/images/women/4.jpg", + "Position": "up", + "Name": "Afet Kumcuoğlu", + "AthleteNumber": 33454, + "NetWorth": 106, + "TopSpeed": 5.1, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/nz.png", + "CountryName": "New Zealand" +}, { + "Id": 163, + "Avatar": "assets/images/women/52.jpg", + "Position": "up", + "Name": "Millie Cooper", + "AthleteNumber": 14610, + "NetWorth": 99, + "TopSpeed": 5.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ni.png", + "CountryName": "Nicaragua" +}, { + "Id": 53, + "Avatar": "assets/images/women/51.jpg", + "Position": "current", + "Name": "Kayla Patel", + "AthleteNumber": 42780, + "NetWorth": 103, + "TopSpeed": 4.7, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ne.png", + "CountryName": "Niger" +}, { + "Id": 58, + "Avatar": "assets/images/men/31.jpg", + "Position": "current", + "Name": "Diego Gautier", + "AthleteNumber": 26320, + "NetWorth": 97, + "TopSpeed": 4.6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ng.png", + "CountryName": "Nigeria" +}, { + "Id": 186, + "Avatar": "assets/images/men/2.jpg", + "Position": "up", + "Name": "کوروش کامروا", + "AthleteNumber": 13506, + "NetWorth": 109, + "TopSpeed": 4.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/nu.png", + "CountryName": "Niue" +}, { + "Id": 101, + "Avatar": "assets/images/women/71.jpg", + "Position": "down", + "Name": "Lavínia Silva", + "AthleteNumber": 33994, + "NetWorth": 93, + "TopSpeed": 5.6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/no.png", + "CountryName": "Norway" +}, { + "Id": 194, + "Avatar": "assets/images/men/71.jpg", + "Position": "down", + "Name": "Adrian Ibañez", + "AthleteNumber": 21968, + "NetWorth": 105, + "TopSpeed": 5.3, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/om.png", + "CountryName": "Oman" +}, { + "Id": 143, + "Avatar": "assets/images/men/38.jpg", + "Position": "up", + "Name": "رضا کوتی", + "AthleteNumber": 13640, + "NetWorth": 103, + "TopSpeed": 4.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/pk.png", + "CountryName": "Pakistan" +}, { + "Id": 37, + "Avatar": "assets/images/men/86.jpg", + "Position": "down", + "Name": "Clyde Matthews", + "AthleteNumber": 11955, + "NetWorth": 93, + "TopSpeed": 5.2, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/pw.png", + "CountryName": "Palau" +}, { + "Id": 176, + "Avatar": "assets/images/men/26.jpg", + "Position": "current", + "Name": "Tim Neal", + "AthleteNumber": 45860, + "NetWorth": 97, + "TopSpeed": 5.6, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/pa.png", + "CountryName": "Panama" +}, { + "Id": 110, + "Avatar": "assets/images/women/15.jpg", + "Position": "current", + "Name": "Annabell Brand", + "AthleteNumber": 39233, + "NetWorth": 93, + "TopSpeed": 5.7, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/pg.png", + "CountryName": "Papua New Guinea" +}, { + "Id": 188, + "Avatar": "assets/images/men/3.jpg", + "Position": "current", + "Name": "Foppe Delfos", + "AthleteNumber": 39679, + "NetWorth": 107, + "TopSpeed": 4.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/py.png", + "CountryName": "Paraguay" +}, { + "Id": 43, + "Avatar": "assets/images/men/42.jpg", + "Position": "up", + "Name": "Kent Clark", + "AthleteNumber": 32799, + "NetWorth": 106, + "TopSpeed": 5.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/pe.png", + "CountryName": "Peru" +}, { + "Id": 167, + "Avatar": "assets/images/women/32.jpg", + "Position": "current", + "Name": "Esma Adıvar", + "AthleteNumber": 35565, + "NetWorth": 99, + "TopSpeed": 4.2, + "TrackProgress": 5, + "CountryFlag": "assets/images/flags/ph.png", + "CountryName": "Philippines" +}, { + "Id": 123, + "Avatar": "assets/images/women/19.jpg", + "Position": "down", + "Name": "Flora Perez", + "AthleteNumber": 23907, + "NetWorth": 102, + "TopSpeed": 5.8, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/pl.png", + "CountryName": "Poland" +}, { + "Id": 76, + "Avatar": "assets/images/men/65.jpg", + "Position": "current", + "Name": "David Scott", + "AthleteNumber": 46997, + "NetWorth": 101, + "TopSpeed": 4.4, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/pt.png", + "CountryName": "Portugal" +}, { + "Id": 183, + "Avatar": "assets/images/men/74.jpg", + "Position": "down", + "Name": "Yarno Kin", + "AthleteNumber": 47324, + "NetWorth": 107, + "TopSpeed": 5.1, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ro.png", + "CountryName": "Romania" +}, { + "Id": 8, + "Avatar": "assets/images/women/15.jpg", + "Position": "down", + "Name": "Esther Kühn", + "AthleteNumber": 24868, + "NetWorth": 92, + "TopSpeed": 5.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ru.png", + "CountryName": "Russian Federation" +}, { + "Id": 80, + "Avatar": "assets/images/men/90.jpg", + "Position": "down", + "Name": "Cecil Nichols", + "AthleteNumber": 20656, + "NetWorth": 100, + "TopSpeed": 5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/rw.png", + "CountryName": "RWANDA" +}, { + "Id": 41, + "Avatar": "assets/images/women/65.jpg", + "Position": "down", + "Name": "Lilly Keuter", + "AthleteNumber": 49893, + "NetWorth": 102, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/kn.png", + "CountryName": "Saint Kitts and Nevis" +}, { + "Id": 200, + "Avatar": "assets/images/women/73.jpg", + "Position": "current", + "Name": "Alice Perry", + "AthleteNumber": 23750, + "NetWorth": 104, + "TopSpeed": 5.3, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/lc.png", + "CountryName": "Saint Lucia" +}, { + "Id": 51, + "Avatar": "assets/images/women/34.jpg", + "Position": "down", + "Name": "Eléa Robin", + "AthleteNumber": 26742, + "NetWorth": 90, + "TopSpeed": 4.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/vc.png", + "CountryName": "Saint Vincent and the Grenadines" +}, { + "Id": 163, + "Avatar": "assets/images/men/70.jpg", + "Position": "down", + "Name": "میلاد قاسمی", + "AthleteNumber": 12788, + "NetWorth": 101, + "TopSpeed": 4.1, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ws.png", + "CountryName": "Samoa" +}, { + "Id": 72, + "Avatar": "assets/images/women/26.jpg", + "Position": "down", + "Name": "Sélène Roussel", + "AthleteNumber": 11261, + "NetWorth": 99, + "TopSpeed": 5.8, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/sm.png", + "CountryName": "San Marino" +}, { + "Id": 159, + "Avatar": "assets/images/women/66.jpg", + "Position": "up", + "Name": "Eva Dean", + "AthleteNumber": 48874, + "NetWorth": 103, + "TopSpeed": 5.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/st.png", + "CountryName": "Sao Tome and Principe" +}, { + "Id": 12, + "Avatar": "assets/images/women/83.jpg", + "Position": "up", + "Name": "Sara Larsen", + "AthleteNumber": 37094, + "NetWorth": 97, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/sa.png", + "CountryName": "Saudi Arabia" +}, { + "Id": 194, + "Avatar": "assets/images/men/11.jpg", + "Position": "down", + "Name": "Kaya Taşlı", + "AthleteNumber": 42291, + "NetWorth": 100, + "TopSpeed": 4.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/sn.png", + "CountryName": "Senegal" +}, { + "Id": 162, + "Avatar": "assets/images/men/5.jpg", + "Position": "down", + "Name": "Adam Bouchard", + "AthleteNumber": 38672, + "NetWorth": 99, + "TopSpeed": 4.7, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/sc.png", + "CountryName": "Seychelles" +}, { + "Id": 96, + "Avatar": "assets/images/women/37.jpg", + "Position": "up", + "Name": "Thea Edwards", + "AthleteNumber": 29141, + "NetWorth": 99, + "TopSpeed": 5.8, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/sl.png", + "CountryName": "Sierra Leone" +}, { + "Id": 93, + "Avatar": "assets/images/women/90.jpg", + "Position": "current", + "Name": "Ana Bourgeois", + "AthleteNumber": 24612, + "NetWorth": 110, + "TopSpeed": 6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/sg.png", + "CountryName": "Singapore" +}, { + "Id": 27, + "Avatar": "assets/images/women/61.jpg", + "Position": "up", + "Name": "Layla Douglas", + "AthleteNumber": 21977, + "NetWorth": 97, + "TopSpeed": 5.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/si.png", + "CountryName": "Slovenia" +}, { + "Id": 178, + "Avatar": "assets/images/women/65.jpg", + "Position": "down", + "Name": "Lillian Wade", + "AthleteNumber": 10729, + "NetWorth": 110, + "TopSpeed": 4.8, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/sb.png", + "CountryName": "Solomon Islands" +}, { + "Id": 192, + "Avatar": "assets/images/women/44.jpg", + "Position": "down", + "Name": "Viivi Kujala", + "AthleteNumber": 29939, + "NetWorth": 93, + "TopSpeed": 4.1, + "TrackProgress": 5, + "CountryFlag": "assets/images/flags/so.png", + "CountryName": "Somalia" +}, { + "Id": 87, + "Avatar": "assets/images/women/72.jpg", + "Position": "up", + "Name": "Charlotte Dean", + "AthleteNumber": 45969, + "NetWorth": 105, + "TopSpeed": 5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/za.png", + "CountryName": "South Africa" +}, { + "Id": 86, + "Avatar": "assets/images/women/45.jpg", + "Position": "down", + "Name": "Marisvalda Martins", + "AthleteNumber": 33879, + "NetWorth": 107, + "TopSpeed": 5.4, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/es.png", + "CountryName": "Spain" +}, { + "Id": 129, + "Avatar": "assets/images/women/34.jpg", + "Position": "up", + "Name": "Ella Hansen", + "AthleteNumber": 27075, + "NetWorth": 101, + "TopSpeed": 5.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/lk.png", + "CountryName": "Sri Lanka" +}, { + "Id": 27, + "Avatar": "assets/images/men/9.jpg", + "Position": "current", + "Name": "Johann Hinz", + "AthleteNumber": 48244, + "NetWorth": 94, + "TopSpeed": 4.3, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/sd.png", + "CountryName": "Sudan" +}, { + "Id": 113, + "Avatar": "assets/images/men/37.jpg", + "Position": "current", + "Name": "Nick Naumann", + "AthleteNumber": 25566, + "NetWorth": 109, + "TopSpeed": 5.9, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/sz.png", + "CountryName": "Swaziland" +}, { + "Id": 194, + "Avatar": "assets/images/women/62.jpg", + "Position": "up", + "Name": "آوا سلطانی نژاد", + "AthleteNumber": 45635, + "NetWorth": 98, + "TopSpeed": 4.1, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/se.png", + "CountryName": "Sweden" +}, { + "Id": 65, + "Avatar": "assets/images/women/47.jpg", + "Position": "current", + "Name": "Ilke Kisters", + "AthleteNumber": 23817, + "NetWorth": 100, + "TopSpeed": 5.9, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ch.png", + "CountryName": "Switzerland" +}, { + "Id": 162, + "Avatar": "assets/images/women/0.jpg", + "Position": "current", + "Name": "Alex Craig", + "AthleteNumber": 21868, + "NetWorth": 94, + "TopSpeed": 4.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/sy.png", + "CountryName": "Syrian Arab Republic" +}, { + "Id": 161, + "Avatar": "assets/images/men/89.jpg", + "Position": "up", + "Name": "Franklin Byrd", + "AthleteNumber": 49498, + "NetWorth": 106, + "TopSpeed": 5.3, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/tw.png", + "CountryName": "Taiwan, Province of China" +}, { + "Id": 167, + "Avatar": "assets/images/women/62.jpg", + "Position": "current", + "Name": "Pippa Morris", + "AthleteNumber": 44421, + "NetWorth": 101, + "TopSpeed": 5.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/tj.png", + "CountryName": "Tajikistan" +}, { + "Id": 43, + "Avatar": "assets/images/women/94.jpg", + "Position": "up", + "Name": "Emma Turner", + "AthleteNumber": 39487, + "NetWorth": 110, + "TopSpeed": 5.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/tz.png", + "CountryName": "Tanzania, United Republic of" +}, { + "Id": 76, + "Avatar": "assets/images/women/1.jpg", + "Position": "current", + "Name": "Encarnacion Martin", + "AthleteNumber": 40912, + "NetWorth": 105, + "TopSpeed": 5.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/th.png", + "CountryName": "Thailand" +}, { + "Id": 93, + "Avatar": "assets/images/women/21.jpg", + "Position": "up", + "Name": "Sara Hannula", + "AthleteNumber": 22025, + "NetWorth": 102, + "TopSpeed": 4.2, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/tl.png", + "CountryName": "Timor-Leste" +}, { + "Id": 147, + "Avatar": "assets/images/men/8.jpg", + "Position": "down", + "Name": "میلاد یاسمی", + "AthleteNumber": 44023, + "NetWorth": 104, + "TopSpeed": 5.2, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/tg.png", + "CountryName": "Togo" +}, { + "Id": 131, + "Avatar": "assets/images/women/61.jpg", + "Position": "down", + "Name": "Veronika Huber", + "AthleteNumber": 18146, + "NetWorth": 103, + "TopSpeed": 5.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/to.png", + "CountryName": "Tonga" +}, { + "Id": 122, + "Avatar": "assets/images/women/71.jpg", + "Position": "down", + "Name": "Natalie Conrad", + "AthleteNumber": 42602, + "NetWorth": 108, + "TopSpeed": 6, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/tt.png", + "CountryName": "Trinidad and Tobago" +}, { + "Id": 113, + "Avatar": "assets/images/women/36.jpg", + "Position": "current", + "Name": "Marialba Nascimento", + "AthleteNumber": 47061, + "NetWorth": 108, + "TopSpeed": 5.2, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/tn.png", + "CountryName": "Tunisia" +}, { + "Id": 135, + "Avatar": "assets/images/men/84.jpg", + "Position": "down", + "Name": "Darryl Douglas", + "AthleteNumber": 35826, + "NetWorth": 96, + "TopSpeed": 4.6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/tr.png", + "CountryName": "Turkey" +}, { + "Id": 130, + "Avatar": "assets/images/men/94.jpg", + "Position": "up", + "Name": "Adem Özdoğan", + "AthleteNumber": 45143, + "NetWorth": 90, + "TopSpeed": 5.5, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/tm.png", + "CountryName": "Turkmenistan" +}, { + "Id": 14, + "Avatar": "assets/images/women/84.jpg", + "Position": "up", + "Name": "Ömür Denkel", + "AthleteNumber": 31061, + "NetWorth": 104, + "TopSpeed": 4.5, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/tv.png", + "CountryName": "Tuvalu" +}, { + "Id": 43, + "Avatar": "assets/images/women/77.jpg", + "Position": "down", + "Name": "Cathalijne Van Der Ree", + "AthleteNumber": 45160, + "NetWorth": 102, + "TopSpeed": 5.4, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/ug.png", + "CountryName": "Uganda" +}, { + "Id": 164, + "Avatar": "assets/images/women/51.jpg", + "Position": "current", + "Name": "Ethel Stephens", + "AthleteNumber": 18692, + "NetWorth": 94, + "TopSpeed": 4.1, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ua.png", + "CountryName": "Ukraine" +}, { + "Id": 167, + "Avatar": "assets/images/men/67.jpg", + "Position": "down", + "Name": "Aatu Ranta", + "AthleteNumber": 38049, + "NetWorth": 94, + "TopSpeed": 5.1, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/ae.png", + "CountryName": "United Arab Emirates" +}, { + "Id": 169, + "Avatar": "assets/images/men/44.jpg", + "Position": "up", + "Name": "Aziz Santos", + "AthleteNumber": 38947, + "NetWorth": 98, + "TopSpeed": 4, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/gb.png", + "CountryName": "United Kingdom" +}, { + "Id": 170, + "Avatar": "assets/images/men/60.jpg", + "Position": "up", + "Name": "Fernando Gimenez", + "AthleteNumber": 31290, + "NetWorth": 102, + "TopSpeed": 5.1, + "TrackProgress": 3, + "CountryFlag": "assets/images/flags/uz.png", + "CountryName": "Uruguay" +}, { + "Id": 124, + "Avatar": "assets/images/men/98.jpg", + "Position": "down", + "Name": "Mathieu Mathieu", + "AthleteNumber": 10555, + "NetWorth": 101, + "TopSpeed": 5.2, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/uz.png", + "CountryName": "Uzbekistan" +}, { + "Id": 193, + "Avatar": "assets/images/women/9.jpg", + "Position": "down", + "Name": "Juanita Franklin", + "AthleteNumber": 13907, + "NetWorth": 91, + "TopSpeed": 6, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/vu.png", + "CountryName": "Vanuatu" +}, { + "Id": 25, + "Avatar": "assets/images/men/42.jpg", + "Position": "up", + "Name": "Stanley Hart", + "AthleteNumber": 14150, + "NetWorth": 91, + "TopSpeed": 4.5, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ve.png", + "CountryName": "Venezuela" +}, { + "Id": 131, + "Avatar": "assets/images/women/61.jpg", + "Position": "current", + "Name": "Eliza Bishop", + "AthleteNumber": 31774, + "NetWorth": 96, + "TopSpeed": 4.7, + "TrackProgress": 4, + "CountryFlag": "assets/images/flags/eh.png", + "CountryName": "Western Sahara" +}, { + "Id": 34, + "Avatar": "assets/images/women/19.jpg", + "Position": "down", + "Name": "Linda Schäfer", + "AthleteNumber": 43074, + "NetWorth": 107, + "TopSpeed": 5.1, + "TrackProgress": 2, + "CountryFlag": "assets/images/flags/ye.png", + "CountryName": "Yemen" +}]; diff --git a/projects/igniteui-angular-performance/src/app/data/employeesData.ts b/projects/igniteui-angular-performance/src/app/data/employeesData.ts new file mode 100644 index 00000000000..eb9c587ea2f --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/data/employeesData.ts @@ -0,0 +1,164 @@ +export const EMPLOYEES_DATA = [ + { + Age: 55, + Avatar: 'assets/images/men/5.jpg', + HireDate: new Date(2008, 3, 20), + ID: 1, + Name: 'Johnathan Winchester', + ParentID: -1, + Title: 'Development Manager' + }, + { + Age: 42, + Avatar: 'assets/images/women/4.jpg', + HireDate: new Date(2014, 1, 22), + ID: 4, + Name: 'Ana Sanders', + ParentID: -1, + Title: 'CEO' + }, + { + Age: 49, + Avatar: 'assets/images/women/2.jpg', + HireDate: new Date(2014, 1, 22), + ID: 18, + Name: 'Victoria Lincoln', + ParentID: -1, + Title: 'Accounting Manager' + }, + { + Age: 61, + Avatar: 'assets/images/men/4.jpg', + HireDate: new Date(2010, 1, 1), + ID: 10, + Name: 'Yang Wang', + ParentID: -1, + Title: 'Localization Manager' + }, + { + Age: 43, + Avatar: 'assets/images/men/1.jpg', + HireDate: new Date(2011, 6, 3), + ID: 3, + Name: 'Michael Burke', + ParentID: 1, + Title: 'Senior Software Developer' + }, + { + Age: 29, + Avatar: 'assets/images/men/2.jpg', + HireDate: new Date(2009, 6, 19), + ID: 2, + Name: 'Thomas Anderson', + ParentID: 1, + Title: 'Senior Software Developer' + }, + { + Age: 31, + Avatar: 'assets/images/women/3.jpg', + HireDate: new Date(2014, 8, 18), + ID: 11, + Name: 'Monica Reyes', + ParentID: 1, + Title: 'Software Development Team Lead' + }, + { + Age: 35, + Avatar: 'assets/images/men/3.jpg', + HireDate: new Date(2015, 9, 17), + ID: 6, + Name: 'Roland Mendel', + ParentID: 11, + Title: 'Senior Software Developer' + }, + { + Age: 44, + Avatar: 'assets/images/men/6.jpg', + HireDate: new Date(2009, 10, 11), + ID: 12, + Name: 'Sven Cooper', + ParentID: 11, + Title: 'Senior Software Developer' + }, + { + Age: 44, + Avatar: 'assets/images/men/7.jpg', + HireDate: new Date(2014, 4, 4), + ID: 14, + Name: 'Laurence Johnson', + ParentID: 4, + Title: 'Director' + }, + { + Age: 25, + Avatar: 'assets/images/women/1.jpg', + HireDate: new Date(2017, 11, 9), + ID: 5, + Name: 'Elizabeth Richards', + ParentID: 4, + Title: 'Vice President' + }, + { + Age: 39, + Avatar: 'assets/images/men/8.jpg', + HireDate: new Date(2010, 3, 22), + ID: 13, + Name: 'Trevor Ashworth', + ParentID: 5, + Title: 'Director' + }, + { + Age: 44, + Avatar: 'assets/images/men/9.jpg', + HireDate: new Date(2014, 4, 4), + ID: 17, + Name: 'Antonio Moreno', + ParentID: 18, + Title: 'Senior Accountant' + }, + { + Age: 50, + Avatar: 'assets/images/men/10.jpg', + HireDate: new Date(2007, 11, 18), + ID: 7, + Name: 'Pedro Rodriguez', + ParentID: 10, + Title: 'Senior Localization Developer' + }, + { + Age: 27, + Avatar: 'assets/images/women/5.jpg', + HireDate: new Date(2016, 2, 19), + ID: 8, + Name: 'Casey Harper', + ParentID: 10, + Title: 'Senior Localization Developer' + }, + { + Age: 25, + Avatar: 'assets/images/women/6.jpg', + HireDate: new Date(2017, 11, 9), + ID: 15, + Name: 'Patricia Simpson', + ParentID: 7, + Title: 'Localization Intern' + }, + { + Age: 39, + Avatar: 'assets/images/men/26.jpg', + HireDate: new Date(2010, 3, 22), + ID: 9, + Name: 'Francisco Chang', + ParentID: 7, + Title: 'Localization Intern' + }, + { + Age: 25, + Avatar: 'assets/images/men/27.jpg', + HireDate: new Date(2018, 3, 18), + ID: 16, + Name: 'Peter Lewis', + ParentID: 7, + Title: 'Localization Intern' + } +]; diff --git a/projects/igniteui-angular-performance/src/app/data/pivotData.ts b/projects/igniteui-angular-performance/src/app/data/pivotData.ts new file mode 100644 index 00000000000..36293dfb383 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/data/pivotData.ts @@ -0,0 +1,601 @@ +export const storeNames = { + "Australia": [ + { "city": "Sydney", "mall": "Westfield Sydney" }, + { "city": "Sydney", "mall": "Westfield Bondi Junction" }, + { "city": "Sydney", "mall": "Chatswood Chase" }, + { "city": "Sydney", "mall": "QVB (Queen Victoria Building)" }, + { "city": "Sydney", "mall": "Pitt Street Mall" }, + { "city": "Sydney", "mall": "Macquarie Centre" }, + { "city": "Melbourne", "mall": "Chadstone Shopping Centre" }, + { "city": "Melbourne", "mall": "Westfield Doncaster" }, + { "city": "Melbourne", "mall": "Emporium Melbourne" }, + { "city": "Melbourne", "mall": "Melbourne Central" }, + { "city": "Melbourne", "mall": "DFO South Wharf" }, + { "city": "Melbourne", "mall": "Highpoint Shopping Centre" }, + { "city": "Brisbane", "mall": "Queen Street Mall" }, + { "city": "Brisbane", "mall": "Westfield Chermside" }, + { "city": "Brisbane", "mall": "Garden City Shopping Centre" }, + { "city": "Brisbane", "mall": "Pacific Fair Shopping Centre" }, + { "city": "Brisbane", "mall": "Indooroopilly Shopping Centre" }, + { "city": "Perth", "mall": "Westfield Carousel" }, + { "city": "Perth", "mall": "Lakeside Joondalup" }, + { "city": "Perth", "mall": "Karrinyup Shopping Centre" }, + { "city": "Perth", "mall": "Murray Street Mall" }, + { "city": "Adelaide", "mall": "Rundle Mall" }, + { "city": "Adelaide", "mall": "Westfield Marion" }, + { "city": "Adelaide", "mall": "Burnside Village" }, + { "city": "Adelaide", "mall": "Tea Tree Plaza" }, + { "city": "Hobart", "mall": "Eastlands Shopping Centre" }, + { "city": "Hobart", "mall": "Macquarie Street Mall" }, + { "city": "Canberra", "mall": "Canberra Centre" }, + { "city": "Canberra", "mall": "Westfield Woden" }, + { "city": "Gold Coast", "mall": "Pacific Fair Shopping Centre" }, + { "city": "Gold Coast", "mall": "Robina Town Centre" }, + { "city": "Newcastle", "mall": "Westfield Kotara" }, + { "city": "Newcastle", "mall": "Charlestown Square" }, + { "city": "Cairns", "mall": "Cairns Central" }, + { "city": "Cairns", "mall": "Stockland Cairns" }, + { "city": "Wollongong", "mall": "Westfield Wollongong" }, + { "city": "Geelong", "mall": "Westfield Geelong" }, + { "city": "Launceston", "mall": "Centro Meadow Mews" } + ], + "Belgium": [ + { "city": "Brussels", "mall": "City2" }, + { "city": "Brussels", "mall": "Galeries Royales Saint-Hubert" }, + { "city": "Brussels", "mall": "Westland Shopping" }, + { "city": "Brussels", "mall": "Docks Bruxsel" }, + { "city": "Antwerp", "mall": "Shopping Stadsfeestzaal" }, + { "city": "Antwerp", "mall": "Century Center" }, + { "city": "Antwerp", "mall": "Winkelcentrum de Meir" }, + { "city": "Antwerp", "mall": "Wijnegem Shopping Center" }, + { "city": "Ghent", "mall": "Shopping Center Gent Zuid" }, + { "city": "Ghent", "mall": "Free Dome Shopping" }, + { "city": "Ghent", "mall": "Kouter Shopping Mall" }, + { "city": "Liège", "mall": "Les Galeries Saint-Lambert" }, + { "city": "Liège", "mall": "Basilix Shopping Center" }, + { "city": "Liège", "mall": "Méga Liège" }, + { "city": "Charleroi", "mall": "Rive Gauche" }, + { "city": "Charleroi", "mall": "City Mall" }, + { "city": "Bruges", "mall": "Tiany Shopping Center" }, + { "city": "Bruges", "mall": "Stadhuisbrug Shopping" }, + { "city": "Leuven", "mall": "Leuven Shopping Center" }, + { "city": "Leuven", "mall": "Winkelcentrum Ledeberg" }, + { "city": "Louvain-la-Neuve", "mall": "Louvain-la-Neuve Shopping" }, + { "city": "Namur", "mall": "Shopping Namur" }, + { "city": "Mons", "mall": "Les Grands Prés" }, + { "city": "Eupen", "mall": "Eupen Shopping Center" }, + { "city": "Kortrijk", "mall": "Kortrijk Shopping" } + ], + "Brazil": [ + { "city": "São Paulo", "mall": "Shopping Iguatemi São Paulo" }, + { "city": "São Paulo", "mall": "Shopping Morumbi" }, + { "city": "São Paulo", "mall": "Shopping Eldorado" }, + { "city": "São Paulo", "mall": "West Shopping" }, + { "city": "São Paulo", "mall": "Shopping Vila Lobos" }, + { "city": "São Paulo", "mall": "Shopping Cidade São Paulo" }, + { "city": "Rio de Janeiro", "mall": "Shopping Rio Sul" }, + { "city": "Rio de Janeiro", "mall": "BarraShopping" }, + { "city": "Rio de Janeiro", "mall": "Shopping Leblon" }, + { "city": "Rio de Janeiro", "mall": "Shopping Tijuca" }, + { "city": "Rio de Janeiro", "mall": "Botafogo Praia Shopping" }, + { "city": "Rio de Janeiro", "mall": "Shopping Plaza Niterói" }, + { "city": "Belo Horizonte", "mall": "Shopping Cidade" }, + { "city": "Belo Horizonte", "mall": "BH Shopping" }, + { "city": "Belo Horizonte", "mall": "Pátio Savassi" }, + { "city": "Belo Horizonte", "mall": "Shopping Del Rey" }, + { "city": "Brasília", "mall": "Shopping Conjunto Nacional" }, + { "city": "Brasília", "mall": "ParkShopping Brasília" }, + { "city": "Brasília", "mall": "Shopping Iguatemi Brasília" }, + { "city": "Curitiba", "mall": "Shopping Palladium Curitiba" }, + { "city": "Curitiba", "mall": "Shopping Estação" }, + { "city": "Curitiba", "mall": "Shopping Crystal" }, + { "city": "Curitiba", "mall": "Shopping Curitiba" }, + { "city": "Porto Alegre", "mall": "Shopping Iguatemi Porto Alegre" }, + { "city": "Porto Alegre", "mall": "Shopping Praia de Belas" }, + { "city": "Porto Alegre", "mall": "Shopping Bourbon Wallig" }, + { "city": "Porto Alegre", "mall": "Shopping Total" }, + { "city": "Recife", "mall": "Shopping Recife" }, + { "city": "Recife", "mall": "RioMar Recife" }, + { "city": "Recife", "mall": "Shopping Tacaruna" }, + { "city": "Fortaleza", "mall": "Shopping Iguatemi Fortaleza" }, + { "city": "Fortaleza", "mall": "Shopping Aldeota" }, + { "city": "Fortaleza", "mall": "RioMar Fortaleza" }, + { "city": "Salvador", "mall": "Shopping da Bahia" }, + { "city": "Salvador", "mall": "Shopping Barra" }, + { "city": "Salvador", "mall": "Salvador Shopping" }, + { "city": "Manaus", "mall": "Manauara Shopping" }, + { "city": "Manaus", "mall": "Shopping Ponta Negra" }, + { "city": "Natal", "mall": "Shopping Natal" }, + { "city": "Natal", "mall": "Midway Mall" }, + { "city": "Maceió", "mall": "Maceió Shopping" }, + { "city": "Maceió", "mall": "Parque Shopping Maceió" }, + { "city": "Campinas", "mall": "Shopping Campinas" }, + { "city": "Campinas", "mall": "Iguatemi Campinas" }, + { "city": "Campinas", "mall": "Shopping Parque D. Pedro" }, + { "city": "Vitória", "mall": "Shopping Vitória" }, + { "city": "Vitória", "mall": "Boulevard Shopping Vitória" } + ], + "Bulgaria": [ + { "city": "Sofia", "mall": "Paradise Center" }, + { "city": "Sofia", "mall": "Mall of Sofia" }, + { "city": "Sofia", "mall": "Serdika Center" }, + { "city": "Sofia", "mall": "The Mall" }, + { "city": "Sofia", "mall": "Sofia Ring Mall" }, + { "city": "Sofia", "mall": "Zara Plaza" }, + { "city": "Sofia", "mall": "Bulgaria Mall" }, + { "city": "Sofia", "mall": "Vitosha Boulevard" }, + { "city": "Plovdiv", "mall": "Plovdiv Plaza" }, + { "city": "Plovdiv", "mall": "Mall of Plovdiv" }, + { "city": "Plovdiv", "mall": "Lidl Plaza" }, + { "city": "Varna", "mall": "Grand Mall Varna" }, + { "city": "Varna", "mall": "Mall Varna" }, + { "city": "Varna", "mall": "Galleria Varna" }, + { "city": "Burgas", "mall": "Burgas Plaza" }, + { "city": "Burgas", "mall": "Mall Galleria Burgas" }, + { "city": "Burgas", "mall": "The Mall Burgas" }, + { "city": "Ruse", "mall": "Ruse Mall" }, + { "city": "Stara Zagora", "mall": "Park Mall Stara Zagora" }, + { "city": "Veliko Tarnovo", "mall": "Mall Veliko Tarnovo" }, + { "city": "Shumen", "mall": "Shumen Mall" }, + { "city": "Pleven", "mall": "Pleven Plaza" }, + { "city": "Haskovo", "mall": "Haskovo Mall" }, + { "city": "Kyustendil", "mall": "Kyustendil Mall" }, + { "city": "Montana", "mall": "Montana Mall" }, + { "city": "Blagoevgrad", "mall": "Blagoevgrad Mall" }, + { "city": "Dobrich", "mall": "Mall Dobrich" }, + { "city": "Sliven", "mall": "Sliven Mall" }, + { "city": "Botevgrad", "mall": "Botevgrad Mall" }, + { "city": "Vratsa", "mall": "Vratsa Mall" } + ], + "Canada": [ + { "city": "Toronto", "mall": "Eaton Centre" }, + { "city": "Toronto", "mall": "Yorkdale Shopping Centre" }, + { "city": "Toronto", "mall": "Square One Shopping Centre" }, + { "city": "Toronto", "mall": "Sherway Gardens Road" }, + { "city": "Toronto", "mall": "The PATH" }, + { "city": "Vancouver", "mall": "Pacific Centre" }, + { "city": "Vancouver", "mall": "Metropolis at Metrotown" }, + { "city": "Vancouver", "mall": "Oakridge Centre" }, + { "city": "Vancouver", "mall": "Aberdeen Centre" }, + { "city": "Vancouver", "mall": "Richmond Centre" }, + { "city": "Montreal", "mall": "Les Cours Mont-Royal" }, + { "city": "Montreal", "mall": "Complexe Desjardins" }, + { "city": "Montreal", "mall": "Promenades Cathedrale" }, + { "city": "Montreal", "mall": "CF Carrefour Laval" }, + { "city": "Montreal", "mall": "Galeries D'Anjou" }, + { "city": "Calgary", "mall": "CF Chinook Centre" }, + { "city": "Calgary", "mall": "Market Mall" }, + { "city": "Calgary", "mall": "Southcentre Mall" }, + { "city": "Calgary", "mall": "Sunridge Mall" }, + { "city": "Ottawa", "mall": "Rideau Centre" }, + { "city": "Ottawa", "mall": "St. Laurent Centre" }, + { "city": "Ottawa", "mall": "Carlingwood Shopping Centre" }, + { "city": "Ottawa", "mall": "Tanger Outlets Ottawa" }, + { "city": "Edmonton", "mall": "West Edmonton Mall" }, + { "city": "Edmonton", "mall": "Southgate Centre" }, + { "city": "Edmonton", "mall": "Kingsway Mall" }, + { "city": "Edmonton", "mall": "London Drugs Edmonton" }, + { "city": "Quebec City", "mall": "Place Ste-Foy" }, + { "city": "Quebec City", "mall": "Laurentides Shopping Centre" }, + { "city": "Quebec City", "mall": "Les Galeries de la Capitale" }, + { "city": "Mississauga", "mall": "Square One Shopping Centre" }, + { "city": "Mississauga", "mall": "Heartland Town Centre" }, + { "city": "Mississauga", "mall": "Erin Mills Town Centre" }, + { "city": "Burlington", "mall": "Mapleview Centre" }, + { "city": "Burlington", "mall": "Burlington Mall" }, + { "city": "Hamilton", "mall": "Lime Ridge Mall" }, + { "city": "Hamilton", "mall": "Macon Centre" }, + { "city": "Halifax", "mall": "Mic Mac Mall" }, + { "city": "Halifax", "mall": "Park Lane Mall" }, + { "city": "Winnipeg", "mall": "CF Polo Park" }, + { "city": "Winnipeg", "mall": "St. Vital Centre" }, + { "city": "Winnipeg", "mall": "Kildonan Place" }, + { "city": "Victoria", "mall": "Mayfair Shopping Centre" }, + { "city": "Victoria", "mall": "Hillside Shopping Centre" }, + { "city": "London", "mall": "CF Masonville Place" }, + { "city": "London", "mall": "Westmount Shopping Centre" }, + { "city": "Kelowna", "mall": "Orchard Park Shopping Centre" }, + { "city": "Kelowna", "mall": "Apple Valley Shopping Centre" }, + { "city": "Saskatoon", "mall": "The Mall at Lawson Heights" }, + { "city": "Saskatoon", "mall": "Confederation Mall" }, + { "city": "Regina", "mall": "Southland Mall" }, + { "city": "Regina", "mall": "Cornwall Centre" } + ], + "China": [ + { "city": "Beijing", "mall": "The Place" }, + { "city": "Beijing", "mall": "Wangfujing" }, + { "city": "Beijing", "mall": "China World Mall" }, + { "city": "Beijing", "mall": "Sanlitun Taikoo Li" }, + { "city": "Shanghai", "mall": "Nanjing Road" }, + { "city": "Shanghai", "mall": "IFC Mall" }, + { "city": "Shanghai", "mall": "Super Brand Mall" }, + { "city": "Shanghai", "mall": "K11 Art Mall" }, + { "city": "Shanghai", "mall": "Raffles City" }, + { "city": "Shenzhen", "mall": "COCO Park" }, + { "city": "Shenzhen", "mall": "Luohu Commercial City" }, + { "city": "Shenzhen", "mall": "Shenzhen MixC" }, + { "city": "Shenzhen", "mall": "Kingkey 100" }, + { "city": "Guangzhou", "mall": "Tianhe City Mall" }, + { "city": "Guangzhou", "mall": "Grandview Mall" }, + { "city": "Guangzhou", "mall": "K11 Guangzhou" }, + { "city": "Guangzhou", "mall": "Parc Central" }, + { "city": "Hong Kong", "mall": "Harbour City" }, + { "city": "Hong Kong", "mall": "Times Square" }, + { "city": "Hong Kong", "mall": "Pacific Place" }, + { "city": "Hong Kong", "mall": "Elements Mall" }, + { "city": "Chengdu", "mall": "Chengdu IFS" }, + { "city": "Chengdu", "mall": "Taikoo Li Chengdu" }, + { "city": "Chengdu", "mall": "Chengdu Global Center" }, + { "city": "Chengdu", "mall": "SKP Chengdu" }, + { "city": "Hangzhou", "mall": "Hefang Street" }, + { "city": "Hangzhou", "mall": "Hangzhou Tower Shopping Mall" }, + { "city": "Hangzhou", "mall": "Xixi Impression City" }, + { "city": "Suzhou", "mall": "Suzhou Center Mall" }, + { "city": "Suzhou", "mall": "Gubei International Mall" }, + { "city": "Xi'an", "mall": "Xi'an Century Ginwa" }, + { "city": "Xi'an", "mall": "Golden Eagle International Mall" }, + { "city": "Xi'an", "mall": "Tang West Market Mall" }, + { "city": "Nanjing", "mall": "Deji Plaza" }, + { "city": "Nanjing", "mall": "Nanjing Aqua City" }, + { "city": "Nanjing", "mall": "Nanjing Xinjiekou" }, + { "city": "Wuhan", "mall": "Wuhan International Plaza" }, + { "city": "Wuhan", "mall": "K11 Wuhan" }, + { "city": "Wuhan", "mall": "Wuhan Han Street" }, + { "city": "Tianjin", "mall": "Tianjin Joy City" }, + { "city": "Tianjin", "mall": "Riverside 66" }, + { "city": "Tianjin", "mall": "Tianjin Galaxy Mall" }, + { "city": "Shenyang", "mall": "Shenyang Middle Street" }, + { "city": "Shenyang", "mall": "Shenyang Fashion Square" }, + { "city": "Harbin", "mall": "Harbin International Trade Centre" }, + { "city": "Harbin", "mall": "Harbin Yintai Centre" }, + { "city": "Qingdao", "mall": "MixC Qingdao" }, + { "city": "Qingdao", "mall": "Hisense Plaza" }, + { "city": "Qingdao", "mall": "Grand Shopping Mall" }, + { "city": "Xiamen", "mall": "Xiamen SM City Mall" }, + { "city": "Xiamen", "mall": "Xiamen Haicang MixC" }, + { "city": "Fuzhou", "mall": "Fuzhou MixC" }, + { "city": "Fuzhou", "mall": "Fuzhou K11" }, + { "city": "Dalian", "mall": "Dalian Friendship Shopping Mall" }, + { "city": "Dalian", "mall": "Dalian Plaza" } + ], + "Denmark": [ + { "mall": "Field's", "city": "Copenhagen" }, + { "mall": "Tivoli Food Hall", "city": "Copenhagen" }, + { "mall": "Illum", "city": "Copenhagen" }, + { "mall": "Magasin du Nord", "city": "Copenhagen" }, + { "mall": "Frederiksberg Center", "city": "Frederiksberg" }, + { "mall": "City2", "city": "Høje Taastrup" }, + { "mall": "Rødovre Centrum", "city": "Rødovre" }, + { "mall": "Lyngby Storcenter", "city": "Lyngby" }, + { "mall": "Kolding Storcenter", "city": "Kolding" }, + { "mall": "Rosengårdcentret", "city": "Odense" }, + { "mall": "Aalborg Storcenter", "city": "Aalborg" }, + { "mall": "HerningCentret", "city": "Herning" }, + { "mall": "SlotsArkaderne", "city": "Hillerød" }, + { "mall": "Ro's Torv", "city": "Roskilde" } + ], + "Finland": [ + { "mall": "Mall of Tripla", "city": "Helsinki" }, + { "mall": "Kamppi Shopping Centre", "city": "Helsinki" }, + { "mall": "Redi Shopping Center", "city": "Helsinki" }, + { "mall": "Forum", "city": "Helsinki" }, + { "mall": "Kluuvi Shopping Center", "city": "Helsinki" }, + { "mall": "Itis (Itäkeskus)", "city": "Helsinki" }, + { "mall": "Jumbo Shopping Centre", "city": "Vantaa" }, + { "mall": "Myyrmanni Shopping Centre", "city": "Vantaa" }, + { "mall": "Sello Shopping Centre", "city": "Espoo" }, + { "mall": "Iso Omena", "city": "Espoo" }, + { "mall": "Hansa Emporium", "city": "Turku" }, + { "mall": "Mylly Shopping Centre", "city": "Raisio" }, + { "mall": "Koskikeskus", "city": "Tampere" }, + { "mall": "Ideapark", "city": "Lempäälä" }, + { "mall": "Rewell Center", "city": "Vaasa" }, + { "mall": "Kuukkeli Shopping Centre", "city": "Inari" } + ], + "France": [ + { "city": "Paris", "mall": "Les Quatre Temps" }, + { "city": "Lyon", "mall": "La Part-Dieu" }, + { "city": "Paris", "mall": "Forum des Halles" }, + { "city": "Créteil", "mall": "Créteil Soleil" }, + { "city": "Évry", "mall": "Evry2" }, + { "city": "Aulnay-sous-Bois", "mall": "O'Parinor" }, + { "city": "Le Chesnay", "mall": "Parly 2" }, + { "city": "Rosny-sous-Bois", "mall": "Rosny 2" }, + { "city": "Cergy", "mall": "Les 3 Fontaines" }, + { "city": "Vélizy-Villacoublay", "mall": "Vélizy 2" }, + { "city": "Marne-la-Vallée", "mall": "Val d'Europe" }, + { "city": "Annecy", "mall": "Courier" }, + { "city": "Saint-Étienne", "mall": "Centre Deux" }, + { "city": "Grenoble", "mall": "Grand'Place" }, + { "city": "Bourg-en-Bresse", "mall": "Cap Emeraude" }, + { "city": "Épagny", "mall": "Le Grand Épagny" }, + { "city": "Serris", "mall": "Val d'Europe" }, + { "city": "Toulouse", "mall": "Labège 2" }, + { "city": "Marseille", "mall": "Les Terrasses du Port" }, + { "city": "Nantes", "mall": "Atlantis" }, + { "city": "Nice", "mall": "Cap 3000" }, + { "city": "Lille", "mall": "Euralille" } + ], + "Germany": [ + { "mall": "CentrO", "city": "Oberhausen" }, + { "mall": "Mall of Ku'damm", "city": "Berlin" }, + { "mall": "Alexa", "city": "Berlin" }, + { "mall": "Alstertal Einkaufszentrum", "city": "Hamburg" }, + { "mall": "Zweibrücken Fashion Outlet", "city": "Zweibrücken" }, + { "mall": "Altmarkt-Galerie", "city": "Dresden" }, + { "mall": "Rotmain-Center", "city": "Bayreuth" }, + { "mall": "Schloss Arkaden", "city": "Heidenheim" }, + { "mall": "WestArkaden", "city": "Freiburg" }, + { "mall": "Kaisergalerie", "city": "Hamburg" }, + { "mall": "Post Galerie", "city": "Karlsruhe" }, + { "mall": "Anger 1", "city": "Erfurt" }, + { "mall": "Alt-Chemnitz-Center", "city": "Chemnitz" }, + { "mall": "Aquis Plaza", "city": "Aachen" }, + { "mall": "Bikini Center", "city": "Berlin" }, + { "mall": "Aachen Arkaden", "city": "Aachen" }, + { "mall": "Altstadt-Arkaden", "city": "Nordhausen" }, + { "mall": "Arneken-Galerie", "city": "Hildesheim" }, + { "mall": "Schwarzwald-City", "city": "Freiburg" }, + { "mall": "Aldi Einkaufszentrum", "city": "Gelsenkirchen" }, + { "mall": "MercaturA", "city": "Aalen" }, + { "mall": "ZO-Zentrum Oberwiehre", "city": "Freiburg" }, + { "mall": "Friedrichstraße Galerie", "city": "Berlin" }, + { "mall": "Turmstrasse", "city": "Berlin-Mitte" }, + { "mall": "SeeCarree", "city": "Berlin" } + ], + "Greece": [ + { "mall": "Golden Hall", "city": "Athens" }, + { "mall": "The Mall Athens", "city": "Athens" }, + { "mall": "McArthurGlen Athens Designer Outlet", "city": "Spata" }, + { "mall": "Factory Outlet", "city": "Piraeus" }, + { "mall": "Smart Park", "city": "Spata" }, + { "mall": "Glyfada Centre", "city": "Glyfada" }, + { "mall": "Hondos Center", "city": "Various locations" }, + { "mall": "Kifissia Mall", "city": "Kifissia" }, + { "mall": "Mall of Crete", "city": "Heraklion" }, + { "mall": "Attica Department Store", "city": "Athens" }, + { "mall": "Olympic Mall", "city": "Maroussi" }, + { "mall": "River West Mall", "city": "Athens" }, + { "mall": "Metropolitan Mall", "city": "Athens" }, + { "mall": "Lidl Shopping Center", "city": "Various locations" }, + { "mall": "Mediterranean Cosmos", "city": "Thessaloniki" }, + { "mall": "Pallini Mall", "city": "Pallini" } + ], + "India": [ + { "mall": "DLF Mall of India", "city": "Noida" }, + { "mall": "Sarath City Capital Mall", "city": "Hyderabad" }, + { "mall": "Ambience Mall", "city": "Gurgaon" }, + { "mall": "Phoenix Marketcity", "city": "Mumbai" }, + { "mall": "Inorbit Mall", "city": "Hyderabad" }, + { "mall": "Fun Republic Mall", "city": "Lucknow" }, + { "mall": "Z Square Mall", "city": "Kanpur" }, + { "mall": "Select Citywalk", "city": "New Delhi" }, + { "mall": "The Great India Place", "city": "Noida" }, + { "mall": "Quest Mall", "city": "Kolkata" }, + { "mall": "Oberon Mall", "city": "Kochi" }, + { "mall": "Viviana Mall", "city": "Thane" }, + { "mall": "Infiniti Mall", "city": "Mumbai" }, + { "mall": "City Centre Mall", "city": "Mangalore" }, + { "mall": "Prozone Mall", "city": "Coimbatore" }, + { "mall": "Mantri Square Mall", "city": "Bangalore" }, + { "mall": "Orion Mall", "city": "Bangalore" } + ], + "Italy": [ + { "mall": "Il Centro", "city": "Arese (Milan)" }, + { "mall": "CityLife Shopping District", "city": "Milan" }, + { "mall": "The Mall Firenze", "city": "Leccio (Florence)" }, + { "mall": "Serravalle Designer Outlet", "city": "Serravalle Scrivia (Genoa)" }, + { "mall": "Castel Romano Designer Outlet", "city": "Rome" }, + { "mall": "Torri d’Europa", "city": "Trieste" }, + { "mall": "Etnapolis", "city": "Catania (Sicily)" }, + { "mall": "Centro Commerciale Campania", "city": "Marcianise (Naples)" }, + { "mall": "La Rinascente", "city": "Rome" }, + { "mall": "La Rinascente", "city": "Milan" }, + { "mall": "Roma Est", "city": "Rome" }, + { "mall": "Fiumicino Shopping Centre", "city": "Rome" }, + { "mall": "Galleria Commerciale Porta di Roma", "city": "Rome" }, + { "mall": "Adriatico Shopping Center", "city": "Ancona" }, + { "mall": "Mondovicino Outlet Village", "city": "Mondovì (Cuneo)" }, + { "mall": "Cinecittà Due", "city": "Rome" }, + { "mall": "Mercato Centrale", "city": "Florence" }, + { "mall": "Odissea Shopping Center", "city": "Reggio Calabria" }, + { "mall": "I Gigli", "city": "Campi Bisenzio (Florence)" }, + { "mall": "Vulcano Buono", "city": "Nola (Naples)" } + ], + "Japan": [ + { "city": "Tokyo", "mall": "Tokyo Midtown" }, + { "city": "Tokyo", "mall": "Roppongi Hills" }, + { "city": "Tokyo", "mall": "Shibuya Mark City" }, + { "city": "Tokyo", "mall": "Tokyo Solamachi" }, + { "city": "Tokyo", "mall": "Tokyu Plaza Omotesando Harajuku" }, + { "city": "Tokyo", "mall": "VenusFort" }, + { "city": "Osaka", "mall": "Grand Front Osaka" }, + { "city": "Osaka", "mall": "Namba Parks" }, + { "city": "Osaka", "mall": "Herbis Plaza" }, + { "city": "Osaka", "mall": "Abeno Harukas Kintetsu" }, + { "city": "Kyoto", "mall": "Kyoto Station Building" }, + { "city": "Fukuoka", "mall": "Canal City Hakata" }, + { "city": "Fukuoka", "mall": "Tenjin Core" } + ], + "Netherlands": [ + { "mall": "Magna Plaza", "city": "Amsterdam" }, + { "mall": "Winkelcentrum Plein ‘40-’45", "city": "Amsterdam" }, + { "mall": "Amsterdamse Poort", "city": "Amsterdam" }, + { "mall": "IJpassage", "city": "Amsterdam" }, + { "mall": "Markthal", "city": "Rotterdam" }, + { "mall": "Koopgoot", "city": "Rotterdam" }, + { "mall": "Lijnbaan", "city": "Rotterdam" }, + { "mall": "Hoog Catharijne", "city": "Utrecht" }, + { "mall": "Vredenburg", "city": "Utrecht" }, + { "mall": "De Passage", "city": "The Hague" }, + { "mall": "Entre Deux", "city": "Maastricht" }, + { "mall": "Groninger Forum", "city": "Groningen" }, + { "mall": "Batavia Stad", "city": "Lelystad" }, + { "mall": "Leidsenhage Shopping Center", "city": "Leidschendam" }, + { "mall": "Mall of the Netherlands", "city": "Leidschendam" }, + { "mall": "Westfield Mall of the Netherlands", "city": "Leidschendam" }, + { "mall": "The Wall", "city": "Utrecht" }, + { "mall": "Stadshart Amstelveen", "city": "Amstelveen" }, + { "mall": "Marktplein", "city": "Delft" }, + { "mall": "Dordtse Kil", "city": "Dordrecht" }, + { "mall": "Boven 't Y", "city": "Amsterdam" }, + { "mall": "Molenbeek Shopping Center", "city": "Breda" } + ], + "Poland": [ + { "city": "Warsaw", "mall": "Blue City" }, + { "city": "Warsaw", "mall": "Zlote Tarasy" }, + { "city": "Warsaw", "mall": "Galeria Mokotów" }, + { "city": "Warsaw", "mall": "Plac Unii" }, + { "city": "Warsaw", "mall": "Westfield Arkadia" }, + { "city": "Warsaw", "mall": "Hala Koszyki" }, + { "city": "Kraków", "mall": "Galeria Kazimierz" }, + { "city": "Kraków", "mall": "Galeria Krakowska" }, + { "city": "Łódź", "mall": "Manufaktura" }, + { "city": "Gdańsk", "mall": "Forum Gdańsk" }, + { "city": "Wrocław", "mall": "Galeria Dominikańska" }, + { "city": "Wrocław", "mall": "Wroclavia" }, + { "city": "Poznań", "mall": "Stary Browar" }, + { "city": "Szczecin", "mall": "Galaxy" }, + { "city": "Szczecin", "mall": "Kaskada" }, + { "city": "Białystok", "mall": "Galeria Jurowiecka" }, + { "city": "Warsaw", "mall": "Galeria Północna" }, + { "city": "Lublin", "mall": "Lublin Plaza" }, + { "city": "Piaseczno", "mall": "Centrum Handlowe Auchan" }, + { "city": "Świdnica", "mall": "Galeria Sudecka" }, + { "city": "Rzeszów", "mall": "Rzeszów Shopping Center" }, + { "city": "Tychy", "mall": "Gemini Park" }, + { "city": "Bielsko-Biała", "mall": "Gemini Park" }, + { "city": "Tarnów", "mall": "Gemini Park" }, + { "city": "Kraków", "mall": "Galeria Krakowska" }, + { "city": "Łomża", "mall": "Galeria Dworcowa" }, + { "city": "Tychy", "mall": "Gemini Park Tychy" }, + { "city": "Warsaw Agglomeration", "mall": "Gondola" } + ], + "Romania": [ + { "mall": "Unirea Shopping Center", "city": "Bucharest" }, + { "mall": "Bucuresti Mall", "city": "Bucharest" }, + { "mall": "Militari Shopping", "city": "Bucharest" }, + { "mall": "Veranda Mall", "city": "Bucharest" }, + { "mall": "Sun Plaza", "city": "Bucharest" }, + { "mall": "Cotroceni Park", "city": "Bucharest" }, + { "mall": "Baneasa Shopping City", "city": "Bucharest" }, + { "mall": "Park Lake Mall", "city": "Bucharest" }, + { "mall": "Promenada", "city": "Bucharest" }, + { "mall": "Mega Mall", "city": "Bucharest" }, + { "mall": "Drumul Taberelor", "city": "Bucharest" }, + { "mall": "Plaza Romania", "city": "Bucharest" }, + { "mall": "Grand Arena", "city": "Bucharest" }, + { "mall": "Vitantis Shopping Center", "city": "Bucharest" }, + { "mall": "Liberty Mall", "city": "Bucharest" }, + { "mall": "City Park Mall", "city": "Constanța" }, + { "mall": "Tomis Mall", "city": "Constanța" }, + { "mall": "Vivo Constanța", "city": "Constanța" }, + { "mall": "Iulius Mall Cluj-Napoca", "city": "Cluj-Napoca" }, + { "mall": "VIVO! Cluj-Napoca", "city": "Cluj-Napoca" }, + { "mall": "Iulius Mall Iași", "city": "Iași" }, + { "mall": "Palas Mall", "city": "Iași" }, + { "mall": "AFI Ploiesti", "city": "Ploiești" }, + { "mall": "Ploiesti Shopping Mall", "city": "Ploiești" }, + { "mall": "Mercur Shopping Center", "city": "Ploiești" }, + { "mall": "Iulius Mall Timișoara", "city": "Timișoara" }, + { "mall": "Shopping City Timișoara", "city": "Timișoara" }, + { "mall": "Bega Shopping Center", "city": "Timișoara" }, + { "mall": "Galeria 1", "city": "Timișoara" }, + { "mall": "Euro Shopping Center", "city": "Timișoara" }, + { "mall": "Glass Gallery Giroc", "city": "Timișoara" }, + { "mall": "Palatul Lugoj", "city": "Lugoj" }, + { "mall": "Elis Center", "city": "Lugoj" }, + { "mall": "Funshop Park", "city": "Timișoara" }, + { "mall": "Kappa Shopping Center", "city": "Timișoara" }, + { "mall": "Lotus Center", "city": "Oradea" }, + { "mall": "Era Shopping Park Oradea", "city": "Oradea" }, + { "mall": "Iulius Town Timișoara", "city": "Timișoara" }, + { "mall": "European Retail Park Brăila", "city": "Brăila" }, + { "mall": "Iulius Mall Suceava", "city": "Suceava" } + ], + "UK": [ + { "mall": "Westfield London", "city": "London" }, + { "mall": "Westfield Stratford City", "city": "London" }, + { "mall": "Oxford Street Malls", "city": "London" }, + { "mall": "Canary Wharf Shopping Centre", "city": "London" }, + { "mall": "Trafford Centre", "city": "Manchester" }, + { "mall": "Arndale Centre", "city": "Manchester" }, + { "mall": "Bullring & Grand Central", "city": "Birmingham" }, + { "mall": "The Mailbox", "city": "Birmingham" }, + { "mall": "Touchwood Shopping Centre", "city": "Birmingham" }, + { "mall": "Buchanan Galleries", "city": "Glasgow" }, + { "mall": "Silverburn", "city": "Glasgow" }, + { "mall": "St. Enoch Centre", "city": "Glasgow" }, + { "mall": "Liverpool ONE", "city": "Liverpool" }, + { "mall": "St. John's Shopping Centre", "city": "Liverpool" }, + { "mall": "Trinity Leeds", "city": "Leeds" }, + { "mall": "Victoria Quarter", "city": "Leeds" }, + { "mall": "Cabot Circus", "city": "Bristol" }, + { "mall": "Cribbs Causeway", "city": "Bristol" }, + { "mall": "Eldon Square", "city": "Newcastle" }, + { "mall": "Metrocentre", "city": "Gateshead" }, + { "mall": "St. James Quarter", "city": "Edinburgh" }, + { "mall": "Ocean Terminal", "city": "Edinburgh" }, + { "mall": "Braehead Centre", "city": "Renfrew" }, + { "mall": "The Centre", "city": "Livingston" }, + { "mall": "The Quays", "city": "Salford" }, + { "mall": "Cheshire Oaks Designer Outlet", "city": "Ellesmere Port" }, + { "mall": "Bluewater", "city": "Greenhithe" }, + { "mall": "Liverpool ONE", "city": "Liverpool" }, + { "mall": "Festival Place", "city": "Basingstoke" }, + { "mall": "Lakeside", "city": "Thurrock" }, + { "mall": "Whitgift", "city": "Croydon" } + ], + "USA": [ + { "mall": "Mall of America", "city": "Bloomington, MN" }, + { "mall": "King of Prussia Mall", "city": "King of Prussia, PA" }, + { "mall": "Ala Moana Center", "city": "Honolulu, HI" }, + { "mall": "The Galleria", "city": "Houston, TX" }, + { "mall": "South Coast Plaza", "city": "Costa Mesa, CA" }, + { "mall": "Woodfield Mall", "city": "Schaumburg, IL" }, + { "mall": "Fashion Show Mall", "city": "Las Vegas, NV" }, + { "mall": "Westfield Valley Fair", "city": "Santa Clara, CA" }, + { "mall": "Tysons Corner Center", "city": "McLean, VA" }, + { "mall": "NorthPark Center", "city": "Dallas, TX" }, + { "mall": "Phipps Plaza", "city": "Atlanta, GA" }, + { "mall": "Southdale Center", "city": "Edina, MN" }, + { "mall": "The Grove", "city": "Los Angeles, CA" }, + { "mall": "Woodbridge Center", "city": "Woodbridge, NJ" }, + { "mall": "Oakbrook Center", "city": "Oak Brook, IL" }, + { "mall": "Brea Mall", "city": "Brea, CA" }, + { "mall": "Lenox Square", "city": "Atlanta, GA" }, + { "mall": "Macy's Herald Square", "city": "New York, NY" }, + { "mall": "Cherry Creek Shopping Center", "city": "Denver, CO" }, + { "mall": "Beverly Center", "city": "Los Angeles, CA" } + ], + "Uruguay": [ + { "mall": "Montevideo Shopping", "city": "Montevideo" }, + { "mall": "Tres Cruces", "city": "Montevideo" }, + { "mall": "Sineriz Shopping", "city": "Montevideo" }, + { "mall": "Colonia Shopping", "city": "Colonia" }, + { "mall": "Las Piedras Shopping", "city": "Las Piedras" }, + { "mall": "Salto Shopping", "city": "Salto" }, + { "mall": "Portones", "city": "Montevideo" }, + { "mall": "Costa Urbana Shopping", "city": "Montevideo" }, + { "mall": "Paseo Del Este", "city": "Punta del Este" }, + { "mall": "Arocena Mall", "city": "Montevideo" }, + { "mall": "Paysandu Shopping Terminal", "city": "Paysandu" }, + { "mall": "Minas Shopping Terminal", "city": "Minas" }, + { "mall": "Planeta", "city": "Montevideo" }, + { "mall": "Paseo Jose Ignacio", "city": "Jose Ignacio" }, + { "mall": "Shopping China Rivera", "city": "Rivera" }, + { "mall": "BELLUS", "city": "Montevideo" }, + { "mall": "California Company", "city": "Montevideo" }, + { "mall": "DrCelular", "city": "Montevideo" } + ] +}; + +export const flags = [ + "Australia", "Germany", "Bulgaria", "Belgium", "USA", "Japan", "Brazil", , "Canada", "China", + "Denmark", "Finland", "France", "Greece", "India", "Italy", + "Netherlands", "Poland", "Romania", "UK", "Uruguay" +]; + +export const brandNames = ["HM", "HM Home", "COS", "ARKET", "Sellpy", "Jeans", "Nova"]; + +export const monthsMaxDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; diff --git a/projects/igniteui-angular-performance/src/app/grid/grid.component.html b/projects/igniteui-angular-performance/src/app/grid/grid.component.html new file mode 100644 index 00000000000..9cad429ffa8 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/grid/grid.component.html @@ -0,0 +1,21 @@ +
+ + @for (col of columns; track col) { + + + } + +
diff --git a/projects/igniteui-angular-performance/src/app/grid/grid.component.scss b/projects/igniteui-angular-performance/src/app/grid/grid.component.scss new file mode 100644 index 00000000000..bc86bb4c9a3 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/grid/grid.component.scss @@ -0,0 +1,10 @@ +:host { + display: flex; + flex-direction: column; + height: 100%; +} + +.grid-wrapper { + height: 100%; + width: 100%; +} diff --git a/projects/igniteui-angular-performance/src/app/grid/grid.component.ts b/projects/igniteui-angular-performance/src/app/grid/grid.component.ts new file mode 100644 index 00000000000..5a8bf831dc1 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/grid/grid.component.ts @@ -0,0 +1,39 @@ +import { Component, inject, ViewChild } from '@angular/core'; +import { GridColumnDataType, IGX_GRID_DIRECTIVES, IgxGridComponent } from "igniteui-angular" +import { DataService } from '../services/data.service'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'app-grid', + imports: [IGX_GRID_DIRECTIVES], + templateUrl: './grid.component.html', + styleUrl: './grid.component.scss' +}) +export class GridComponent { + protected columns: any[] = [] + protected data: any[] = []; + protected performanceDataList: PerformanceEntryList = []; + private dataService = inject(DataService); + private activatedRoute = inject(ActivatedRoute); + + @ViewChild(IgxGridComponent, { static: true }) + public grid: IgxGridComponent; + + constructor() { + this.data = this.dataService.generateData(this.activatedRoute.snapshot.data.rows) + this.columns = [ + { field: "Id", dataType: GridColumnDataType.Number, sortable: true, width: 'auto', groupable: true }, + { field: "Name", dataType: GridColumnDataType.String, sortable: true, width: 'auto', groupable: true }, + { field: "AthleteNumber", dataType: GridColumnDataType.Number, sortable: true, width: 'auto', groupable: true }, + { field: "Registered", dataType: GridColumnDataType.DateTime, sortable: true, width: 'auto', groupable: true }, + { field: "CountryName", dataType: GridColumnDataType.String, sortable: true, width: 'auto', groupable: true }, + { field: "FirstAppearance", dataType: GridColumnDataType.Time, sortable: true, width: 'auto', groupable: true }, + { field: "CareerStart", dataType: GridColumnDataType.Date, sortable: true, width: 'auto', groupable: true }, + { field: "Active", dataType: GridColumnDataType.Boolean, sortable: true, width: 'auto', groupable: true }, + { field: "NetWorth", dataType: GridColumnDataType.Currency, sortable: true, width: 'auto', groupable: true }, + { field: "CountryFlag", dataType: GridColumnDataType.Image, sortable: true, width: 'auto', groupable: true }, + { field: "SuccessRate", dataType: GridColumnDataType.Percent, sortable: true, width: 'auto', groupable: true }, + { field: "Position", dataType: GridColumnDataType.String, sortable: true, width: 'auto', groupable: true }, + ]; + } +} diff --git a/projects/igniteui-angular-performance/src/app/lib/mulberry.ts b/projects/igniteui-angular-performance/src/app/lib/mulberry.ts new file mode 100644 index 00000000000..716a6266205 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/lib/mulberry.ts @@ -0,0 +1,16 @@ +export class Mulberry32 { + private seed: number; + + constructor(s: number) { + this.seed = s; + } + + public random(): number { + /* eslint-disable */ + this.seed |= 0; this.seed = this.seed + 0x6D2B79F5 | 0; + let t = Math.imul(this.seed ^ this.seed >>> 15, 1 | this.seed); + t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t; + return ((t ^ t >>> 14) >>> 0) / 4294967296; + /* eslint-enable */ + } +} diff --git a/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.html b/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.html new file mode 100644 index 00000000000..6c60524609d --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.html @@ -0,0 +1,10 @@ +
+ + +
diff --git a/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.scss b/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.scss new file mode 100644 index 00000000000..bc86bb4c9a3 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.scss @@ -0,0 +1,10 @@ +:host { + display: flex; + flex-direction: column; + height: 100%; +} + +.grid-wrapper { + height: 100%; + width: 100%; +} diff --git a/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.ts b/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.ts new file mode 100644 index 00000000000..e6d9f8593af --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/pivot-grid/pivot-grid.component.ts @@ -0,0 +1,207 @@ +import { CurrencyPipe } from '@angular/common'; +import { Component, inject, ViewChild } from '@angular/core'; +import { FilteringExpressionsTree, FilteringLogic, IgxPivotDateDimension, IgxPivotGridComponent, IPivotConfiguration, IPivotValue, SortingDirection } from 'igniteui-angular'; +import { DataService } from '../services/data.service'; + +// Custom aggregator to calculate profit value +export class IgxSaleProfitAggregate { + public static totalProfit = (_, data: any[] | undefined) => + data?.reduce((accumulator, value) => accumulator + (value.Sale - value.Cost), 0) || 0; + + public static averageProfit = (_, data: any[] | undefined) => { + let average = 0; + if (data?.length === 1) { + average = data[0].Sale - data[0].Cost; + } else if (data && data.length > 1) { + const mappedData = data.map(x => x.Sale - x.Cost); + average = mappedData.reduce((a, b) => a + b) / mappedData.length; + } + return average; + } + + public static minProfit = (_, data: any[] | undefined) => { + let min = 0; + if (data?.length === 1) { + min = data[0].Sale - data[0].Cost; + } else if (data && data.length > 1) { + const mappedData = data.map(x => x.Sale - x.Cost); + min = mappedData.reduce((a, b) => Math.min(a, b)); + } + return min; + }; + + public static maxProfit = (_, data: any[] | undefined) => { + let max = 0; + if (data?.length === 1) { + max = data[0].Sale - data[0].Cost; + } else if (data && data.length > 1) { + const mappedData = data.map(x => x.Sale - x.Cost); + max = mappedData.reduce((a, b) => Math.max(a, b)); + } + return max; + }; +} + +@Component({ + selector: 'app-pivot-grid', + imports: [IgxPivotGridComponent], + templateUrl: './pivot-grid.component.html', + styleUrl: './pivot-grid.component.scss' +}) +export class PivotGridComponent { + @ViewChild(IgxPivotGridComponent, { static: true }) + public pivotGrid!: IgxPivotGridComponent; + + private currencyPipe = new CurrencyPipe('en-US'); + private brandFilter = new FilteringExpressionsTree(FilteringLogic.Or, 'Brand'); + private dataService = inject(DataService); + + protected data: any; + protected saleValue: IPivotValue = { + enabled: true, + member: 'Sale', + displayName: 'Sales', + aggregate: { + key: 'SUM', + aggregatorName: 'SUM', + label: 'Sum' + }, + aggregateList: [ + { + key: 'AVG', + aggregatorName: 'AVG', + label: 'Average' + }, + { + key: 'COUNT', + aggregatorName: 'COUNT', + label: 'Count' + }, + { + key: 'MAX', + aggregatorName: 'MAX', + label: 'Maximum' + }, + { + key: 'MIN', + aggregatorName: 'MIN', + label: 'Minimum' + }, + { + key: 'SUM', + aggregatorName: 'SUM', + label: 'Sum' + }, + ], + formatter: (value, _, __) => { + return this.currencyFormatter(value, 'Sale'); + } + }; + protected profitValue: IPivotValue = { + enabled: true, + member: 'Cost', + displayName: 'Profit', + aggregate: { + key: 'SUM', + aggregator: IgxSaleProfitAggregate.totalProfit, + label: 'Sum' + }, + aggregateList: [ + { + key: 'AVG', + aggregator: IgxSaleProfitAggregate.averageProfit, + label: 'Average' + }, + { + key: 'COUNT', + aggregatorName: 'COUNT', + label: 'Count' + }, + { + key: 'MAX', + aggregator: IgxSaleProfitAggregate.maxProfit, + label: 'Maximum' + }, + { + key: 'MIN', + aggregator: IgxSaleProfitAggregate.minProfit, + label: 'Minimum' + }, + { + key: 'SUM', + aggregator: IgxSaleProfitAggregate.totalProfit, + label: 'Sum' + }, + ], + formatter: (value, _, __) => { + return this.currencyFormatter(value, 'Cost'); + } + }; + + protected pivotConfigBrands: IPivotConfiguration = { + columns: [ + + { + enabled: true, + memberName: 'Brand', + displayName: 'Brand', + filter: this.brandFilter + }, + { + enabled: true, + memberName: 'Country', + displayName: 'Country', + } + + ], + rows: [ + { + enabled: false, + sortDirection: SortingDirection.Asc, + memberName: 'Store', + displayName: 'Store', + + }, + { + enabled: false, + memberName: 'Country', + displayName: 'Country', + childLevel: { + enabled: true, + memberName: 'Store', + displayName: 'Store', + + } + }, + + + new IgxPivotDateDimension({ + memberName: 'Date', + displayName: 'All Periods', + enabled: true, + sortDirection: SortingDirection.None + }, + { + fullDate: false, + quarters: true, + months: false, + }), + ], + values: [ + this.saleValue, + this.profitValue + ] + }; + + constructor() { + this.data = this.dataService.generatePivotData(1_000_000); + } + + private currencyFormatter(value: any, field: string) { + var valueConfig = this.pivotGrid.values.find(value => value.member === field); + if (!valueConfig || valueConfig.aggregate.key === "COUNT") { + return value; + } + return this.currencyPipe.transform(value, 'USD', 'symbol', '1.0-2'); + } +} diff --git a/projects/igniteui-angular-performance/src/app/services/data.service.ts b/projects/igniteui-angular-performance/src/app/services/data.service.ts new file mode 100644 index 00000000000..2cda3cbf715 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/services/data.service.ts @@ -0,0 +1,201 @@ +import { Injectable } from '@angular/core'; +import { Mulberry32 } from '../lib/mulberry'; +import { DATA as athletesData } from "../data/athletesData" +import { EMPLOYEES_DATA } from '../data/employeesData'; +import { brandNames, flags, monthsMaxDays, storeNames } from '../data/pivotData'; + + +@Injectable({ + providedIn: 'root' +}) +export class DataService { + constructor() { } + public generateData(rows: number): any[] { + const rnd = new Mulberry32(1234); + const data = this.generateAthletesData(rnd, rows); + return data; + } + + public generateTreeData(rows: number): any[] { + const rnd = new Mulberry32(1234); + const data = this.generateEmployeesData(rnd, rows); + return data; + } + + public generatePivotData(rows: number) { + const rnd = new Mulberry32(1234); + const data = this.generateSalesData(rnd, rows); + return data; + } + + private generateSalesData(rnd: Mulberry32, rows: number): any[] { + const numCountries = 6; + const numRecsPerCountry = rows / numCountries; + const countryStoreKeys = Object.keys(storeNames); + const newStoreNames = this.generateStoreNames(countryStoreKeys, 100); + + const newCountryStoreKeys = Object.keys(newStoreNames); + let maxNumMalls = newStoreNames[newCountryStoreKeys[0]].length * 3; + for (let s = 1; s < newCountryStoreKeys.length; s++) { + const curCountryMalls = newStoreNames[newCountryStoreKeys[s]].length; + if (curCountryMalls > maxNumMalls) { + maxNumMalls = curCountryMalls; + } + } + + const numBrandsPerMall = 3; + const numDatesPerMall = numRecsPerCountry / maxNumMalls; + const numDatesPerBrand = numDatesPerMall / numBrandsPerMall; + const dates = []; + for (let d = 0; d < numDatesPerBrand; d++) { + const month = this.generateRandomNumber(rnd, 1, 12); + const day = this.generateRandomNumber(rnd, 1, monthsMaxDays[month - 1]); + const year = 2018 + this.generateRandomNumber(rnd, 0, 6); + dates.push(month + "/" + day + "/" + year); + } + + const data = []; + for (let c = 0; c < numCountries; c++) { + const countryName = flags[c]; + const numMallsForCountry = newStoreNames[countryName].length; + for (let m = 0; m < numMallsForCountry; m++) { + const brandNamesPerMall = []; + for (let t = 0; t < numBrandsPerMall; t++) { + brandNamesPerMall.push(Math.round(this.generateRandomNumber(rnd, 0, brandNames.length - 1))); + } + for (let b = 0; b < numBrandsPerMall; b++) { + for (let k = 0; k < numDatesPerBrand; k++) { + const brandName = brandNames[brandNamesPerMall[b]]; + const saleValue = this.generateRandomNumber(rnd, 1, 1000); + const costValue = this.generateRandomNumber(rnd, saleValue / 2, saleValue * 0.95); + const storeInfo = newStoreNames[countryName][m]; + const storeName = storeInfo["mall"].indexOf(storeInfo["city"]) !== -1 ? storeInfo["mall"] : storeInfo["mall"] + ", " + storeInfo["city"]; + + data.push({ + "Store": storeName, + "Brand": brandName, + "Country": countryName, + "Sale": saleValue, + "Cost": costValue, + "Date": dates[k] + }); + } + } + } + + } + return data; + + } + + private generateEmployeesData(rnd: Mulberry32, rows: number): any[] { + const currData = []; + let uniqueId = 1; + const parentCandidates: number[] = []; + for (let i = 0; i < rows; i++) { + const rand = Math.floor(rnd.random() * Math.floor(EMPLOYEES_DATA.length)); + const dataObj = Object.assign({}, EMPLOYEES_DATA[rand]); + dataObj.ID = uniqueId++; + if (currData.length > 0 && rnd.random() > 0.2) { + const parentIndex = Math.floor(rnd.random() * parentCandidates.length); + dataObj.ParentID = parentCandidates[parentIndex]; + } else { + dataObj.ParentID = -1; // Root node + } + dataObj["CheckedIn"] = this.formatDateTime(this.randomizeDateTime(rnd)); + dataObj["CareerStart"] = this.formatDateTime(this.randomizeDateTime(rnd)); + dataObj["GrossSalary"] = this.randomizeSalary(rnd); + dataObj["PTO"] = this.randomizeBoolean(rnd); + dataObj["SuccessRate"] = this.randomizePercentage(rnd); + parentCandidates.push(dataObj.ID); + + currData.push(dataObj); + } + return currData; + } + + private generateAthletesData(rnd: Mulberry32, rows: number): any[] { + const currData = []; + for (let i = 0; i < rows; i++) { + const rand = Math.floor(rnd.random() * Math.floor(athletesData.length)); + const dataObj = Object.assign({}, athletesData[rand]); + dataObj["Registered"] = this.formatDateTime(this.randomizeDateTime(rnd)); + dataObj["FirstAppearance"] = this.formatDateTime(this.randomizeDateTime(rnd)); + dataObj["CareerStart"] = this.formatDateTime(this.randomizeDateTime(rnd)); + dataObj["Active"] = this.randomizeBoolean(rnd); + dataObj["SuccessRate"] = this.randomizePercentage(rnd); + dataObj["AthleteNumber"] = this.randomizeAthleteNumber(dataObj["AthleteNumber"], rnd); + currData.push(dataObj); + } + return currData; + } + + private randomizeDateTime(rnd: Mulberry32): Date { + const now = new Date(); + + // Generate a random date in the current year up to the current month/day + const year = now.getFullYear(); + const month = this.generateRandomNumber(rnd, 0, now.getMonth()); // 0 to current month + const daysInMonth = new Date(year, month + 1, 0).getDate(); + const day = this.generateRandomNumber(rnd, 1, daysInMonth); // 1 to last day of month + + // Generate random time + const hours = this.generateRandomNumber(rnd, 0, 23); + const minutes = this.generateRandomNumber(rnd, 0, 59); + const seconds = this.generateRandomNumber(rnd, 0, 59); + + const date = new Date(year, month, day, hours, minutes, seconds); + return date; + } + + private randomizeBoolean(rnd: Mulberry32): boolean { + const number = this.generateRandomNumber(rnd, 0, 10); + return number >= 5; + } + + private randomizeAthleteNumber(value: number, rnd: Mulberry32): number { + const number = this.generateRandomNumber(rnd, 0, 100); + return number % 2 ? value + number : value - number; + } + + private randomizePercentage(rnd: Mulberry32): number { + const value = rnd.random(); // returns value in [0, 1) + return Math.floor(value * 1000) / 1000; + } + + private randomizeSalary(rnd: Mulberry32): number { + return this.generateRandomNumber(rnd, 80_000, 100_000); + } + + private generateStoreNames(countryStoreKeys: string[], storesCount: number) { + const newStoreNames = {} + for (let s = 0; s < countryStoreKeys.length; s++) { + const curCountryMalls = storeNames[countryStoreKeys[s]].length; + const newStores = []; + for (let m = 0; m < curCountryMalls; m++) { + const newStoreName = storeNames[countryStoreKeys[s]][m]["mall"]; + newStores.push({ "city": storeNames[countryStoreKeys[s]][m]["city"], "mall": newStoreName }); + } + + newStoreNames[countryStoreKeys[s]] = newStores; + } + return newStoreNames; + } + + private formatDateTime(date: Date) { + // Format: MM/DD/YYYY HH:mm:ss + const formatted = `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()} ` + + `${this.pad(date.getHours())}:${this.pad(date.getMinutes())}:${this.pad(date.getSeconds())}`; + return formatted; + } + + // Helper for leading zeros + private pad(num: number): string { + return num.toString().padStart(2, '0'); + } + + private generateRandomNumber(rnd, min, max) { + return Math.floor(rnd.random() * (max - min + 1)) + min; + } + +} diff --git a/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.html b/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.html new file mode 100644 index 00000000000..a516762a6e2 --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.html @@ -0,0 +1,23 @@ +
+ + @for (col of columns; track col) { + + + } + +
diff --git a/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.scss b/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.scss new file mode 100644 index 00000000000..eabcf19790a --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.scss @@ -0,0 +1,16 @@ +:host { + display: flex; + flex-direction: column; + height: 100%; +} + +.grid-wrapper { + height: 100%; + width: 100%; +} + +::ng-deep { + img { + width: 60px !important; + } +} diff --git a/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.ts b/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.ts new file mode 100644 index 00000000000..2f274c23ade --- /dev/null +++ b/projects/igniteui-angular-performance/src/app/tree-grid/tree-grid.component.ts @@ -0,0 +1,38 @@ +import { Component, inject, ViewChild } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { GridColumnDataType, IgxColumnComponent, IgxTreeGridComponent } from 'igniteui-angular'; +import { DataService } from '../services/data.service'; + +@Component({ + selector: 'app-tree-grid', + imports: [IgxTreeGridComponent, IgxColumnComponent], + templateUrl: './tree-grid.component.html', + styleUrl: './tree-grid.component.scss' +}) +export class TreeGridComponent { + protected columns: any[] = [] + protected data: any[] = []; + protected performanceDataList: PerformanceEntryList = []; + private dataService = inject(DataService); + private activatedRoute = inject(ActivatedRoute); + + @ViewChild(IgxTreeGridComponent, { static: true }) + public grid: IgxTreeGridComponent; + + constructor() { + this.data = this.dataService.generateTreeData(this.activatedRoute.snapshot.data.rows) + this.columns = [ + { field: "ID", dataType: GridColumnDataType.Number, sortable: true, width: 'auto', groupable: true }, + { field: "Name", dataType: GridColumnDataType.String, sortable: true, width: 'auto', groupable: true }, + { field: "Age", dataType: GridColumnDataType.Number, sortable: true, width: 'auto', groupable: true }, + { field: "HireDate", dataType: GridColumnDataType.Date, sortable: true, width: 'auto', groupable: true }, + { field: "Title", dataType: GridColumnDataType.String, sortable: true, width: 'auto', groupable: true }, + { field: "CheckedIn", dataType: GridColumnDataType.Time, sortable: true, width: 'auto', groupable: true }, + { field: "PTO", dataType: GridColumnDataType.Boolean, sortable: true, width: 'auto', groupable: true }, + { field: "GrossSalary", dataType: GridColumnDataType.Currency, sortable: true, width: 'auto', groupable: true }, + { field: "Avatar", dataType: GridColumnDataType.Image, sortable: true, width: 'auto', groupable: true }, + { field: "CareerStart", dataType: GridColumnDataType.DateTime, sortable: true, width: 'auto', groupable: true }, + { field: "SuccessRate", dataType: GridColumnDataType.Percent, sortable: true, width: 'auto', groupable: true }, + ]; + } +} diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ad.png b/projects/igniteui-angular-performance/src/assets/images/flags/ad.png new file mode 100644 index 00000000000..c58bc937838 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ad.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ae.png b/projects/igniteui-angular-performance/src/assets/images/flags/ae.png new file mode 100644 index 00000000000..088ef8ea6df Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ae.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/af.png b/projects/igniteui-angular-performance/src/assets/images/flags/af.png new file mode 100644 index 00000000000..995b351ec62 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/af.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ag.png b/projects/igniteui-angular-performance/src/assets/images/flags/ag.png new file mode 100644 index 00000000000..5f8b4f68b1b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ag.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/al.png b/projects/igniteui-angular-performance/src/assets/images/flags/al.png new file mode 100644 index 00000000000..2e516ec39f2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/al.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/am.png b/projects/igniteui-angular-performance/src/assets/images/flags/am.png new file mode 100644 index 00000000000..d529a99e86f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/am.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ao.png b/projects/igniteui-angular-performance/src/assets/images/flags/ao.png new file mode 100644 index 00000000000..4cdfb0e10ea Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ao.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ar.png b/projects/igniteui-angular-performance/src/assets/images/flags/ar.png new file mode 100644 index 00000000000..b31ec92aa10 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ar.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/at.png b/projects/igniteui-angular-performance/src/assets/images/flags/at.png new file mode 100644 index 00000000000..993b903af13 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/at.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/au.png b/projects/igniteui-angular-performance/src/assets/images/flags/au.png new file mode 100644 index 00000000000..ef20b66dc8e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/au.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/az.png b/projects/igniteui-angular-performance/src/assets/images/flags/az.png new file mode 100644 index 00000000000..3fb7ccb30d9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/az.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ba.png b/projects/igniteui-angular-performance/src/assets/images/flags/ba.png new file mode 100644 index 00000000000..fa4d6097b46 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ba.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bb.png b/projects/igniteui-angular-performance/src/assets/images/flags/bb.png new file mode 100644 index 00000000000..5e87a9ea9d5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bb.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bd.png b/projects/igniteui-angular-performance/src/assets/images/flags/bd.png new file mode 100644 index 00000000000..c55d3d7ac08 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bd.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/be.png b/projects/igniteui-angular-performance/src/assets/images/flags/be.png new file mode 100644 index 00000000000..449446af9a7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/be.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bf.png b/projects/igniteui-angular-performance/src/assets/images/flags/bf.png new file mode 100644 index 00000000000..f3a728811c9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bf.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bg.png b/projects/igniteui-angular-performance/src/assets/images/flags/bg.png new file mode 100644 index 00000000000..ec03d4f8dba Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bh.png b/projects/igniteui-angular-performance/src/assets/images/flags/bh.png new file mode 100644 index 00000000000..61bad9b4129 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bh.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bi.png b/projects/igniteui-angular-performance/src/assets/images/flags/bi.png new file mode 100644 index 00000000000..d82b894b7ea Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bi.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bj.png b/projects/igniteui-angular-performance/src/assets/images/flags/bj.png new file mode 100644 index 00000000000..220c8e786c7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bj.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bn.png b/projects/igniteui-angular-performance/src/assets/images/flags/bn.png new file mode 100644 index 00000000000..944a7be1967 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bo.png b/projects/igniteui-angular-performance/src/assets/images/flags/bo.png new file mode 100644 index 00000000000..aec2cc6ca9c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bo.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/br.png b/projects/igniteui-angular-performance/src/assets/images/flags/br.png new file mode 100644 index 00000000000..b54f27df8de Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/br.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bs.png b/projects/igniteui-angular-performance/src/assets/images/flags/bs.png new file mode 100644 index 00000000000..43db8c1a4dd Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bs.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bt.png b/projects/igniteui-angular-performance/src/assets/images/flags/bt.png new file mode 100644 index 00000000000..dfd0d6af28c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bt.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bw.png b/projects/igniteui-angular-performance/src/assets/images/flags/bw.png new file mode 100644 index 00000000000..0a74b72f943 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/by.png b/projects/igniteui-angular-performance/src/assets/images/flags/by.png new file mode 100644 index 00000000000..1c9f5462a61 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/by.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/bz.png b/projects/igniteui-angular-performance/src/assets/images/flags/bz.png new file mode 100644 index 00000000000..ef37f6da9cd Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/bz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ca.png b/projects/igniteui-angular-performance/src/assets/images/flags/ca.png new file mode 100644 index 00000000000..524f815786e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ca.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cd.png b/projects/igniteui-angular-performance/src/assets/images/flags/cd.png new file mode 100644 index 00000000000..a96eccf5743 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cd.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cf.png b/projects/igniteui-angular-performance/src/assets/images/flags/cf.png new file mode 100644 index 00000000000..e203020e75b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cf.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cg.png b/projects/igniteui-angular-performance/src/assets/images/flags/cg.png new file mode 100644 index 00000000000..7afcfe08246 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ch.png b/projects/igniteui-angular-performance/src/assets/images/flags/ch.png new file mode 100644 index 00000000000..bd447d2bc37 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ch.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ci.png b/projects/igniteui-angular-performance/src/assets/images/flags/ci.png new file mode 100644 index 00000000000..14fceff96de Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ci.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ck.png b/projects/igniteui-angular-performance/src/assets/images/flags/ck.png new file mode 100644 index 00000000000..d74b82d9c26 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ck.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cl.png b/projects/igniteui-angular-performance/src/assets/images/flags/cl.png new file mode 100644 index 00000000000..741c34bfb72 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cl.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cm.png b/projects/igniteui-angular-performance/src/assets/images/flags/cm.png new file mode 100644 index 00000000000..e2a308b1f1a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cn.png b/projects/igniteui-angular-performance/src/assets/images/flags/cn.png new file mode 100644 index 00000000000..7474ddebc3c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/co.png b/projects/igniteui-angular-performance/src/assets/images/flags/co.png new file mode 100644 index 00000000000..477177ba930 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/co.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cr.png b/projects/igniteui-angular-performance/src/assets/images/flags/cr.png new file mode 100644 index 00000000000..62cc81a7023 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cu.png b/projects/igniteui-angular-performance/src/assets/images/flags/cu.png new file mode 100644 index 00000000000..4ada582f692 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cu.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cv.png b/projects/igniteui-angular-performance/src/assets/images/flags/cv.png new file mode 100644 index 00000000000..e45bfdb0abb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cv.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cy.png b/projects/igniteui-angular-performance/src/assets/images/flags/cy.png new file mode 100644 index 00000000000..e909ebc40b1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cy.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/cz.png b/projects/igniteui-angular-performance/src/assets/images/flags/cz.png new file mode 100644 index 00000000000..acfac562db7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/cz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/de.png b/projects/igniteui-angular-performance/src/assets/images/flags/de.png new file mode 100644 index 00000000000..2dbd9b08720 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/de.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/dj.png b/projects/igniteui-angular-performance/src/assets/images/flags/dj.png new file mode 100644 index 00000000000..147636ad0fc Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/dj.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/dk.png b/projects/igniteui-angular-performance/src/assets/images/flags/dk.png new file mode 100644 index 00000000000..65d6b3551f4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/dk.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/dm.png b/projects/igniteui-angular-performance/src/assets/images/flags/dm.png new file mode 100644 index 00000000000..04a92e16a7b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/dm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/do.png b/projects/igniteui-angular-performance/src/assets/images/flags/do.png new file mode 100644 index 00000000000..12e017e0209 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/do.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/dz.png b/projects/igniteui-angular-performance/src/assets/images/flags/dz.png new file mode 100644 index 00000000000..4670a0eb85b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/dz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ec.png b/projects/igniteui-angular-performance/src/assets/images/flags/ec.png new file mode 100644 index 00000000000..9289152375d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ec.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ee.png b/projects/igniteui-angular-performance/src/assets/images/flags/ee.png new file mode 100644 index 00000000000..1067640131a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ee.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/eg.png b/projects/igniteui-angular-performance/src/assets/images/flags/eg.png new file mode 100644 index 00000000000..238d535fb1a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/eg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/eh.png b/projects/igniteui-angular-performance/src/assets/images/flags/eh.png new file mode 100644 index 00000000000..b8cf7ef099e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/eh.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/er.png b/projects/igniteui-angular-performance/src/assets/images/flags/er.png new file mode 100644 index 00000000000..546b1b97089 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/er.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/es.png b/projects/igniteui-angular-performance/src/assets/images/flags/es.png new file mode 100644 index 00000000000..a8ad334cab5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/es.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/et.png b/projects/igniteui-angular-performance/src/assets/images/flags/et.png new file mode 100644 index 00000000000..e807c2114c4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/et.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/fi.png b/projects/igniteui-angular-performance/src/assets/images/flags/fi.png new file mode 100644 index 00000000000..1ad17975ae0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/fi.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/fj.png b/projects/igniteui-angular-performance/src/assets/images/flags/fj.png new file mode 100644 index 00000000000..6bf73714682 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/fj.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/fm.png b/projects/igniteui-angular-performance/src/assets/images/flags/fm.png new file mode 100644 index 00000000000..32d5b832589 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/fm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/fr.png b/projects/igniteui-angular-performance/src/assets/images/flags/fr.png new file mode 100644 index 00000000000..a7684766369 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/fr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ga.png b/projects/igniteui-angular-performance/src/assets/images/flags/ga.png new file mode 100644 index 00000000000..32c68bf6a4d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ga.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gb.png b/projects/igniteui-angular-performance/src/assets/images/flags/gb.png new file mode 100644 index 00000000000..3b6668e203c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gb.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gd.png b/projects/igniteui-angular-performance/src/assets/images/flags/gd.png new file mode 100644 index 00000000000..9a68c48951e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gd.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ge.png b/projects/igniteui-angular-performance/src/assets/images/flags/ge.png new file mode 100644 index 00000000000..108e367076a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ge.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gh.png b/projects/igniteui-angular-performance/src/assets/images/flags/gh.png new file mode 100644 index 00000000000..c2bf9d0bb44 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gh.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gm.png b/projects/igniteui-angular-performance/src/assets/images/flags/gm.png new file mode 100644 index 00000000000..b929a80dec1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gn.png b/projects/igniteui-angular-performance/src/assets/images/flags/gn.png new file mode 100644 index 00000000000..be43cebc611 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gq.png b/projects/igniteui-angular-performance/src/assets/images/flags/gq.png new file mode 100644 index 00000000000..db9415a0220 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gq.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gr.png b/projects/igniteui-angular-performance/src/assets/images/flags/gr.png new file mode 100644 index 00000000000..094441156c8 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gt.png b/projects/igniteui-angular-performance/src/assets/images/flags/gt.png new file mode 100644 index 00000000000..76c5db709c3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gt.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gw.png b/projects/igniteui-angular-performance/src/assets/images/flags/gw.png new file mode 100644 index 00000000000..06dc5103c7a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/gy.png b/projects/igniteui-angular-performance/src/assets/images/flags/gy.png new file mode 100644 index 00000000000..4f9b232372a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/gy.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/hn.png b/projects/igniteui-angular-performance/src/assets/images/flags/hn.png new file mode 100644 index 00000000000..b1a9f5f8dc9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/hn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/hr.png b/projects/igniteui-angular-performance/src/assets/images/flags/hr.png new file mode 100644 index 00000000000..68205134c2a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/hr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ht.png b/projects/igniteui-angular-performance/src/assets/images/flags/ht.png new file mode 100644 index 00000000000..ba76abd2318 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ht.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/hu.png b/projects/igniteui-angular-performance/src/assets/images/flags/hu.png new file mode 100644 index 00000000000..eeee4cad62a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/hu.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/id.png b/projects/igniteui-angular-performance/src/assets/images/flags/id.png new file mode 100644 index 00000000000..e96bc7483cf Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/id.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ie.png b/projects/igniteui-angular-performance/src/assets/images/flags/ie.png new file mode 100644 index 00000000000..52e2ad41098 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ie.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/il.png b/projects/igniteui-angular-performance/src/assets/images/flags/il.png new file mode 100644 index 00000000000..c85c9d34483 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/il.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/in.png b/projects/igniteui-angular-performance/src/assets/images/flags/in.png new file mode 100644 index 00000000000..be5acd354b7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/in.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/iq.png b/projects/igniteui-angular-performance/src/assets/images/flags/iq.png new file mode 100644 index 00000000000..f370c9af585 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/iq.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ir.png b/projects/igniteui-angular-performance/src/assets/images/flags/ir.png new file mode 100644 index 00000000000..7f647fa3b8f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ir.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/is.png b/projects/igniteui-angular-performance/src/assets/images/flags/is.png new file mode 100644 index 00000000000..74c9e034aad Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/is.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/it.png b/projects/igniteui-angular-performance/src/assets/images/flags/it.png new file mode 100644 index 00000000000..d62e50b293e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/it.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/jm.png b/projects/igniteui-angular-performance/src/assets/images/flags/jm.png new file mode 100644 index 00000000000..a960d3da72c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/jm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/jo.png b/projects/igniteui-angular-performance/src/assets/images/flags/jo.png new file mode 100644 index 00000000000..e8b743a3b1a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/jo.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/jp.png b/projects/igniteui-angular-performance/src/assets/images/flags/jp.png new file mode 100644 index 00000000000..fd1ce056a5d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/jp.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ke.png b/projects/igniteui-angular-performance/src/assets/images/flags/ke.png new file mode 100644 index 00000000000..dbf559fd0f6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ke.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kg.png b/projects/igniteui-angular-performance/src/assets/images/flags/kg.png new file mode 100644 index 00000000000..c0fe3e51a99 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kh.png b/projects/igniteui-angular-performance/src/assets/images/flags/kh.png new file mode 100644 index 00000000000..b9340f7653f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kh.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ki.png b/projects/igniteui-angular-performance/src/assets/images/flags/ki.png new file mode 100644 index 00000000000..6b718d1b833 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ki.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/km.png b/projects/igniteui-angular-performance/src/assets/images/flags/km.png new file mode 100644 index 00000000000..dbbd8f4e030 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/km.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kn.png b/projects/igniteui-angular-performance/src/assets/images/flags/kn.png new file mode 100644 index 00000000000..028bef50c43 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kp.png b/projects/igniteui-angular-performance/src/assets/images/flags/kp.png new file mode 100644 index 00000000000..3fee3795061 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kp.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kr.png b/projects/igniteui-angular-performance/src/assets/images/flags/kr.png new file mode 100644 index 00000000000..d0022a2e7e1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ks.png b/projects/igniteui-angular-performance/src/assets/images/flags/ks.png new file mode 100644 index 00000000000..e1824f13786 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ks.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kw.png b/projects/igniteui-angular-performance/src/assets/images/flags/kw.png new file mode 100644 index 00000000000..7f701d5c059 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/kz.png b/projects/igniteui-angular-performance/src/assets/images/flags/kz.png new file mode 100644 index 00000000000..1c23ee16a4e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/kz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/la.png b/projects/igniteui-angular-performance/src/assets/images/flags/la.png new file mode 100644 index 00000000000..975888468a3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/la.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lb.png b/projects/igniteui-angular-performance/src/assets/images/flags/lb.png new file mode 100644 index 00000000000..80b32567d3d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lb.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lc.png b/projects/igniteui-angular-performance/src/assets/images/flags/lc.png new file mode 100644 index 00000000000..dc2de27f479 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lc.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/li.png b/projects/igniteui-angular-performance/src/assets/images/flags/li.png new file mode 100644 index 00000000000..c635a63a243 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/li.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lk.png b/projects/igniteui-angular-performance/src/assets/images/flags/lk.png new file mode 100644 index 00000000000..12e6a000c89 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lk.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lr.png b/projects/igniteui-angular-performance/src/assets/images/flags/lr.png new file mode 100644 index 00000000000..0b998abda1c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ls.png b/projects/igniteui-angular-performance/src/assets/images/flags/ls.png new file mode 100644 index 00000000000..ba9ed2d383c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ls.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lt.png b/projects/igniteui-angular-performance/src/assets/images/flags/lt.png new file mode 100644 index 00000000000..257930e6485 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lt.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lu.png b/projects/igniteui-angular-performance/src/assets/images/flags/lu.png new file mode 100644 index 00000000000..64b5dd6c964 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lu.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/lv.png b/projects/igniteui-angular-performance/src/assets/images/flags/lv.png new file mode 100644 index 00000000000..fb8345e1365 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/lv.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ly.png b/projects/igniteui-angular-performance/src/assets/images/flags/ly.png new file mode 100644 index 00000000000..b90fc936ebc Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ly.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ma.png b/projects/igniteui-angular-performance/src/assets/images/flags/ma.png new file mode 100644 index 00000000000..8e625359b1b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ma.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mc.png b/projects/igniteui-angular-performance/src/assets/images/flags/mc.png new file mode 100644 index 00000000000..194a09e6554 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mc.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/md.png b/projects/igniteui-angular-performance/src/assets/images/flags/md.png new file mode 100644 index 00000000000..0071401eb6b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/md.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/me.png b/projects/igniteui-angular-performance/src/assets/images/flags/me.png new file mode 100644 index 00000000000..0952236af98 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/me.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mg.png b/projects/igniteui-angular-performance/src/assets/images/flags/mg.png new file mode 100644 index 00000000000..4b4b065529c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mh.png b/projects/igniteui-angular-performance/src/assets/images/flags/mh.png new file mode 100644 index 00000000000..3e7a4b5c8d9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mh.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mk.png b/projects/igniteui-angular-performance/src/assets/images/flags/mk.png new file mode 100644 index 00000000000..4cb42a74f3d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mk.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ml.png b/projects/igniteui-angular-performance/src/assets/images/flags/ml.png new file mode 100644 index 00000000000..182848aba6f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ml.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mm.png b/projects/igniteui-angular-performance/src/assets/images/flags/mm.png new file mode 100644 index 00000000000..f486f8538bd Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mn.png b/projects/igniteui-angular-performance/src/assets/images/flags/mn.png new file mode 100644 index 00000000000..dd0bb39962e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mr.png b/projects/igniteui-angular-performance/src/assets/images/flags/mr.png new file mode 100644 index 00000000000..caf03659f0b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mt.png b/projects/igniteui-angular-performance/src/assets/images/flags/mt.png new file mode 100644 index 00000000000..b4d686eae2a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mt.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mu.png b/projects/igniteui-angular-performance/src/assets/images/flags/mu.png new file mode 100644 index 00000000000..03f524f9319 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mu.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mv.png b/projects/igniteui-angular-performance/src/assets/images/flags/mv.png new file mode 100644 index 00000000000..ab4aae4c8cb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mv.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mw.png b/projects/igniteui-angular-performance/src/assets/images/flags/mw.png new file mode 100644 index 00000000000..bf38ff9c73a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mx.png b/projects/igniteui-angular-performance/src/assets/images/flags/mx.png new file mode 100644 index 00000000000..783148b3e9a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mx.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/my.png b/projects/igniteui-angular-performance/src/assets/images/flags/my.png new file mode 100644 index 00000000000..5a9ae417fd6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/my.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/mz.png b/projects/igniteui-angular-performance/src/assets/images/flags/mz.png new file mode 100644 index 00000000000..0e4c983ce87 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/mz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/na.png b/projects/igniteui-angular-performance/src/assets/images/flags/na.png new file mode 100644 index 00000000000..620937bbb58 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/na.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ne.png b/projects/igniteui-angular-performance/src/assets/images/flags/ne.png new file mode 100644 index 00000000000..0762231e2fe Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ne.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ng.png b/projects/igniteui-angular-performance/src/assets/images/flags/ng.png new file mode 100644 index 00000000000..ba56e9e06bc Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ng.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ni.png b/projects/igniteui-angular-performance/src/assets/images/flags/ni.png new file mode 100644 index 00000000000..9b6dbf54ec2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ni.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/nl.png b/projects/igniteui-angular-performance/src/assets/images/flags/nl.png new file mode 100644 index 00000000000..aeb72b664a7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/nl.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/no.png b/projects/igniteui-angular-performance/src/assets/images/flags/no.png new file mode 100644 index 00000000000..e14f90f33d8 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/no.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/np.png b/projects/igniteui-angular-performance/src/assets/images/flags/np.png new file mode 100644 index 00000000000..fd0cd6e626e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/np.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/nr.png b/projects/igniteui-angular-performance/src/assets/images/flags/nr.png new file mode 100644 index 00000000000..721408622d3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/nr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/nu.png b/projects/igniteui-angular-performance/src/assets/images/flags/nu.png new file mode 100644 index 00000000000..c7d8797c0f5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/nu.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/nz.png b/projects/igniteui-angular-performance/src/assets/images/flags/nz.png new file mode 100644 index 00000000000..1f25035b018 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/nz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/om.png b/projects/igniteui-angular-performance/src/assets/images/flags/om.png new file mode 100644 index 00000000000..05c99d92a3b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/om.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pa.png b/projects/igniteui-angular-performance/src/assets/images/flags/pa.png new file mode 100644 index 00000000000..96d4c8ef83f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pa.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pe.png b/projects/igniteui-angular-performance/src/assets/images/flags/pe.png new file mode 100644 index 00000000000..e4d623e8a14 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pe.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pg.png b/projects/igniteui-angular-performance/src/assets/images/flags/pg.png new file mode 100644 index 00000000000..5011a16753a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ph.png b/projects/igniteui-angular-performance/src/assets/images/flags/ph.png new file mode 100644 index 00000000000..41ddff21ab4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ph.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pk.png b/projects/igniteui-angular-performance/src/assets/images/flags/pk.png new file mode 100644 index 00000000000..76020feb964 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pk.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pl.png b/projects/igniteui-angular-performance/src/assets/images/flags/pl.png new file mode 100644 index 00000000000..d4db002f655 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pl.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pt.png b/projects/igniteui-angular-performance/src/assets/images/flags/pt.png new file mode 100644 index 00000000000..e0619bc9f66 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pt.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/pw.png b/projects/igniteui-angular-performance/src/assets/images/flags/pw.png new file mode 100644 index 00000000000..be101ba9796 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/pw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/py.png b/projects/igniteui-angular-performance/src/assets/images/flags/py.png new file mode 100644 index 00000000000..b2e2d5c5dd1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/py.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/qa.png b/projects/igniteui-angular-performance/src/assets/images/flags/qa.png new file mode 100644 index 00000000000..0e615feb7b8 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/qa.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ro.png b/projects/igniteui-angular-performance/src/assets/images/flags/ro.png new file mode 100644 index 00000000000..57f34f3559f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ro.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/rs.png b/projects/igniteui-angular-performance/src/assets/images/flags/rs.png new file mode 100644 index 00000000000..7273ea71550 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/rs.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ru.png b/projects/igniteui-angular-performance/src/assets/images/flags/ru.png new file mode 100644 index 00000000000..79d2101ee42 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ru.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/rw.png b/projects/igniteui-angular-performance/src/assets/images/flags/rw.png new file mode 100644 index 00000000000..5b859eafaac Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/rw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sa.png b/projects/igniteui-angular-performance/src/assets/images/flags/sa.png new file mode 100644 index 00000000000..0df5b9265f7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sa.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sb.png b/projects/igniteui-angular-performance/src/assets/images/flags/sb.png new file mode 100644 index 00000000000..832f7cee6fd Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sb.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sc.png b/projects/igniteui-angular-performance/src/assets/images/flags/sc.png new file mode 100644 index 00000000000..a497589e61f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sc.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sd.png b/projects/igniteui-angular-performance/src/assets/images/flags/sd.png new file mode 100644 index 00000000000..386f3e87b78 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sd.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/se.png b/projects/igniteui-angular-performance/src/assets/images/flags/se.png new file mode 100644 index 00000000000..9e125783037 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/se.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sg.png b/projects/igniteui-angular-performance/src/assets/images/flags/sg.png new file mode 100644 index 00000000000..7e898146a96 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/si.png b/projects/igniteui-angular-performance/src/assets/images/flags/si.png new file mode 100644 index 00000000000..3692b66f1f6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/si.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sk.png b/projects/igniteui-angular-performance/src/assets/images/flags/sk.png new file mode 100644 index 00000000000..8a73d6495bf Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sk.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sl.png b/projects/igniteui-angular-performance/src/assets/images/flags/sl.png new file mode 100644 index 00000000000..b68450ddaea Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sl.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sm.png b/projects/igniteui-angular-performance/src/assets/images/flags/sm.png new file mode 100644 index 00000000000..43f1965025d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sn.png b/projects/igniteui-angular-performance/src/assets/images/flags/sn.png new file mode 100644 index 00000000000..fcd02444d9b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/so.png b/projects/igniteui-angular-performance/src/assets/images/flags/so.png new file mode 100644 index 00000000000..819490b9d77 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/so.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sr.png b/projects/igniteui-angular-performance/src/assets/images/flags/sr.png new file mode 100644 index 00000000000..9ac43378880 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/st.png b/projects/igniteui-angular-performance/src/assets/images/flags/st.png new file mode 100644 index 00000000000..b4edccbf846 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/st.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sv.png b/projects/igniteui-angular-performance/src/assets/images/flags/sv.png new file mode 100644 index 00000000000..7fe790cb21b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sv.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sy.png b/projects/igniteui-angular-performance/src/assets/images/flags/sy.png new file mode 100644 index 00000000000..c78f9d5ff7a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sy.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/sz.png b/projects/igniteui-angular-performance/src/assets/images/flags/sz.png new file mode 100644 index 00000000000..6550515e4aa Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/sz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/td.png b/projects/igniteui-angular-performance/src/assets/images/flags/td.png new file mode 100644 index 00000000000..c0c76da34ea Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/td.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tg.png b/projects/igniteui-angular-performance/src/assets/images/flags/tg.png new file mode 100644 index 00000000000..31f1a00ab7c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tg.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/th.png b/projects/igniteui-angular-performance/src/assets/images/flags/th.png new file mode 100644 index 00000000000..5cf74c908b9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/th.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tj.png b/projects/igniteui-angular-performance/src/assets/images/flags/tj.png new file mode 100644 index 00000000000..1d83e4c7a25 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tj.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tl.png b/projects/igniteui-angular-performance/src/assets/images/flags/tl.png new file mode 100644 index 00000000000..c646f33f5ce Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tl.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tm.png b/projects/igniteui-angular-performance/src/assets/images/flags/tm.png new file mode 100644 index 00000000000..5dd8fb996e4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tn.png b/projects/igniteui-angular-performance/src/assets/images/flags/tn.png new file mode 100644 index 00000000000..09ce2352deb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/to.png b/projects/igniteui-angular-performance/src/assets/images/flags/to.png new file mode 100644 index 00000000000..34b5aa1491f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/to.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tr.png b/projects/igniteui-angular-performance/src/assets/images/flags/tr.png new file mode 100644 index 00000000000..a67740a1450 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tr.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tt.png b/projects/igniteui-angular-performance/src/assets/images/flags/tt.png new file mode 100644 index 00000000000..61ee0b07a5e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tt.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tv.png b/projects/igniteui-angular-performance/src/assets/images/flags/tv.png new file mode 100644 index 00000000000..16f8616fabb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tv.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tw.png b/projects/igniteui-angular-performance/src/assets/images/flags/tw.png new file mode 100644 index 00000000000..88cc0dfc6d7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/tz.png b/projects/igniteui-angular-performance/src/assets/images/flags/tz.png new file mode 100644 index 00000000000..94ca541a1a9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/tz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ua.png b/projects/igniteui-angular-performance/src/assets/images/flags/ua.png new file mode 100644 index 00000000000..80301f46100 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ua.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ug.png b/projects/igniteui-angular-performance/src/assets/images/flags/ug.png new file mode 100644 index 00000000000..fec8a452195 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ug.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/us.png b/projects/igniteui-angular-performance/src/assets/images/flags/us.png new file mode 100644 index 00000000000..07ddf4e718c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/us.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/uy.png b/projects/igniteui-angular-performance/src/assets/images/flags/uy.png new file mode 100644 index 00000000000..d49a4f1d21e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/uy.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/uz.png b/projects/igniteui-angular-performance/src/assets/images/flags/uz.png new file mode 100644 index 00000000000..37688d883a7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/uz.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/va.png b/projects/igniteui-angular-performance/src/assets/images/flags/va.png new file mode 100644 index 00000000000..9938009ece1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/va.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/vc.png b/projects/igniteui-angular-performance/src/assets/images/flags/vc.png new file mode 100644 index 00000000000..55018b1437b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/vc.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ve.png b/projects/igniteui-angular-performance/src/assets/images/flags/ve.png new file mode 100644 index 00000000000..4c8b135ab72 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ve.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/vn.png b/projects/igniteui-angular-performance/src/assets/images/flags/vn.png new file mode 100644 index 00000000000..e9edf37ff74 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/vn.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/vu.png b/projects/igniteui-angular-performance/src/assets/images/flags/vu.png new file mode 100644 index 00000000000..b2214473b5e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/vu.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ws.png b/projects/igniteui-angular-performance/src/assets/images/flags/ws.png new file mode 100644 index 00000000000..b44c452215f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ws.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/ye.png b/projects/igniteui-angular-performance/src/assets/images/flags/ye.png new file mode 100644 index 00000000000..61a0a5634f9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/ye.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/za.png b/projects/igniteui-angular-performance/src/assets/images/flags/za.png new file mode 100644 index 00000000000..b6ac53e44d0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/za.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/zm.png b/projects/igniteui-angular-performance/src/assets/images/flags/zm.png new file mode 100644 index 00000000000..a8b574959d2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/zm.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/flags/zw.png b/projects/igniteui-angular-performance/src/assets/images/flags/zw.png new file mode 100644 index 00000000000..004cd2a6e64 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/flags/zw.png differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/0.jpg b/projects/igniteui-angular-performance/src/assets/images/men/0.jpg new file mode 100644 index 00000000000..e29aaafb904 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/0.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/1.jpg b/projects/igniteui-angular-performance/src/assets/images/men/1.jpg new file mode 100644 index 00000000000..8004cc41119 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/1.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/10.jpg b/projects/igniteui-angular-performance/src/assets/images/men/10.jpg new file mode 100644 index 00000000000..8a9edd8d12b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/10.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/100.jpg b/projects/igniteui-angular-performance/src/assets/images/men/100.jpg new file mode 100644 index 00000000000..26f9951ab60 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/100.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/11.jpg b/projects/igniteui-angular-performance/src/assets/images/men/11.jpg new file mode 100644 index 00000000000..abddef0e876 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/11.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/12.jpg b/projects/igniteui-angular-performance/src/assets/images/men/12.jpg new file mode 100644 index 00000000000..b83a77397c4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/12.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/13.jpg b/projects/igniteui-angular-performance/src/assets/images/men/13.jpg new file mode 100644 index 00000000000..43269e04549 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/13.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/14.jpg b/projects/igniteui-angular-performance/src/assets/images/men/14.jpg new file mode 100644 index 00000000000..606b1a6f793 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/14.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/15.jpg b/projects/igniteui-angular-performance/src/assets/images/men/15.jpg new file mode 100644 index 00000000000..2818c5dda06 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/15.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/16.jpg b/projects/igniteui-angular-performance/src/assets/images/men/16.jpg new file mode 100644 index 00000000000..fc6bd14969f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/16.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/17.jpg b/projects/igniteui-angular-performance/src/assets/images/men/17.jpg new file mode 100644 index 00000000000..cfc6f311c55 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/17.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/18.jpg b/projects/igniteui-angular-performance/src/assets/images/men/18.jpg new file mode 100644 index 00000000000..1de43e9256f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/18.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/19.jpg b/projects/igniteui-angular-performance/src/assets/images/men/19.jpg new file mode 100644 index 00000000000..53023f84e1a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/19.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/2.jpg b/projects/igniteui-angular-performance/src/assets/images/men/2.jpg new file mode 100644 index 00000000000..7c2b4d63463 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/2.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/20.jpg b/projects/igniteui-angular-performance/src/assets/images/men/20.jpg new file mode 100644 index 00000000000..3e5f9457e47 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/20.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/21.jpg b/projects/igniteui-angular-performance/src/assets/images/men/21.jpg new file mode 100644 index 00000000000..cfba1fe4de4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/21.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/22.jpg b/projects/igniteui-angular-performance/src/assets/images/men/22.jpg new file mode 100644 index 00000000000..dcbaf260cc0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/22.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/23.jpg b/projects/igniteui-angular-performance/src/assets/images/men/23.jpg new file mode 100644 index 00000000000..3a2b514c33b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/23.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/24.jpg b/projects/igniteui-angular-performance/src/assets/images/men/24.jpg new file mode 100644 index 00000000000..c76f3f51263 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/24.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/25.jpg b/projects/igniteui-angular-performance/src/assets/images/men/25.jpg new file mode 100644 index 00000000000..f4fb14873ab Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/25.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/26.jpg b/projects/igniteui-angular-performance/src/assets/images/men/26.jpg new file mode 100644 index 00000000000..9dc05580e0c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/26.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/27.jpg b/projects/igniteui-angular-performance/src/assets/images/men/27.jpg new file mode 100644 index 00000000000..f3758fcb82d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/27.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/28.jpg b/projects/igniteui-angular-performance/src/assets/images/men/28.jpg new file mode 100644 index 00000000000..dfc34c2f929 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/28.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/29.jpg b/projects/igniteui-angular-performance/src/assets/images/men/29.jpg new file mode 100644 index 00000000000..6c3e004c168 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/29.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/3.jpg b/projects/igniteui-angular-performance/src/assets/images/men/3.jpg new file mode 100644 index 00000000000..4fc0e104c65 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/3.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/30.jpg b/projects/igniteui-angular-performance/src/assets/images/men/30.jpg new file mode 100644 index 00000000000..d04b7a26692 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/30.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/31.jpg b/projects/igniteui-angular-performance/src/assets/images/men/31.jpg new file mode 100644 index 00000000000..d5d73910084 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/31.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/32.jpg b/projects/igniteui-angular-performance/src/assets/images/men/32.jpg new file mode 100644 index 00000000000..279b70def3d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/32.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/33.jpg b/projects/igniteui-angular-performance/src/assets/images/men/33.jpg new file mode 100644 index 00000000000..07652946759 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/33.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/34.jpg b/projects/igniteui-angular-performance/src/assets/images/men/34.jpg new file mode 100644 index 00000000000..138fc3946d9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/34.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/35.jpg b/projects/igniteui-angular-performance/src/assets/images/men/35.jpg new file mode 100644 index 00000000000..ad943c9dec5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/35.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/36.jpg b/projects/igniteui-angular-performance/src/assets/images/men/36.jpg new file mode 100644 index 00000000000..62ea75fb8f0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/36.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/37.jpg b/projects/igniteui-angular-performance/src/assets/images/men/37.jpg new file mode 100644 index 00000000000..41dca98aead Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/37.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/38.jpg b/projects/igniteui-angular-performance/src/assets/images/men/38.jpg new file mode 100644 index 00000000000..ed97c9d0b22 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/38.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/39.jpg b/projects/igniteui-angular-performance/src/assets/images/men/39.jpg new file mode 100644 index 00000000000..26f9951ab60 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/39.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/4.jpg b/projects/igniteui-angular-performance/src/assets/images/men/4.jpg new file mode 100644 index 00000000000..68b8bb4416c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/4.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/40.jpg b/projects/igniteui-angular-performance/src/assets/images/men/40.jpg new file mode 100644 index 00000000000..c28fc2c7460 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/40.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/41.jpg b/projects/igniteui-angular-performance/src/assets/images/men/41.jpg new file mode 100644 index 00000000000..1daa4b8ae36 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/41.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/42.jpg b/projects/igniteui-angular-performance/src/assets/images/men/42.jpg new file mode 100644 index 00000000000..c0ec114caa2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/42.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/43.jpg b/projects/igniteui-angular-performance/src/assets/images/men/43.jpg new file mode 100644 index 00000000000..a6a39bfc88a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/43.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/44.jpg b/projects/igniteui-angular-performance/src/assets/images/men/44.jpg new file mode 100644 index 00000000000..f24b739a201 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/44.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/45.jpg b/projects/igniteui-angular-performance/src/assets/images/men/45.jpg new file mode 100644 index 00000000000..6d1e41cc9ee Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/45.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/46.jpg b/projects/igniteui-angular-performance/src/assets/images/men/46.jpg new file mode 100644 index 00000000000..5609a0edfda Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/46.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/47.jpg b/projects/igniteui-angular-performance/src/assets/images/men/47.jpg new file mode 100644 index 00000000000..6888bdd2c37 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/47.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/48.jpg b/projects/igniteui-angular-performance/src/assets/images/men/48.jpg new file mode 100644 index 00000000000..89f03a97172 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/48.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/49.jpg b/projects/igniteui-angular-performance/src/assets/images/men/49.jpg new file mode 100644 index 00000000000..dcf2608a885 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/49.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/5.jpg b/projects/igniteui-angular-performance/src/assets/images/men/5.jpg new file mode 100644 index 00000000000..4d47bd1afc6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/5.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/50.jpg b/projects/igniteui-angular-performance/src/assets/images/men/50.jpg new file mode 100644 index 00000000000..822813ec4b2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/50.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/51.jpg b/projects/igniteui-angular-performance/src/assets/images/men/51.jpg new file mode 100644 index 00000000000..b4101aecb6a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/51.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/52.jpg b/projects/igniteui-angular-performance/src/assets/images/men/52.jpg new file mode 100644 index 00000000000..1de43e9256f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/52.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/53.jpg b/projects/igniteui-angular-performance/src/assets/images/men/53.jpg new file mode 100644 index 00000000000..8968d3cf227 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/53.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/54.jpg b/projects/igniteui-angular-performance/src/assets/images/men/54.jpg new file mode 100644 index 00000000000..3e229e6a7e4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/54.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/55.jpg b/projects/igniteui-angular-performance/src/assets/images/men/55.jpg new file mode 100644 index 00000000000..02a105559b6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/55.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/56.jpg b/projects/igniteui-angular-performance/src/assets/images/men/56.jpg new file mode 100644 index 00000000000..fc9f3fa0743 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/56.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/57 (1).jpg b/projects/igniteui-angular-performance/src/assets/images/men/57 (1).jpg new file mode 100644 index 00000000000..c45665be739 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/57 (1).jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/57.jpg b/projects/igniteui-angular-performance/src/assets/images/men/57.jpg new file mode 100644 index 00000000000..ea4a22e51c3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/57.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/58.jpg b/projects/igniteui-angular-performance/src/assets/images/men/58.jpg new file mode 100644 index 00000000000..84791099891 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/58.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/59.jpg b/projects/igniteui-angular-performance/src/assets/images/men/59.jpg new file mode 100644 index 00000000000..b7b9a3905f3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/59.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/6.jpg b/projects/igniteui-angular-performance/src/assets/images/men/6.jpg new file mode 100644 index 00000000000..1258f0a9df7 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/6.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/60.jpg b/projects/igniteui-angular-performance/src/assets/images/men/60.jpg new file mode 100644 index 00000000000..52c1920c649 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/60.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/61.jpg b/projects/igniteui-angular-performance/src/assets/images/men/61.jpg new file mode 100644 index 00000000000..2481114b79c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/61.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/62.jpg b/projects/igniteui-angular-performance/src/assets/images/men/62.jpg new file mode 100644 index 00000000000..124dbe71c91 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/62.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/63.jpg b/projects/igniteui-angular-performance/src/assets/images/men/63.jpg new file mode 100644 index 00000000000..fa6d4819358 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/63.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/64.jpg b/projects/igniteui-angular-performance/src/assets/images/men/64.jpg new file mode 100644 index 00000000000..6cbce1af0e9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/64.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/65.jpg b/projects/igniteui-angular-performance/src/assets/images/men/65.jpg new file mode 100644 index 00000000000..c004920002d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/65.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/66.jpg b/projects/igniteui-angular-performance/src/assets/images/men/66.jpg new file mode 100644 index 00000000000..437143fb34a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/66.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/67.jpg b/projects/igniteui-angular-performance/src/assets/images/men/67.jpg new file mode 100644 index 00000000000..68b8bb4416c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/67.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/68.jpg b/projects/igniteui-angular-performance/src/assets/images/men/68.jpg new file mode 100644 index 00000000000..b318dd4b4cf Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/68.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/69.jpg b/projects/igniteui-angular-performance/src/assets/images/men/69.jpg new file mode 100644 index 00000000000..d39345ff86c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/69.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/7.jpg b/projects/igniteui-angular-performance/src/assets/images/men/7.jpg new file mode 100644 index 00000000000..1171cfb514a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/7.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/70.jpg b/projects/igniteui-angular-performance/src/assets/images/men/70.jpg new file mode 100644 index 00000000000..1e4b6773f54 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/70.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/71.jpg b/projects/igniteui-angular-performance/src/assets/images/men/71.jpg new file mode 100644 index 00000000000..7007fabea9c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/71.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/72.jpg b/projects/igniteui-angular-performance/src/assets/images/men/72.jpg new file mode 100644 index 00000000000..fb926529a5d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/72.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/73.jpg b/projects/igniteui-angular-performance/src/assets/images/men/73.jpg new file mode 100644 index 00000000000..b6a30e278b9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/73.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/74.jpg b/projects/igniteui-angular-performance/src/assets/images/men/74.jpg new file mode 100644 index 00000000000..abacfd1a2b5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/74.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/75.jpg b/projects/igniteui-angular-performance/src/assets/images/men/75.jpg new file mode 100644 index 00000000000..04cb7975376 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/75.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/76.jpg b/projects/igniteui-angular-performance/src/assets/images/men/76.jpg new file mode 100644 index 00000000000..681a7f1009a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/76.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/77.jpg b/projects/igniteui-angular-performance/src/assets/images/men/77.jpg new file mode 100644 index 00000000000..a243818b38c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/77.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/78.jpg b/projects/igniteui-angular-performance/src/assets/images/men/78.jpg new file mode 100644 index 00000000000..6438e80b9b5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/78.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/79.jpg b/projects/igniteui-angular-performance/src/assets/images/men/79.jpg new file mode 100644 index 00000000000..cf30fdf3679 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/79.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/8.jpg b/projects/igniteui-angular-performance/src/assets/images/men/8.jpg new file mode 100644 index 00000000000..33f2cdfcb82 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/8.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/80.jpg b/projects/igniteui-angular-performance/src/assets/images/men/80.jpg new file mode 100644 index 00000000000..b2d9bcee15d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/80.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/81.jpg b/projects/igniteui-angular-performance/src/assets/images/men/81.jpg new file mode 100644 index 00000000000..0b322677517 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/81.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/82.jpg b/projects/igniteui-angular-performance/src/assets/images/men/82.jpg new file mode 100644 index 00000000000..f32459ae186 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/82.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/83.jpg b/projects/igniteui-angular-performance/src/assets/images/men/83.jpg new file mode 100644 index 00000000000..dc3ae1f9bd3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/83.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/84.jpg b/projects/igniteui-angular-performance/src/assets/images/men/84.jpg new file mode 100644 index 00000000000..f3758fcb82d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/84.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/85.jpg b/projects/igniteui-angular-performance/src/assets/images/men/85.jpg new file mode 100644 index 00000000000..43ece19071e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/85.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/86.jpg b/projects/igniteui-angular-performance/src/assets/images/men/86.jpg new file mode 100644 index 00000000000..9358491105b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/86.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/87.jpg b/projects/igniteui-angular-performance/src/assets/images/men/87.jpg new file mode 100644 index 00000000000..2a4032424a8 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/87.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/88.jpg b/projects/igniteui-angular-performance/src/assets/images/men/88.jpg new file mode 100644 index 00000000000..02fa1cac663 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/88.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/89.jpg b/projects/igniteui-angular-performance/src/assets/images/men/89.jpg new file mode 100644 index 00000000000..57962bde02e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/89.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/9.jpg b/projects/igniteui-angular-performance/src/assets/images/men/9.jpg new file mode 100644 index 00000000000..be4d0110e81 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/9.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/90.jpg b/projects/igniteui-angular-performance/src/assets/images/men/90.jpg new file mode 100644 index 00000000000..00720c2f6ee Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/90.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/91.jpg b/projects/igniteui-angular-performance/src/assets/images/men/91.jpg new file mode 100644 index 00000000000..8c3ac42c481 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/91.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/92.jpg b/projects/igniteui-angular-performance/src/assets/images/men/92.jpg new file mode 100644 index 00000000000..b96231b5619 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/92.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/93.jpg b/projects/igniteui-angular-performance/src/assets/images/men/93.jpg new file mode 100644 index 00000000000..3a2b514c33b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/93.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/94.jpg b/projects/igniteui-angular-performance/src/assets/images/men/94.jpg new file mode 100644 index 00000000000..57b6c6b6367 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/94.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/95.jpg b/projects/igniteui-angular-performance/src/assets/images/men/95.jpg new file mode 100644 index 00000000000..138fc3946d9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/95.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/96.jpg b/projects/igniteui-angular-performance/src/assets/images/men/96.jpg new file mode 100644 index 00000000000..ad943c9dec5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/96.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/97.jpg b/projects/igniteui-angular-performance/src/assets/images/men/97.jpg new file mode 100644 index 00000000000..62ea75fb8f0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/97.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/98.jpg b/projects/igniteui-angular-performance/src/assets/images/men/98.jpg new file mode 100644 index 00000000000..41dca98aead Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/98.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/men/99.jpg b/projects/igniteui-angular-performance/src/assets/images/men/99.jpg new file mode 100644 index 00000000000..ed97c9d0b22 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/men/99.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/0.jpg b/projects/igniteui-angular-performance/src/assets/images/women/0.jpg new file mode 100644 index 00000000000..c6009f9eb95 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/0.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/1.jpg b/projects/igniteui-angular-performance/src/assets/images/women/1.jpg new file mode 100644 index 00000000000..d426fa2bfee Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/1.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/10.jpg b/projects/igniteui-angular-performance/src/assets/images/women/10.jpg new file mode 100644 index 00000000000..c7322386305 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/10.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/100.jpg b/projects/igniteui-angular-performance/src/assets/images/women/100.jpg new file mode 100644 index 00000000000..188758a49d6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/100.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/11.jpg b/projects/igniteui-angular-performance/src/assets/images/women/11.jpg new file mode 100644 index 00000000000..1027c59082e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/11.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/12.jpg b/projects/igniteui-angular-performance/src/assets/images/women/12.jpg new file mode 100644 index 00000000000..ab53c42d02c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/12.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/13.jpg b/projects/igniteui-angular-performance/src/assets/images/women/13.jpg new file mode 100644 index 00000000000..9ac7687af6d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/13.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/14.jpg b/projects/igniteui-angular-performance/src/assets/images/women/14.jpg new file mode 100644 index 00000000000..22ab075068e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/14.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/15.jpg b/projects/igniteui-angular-performance/src/assets/images/women/15.jpg new file mode 100644 index 00000000000..2818c5dda06 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/15.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/16.jpg b/projects/igniteui-angular-performance/src/assets/images/women/16.jpg new file mode 100644 index 00000000000..208d90246d2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/16.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/17.jpg b/projects/igniteui-angular-performance/src/assets/images/women/17.jpg new file mode 100644 index 00000000000..97e4885edeb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/17.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/18.jpg b/projects/igniteui-angular-performance/src/assets/images/women/18.jpg new file mode 100644 index 00000000000..c21271a2042 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/18.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/19.jpg b/projects/igniteui-angular-performance/src/assets/images/women/19.jpg new file mode 100644 index 00000000000..c2e4428651e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/19.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/2.jpg b/projects/igniteui-angular-performance/src/assets/images/women/2.jpg new file mode 100644 index 00000000000..fdf962529f3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/2.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/20.jpg b/projects/igniteui-angular-performance/src/assets/images/women/20.jpg new file mode 100644 index 00000000000..5e359ec31c5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/20.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/21.jpg b/projects/igniteui-angular-performance/src/assets/images/women/21.jpg new file mode 100644 index 00000000000..d4ec655fbf2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/21.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/22.jpg b/projects/igniteui-angular-performance/src/assets/images/women/22.jpg new file mode 100644 index 00000000000..86ee471d2bb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/22.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/23.jpg b/projects/igniteui-angular-performance/src/assets/images/women/23.jpg new file mode 100644 index 00000000000..3e1fe98e6a3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/23.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/24.jpg b/projects/igniteui-angular-performance/src/assets/images/women/24.jpg new file mode 100644 index 00000000000..7839f26a7c3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/24.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/25.jpg b/projects/igniteui-angular-performance/src/assets/images/women/25.jpg new file mode 100644 index 00000000000..f88c98b6c6c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/25.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/26.jpg b/projects/igniteui-angular-performance/src/assets/images/women/26.jpg new file mode 100644 index 00000000000..96e1934455d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/26.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/27.jpg b/projects/igniteui-angular-performance/src/assets/images/women/27.jpg new file mode 100644 index 00000000000..4c46653c624 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/27.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/28.jpg b/projects/igniteui-angular-performance/src/assets/images/women/28.jpg new file mode 100644 index 00000000000..c6c722e4b93 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/28.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/29.jpg b/projects/igniteui-angular-performance/src/assets/images/women/29.jpg new file mode 100644 index 00000000000..d916ac9f17c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/29.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/3.jpg b/projects/igniteui-angular-performance/src/assets/images/women/3.jpg new file mode 100644 index 00000000000..c0e9afee2c0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/3.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/30.jpg b/projects/igniteui-angular-performance/src/assets/images/women/30.jpg new file mode 100644 index 00000000000..ad6ad9ff1da Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/30.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/31.jpg b/projects/igniteui-angular-performance/src/assets/images/women/31.jpg new file mode 100644 index 00000000000..fcd6723d4db Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/31.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/32.jpg b/projects/igniteui-angular-performance/src/assets/images/women/32.jpg new file mode 100644 index 00000000000..a6a2e5f839a Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/32.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/33.jpg b/projects/igniteui-angular-performance/src/assets/images/women/33.jpg new file mode 100644 index 00000000000..f2659bd7dac Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/33.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/34.jpg b/projects/igniteui-angular-performance/src/assets/images/women/34.jpg new file mode 100644 index 00000000000..49a47135253 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/34.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/35.jpg b/projects/igniteui-angular-performance/src/assets/images/women/35.jpg new file mode 100644 index 00000000000..eb92fd80266 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/35.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/36.jpg b/projects/igniteui-angular-performance/src/assets/images/women/36.jpg new file mode 100644 index 00000000000..f0edc423739 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/36.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/37.jpg b/projects/igniteui-angular-performance/src/assets/images/women/37.jpg new file mode 100644 index 00000000000..13f863a640c Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/37.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/38.jpg b/projects/igniteui-angular-performance/src/assets/images/women/38.jpg new file mode 100644 index 00000000000..3e89648c694 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/38.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/39.jpg b/projects/igniteui-angular-performance/src/assets/images/women/39.jpg new file mode 100644 index 00000000000..7c0d29bcbb8 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/39.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/4.jpg b/projects/igniteui-angular-performance/src/assets/images/women/4.jpg new file mode 100644 index 00000000000..eb41bf6e4b2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/4.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/40.jpg b/projects/igniteui-angular-performance/src/assets/images/women/40.jpg new file mode 100644 index 00000000000..8d21d688b3b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/40.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/41.jpg b/projects/igniteui-angular-performance/src/assets/images/women/41.jpg new file mode 100644 index 00000000000..a359e5454fa Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/41.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/42.jpg b/projects/igniteui-angular-performance/src/assets/images/women/42.jpg new file mode 100644 index 00000000000..0abe17d4404 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/42.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/43.jpg b/projects/igniteui-angular-performance/src/assets/images/women/43.jpg new file mode 100644 index 00000000000..3aeb58e34a2 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/43.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/44.jpg b/projects/igniteui-angular-performance/src/assets/images/women/44.jpg new file mode 100644 index 00000000000..a63f8ce5798 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/44.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/45.jpg b/projects/igniteui-angular-performance/src/assets/images/women/45.jpg new file mode 100644 index 00000000000..9bef78e23ef Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/45.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/46.jpg b/projects/igniteui-angular-performance/src/assets/images/women/46.jpg new file mode 100644 index 00000000000..f77567141ca Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/46.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/47.jpg b/projects/igniteui-angular-performance/src/assets/images/women/47.jpg new file mode 100644 index 00000000000..7839f26a7c3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/47.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/48.jpg b/projects/igniteui-angular-performance/src/assets/images/women/48.jpg new file mode 100644 index 00000000000..502e684746b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/48.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/49.jpg b/projects/igniteui-angular-performance/src/assets/images/women/49.jpg new file mode 100644 index 00000000000..ecead1fae72 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/49.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/5.jpg b/projects/igniteui-angular-performance/src/assets/images/women/5.jpg new file mode 100644 index 00000000000..0d810bd3f94 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/5.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/50.jpg b/projects/igniteui-angular-performance/src/assets/images/women/50.jpg new file mode 100644 index 00000000000..98fa7b11b23 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/50.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/51.jpg b/projects/igniteui-angular-performance/src/assets/images/women/51.jpg new file mode 100644 index 00000000000..502e684746b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/51.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/52.jpg b/projects/igniteui-angular-performance/src/assets/images/women/52.jpg new file mode 100644 index 00000000000..6efac62c4c1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/52.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/53.jpg b/projects/igniteui-angular-performance/src/assets/images/women/53.jpg new file mode 100644 index 00000000000..085c6c0fdf1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/53.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/54.jpg b/projects/igniteui-angular-performance/src/assets/images/women/54.jpg new file mode 100644 index 00000000000..4c574932cd5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/54.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/55.jpg b/projects/igniteui-angular-performance/src/assets/images/women/55.jpg new file mode 100644 index 00000000000..9e24b8ef0f6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/55.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/56.jpg b/projects/igniteui-angular-performance/src/assets/images/women/56.jpg new file mode 100644 index 00000000000..f2659bd7dac Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/56.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/57.jpg b/projects/igniteui-angular-performance/src/assets/images/women/57.jpg new file mode 100644 index 00000000000..ea4a22e51c3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/57.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/58.jpg b/projects/igniteui-angular-performance/src/assets/images/women/58.jpg new file mode 100644 index 00000000000..f39c0d7c130 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/58.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/59.jpg b/projects/igniteui-angular-performance/src/assets/images/women/59.jpg new file mode 100644 index 00000000000..b968578921f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/59.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/6.jpg b/projects/igniteui-angular-performance/src/assets/images/women/6.jpg new file mode 100644 index 00000000000..e6e223faca8 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/6.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/60.jpg b/projects/igniteui-angular-performance/src/assets/images/women/60.jpg new file mode 100644 index 00000000000..4e88252a3af Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/60.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/61.jpg b/projects/igniteui-angular-performance/src/assets/images/women/61.jpg new file mode 100644 index 00000000000..5e822646a80 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/61.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/62.jpg b/projects/igniteui-angular-performance/src/assets/images/women/62.jpg new file mode 100644 index 00000000000..f0edc423739 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/62.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/63.jpg b/projects/igniteui-angular-performance/src/assets/images/women/63.jpg new file mode 100644 index 00000000000..21e482dc7a3 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/63.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/64.jpg b/projects/igniteui-angular-performance/src/assets/images/women/64.jpg new file mode 100644 index 00000000000..ec96c104653 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/64.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/65.jpg b/projects/igniteui-angular-performance/src/assets/images/women/65.jpg new file mode 100644 index 00000000000..3cab57987a6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/65.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/66.jpg b/projects/igniteui-angular-performance/src/assets/images/women/66.jpg new file mode 100644 index 00000000000..36cc0a59728 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/66.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/67.jpg b/projects/igniteui-angular-performance/src/assets/images/women/67.jpg new file mode 100644 index 00000000000..8d0815e0199 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/67.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/68.jpg b/projects/igniteui-angular-performance/src/assets/images/women/68.jpg new file mode 100644 index 00000000000..3391304273d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/68.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/69.jpg b/projects/igniteui-angular-performance/src/assets/images/women/69.jpg new file mode 100644 index 00000000000..ea027b14b0b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/69.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/7.jpg b/projects/igniteui-angular-performance/src/assets/images/women/7.jpg new file mode 100644 index 00000000000..acab0389ca5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/7.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/70.jpg b/projects/igniteui-angular-performance/src/assets/images/women/70.jpg new file mode 100644 index 00000000000..0cc2dff1b0d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/70.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/71.jpg b/projects/igniteui-angular-performance/src/assets/images/women/71.jpg new file mode 100644 index 00000000000..402ac4141ce Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/71.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/72.jpg b/projects/igniteui-angular-performance/src/assets/images/women/72.jpg new file mode 100644 index 00000000000..3435bc70094 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/72.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/73.jpg b/projects/igniteui-angular-performance/src/assets/images/women/73.jpg new file mode 100644 index 00000000000..2b0c8a21ad9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/73.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/74.jpg b/projects/igniteui-angular-performance/src/assets/images/women/74.jpg new file mode 100644 index 00000000000..188758a49d6 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/74.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/75.jpg b/projects/igniteui-angular-performance/src/assets/images/women/75.jpg new file mode 100644 index 00000000000..08b043a4ae5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/75.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/76.jpg b/projects/igniteui-angular-performance/src/assets/images/women/76.jpg new file mode 100644 index 00000000000..e6dbae8e2a5 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/76.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/77.jpg b/projects/igniteui-angular-performance/src/assets/images/women/77.jpg new file mode 100644 index 00000000000..fcababdb204 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/77.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/78.jpg b/projects/igniteui-angular-performance/src/assets/images/women/78.jpg new file mode 100644 index 00000000000..9c1a119fb4b Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/78.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/79.jpg b/projects/igniteui-angular-performance/src/assets/images/women/79.jpg new file mode 100644 index 00000000000..b6dd0668d7f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/79.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/8.jpg b/projects/igniteui-angular-performance/src/assets/images/women/8.jpg new file mode 100644 index 00000000000..6ab25af13e4 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/8.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/80.jpg b/projects/igniteui-angular-performance/src/assets/images/women/80.jpg new file mode 100644 index 00000000000..981542f6676 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/80.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/81.jpg b/projects/igniteui-angular-performance/src/assets/images/women/81.jpg new file mode 100644 index 00000000000..bf1dc8c1bec Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/81.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/82.jpg b/projects/igniteui-angular-performance/src/assets/images/women/82.jpg new file mode 100644 index 00000000000..fa1a29747eb Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/82.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/83.jpg b/projects/igniteui-angular-performance/src/assets/images/women/83.jpg new file mode 100644 index 00000000000..32a4a7e93ea Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/83.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/84.jpg b/projects/igniteui-angular-performance/src/assets/images/women/84.jpg new file mode 100644 index 00000000000..beb5491df73 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/84.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/85.jpg b/projects/igniteui-angular-performance/src/assets/images/women/85.jpg new file mode 100644 index 00000000000..0a900f9e887 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/85.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/86.jpg b/projects/igniteui-angular-performance/src/assets/images/women/86.jpg new file mode 100644 index 00000000000..4a01b17b1d1 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/86.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/87.jpg b/projects/igniteui-angular-performance/src/assets/images/women/87.jpg new file mode 100644 index 00000000000..3c40620c57e Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/87.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/88.jpg b/projects/igniteui-angular-performance/src/assets/images/women/88.jpg new file mode 100644 index 00000000000..3be827194e0 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/88.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/89.jpg b/projects/igniteui-angular-performance/src/assets/images/women/89.jpg new file mode 100644 index 00000000000..ad6ad9ff1da Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/89.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/9.jpg b/projects/igniteui-angular-performance/src/assets/images/women/9.jpg new file mode 100644 index 00000000000..0c730dc0428 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/9.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/90.jpg b/projects/igniteui-angular-performance/src/assets/images/women/90.jpg new file mode 100644 index 00000000000..6dff1dea35f Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/90.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/91.jpg b/projects/igniteui-angular-performance/src/assets/images/women/91.jpg new file mode 100644 index 00000000000..97466f849ef Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/91.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/92.jpg b/projects/igniteui-angular-performance/src/assets/images/women/92.jpg new file mode 100644 index 00000000000..cd667ab8390 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/92.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/93.jpg b/projects/igniteui-angular-performance/src/assets/images/women/93.jpg new file mode 100644 index 00000000000..81ea0613898 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/93.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/94.jpg b/projects/igniteui-angular-performance/src/assets/images/women/94.jpg new file mode 100644 index 00000000000..fc71188bc73 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/94.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/95.jpg b/projects/igniteui-angular-performance/src/assets/images/women/95.jpg new file mode 100644 index 00000000000..ff819b3e9fd Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/95.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/96.jpg b/projects/igniteui-angular-performance/src/assets/images/women/96.jpg new file mode 100644 index 00000000000..0cc2dff1b0d Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/96.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/97.jpg b/projects/igniteui-angular-performance/src/assets/images/women/97.jpg new file mode 100644 index 00000000000..402ac4141ce Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/97.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/98.jpg b/projects/igniteui-angular-performance/src/assets/images/women/98.jpg new file mode 100644 index 00000000000..3435bc70094 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/98.jpg differ diff --git a/projects/igniteui-angular-performance/src/assets/images/women/99.jpg b/projects/igniteui-angular-performance/src/assets/images/women/99.jpg new file mode 100644 index 00000000000..2b0c8a21ad9 Binary files /dev/null and b/projects/igniteui-angular-performance/src/assets/images/women/99.jpg differ diff --git a/projects/igniteui-angular-performance/src/index.html b/projects/igniteui-angular-performance/src/index.html new file mode 100644 index 00000000000..d6b92f29041 --- /dev/null +++ b/projects/igniteui-angular-performance/src/index.html @@ -0,0 +1,13 @@ + + + + + IgniteuiAngularPerformance + + + + + + + + diff --git a/projects/igniteui-angular-performance/src/main.ts b/projects/igniteui-angular-performance/src/main.ts new file mode 100644 index 00000000000..35b00f34633 --- /dev/null +++ b/projects/igniteui-angular-performance/src/main.ts @@ -0,0 +1,6 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; + +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/projects/igniteui-angular-performance/src/styles.scss b/projects/igniteui-angular-performance/src/styles.scss new file mode 100644 index 00000000000..f6fc0768f45 --- /dev/null +++ b/projects/igniteui-angular-performance/src/styles.scss @@ -0,0 +1,23 @@ +@use '../../igniteui-angular/src/lib/core/styles/themes' as *; +@import url('https://fonts.googleapis.com/icon?family=Material+Icons'); +@include core(); +@include typography( + $font-family: $material-typeface, + $type-scale: $material-type-scale +); +@include theme($default-palette); + +html, +body { + height: 100%; + width: 100%; +} + +body { + margin: 0; + padding: 0; +} + +* { + box-sizing: border-box; +} diff --git a/projects/igniteui-angular-performance/tsconfig.app.json b/projects/igniteui-angular-performance/tsconfig.app.json new file mode 100644 index 00000000000..742c48812c6 --- /dev/null +++ b/projects/igniteui-angular-performance/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/app", + "types": [] + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "src/**/*.spec.ts" + ] +} diff --git a/projects/igniteui-angular-performance/tsconfig.spec.json b/projects/igniteui-angular-performance/tsconfig.spec.json new file mode 100644 index 00000000000..0feea88ed47 --- /dev/null +++ b/projects/igniteui-angular-performance/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/projects/igniteui-angular/src/lib/data-operations/data-util.ts b/projects/igniteui-angular/src/lib/data-operations/data-util.ts index cc0e0d5ad1c..ac609764713 100644 --- a/projects/igniteui-angular/src/lib/data-operations/data-util.ts +++ b/projects/igniteui-angular/src/lib/data-operations/data-util.ts @@ -24,7 +24,7 @@ import { IGroupingExpression } from './grouping-expression.interface'; /** * @hidden */ - export const DataType = { +export const DataType = { String: 'string', Number: 'number', Boolean: 'boolean', @@ -55,19 +55,44 @@ export class DataUtil { public static treeGridSort(hierarchicalData: ITreeGridRecord[], expressions: ISortingExpression[], sorting: IGridSortingStrategy = new IgxDataRecordSorting(), - parent?: ITreeGridRecord, grid?: GridType): ITreeGridRecord[] { - let res: ITreeGridRecord[] = []; - hierarchicalData.forEach((hr: ITreeGridRecord) => { - const rec: ITreeGridRecord = DataUtil.cloneTreeGridRecord(hr); - rec.parent = parent; - if (rec.children) { - rec.children = DataUtil.treeGridSort(rec.children, expressions, sorting, rec, grid); + const res: ITreeGridRecord[] = []; + const stack: { + original: ITreeGridRecord[]; + parent?: ITreeGridRecord; + result: ITreeGridRecord[]; + }[] = []; + + stack.push({ original: hierarchicalData, parent: null, result: res }); + + while (stack.length > 0) { + const { original, parent, result } = stack.pop()!; + + const clonedRecords: ITreeGridRecord[] = []; + + for (const treeRecord of original) { + const rec: ITreeGridRecord = DataUtil.cloneTreeGridRecord(treeRecord); + rec.parent = parent; + clonedRecords.push(rec); + + // If it has children, process them later + if (rec.children && rec.children.length > 0) { + const childClones: ITreeGridRecord[] = []; + rec.children = childClones; + stack.push({ + original: treeRecord.children, + parent: rec, + result: childClones + }); + } } - res.push(rec); - }); - res = DataUtil.sort(res, expressions, sorting, grid); + // Sort the clonedRecords before assigning to the result + const sorted = DataUtil.sort(clonedRecords, expressions, sorting, grid); + for (const item of sorted) { + result.push(item); + } + } return res; } diff --git a/projects/igniteui-angular/src/lib/data-operations/pivot-sort-strategy.ts b/projects/igniteui-angular/src/lib/data-operations/pivot-sort-strategy.ts index 2db8244c61f..7e6f46e8923 100644 --- a/projects/igniteui-angular/src/lib/data-operations/pivot-sort-strategy.ts +++ b/projects/igniteui-angular/src/lib/data-operations/pivot-sort-strategy.ts @@ -18,9 +18,7 @@ export class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrateg isDate?: boolean, isTime?: boolean, _grid?: PivotGridType) { - const reverse = (dir === SortingDirection.Desc ? -1 : 1); - const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, fieldName, reverse, ignoreCase, this.getFieldValue, isDate, isTime); - return this.arraySort(data, cmpFunc); + return super.sort(data, fieldName, dir, ignoreCase, this.getFieldValue, isDate, isTime); } protected getFieldValue(obj: IPivotGridRecord, key: string, _isDate = false, _isTime = false): any { @@ -47,9 +45,7 @@ export class DefaultPivotSortingStrategy extends DefaultSortingStrategy { const allDimensions = grid.allDimensions; const enabledDimensions = allDimensions.filter(x => x && x.enabled); this.dimension = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === key); - const reverse = (dir === SortingDirection.Desc ? -1 : 1); - const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, key, reverse, ignoreCase, this.getFieldValue, isDate, isTime); - return this.arraySort(data, cmpFunc); + return super.sort(data, key, dir, ignoreCase, this.getFieldValue, isDate, isTime); } protected getFieldValue(obj: any, key: string, _isDate = false, isTime = false): any { diff --git a/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.ts b/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.ts index 414c61550ff..f27392d45f2 100644 --- a/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.ts +++ b/projects/igniteui-angular/src/lib/data-operations/sorting-strategy.ts @@ -54,21 +54,34 @@ export class DefaultSortingStrategy implements ISortingStrategy { ) { const key = fieldName; const reverse = (dir === SortingDirection.Desc ? -1 : 1); - const cmpFunc = (obj1: any, obj2: any) => this.compareObjects(obj1, obj2, key, reverse, ignoreCase, valueResolver, isDate, isTime); - return this.arraySort(data, cmpFunc); + + /** + * Use Schwartizian transform on the data before sorting it so that the sorting value + * is not recomputed on every object compare which improves the number of comparisons from O(nlogn) to O(n) + * where n is the length of the datasource. + * This, on a very large dataset of 1 million records, gives a significant performance boost. + */ + const resolver = valueResolver.bind(this); + const preparedData = data.map(item => { + return { + original: item, + sortValue: this.prepareSortValue(resolver(item, key, isDate, isTime), ignoreCase) + } + }); + const compareFn = (a, b) => reverse * this.compareValues(a.sortValue, b.sortValue); + preparedData.sort(compareFn); + + return preparedData.map(item => item.original); } public compareValues(a: any, b: any): number { - const an = (a === null || a === undefined); - const bn = (b === null || b === undefined); - if (an) { - if (bn) { - return 0; - } - return -1; - } else if (bn) { - return 1; - } + const aIsNullish = a == null; + const bIsNullish = b == null; + + if (aIsNullish && bIsNullish) return 0; + if (aIsNullish) return -1 + if (bIsNullish) return 1; + return a > b ? 1 : a < b ? -1 : 0; } @@ -94,6 +107,10 @@ export class DefaultSortingStrategy implements ISortingStrategy { protected arraySort(data: any[], compareFn?: (arg0: any, arg1: any) => number): any[] { return data.sort(compareFn); } + + protected prepareSortValue(value: any, ignoreCase: boolean) { + return ignoreCase && typeof value === 'string' ? value.toLocaleLowerCase() : value; + } } export class GroupMemberCountSortingStrategy implements ISortingStrategy { diff --git a/projects/igniteui-angular/src/lib/grids/common/strategy.ts b/projects/igniteui-angular/src/lib/grids/common/strategy.ts index 69912780031..d951a4d38bc 100644 --- a/projects/igniteui-angular/src/lib/grids/common/strategy.ts +++ b/projects/igniteui-angular/src/lib/grids/common/strategy.ts @@ -45,6 +45,35 @@ export interface IGridGroupingStrategy extends IGridSortingStrategy { groupBy(data: any[], state: IGroupingState, grid?: any, groupsRecords?: any[], fullResult?: IGroupByResult): IGroupByResult; } +/** + * Represents internal sorting expression that extends the public one. + * Contains boolean properties that represent the type of the column that is being sorted. + * @internal + */ +interface IGridInternalSortingExpression extends ISortingExpression { + isDate: boolean; + isTime: boolean; + isString: boolean; +} + +/** + * Stack item represents a frame. + * Each frame needs: + * - data: The subset of records to process at this level. + * - level: The current grouping level. + * - parentGroup: The parent IGroupByRecord for groups created in this frame. + * - currentIndex: The index within 'data' to start processing. + * - isExpandingChildren: Flag to indicate if children generated by this group should be added to `result` and `metadata`. + * @internal + */ +interface StackFrame { + data: any[]; + level: number; + parentGroup: IGroupByRecord | null; + currentIndex: number; + isExpandingChildren: boolean; +} + /** * Represents a class implementing the IGridSortingStrategy interface. * It provides sorting functionality for grid data based on sorting expressions. @@ -59,111 +88,229 @@ export class IgxSorting implements IGridSortingStrategy { * Returns a new array with the data sorted according to the sorting expressions. */ public sort(data: any[], expressions: ISortingExpression[], grid?: GridType): any[] { - return this.sortDataRecursive(data, expressions, 0, grid); + return this.sortData(data, expressions, grid); + } + + /** + * Retrieves the value of the specified field from the given object, considering date and time data types. + * `key`: The key of the field to retrieve. + * `isDate`: (Optional) Indicates if the field is of type Date. + * `isTime`: (Optional) Indicates if the field is of type Time. + * Returns the value of the specified field in the data object. + * @internal + */ + protected getFieldValue(obj: T, key: string, isDate = false, isTime = false) { + let resolvedValue = resolveNestedPath(obj, columnFieldPath(key)); + if (isDate || isTime) { + const date = parseDate(resolvedValue); + if (date && isDate && isTime) { + resolvedValue = date; + } else if (date && isDate && !isTime) { + resolvedValue = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0); + } else if (date && isTime && !isDate) { + resolvedValue = new Date(new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); + } + } + return resolvedValue; } /** - * Recursively groups the provided data based on the given grouping state and returns the grouped result. - * Returns an array containing the grouped result. + * Sorts the provided data array based on the given sorting expressions. + * The method can be used when multiple sorting is performed, going through each one + * Returns a new array with the data sorted according to the sorting expressions. * @internal */ - protected groupDataRecursive( + private sortData( + data: T[], + expressions: ISortingExpression[], + grid: GridType + ): T[] { + const sortingExpressions = this.prepareExpressions(expressions, grid); + + if (data.length <= 1) { + return data; + } + + for (let i = sortingExpressions.length - 1; i >= 0; i--) { + data = sortingExpressions[i].strategy.sort(data, sortingExpressions[i].fieldName, sortingExpressions[i].dir, sortingExpressions[i].ignoreCase, this.getFieldValue, sortingExpressions[i].isDate, sortingExpressions[i].isTime, grid) + } + + return data; + } + + private prepareExpressions(expressions: ISortingExpression[], grid: GridType): IGridInternalSortingExpression[] { + const multipleSortingExpressions: IGridInternalSortingExpression[] = []; + for (const expr of expressions) { + if (!expr.strategy) { + expr.strategy = DefaultSortingStrategy.instance(); + } + const column = grid?.getColumnByName(expr.fieldName); + const isDate = column?.dataType === DATE_TYPE || column?.dataType === DATE_TIME_TYPE; + const isTime = column?.dataType === TIME_TYPE || column?.dataType === DATE_TIME_TYPE; + const isString = column?.dataType === STRING_TYPE; + multipleSortingExpressions.push({ ...expr, isDate, isTime, isString }) + } + return multipleSortingExpressions; + } +} + +/** + * Represents a class implementing the IGridGroupingStrategy interface and extending the IgxSorting class. + * It provides a method to group data based on the given grouping state. + */ +export class IgxGrouping extends IgxSorting implements IGridGroupingStrategy { + /* blazorSuppress */ + /** + * Groups the provided data based on the given grouping state. + * Returns an object containing the result of the grouping operation. + */ + public groupBy(data: any[], state: IGroupingState, grid?: any, + groupsRecords?: any[], fullResult: IGroupByResult = { data: [], metadata: [] }): IGroupByResult { + const grouping = this.groupData(data, state, grid, groupsRecords, fullResult); + grid?.groupingPerformedSubject.next(); + return { + data: grouping.data, + metadata: grouping.metadata + }; + } + + /** + * Groups the provided data based on the given grouping state. + * Changes groupsRecords and fullResult collections by reference. + * Returns an array containing the visible grouped result. + * @internal + */ + protected groupData( data: any[], state: IGroupingState, - level: number, - parent: IGroupByRecord, - metadata: IGroupByRecord[], grid: GridType = null, groupsRecords: any[] = [], - fullResult: IGroupByResult = { data: [], metadata: [] } + fullResult: IGroupByResult ): IGroupByResult { + const expressions = state.expressions; const expansion = state.expansion; - let i = 0; - let result = []; - while (i < data.length) { + + // This holds the final visible data (the rows that are expanded). + const result: any[] = []; + + // This holds the group rows for each record in the result array. Used in grid for information when scrolling. + const metadata: IGroupByRecord[] = []; + + // Initialize the stack with the root level processing. + const initialFrame: StackFrame = { + data: data, + level: 0, + parentGroup: null, + currentIndex: 0, + isExpandingChildren: true + }; + const stack: StackFrame[] = [initialFrame]; + + while (stack.length > 0) { + const currentFrame = stack[stack.length - 1]; // Peek at the top of the stack + + const { data: currentData, level, parentGroup, currentIndex, isExpandingChildren } = currentFrame; + + // If we've processed all data in this frame, pop it. + if (currentIndex >= currentData.length) { + stack.pop(); + continue; + } + + // Process the next group at the current level const column = grid ? grid.getColumnByName(expressions[level].fieldName) : null; const isDate = column?.dataType === DATE_TYPE || column?.dataType === DATE_TIME_TYPE; const isTime = column?.dataType === TIME_TYPE || column?.dataType === DATE_TIME_TYPE; const isString = column?.dataType === STRING_TYPE; - const group = this.groupedRecordsByExpression(data, i, expressions[level], isDate, isTime, isString); + + // Next block of grouped records for the expression of the current level + const group = this.groupedRecordsByExpression( + currentData, + currentIndex, + expressions[level], + isDate, + isTime, + isString, + column?.groupingComparer + ); + + // Create the group row const groupRow: IGroupByRecord = { expression: expressions[level], level, records: cloneArray(group), value: this.getFieldValue(group[0], expressions[level].fieldName, isDate, isTime), - groupParent: parent, + groupParent: parentGroup, groups: [], height: grid ? grid.renderedRowHeight : null, column }; - if (parent) { - parent.groups.push(groupRow); + + // Link to parent's groups list + if (parentGroup) { + parentGroup.groups.push(groupRow); } else { - groupsRecords.push(groupRow); + groupsRecords.push(groupRow) } + + // Determine expansion state for this groupRow const hierarchy = getHierarchy(groupRow); const expandState: IGroupByExpandState = expansion.find((s) => isHierarchyMatch( s.hierarchy || [{ fieldName: groupRow.expression.fieldName, value: groupRow.value }], hierarchy, expressions - )); - const expanded = expandState ? expandState.expanded : state.defaultExpanded; - let recursiveResult; - result.push(groupRow); - metadata.push(null); + ) + ); + const expandedForThisGroup = expandState ? expandState.expanded : state.defaultExpanded; + + // Add the group row to the full result set fullResult.data.push(groupRow); fullResult.metadata.push(null); + + // Add the group row to the visible results (if its parent was expanded or it's a root group) + if (isExpandingChildren) { + result.push(groupRow); + metadata.push(null); + } + + // Advance the current frame's index for the next iteration of its loop + currentFrame.currentIndex += group.length; + if (level < expressions.length - 1) { - recursiveResult = this.groupDataRecursive(group, state, level + 1, groupRow, - [], grid, groupsRecords, fullResult); - if (expanded) { - result = result.concat(recursiveResult.data); - metadata = metadata.concat(recursiveResult.metadata); - } + // If there are more levels to group, push a new frame onto the stack + const nextFrame: StackFrame = { + data: group, // The records of the current group become the data for the next level + level: level + 1, + parentGroup: groupRow, // The current group row is the parent for the next level + currentIndex: 0, + isExpandingChildren: isExpandingChildren && expandedForThisGroup // Children are expanded only if this group is expanded AND parent is expanded + }; + stack.push(nextFrame); } else { + // This is the leaf level, add individual items to fullResult and conditionally to result/metadata for (const groupItem of group) { - fullResult.metadata.push(groupRow); + fullResult.metadata.push(groupRow); // The metadata for an item is its immediate parent group row. fullResult.data.push(groupItem); - } - if (expanded) { - metadata = metadata.concat(fullResult.metadata.slice(fullResult.metadata.length - group.length)); - result = result.concat(fullResult.data.slice(fullResult.data.length - group.length)); + if (isExpandingChildren && expandedForThisGroup) { + // Add to result and metadata only if expanded + metadata.push(groupRow); + result.push(groupItem); + } } } - i += group.length; } - return { data: result, metadata }; - } - /** - * Retrieves the value of the specified field from the given object, considering date and time data types. - * `key`: The key of the field to retrieve. - * `isDate`: (Optional) Indicates if the field is of type Date. - * `isTime`: (Optional) Indicates if the field is of type Time. - * Returns the value of the specified field in the data object. - * @internal - */ - protected getFieldValue(obj: T, key: string, isDate = false, isTime = false) { - let resolvedValue = resolveNestedPath(obj, columnFieldPath(key)); - const date = parseDate(resolvedValue); - if (date && isDate && isTime) { - resolvedValue = date; - } else if (date && isDate && !isTime) { - resolvedValue = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0); - } else if (date && isTime && !isDate) { - resolvedValue = new Date(new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())); - } - return resolvedValue; + return { data: result, metadata }; } /** - * Groups the records in the provided data array based on the given grouping expression. - * `groupingComparer`: (Optional) A custom grouping comparator to determine the members of the group. - * Returns an array containing the records that belong to the group. - * @internal - */ + * Groups the records in the provided data array based on the given grouping expression. + * `groupingComparer`: (Optional) A custom grouping comparator to determine the members of the group. + * Returns an array containing the records that belong to the group. + * @internal + */ private groupedRecordsByExpression( data: T[], index: number, @@ -173,23 +320,25 @@ export class IgxSorting implements IGridSortingStrategy { isString: boolean, groupingComparer?: (a: any, b: any, currRec: any, groupRec: any) => number ): T[] { - const res = []; + const res: T[] = []; const key = expression.fieldName; const len = data.length; const groupRecord = data[index]; - let groupval = this.getFieldValue(groupRecord, key, isDate, isTime); + let groupValue = this.getFieldValue(groupRecord, key, isDate, isTime); + if (expression.ignoreCase && isString && groupValue) { + // when column's dataType is string but the value is number + groupValue = groupValue.toString().toLowerCase(); + } res.push(groupRecord); - index++; const comparer = expression.groupingComparer || groupingComparer || DefaultSortingStrategy.instance().compareValues; - for (let i = index; i < len; i++) { + for (let i = index + 1; i < len; i++) { const currRec = data[i]; let fieldValue = this.getFieldValue(currRec, key, isDate, isTime); - if (expression.ignoreCase && isString) { + if (expression.ignoreCase && isString && fieldValue) { // when column's dataType is string but the value is number - fieldValue = fieldValue?.toString().toLowerCase(); - groupval = groupval?.toString().toLowerCase(); + fieldValue = fieldValue.toString().toLowerCase(); } - if (comparer(fieldValue, groupval, currRec, groupRecord) === 0) { + if (comparer(fieldValue, groupValue, currRec, groupRecord) === 0) { res.push(currRec); } else { break; @@ -197,78 +346,6 @@ export class IgxSorting implements IGridSortingStrategy { } return res; } - - /** - * Sorts the provided data array based on the given sorting expressions. - * The method can be used when multiple sorting is performed, going through each one - * Returns a new array with the data sorted according to the sorting expressions. - * @internal - */ - private sortDataRecursive( - data: T[], - expressions: ISortingExpression[], - expressionIndex = 0, - grid: GridType - ): T[] { - let i: number; - let j: number; - let gbData: T[]; - let gbDataLen: number; - const exprsLen = expressions.length; - const dataLen = data.length; - - expressionIndex = expressionIndex || 0; - if (expressionIndex >= exprsLen || dataLen <= 1) { - return data; - } - const expr = expressions[expressionIndex]; - if (!expr.strategy) { - expr.strategy = DefaultSortingStrategy.instance() as any; - } - const column = grid?.getColumnByName(expr.fieldName); - const isDate = column?.dataType === DATE_TYPE || column?.dataType === DATE_TIME_TYPE; - const isTime = column?.dataType === TIME_TYPE || column?.dataType === DATE_TIME_TYPE; - const isString = column?.dataType === STRING_TYPE; - data = expr.strategy.sort(data, expr.fieldName, expr.dir, expr.ignoreCase, this.getFieldValue, isDate, isTime, grid); - if (expressionIndex === exprsLen - 1) { - return data; - } - // in case of multiple sorting - for (i = 0; i < dataLen; i++) { - gbData = this.groupedRecordsByExpression(data, i, expr, isDate, isTime, isString, column?.groupingComparer); - gbDataLen = gbData.length; - if (gbDataLen > 1) { - gbData = this.sortDataRecursive(gbData, expressions, expressionIndex + 1, grid); - } - for (j = 0; j < gbDataLen; j++) { - data[i + j] = gbData[j]; - } - i += gbDataLen - 1; - } - return data; - } -} - -/** - * Represents a class implementing the IGridGroupingStrategy interface and extending the IgxSorting class. - * It provides a method to group data based on the given grouping state. - */ -export class IgxGrouping extends IgxSorting implements IGridGroupingStrategy { - /* blazorSuppress */ - /** - * Groups the provided data based on the given grouping state. - * Returns an object containing the result of the grouping operation. - */ - public groupBy(data: any[], state: IGroupingState, grid?: any, - groupsRecords?: any[], fullResult: IGroupByResult = { data: [], metadata: [] }): IGroupByResult { - const metadata: IGroupByRecord[] = []; - const grouping = this.groupDataRecursive(data, state, 0, null, metadata, grid, groupsRecords, fullResult); - grid?.groupingPerformedSubject.next(); - return { - data: grouping.data, - metadata: grouping.metadata - }; - } } /* csSuppress */ diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.pipes.ts b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.pipes.ts index 4ea39ad1f90..4b5a8717cf6 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.pipes.ts +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.pipes.ts @@ -444,7 +444,7 @@ export class IgxPivotGridColumnSortingPipe implements PipeTransform { for (const expr of expressions) { expr.strategy = DefaultPivotGridRecordSortingStrategy.instance(); } - result = PivotUtil.sort(cloneArray(collection, true), expressions, sorting); + result = PivotUtil.sort(cloneArray(collection), expressions, sorting); } return result; } @@ -468,7 +468,7 @@ export class IgxPivotGridSortingPipe implements PipeTransform { if (!expressions.length) { result = collection; } else { - result = DataUtil.sort(cloneArray(collection, true), expressions, sorting, this.gridAPI.grid); + result = DataUtil.sort(cloneArray(collection), expressions, sorting, this.gridAPI.grid); } return result; diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-util.ts b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-util.ts index cd73c2360ed..37367e0706a 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-util.ts +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-util.ts @@ -209,14 +209,18 @@ export class PivotUtil { } public static sort(data: IPivotGridRecord[], expressions: ISortingExpression[], sorting: IGridSortingStrategy = new IgxSorting()): any[] { - data.forEach(rec => { + for (const rec of data) { const children = rec.children; - if (children) { - children.forEach(x => { - this.sort(x, expressions, sorting); - }); + for (const [key, child] of children) { + /** + * DataUtil.sort is returning new reference of the sorted array + * because of the Schwartizian transform + */ + const sorted = this.sort(child, expressions, sorting); + children.set(key, sorted); } - }); + + } return DataUtil.sort(data, expressions, sorting); } diff --git a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.filtering.strategy.ts b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.filtering.strategy.ts index f4a3371b11c..ae016c28bdd 100644 --- a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.filtering.strategy.ts +++ b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.filtering.strategy.ts @@ -81,7 +81,6 @@ export class TreeGridFilteringStrategy extends BaseFilteringStrategy { data, [{ fieldName: column.field, dir: SortingDirection.Asc, ignoreCase: column.sortingIgnoreCase }], column.grid.sortStrategy, - null, column.grid); const items = this.getHierarchicalFilterItems(data, column); diff --git a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.pipes.ts b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.pipes.ts index 319724f9538..053208508c6 100644 --- a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.pipes.ts +++ b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.pipes.ts @@ -202,7 +202,7 @@ export class IgxTreeGridSortingPipe implements PipeTransform { if (!expressions.length) { result = hierarchicalData; } else { - result = DataUtil.treeGridSort(hierarchicalData, expressions, sorting, null, this.grid); + result = DataUtil.treeGridSort(hierarchicalData, expressions, sorting, this.grid); } const filteredSortedData = []; diff --git a/projects/igniteui-angular/src/lib/performance.service.ts b/projects/igniteui-angular/src/lib/performance.service.ts new file mode 100644 index 00000000000..ba99360ed9d --- /dev/null +++ b/projects/igniteui-angular/src/lib/performance.service.ts @@ -0,0 +1,123 @@ +import { inject, Injectable, NgZone, isDevMode } from '@angular/core'; + + +interface igcPerformance { + startMeasure: typeof startMeasure; + getMeasures: typeof getMeasures; + clearMeasures: typeof clearMeasures, + clearAll: typeof clearAll +} + +declare global { + var $$igcPerformance: igcPerformance; +} + +function isInstrumented(): boolean { + return globalThis.performance && performance.measure && isDevMode(); +} + +function instrumentGlobalHelpers(): void { + if (!isInstrumented() || Object.hasOwn(globalThis, '$$igcPerformance')) { + return; + } + + globalThis.$$igcPerformance = { + startMeasure, + getMeasures, + clearMeasures, + clearAll, + }; + + console.debug('Performance helper functions attached @ `global.$$igcPerformance`'); + +} + +export function startMeasure(name: string, withLogging = false) { + if (!isInstrumented()) return () => { }; + + const startMark = `${name}:start`; + const endMark = `${name}:end`; + + performance.mark(startMark); + + return () => { + performance.mark(endMark); + performance.measure(name, startMark, endMark); + if (withLogging) { + const entry = performance.getEntriesByName(name).at(-1); + console.debug(`Performance Measure : ${entry.name} - Duration: ${entry.duration.toFixed(2)}ms`); + } + }; +} + +export function getMeasures(name?: string): PerformanceEntryList { + return name ? performance.getEntriesByName(name) : performance.getEntriesByType('measure'); +} + +export function clearMeasures(name?: string, withLogging = false): void { + performance.clearMeasures(name); + if (withLogging) { + console.debug(name ? 'Cleared all measures of type `${name}`' : 'Cleared all custom measures'); + } +} + +export function clearAll(withLogging = false): void { + performance.clearMarks(); + clearMeasures(); + if (withLogging) { + console.debug('Cleared all marks and custom measures'); + } +} + +@Injectable({ providedIn: 'root' }) +export class PerformanceService { + private readonly _ngZone = inject(NgZone); + private _logEnabled = false; + + constructor() { + instrumentGlobalHelpers(); + } + + public setLogEnabled(state: boolean): void { + this._logEnabled = state; + } + + public start(name: string) { + return startMeasure(name, this._logEnabled); + } + + public getMeasures(name?: string): PerformanceEntryList { + return getMeasures(name); + } + + public clearMeasures(name?: string): void { + clearMeasures(name, this._logEnabled); + } + + public clearAll(): void { + clearAll(this._logEnabled); + } + + public attachObserver(options?: PerformanceObserverInit) { + if (!isInstrumented()) return; + let observer: PerformanceObserver; + + options = options ?? { entryTypes: ['event', 'long-animation-frame', 'longtask', 'taskattribution'] }; + + this._ngZone.runOutsideAngular(() => { + observer = new PerformanceObserver((list) => { + if (this._logEnabled) { + for (const entry of list.getEntries()) { + console.debug(`Performance Entry: ${entry.name} (${entry.entryType}) - Duration: ${entry.duration.toFixed(2)}ms`); + } + } + }); + + observer.observe(options); + }); + + return () => { + observer.disconnect(); + }; + } +} diff --git a/tsconfig.json b/tsconfig.json index 62e16156d56..58ac0576fa5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -51,5 +51,13 @@ }, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - } + }, + "references": [ + { + "path": "./projects/igniteui-angular-performance/tsconfig.app.json" + }, + { + "path": "./projects/igniteui-angular-performance/tsconfig.spec.json" + } + ] }