Skip to content

Commit 714e050

Browse files
authored
Merge pull request #9213 from IgniteUI/finjs-dev-demo-m
FinJS dev demo changes
2 parents e2ed6d9 + 125b2a4 commit 714e050

File tree

8 files changed

+95
-200
lines changed

8 files changed

+95
-200
lines changed

src/app/grid-finjs/controllers.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="controls-holder">
33
<div class="switches">
44
<div class="control-item">
5-
<igx-switch [checked]="false" [(ngModel)]="theme" (change)="onChange('theme', $event)">Dark</igx-switch>
5+
<igx-switch [checked]="false" (change)="onChange('theme', $event)">Dark</igx-switch>
66
</div>
77
<div class="control-item">
88
<igx-switch [checked]="true" (change)="onChange('grouped', $event)" color="blue" cssClass="finjs-sample-switch">

src/app/grid-finjs/controllers.component.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ export class ControllerComponent implements OnInit, OnDestroy {
1818
@Output() public volumeChanged = new EventEmitter<any>();
1919
@Output() public playAction = new EventEmitter<any>();
2020

21-
public selectionMode = 'multiple';
22-
public theme = false;
21+
public darkTheme = true;
2322
public volume = 1000;
2423
public frequency = 500;
2524
public controls = [

src/app/grid-finjs/grid-finjs.component.html

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
1-
<igx-grid #grid1 igxPreventDocumentScroll [data]="data" width="100%" height="800px" [autoGenerate]='false' displayDensity='compact' hiddenColumnsText="Hidden" primaryKey='ID' [rowSelection]="selectionMode" [allowFiltering]="true" [filterMode]="'excelStyleFilter'">
1+
<igx-grid #grid1
2+
igxPreventDocumentScroll
3+
width="100%" height="800px"
4+
displayDensity='compact'
5+
hiddenColumnsText="Hidden"
6+
primaryKey='ID'
7+
[(groupingExpressions)]="groupingExpressions"
8+
[autoGenerate]='false'
9+
[data]="data"
10+
[hideGroupedColumns]="true"
11+
[rowSelection]="selectionMode"
12+
[allowFiltering]="true"
13+
[filterMode]="'excelStyleFilter'">
214

315
<igx-grid-toolbar *ngIf="showToolbar">
416
<igx-grid-toolbar-actions>
@@ -35,7 +47,7 @@
3547
</ng-template>
3648
</igx-column>
3749
<igx-column [field]="'LastUpdated'" [width]="'120px'" [editable]='true' header="Last Update" dataType="date"></igx-column>
38-
<igx-column [field]="'Open Price'" [width]="'120px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
50+
<igx-column [field]="'Open Price'" [width]="'120px'" dataType="currency" [pipeArgs]="columnFormat" [movable]="true" [sortable]="true"></igx-column>
3951
<igx-column [field]="'Price'" [width]="'110px'" dataType="number" [cellClasses]="trends" [movable]="true" [sortable]="true">
4052
<ng-template igxCell let-cell="cell">
4153
<div class="finjs-icons">
@@ -53,22 +65,22 @@
5365
</ng-template>
5466
</igx-column>
5567

56-
<igx-column [field]="'Change'" [width]="'120px'" dataType="number" [headerClasses]="'headerAlignSyle'" [sortable]="true" [cellClasses]="trendsChange" [formatter]="formatNumber" [movable]="true">
68+
<igx-column [field]="'Change'" [width]="'120px'" dataType="number" [headerClasses]="'headerAlignSyle'" [sortable]="true" [cellClasses]="trendsChange" [movable]="true">
5769
</igx-column>
5870

59-
<igx-column [field]="'Change(%)'" [width]="'110px'" dataType="number" [formatter]="percentage" [movable]="true" [sortable]="true" [cellClasses]="trendsChange">
71+
<igx-column [field]="'Change(%)'" [width]="'110px'" dataType="percent" [movable]="true" [sortable]="true" [cellClasses]="trendsChange">
6072
</igx-column>
6173

62-
<igx-column [field]="'Buy'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
63-
<igx-column [field]="'Sell'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
64-
<igx-column [field]="'Spread'" [width]="'110px'" dataType="number" [formatter]="formatNumber" [movable]="true">
74+
<igx-column [field]="'Buy'" [width]="'110px'" dataType="currency" [pipeArgs]="columnFormat" [movable]="true" [sortable]="true"></igx-column>
75+
<igx-column [field]="'Sell'" [width]="'110px'" dataType="currency" [pipeArgs]="columnFormat" [movable]="true" [sortable]="true"></igx-column>
76+
<igx-column [field]="'Spread'" [width]="'110px'" dataType="number" [pipeArgs]="columnFormat" [movable]="true">
6577
</igx-column>
66-
<igx-column [field]="'Volume'" [width]="'110px'" dataType="number" [formatter]="formatNumber" [movable]="true" [sortable]="true"></igx-column>
67-
<igx-column [field]="'High(D)'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
68-
<igx-column [field]="'Low(D)'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
69-
<igx-column [field]="'High(Y)'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
70-
<igx-column [field]="'Low(Y)'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
71-
<igx-column [field]="'Start(Y)'" [width]="'110px'" dataType="number" [formatter]="formatCurrency" [movable]="true" [sortable]="true"></igx-column>
78+
<igx-column [field]="'Volume'" [width]="'110px'" dataType="number" [movable]="true" [sortable]="true"></igx-column>
79+
<igx-column [field]="'High(D)'" [width]="'110px'" dataType="currency" [movable]="true" [sortable]="true"></igx-column>
80+
<igx-column [field]="'Low(D)'" [width]="'110px'" dataType="currency" [movable]="true" [sortable]="true"></igx-column>
81+
<igx-column [field]="'High(Y)'" [width]="'110px'" dataType="currency" [movable]="true" [sortable]="true"></igx-column>
82+
<igx-column [field]="'Low(Y)'" [width]="'110px'" dataType="currency" [movable]="true" [sortable]="true"></igx-column>
83+
<igx-column [field]="'Start(Y)'" [width]="'110px'" dataType="currency" [movable]="true" [sortable]="true"></igx-column>
7284
<igx-column [field]="'IndGrou'" [width]="'100px'" [filterable]='false'></igx-column>
7385
<igx-column [field]="'IndSect'" [width]="'120px'" [filterable]='false' [resizable]='true'></igx-column>
7486
<igx-column [field]="'IndSubg'" [width]="'100px'" [filterable]='false'></igx-column>
Lines changed: 32 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,56 @@
11
import {
2-
AfterViewInit,
32
Component,
4-
EventEmitter,
5-
OnDestroy,
6-
OnInit,
7-
Output,
3+
Input,
84
ViewChild } from '@angular/core';
95
import {
106
DefaultSortingStrategy,
11-
GridSelectionMode,
127
IgxGridComponent,
138
SortingDirection
149
} from 'igniteui-angular';
1510
import { Contract, REGIONS } from '../shared/financialData';
16-
import { LocalService } from '../shared/local.service';
11+
12+
const GROUPING_EXPRESSIONS = [{
13+
dir: SortingDirection.Desc,
14+
fieldName: 'Category',
15+
ignoreCase: false,
16+
strategy: DefaultSortingStrategy.instance()
17+
},
18+
{
19+
dir: SortingDirection.Desc,
20+
fieldName: 'Type',
21+
ignoreCase: false,
22+
strategy: DefaultSortingStrategy.instance()
23+
},
24+
{
25+
dir: SortingDirection.Desc,
26+
fieldName: 'Contract',
27+
ignoreCase: false,
28+
strategy: DefaultSortingStrategy.instance()
29+
}
30+
];
1731

1832
@Component({
1933
selector: 'app-finjs-grid',
2034
styleUrls: ['./grid-finjs.component.scss'],
2135
templateUrl: './grid-finjs.component.html'
2236
})
23-
export class GridFinJSComponent implements OnInit, AfterViewInit, OnDestroy {
37+
export class GridFinJSComponent {
2438
@ViewChild('grid1', { static: true }) public grid: IgxGridComponent;
2539

26-
@Output() public selectedDataChanged = new EventEmitter<any>();
27-
@Output() public keyDown = new EventEmitter<any>();
28-
@Output() public chartColumnKeyDown = new EventEmitter<any>();
40+
@Input()
41+
public data: any;
2942

30-
public data = [];
31-
public multiCellSelection: { data: any[] } = { data: [] };
32-
public selectionMode: GridSelectionMode = 'multiple';
43+
public selectionMode = 'multiple';
3344
public contracts = Contract;
3445
public regions = REGIONS;
46+
public columnFormat = { digitsInfo: '1.3-3'};
3547
public showToolbar = true;
36-
public volume = 1000;
37-
public frequency = 500;
38-
private subscription$;
39-
40-
constructor(public finService: LocalService) {
41-
this.finService.getFinancialData(this.volume);
42-
this.subscription$ = this.finService.records.subscribe(x => {
43-
this.data = x;
44-
});
45-
}
48+
public groupingExpressions = GROUPING_EXPRESSIONS;
4649

47-
public ngOnInit() {
48-
this.grid.groupingExpressions = [{
49-
dir: SortingDirection.Desc,
50-
fieldName: 'Category',
51-
ignoreCase: false,
52-
strategy: DefaultSortingStrategy.instance()
53-
},
54-
{
55-
dir: SortingDirection.Desc,
56-
fieldName: 'Type',
57-
ignoreCase: false,
58-
strategy: DefaultSortingStrategy.instance()
59-
},
60-
{
61-
dir: SortingDirection.Desc,
62-
fieldName: 'Settlement',
63-
ignoreCase: false,
64-
strategy: DefaultSortingStrategy.instance()
65-
}
66-
];
67-
}
50+
constructor() { }
6851

69-
public ngAfterViewInit() {
70-
this.grid.hideGroupedColumns = true;
71-
this.grid.reflow();
72-
}
73-
74-
public ngOnDestroy() {
75-
if (this.subscription$) {
76-
this.subscription$.unsubscribe();
77-
}
78-
}
79-
80-
/** Event Handlers */
81-
82-
public onChange() {
83-
if (this.grid.groupingExpressions.length > 0) {
84-
this.grid.groupingExpressions = [];
85-
} else {
86-
this.grid.groupingExpressions = [{
87-
dir: SortingDirection.Desc,
88-
fieldName: 'Category',
89-
ignoreCase: false,
90-
strategy: DefaultSortingStrategy.instance()
91-
},
92-
{
93-
dir: SortingDirection.Desc,
94-
fieldName: 'Type',
95-
ignoreCase: false,
96-
strategy: DefaultSortingStrategy.instance()
97-
},
98-
{
99-
dir: SortingDirection.Desc,
100-
fieldName: 'Contract',
101-
ignoreCase: false,
102-
strategy: DefaultSortingStrategy.instance()
103-
}
104-
];
105-
}
106-
}
107-
108-
public toggleGrouping() {
109-
if (this.grid.groupingExpressions.length > 0) {
110-
this.grid.groupingExpressions = [];
111-
} else {
112-
this.grid.groupingExpressions = [{
113-
dir: SortingDirection.Desc,
114-
fieldName: 'Category',
115-
ignoreCase: false,
116-
strategy: DefaultSortingStrategy.instance()
117-
},
118-
{
119-
dir: SortingDirection.Desc,
120-
fieldName: 'Type',
121-
ignoreCase: false,
122-
strategy: DefaultSortingStrategy.instance()
123-
},
124-
{
125-
dir: SortingDirection.Desc,
126-
fieldName: 'Contract',
127-
ignoreCase: false,
128-
strategy: DefaultSortingStrategy.instance()
129-
}
130-
];
131-
}
132-
}
133-
134-
/** Grid Formatters */
135-
public formatNumber(value: number) {
136-
return value.toFixed(2);
137-
}
138-
139-
public percentage(value: number) {
140-
return value.toFixed(2) + '%';
141-
}
142-
143-
public formatCurrency(value: number) {
144-
return '$' + value.toFixed(3);
52+
public toggleGrouping(newValue: boolean) {
53+
this.groupingExpressions = newValue ? GROUPING_EXPRESSIONS : [];
14554
}
14655

14756
/** Grid CellStyles and CellClasses */
@@ -152,7 +61,7 @@ export class GridFinJSComponent implements OnInit, AfterViewInit, OnDestroy {
15261
private strongPositive = (rowData: any): boolean => rowData['Change(%)'] >= 1;
15362
private strongNegative = (rowData: any): boolean => rowData['Change(%)'] <= -1;
15463

155-
/* eslint-disable @typescript-eslint/member-ordering */
64+
// eslint-disable-next-line @typescript-eslint/member-ordering
15665
public trends = {
15766
changeNeg: this.changeNegative,
15867
changePos: this.changePositive,
@@ -161,16 +70,11 @@ export class GridFinJSComponent implements OnInit, AfterViewInit, OnDestroy {
16170
strongNegative: this.strongNegative,
16271
strongPositive: this.strongPositive
16372
};
164-
73+
// eslint-disable-next-line @typescript-eslint/member-ordering
16574
public trendsChange = {
16675
changeNeg2: this.changeNegative,
16776
changePos2: this.changePositive,
16877
strongNegative2: this.strongNegative,
16978
strongPositive2: this.strongPositive
17079
};
171-
/* eslint-enable @typescript-eslint/member-ordering */
172-
173-
public get grouped(): boolean {
174-
return this.grid.groupingExpressions.length > 0;
175-
}
17680
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
<div class="grid__wrapper" [class.fin-dark-theme]="theme">
1+
<div class="grid__wrapper" [class.fin-dark-theme]="darkTheme">
22
<app-finjs-controllers #controllers
33
(switchChanged)="onSwitchChanged($event)"
44
(volumeChanged)="onVolumeChanged($event)"
55
(playAction)="onPlayAction($event)">
66
</app-finjs-controllers>
7-
<app-finjs-grid #grid>
7+
<app-finjs-grid #grid [data]="data$ | async">
88
</app-finjs-grid>
99
</div>

src/app/grid-finjs/main.component.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
position: relative;
33
width: 100%;
44
height: 100%;
5+
min-height: 100%;
6+
display: flex;
7+
flex-direction: column;
58
top: 0;
69
left: 0;
710
padding: 15px;

0 commit comments

Comments
 (0)