Browse Source

Merge pull request #3655 from abpframework/feat/3654

Added a Utility Function to Create Options from Enums
pull/3665/head
Mehmet Erim 7 years ago
committed by GitHub
parent
commit
f1d1e72437
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      npm/ng-packs/packages/core/src/lib/models/common.ts
  2. 30
      npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts
  3. 17
      npm/ng-packs/packages/core/src/lib/tests/number-utils.spec.ts
  4. 15
      npm/ng-packs/packages/core/src/lib/utils/form-utils.ts
  5. 2
      npm/ng-packs/packages/core/src/lib/utils/index.ts
  6. 4
      npm/ng-packs/packages/core/src/lib/utils/number-utils.ts

9
npm/ng-packs/packages/core/src/lib/models/common.ts

@ -1,7 +1,7 @@
import { eLayoutType } from '../enums/common';
import { Config } from './config';
import { EventEmitter } from '@angular/core';
import { Subject } from 'rxjs';
import { eLayoutType } from '../enums/common';
import { Config } from './config';
export namespace ABP {
export interface Root {
@ -51,6 +51,11 @@ export namespace ABP {
name: string;
}
export interface Option<T> {
key: Extract<keyof T, string>;
value: T[Extract<keyof T, string>];
}
export interface Dictionary<T = any> {
[key: string]: T;
}

30
npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts

@ -0,0 +1,30 @@
import { mapEnumToOptions } from '../utils/form-utils';
enum SomeEnum {
NotApplicable = 'N/A',
Foo = 0,
Bar,
}
describe('Form Utils', () => {
describe('#mapEnumToOptions', () => {
it('should return options from enum', () => {
const options = mapEnumToOptions(SomeEnum);
expect(options).toEqual([
{
key: 'NotApplicable',
value: SomeEnum.NotApplicable,
},
{
key: 'Foo',
value: SomeEnum.Foo,
},
{
key: 'Bar',
value: SomeEnum.Bar,
},
]);
});
});
});

17
npm/ng-packs/packages/core/src/lib/tests/number-utils.spec.ts

@ -0,0 +1,17 @@
import { isNumber } from '../utils/number-utils';
describe('Number Utils', () => {
describe('#isNumber', () => {
it('should return true if input is a numeric expression', () => {
expect(isNumber(0)).toBe(true);
expect(isNumber(0.15)).toBe(true);
expect(isNumber(2e8)).toBe(true);
expect(isNumber(Infinity)).toBe(true);
expect(isNumber('0')).toBe(true);
expect(isNumber('0.15')).toBe(true);
expect(isNumber('2e8')).toBe(true);
expect(isNumber('Infinity')).toBe(true);
});
});
});

15
npm/ng-packs/packages/core/src/lib/utils/form-utils.ts

@ -0,0 +1,15 @@
import { ABP } from '../models/common';
import { isNumber } from './number-utils';
export function mapEnumToOptions<T>(_enum: T): ABP.Option<T>[] {
const options: ABP.Option<T>[] = [];
for (const member in _enum)
if (!isNumber(member))
options.push({
key: member,
value: _enum[member],
});
return options;
}

2
npm/ng-packs/packages/core/src/lib/utils/index.ts

@ -1,6 +1,8 @@
export * from './common-utils';
export * from './form-utils';
export * from './generator-utils';
export * from './initial-utils';
export * from './lazy-load-utils';
export * from './number-utils';
export * from './route-utils';
export * from './rxjs-utils';

4
npm/ng-packs/packages/core/src/lib/utils/number-utils.ts

@ -0,0 +1,4 @@
export function isNumber(value: string | number): boolean {
/* tslint:disable-next-line:triple-equals */
return value == Number(value);
}
Loading…
Cancel
Save