Skip to content

Commit fb0f2f7

Browse files
Markiewicsplincode
andauthored
fix(ng-table-builder): table features and typings (#711)
* fix(ng-table-builder): intersect explicit keys with model & table some features * feat(common): support nullable types for excel builder & table builder * feat(@angular-ru/common): correct to-number signature * fixup! feat(@angular-ru/common): correct to-number signature Co-authored-by: Max Ivanov <omaxphp@yandex.ru>
1 parent 316b632 commit fb0f2f7

File tree

14 files changed

+79
-41
lines changed

14 files changed

+79
-41
lines changed

packages/common/docs/number.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ import { toNumber } from '@angular-ru/common/number';
2121
expect(toNumber(NaN)).toEqual(NaN);
2222
expect(toNumber(Infinity)).toEqual(Infinity);
2323
expect(toNumber('')).toEqual(NaN);
24-
expect(toNumber(null as any)).toEqual(NaN);
25-
expect(toNumber(undefined as any)).toEqual(NaN);
26-
expect(toNumber('')).toEqual(NaN);
27-
expect(toNumber(undefined as any)).toEqual(NaN);
24+
expect(toNumber(null)).toEqual(NaN);
25+
expect(toNumber(undefined)).toEqual(NaN);
2826

2927
expect(toNumber(0)).toEqual(0);
3028
expect(toNumber('0.1')).toEqual(0.1);

packages/common/integration/tests/number/number.spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ describe('[TEST]: Number', () => {
2323
expect(toNumber(NaN)).toEqual(NaN);
2424
expect(toNumber(Infinity)).toEqual(Infinity);
2525
expect(toNumber('')).toEqual(NaN);
26-
expect(toNumber(null as any)).toEqual(NaN);
27-
expect(toNumber(undefined as any)).toEqual(NaN);
28-
expect(toNumber('')).toEqual(NaN);
29-
expect(toNumber(undefined as any)).toEqual(NaN);
26+
expect(toNumber(null)).toEqual(NaN);
27+
expect(toNumber(undefined)).toEqual(NaN);
3028
});
3129

3230
it('should be correct to number', () => {

packages/common/number/src/to-number.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import { Nullable } from '@angular-ru/common/typings';
2+
import { checkValueIsFilled } from '@angular-ru/common/utils';
3+
14
const formatToPartsValue: number = 12345.6;
25
const intlFormatOrigin: number = 9876543210;
36

4-
export function toNumber(value: number | string, locale: string = 'ru-RU'): number {
5-
let prepared: string = value?.toString().replace(/\s/g, '');
7+
export function toNumber(value: Nullable<number | string>, locale: string = 'ru-RU'): number {
8+
let prepared: Nullable<string> = value?.toString().replace(/\s/g, '');
69

710
const parts: Intl.NumberFormatPart[] = new Intl.NumberFormat(locale).formatToParts(formatToPartsValue);
811

@@ -26,5 +29,5 @@ export function toNumber(value: number | string, locale: string = 'ru-RU'): numb
2629

2730
prepared = prepared?.trim().replace(group, '').replace(decimal, '.').replace(numeral, indexes);
2831

29-
return prepared ? +prepared : NaN;
32+
return checkValueIsFilled(prepared) ? +prepared : NaN;
3033
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import { Nullable } from '@angular-ru/common/typings';
2+
13
export interface RulesDescriptor {
2-
includeKeys?: string[];
3-
excludeKeys?: string[];
4+
includeKeys?: Nullable<string[]>;
5+
excludeKeys?: Nullable<string[]>;
46
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import { Nullable } from '@angular-ru/common/typings';
2+
13
import { ColumnWidth } from './column-width';
24

35
export interface ColumnParameters {
4-
width?: number | ColumnWidth;
6+
width?: Nullable<number | ColumnWidth>;
57
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { PlainObject } from '@angular-ru/common/typings';
1+
import { Nullable, PlainObject } from '@angular-ru/common/typings';
22

33
import { ExcelWorksheet } from './excel-worksheet';
44

55
export interface ExcelWorkbook<T> {
66
filename: string;
7-
translatedKeys?: PlainObject;
7+
translatedKeys?: Nullable<PlainObject>;
88
worksheets: ExcelWorksheet<T>[];
99
}

packages/ng-excel-builder/src/domain/excel-worksheet.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { EntriesKeys } from './entries-keys';
66
export interface ExcelWorksheet<T> {
77
entries: Nullable<T[]>;
88
worksheetName: string;
9-
prefixKeyForTranslate?: string;
10-
keys?: EntriesKeys<T>;
11-
excludeKeys?: EntriesKeys<T>;
12-
columnParameters?: PlainObjectOf<ColumnParameters>;
9+
prefixKeyForTranslate?: Nullable<string>;
10+
keys?: Nullable<EntriesKeys<T>>;
11+
excludeKeys?: Nullable<EntriesKeys<T>>;
12+
columnParameters?: Nullable<PlainObjectOf<ColumnParameters>>;
1313
}

packages/ng-excel-builder/src/excel-builder.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ export class ExcelBuilderService {
178178
return maxLength * this.sizes.fontWidth;
179179
}
180180

181-
private getTranslatedTitle(key: string, translatePrefix?: string): string {
181+
private getTranslatedTitle(key: string, translatePrefix?: Nullable<string>): string {
182182
const translatePath: string = ExcelBuilder.isFilled(translatePrefix)
183183
? `${translatePrefix}.${key}`
184184
: key;

packages/ng-table-builder/integration/app/src/samples/sample-fourteen/sample-fourteen.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class SampleFourteenComponent implements OnInit, AfterViewInit {
4848
constructor(public readonly dialog: MatDialog, private readonly cd: ChangeDetectorRef) {}
4949

5050
public ngOnInit(): void {
51-
const rows: number = 100;
51+
const rows: number = 10000;
5252
const cols: number = 59;
5353
MocksGenerator.generator(rows, cols).then((data: PlainObject[]): void => {
5454
this.data = data;

packages/ng-table-builder/src/components/table-thead/table-thead.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<div
22
[style.top.px]="headerTop"
33
class="table-grid__cell table-grid__header-cell"
4+
[class.table-grid__header-cell--is-clickable]="columnSchema?.sortable"
45
[class.table-grid__cell--empty-head]="columnSchema?.th?.emptyHead"
56
[class.table-grid__cell--custom-cell]="columnSchema?.customColumn"
67
[class.table-grid__cell--is-model-cell]="columnSchema?.isModel"
@@ -16,7 +17,7 @@
1617
<div
1718
class="table-grid__cell--content table-grid__header-cell--content"
1819
[class.table-grid__cell--content-sortable-is-active]="sortableDefinition[columnSchema?.key!]"
19-
[class.table-grid__cell--content-sortable]="columnSchema?.sortable!"
20+
[class.table-grid__cell--content-sortable]="columnSchema?.sortable"
2021
[class.table-grid__cell--nowrap]="columnSchema?.th?.nowrap!"
2122
>
2223
<ng-template

0 commit comments

Comments
 (0)