Browse Source

Merge pull request #17239 from abpframework/issue-17232

setting tabs order by display name (a-z)
pull/17298/head
Mahmut Gundogdu 3 years ago
committed by GitHub
parent
commit
b6d8ca1c0d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      npm/ng-packs/packages/core/src/lib/core.module.ts
  2. 8
      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
  4. 2
      npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.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,

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

@ -12,6 +12,7 @@ import {
} from '../utils/tree-utils';
import { ConfigStateService } from './config-state.service';
import { PermissionService } from './permission.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 }> {
@ -158,14 +159,12 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
{
private subscription: Subscription;
private permissionService: PermissionService;
private compareFunc;
readonly id = 'name';
readonly parentId = 'parentName';
readonly hide = (item: T) => item.invisible || !this.isGranted(item);
readonly sort = (a: T, b: T) => {
if (!Number.isInteger(a.order)) return 1;
if (!Number.isInteger(b.order)) return -1;
return (a.order as number) - (b.order as number);
return this.compareFunc(a,b)
};
constructor(protected injector: Injector) {
@ -176,6 +175,7 @@ export abstract class AbstractNavTreeService<T extends ABP.Nav>
.subscribe(() => this.refresh());
this.permissionService = injector.get(PermissionService);
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
}

2
npm/ng-packs/packages/feature-management/src/lib/providers/feature-management-settings.provider.ts

@ -17,7 +17,7 @@ export function configureSettingTabs(settingtabs: SettingTabsService) {
settingtabs.add([
{
name: eFeatureManagementTabNames.FeatureManagement,
order: 104,
order: 100,
requiredPolicy: 'FeatureManagement.ManageHostFeatures',
component: FeatureManagementTabComponent,
},

Loading…
Cancel
Save