Browse Source

SORT_COMPARE_FUNC injection token added

pull/17239/head
Sinan997 3 years ago
parent
commit
2f112e1367
  1. 5
      npm/ng-packs/packages/core/src/lib/core.module.ts
  2. 24
      npm/ng-packs/packages/core/src/lib/services/routes.service.ts
  3. 27
      npm/ng-packs/packages/core/src/lib/tokens/compare-func.token.ts

5
npm/ng-packs/packages/core/src/lib/core.module.ts

@ -38,6 +38,7 @@ import { SafeHtmlPipe } from './pipes/safe-html.pipe';
import { QUEUE_MANAGER } from './tokens/queue.token';
import { DefaultQueueManager } from './utils/queue';
import { IncludeLocalizationResourcesProvider } from './providers/include-localization-resources.provider';
import { SORT_COMPARE_FUNC, compareFuncFactory } from './tokens/compare-func.token';
/**
* BaseCoreModule is the module that holds
@ -176,6 +177,10 @@ export class CoreModule {
useValue: localizationContributor(options.localizations),
deps: [LocalizationService],
},
{
provide: SORT_COMPARE_FUNC,
useFactory: compareFuncFactory
},
{
provide: QUEUE_MANAGER,
useClass: DefaultQueueManager,

24
npm/ng-packs/packages/core/src/lib/services/routes.service.ts

@ -12,7 +12,7 @@ import {
} from '../utils/tree-utils';
import { ConfigStateService } from './config-state.service';
import { PermissionService } from './permission.service';
import { LocalizationService } from './localization.service';
import { SORT_COMPARE_FUNC } from '../tokens/compare-func.token';
// eslint-disable-next-line @typescript-eslint/ban-types
export abstract class AbstractTreeService<T extends { [key: string | number | symbol]: any }> {
@ -159,7 +159,7 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
{
private subscription: Subscription;
private permissionService: PermissionService;
private localizationService: LocalizationService
private compareFunc;
readonly id = 'name';
readonly parentId = 'parentName';
readonly hide = (item: T) => item.invisible || !this.isGranted(item);
@ -167,24 +167,6 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
return this.compareFunc(a,b)
};
readonly compareFunc = (a: T, b: T) => {
const aName = this.localizationService.instant(a.name);
const bName = this.localizationService.instant(b.name);
const aNumber = a.order;
const bNumber = b.order;
if (!Number.isInteger(aNumber)) return 1;
if (!Number.isInteger(bNumber)) return -1;
if (aNumber > bNumber) return 1
if (aNumber < bNumber) return -1
if ( aName > bName ) return 1;
if ( aName < bName ) return -1;
return 0
}
constructor(protected injector: Injector) {
super();
const configState = this.injector.get(ConfigStateService);
@ -192,8 +174,8 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
.createOnUpdateStream(state => state)
.subscribe(() => this.refresh());
this.permissionService = injector.get(PermissionService);
this.localizationService = injector.get(LocalizationService);
this.othersGroup = injector.get(OTHERS_GROUP);
this.compareFunc = injector.get(SORT_COMPARE_FUNC);
}
protected isGranted({ requiredPolicy }: T): boolean {

27
npm/ng-packs/packages/core/src/lib/tokens/compare-func.token.ts

@ -0,0 +1,27 @@
import { InjectionToken, inject } from '@angular/core';
import { LocalizationService } from '../services';
export const SORT_COMPARE_FUNC = new InjectionToken< 0 | 1 | -1 >('SORT_COMPARE_FUNC');
export function compareFuncFactory() {
const localizationService = inject(LocalizationService)
const fn = (a,b) => {
const aName = localizationService.instant(a.name);
const bName = localizationService.instant(b.name);
const aNumber = a.order;
const bNumber = b.order;
if (!Number.isInteger(aNumber)) return 1;
if (!Number.isInteger(bNumber)) return -1;
if (aNumber > bNumber) return 1
if (aNumber < bNumber) return -1
if ( aName > bName ) return 1;
if ( aName < bName ) return -1;
return 0
}
return fn
}
Loading…
Cancel
Save