From 16d02447f6d9ed38b2290da1ea25855deae593e7 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 27 Sep 2019 10:47:02 +0300 Subject: [PATCH] feature(tenant-management-config): create module --- npm/ng-packs/angular.json | 105 ++++++++++++++++++ .../src/lib/identity-config.module.ts | 6 +- .../setting-management.component.ts | 42 ++----- .../tenant-management-config/README.md | 1 + .../tenant-management-config/karma.conf.js | 32 ++++++ .../tenant-management-config/ng-package.json | 7 ++ .../tenant-management-config/package.json | 7 ++ .../tenant-management-config.service.ts | 25 +++++ .../lib/tenant-management-config.module.ts | 8 ++ .../src/public-api.ts | 7 ++ .../tenant-management-config/src/test.ts | 21 ++++ .../tsconfig.lib.json | 26 +++++ .../tsconfig.spec.json | 17 +++ .../tenant-management-config/tslint.json | 17 +++ .../tenant-management/ng-package.json | 6 +- .../packages/tenant-management/package.json | 3 +- .../src/lib/constants/routes.ts | 4 + .../src/lib/tenant-management.module.ts | 4 + .../src/lib/models/setting-management.ts | 2 + 19 files changed, 301 insertions(+), 39 deletions(-) create mode 100644 npm/ng-packs/packages/tenant-management-config/README.md create mode 100644 npm/ng-packs/packages/tenant-management-config/karma.conf.js create mode 100644 npm/ng-packs/packages/tenant-management-config/ng-package.json create mode 100644 npm/ng-packs/packages/tenant-management-config/package.json create mode 100644 npm/ng-packs/packages/tenant-management-config/src/lib/services/tenant-management-config.service.ts create mode 100644 npm/ng-packs/packages/tenant-management-config/src/lib/tenant-management-config.module.ts create mode 100644 npm/ng-packs/packages/tenant-management-config/src/public-api.ts create mode 100644 npm/ng-packs/packages/tenant-management-config/src/test.ts create mode 100644 npm/ng-packs/packages/tenant-management-config/tsconfig.lib.json create mode 100644 npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json create mode 100644 npm/ng-packs/packages/tenant-management-config/tslint.json diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json index 773d9794f7..0aa1c106a5 100644 --- a/npm/ng-packs/angular.json +++ b/npm/ng-packs/angular.json @@ -323,6 +323,111 @@ } } } + }, + "identity-config": { + "projectType": "library", + "root": "packages/identity-config", + "sourceRoot": "packages/identity-config/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/identity-config/tsconfig.lib.json", + "project": "packages/identity-config/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/identity-config/src/test.ts", + "tsConfig": "packages/identity-config/tsconfig.spec.json", + "karmaConfig": "packages/identity-config/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/identity-config/tsconfig.lib.json", + "packages/identity-config/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "account-config": { + "projectType": "library", + "root": "packages/account-config", + "sourceRoot": "packages/account-config/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/account-config/tsconfig.lib.json", + "project": "packages/account-config/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/account-config/src/test.ts", + "tsConfig": "packages/account-config/tsconfig.spec.json", + "karmaConfig": "packages/account-config/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/account-config/tsconfig.lib.json", + "packages/account-config/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "tenant-management-config": { + "projectType": "library", + "root": "packages/tenant-management-config", + "sourceRoot": "packages/tenant-management-config/src", + "prefix": "abp", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "packages/tenant-management-config/tsconfig.lib.json", + "project": "packages/tenant-management-config/ng-package.json" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "packages/tenant-management-config/src/test.ts", + "tsConfig": "packages/tenant-management-config/tsconfig.spec.json", + "karmaConfig": "packages/tenant-management-config/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "packages/tenant-management-config/tsconfig.lib.json", + "packages/tenant-management-config/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } } }, "defaultProject": "core" diff --git a/npm/ng-packs/packages/identity-config/src/lib/identity-config.module.ts b/npm/ng-packs/packages/identity-config/src/lib/identity-config.module.ts index 9753ed0d08..a354cd6a46 100644 --- a/npm/ng-packs/packages/identity-config/src/lib/identity-config.module.ts +++ b/npm/ng-packs/packages/identity-config/src/lib/identity-config.module.ts @@ -1,10 +1,8 @@ -import { NgModule, APP_INITIALIZER } from '@angular/core'; -import { noop, CoreModule } from '@abp/ng.core'; +import { noop } from '@abp/ng.core'; +import { APP_INITIALIZER, NgModule } from '@angular/core'; import { IdentityConfigService } from './services/identity-config.service'; -import { ThemeSharedModule } from '@abp/ng.theme.shared'; @NgModule({ - imports: [CoreModule, ThemeSharedModule], providers: [{ provide: APP_INITIALIZER, deps: [IdentityConfigService], useFactory: noop, multi: true }], }) export class IdentityConfigModule {} diff --git a/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts b/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts index 8b485e87c8..562f312eca 100644 --- a/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts +++ b/npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts @@ -1,14 +1,14 @@ -import { SettingTab } from '@abp/ng.theme.shared'; -import { Component, TrackByFunction } from '@angular/core'; +import { Component, TrackByFunction, OnInit } from '@angular/core'; +import { SettingTab, SETTING_TABS } from '@abp/ng.theme.shared'; import { Router } from '@angular/router'; -import { ABP, ConfigState } from '@abp/ng.core'; import { Store } from '@ngxs/store'; +import { ConfigState } from '@abp/ng.core'; @Component({ selector: 'abp-setting-management', templateUrl: './setting-management.component.html', }) -export class SettingManagementComponent { +export class SettingManagementComponent implements OnInit { settings: SettingTab[] = []; selected = {} as SettingTab; @@ -18,35 +18,11 @@ export class SettingManagementComponent { constructor(private router: Router, private store: Store) {} ngOnInit() { - this.setSettings(); - } - - setSettings() { - const { data } = this.router.config.find(r => r.path === 'setting-management') as { - data: ABP.Dictionary; - }; - - if (data) { - Object.keys(data).forEach(key => { - const element = data[key]; - if (element && element.component) { - if ( - element.requiredPolicy && - !this.store.selectSnapshot(ConfigState.getGrantedPolicy(element.requiredPolicy)) - ) { - return; - } - - this.settings.push(element); - } - }); - - if (this.settings.length) { - this.settings = this.settings.sort((a, b) => a.order - b.order); - this.selected = this.settings[0]; - } + if (this.settings.length) { + this.settings = SETTING_TABS.filter(setting => + this.store.selectSnapshot(ConfigState.getGrantedPolicy(setting.requiredPolicy)), + ).sort((a, b) => a.order - b.order); + this.selected = this.settings[0]; } } - - ngOnDestroy() {} } diff --git a/npm/ng-packs/packages/tenant-management-config/README.md b/npm/ng-packs/packages/tenant-management-config/README.md new file mode 100644 index 0000000000..77548feaf9 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/README.md @@ -0,0 +1 @@ +# @abp/ng.tenant-management.config \ No newline at end of file diff --git a/npm/ng-packs/packages/tenant-management-config/karma.conf.js b/npm/ng-packs/packages/tenant-management-config/karma.conf.js new file mode 100644 index 0000000000..850929cc06 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../../coverage/tenant-management-config'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/npm/ng-packs/packages/tenant-management-config/ng-package.json b/npm/ng-packs/packages/tenant-management-config/ng-package.json new file mode 100644 index 0000000000..834556113c --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/tenant-management-config", + "lib": { + "entryFile": "src/public-api.ts" + } +} \ No newline at end of file diff --git a/npm/ng-packs/packages/tenant-management-config/package.json b/npm/ng-packs/packages/tenant-management-config/package.json new file mode 100644 index 0000000000..43b4392733 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/package.json @@ -0,0 +1,7 @@ +{ + "name": "@abp/ng.tenant-management.config", + "version": "0.0.1", + "publishConfig": { + "access": "public" + } +} diff --git a/npm/ng-packs/packages/tenant-management-config/src/lib/services/tenant-management-config.service.ts b/npm/ng-packs/packages/tenant-management-config/src/lib/services/tenant-management-config.service.ts new file mode 100644 index 0000000000..8d77d1005f --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/src/lib/services/tenant-management-config.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { ABP_ROUTES, eLayoutType } from '@abp/ng.core'; + +@Injectable({ + providedIn: 'root', +}) +export class TenantManagementConfigService { + constructor() { + ABP_ROUTES.push({ + name: 'AbpTenantManagement::Menu:TenantManagement', + path: 'tenant-management', + parentName: 'AbpUiNavigation::Menu:Administration', + layout: eLayoutType.application, + iconClass: 'fa fa-users', + children: [ + { + path: 'tenants', + name: 'AbpTenantManagement::Tenants', + order: 1, + requiredPolicy: 'AbpTenantManagement.Tenants', + }, + ], + }); + } +} diff --git a/npm/ng-packs/packages/tenant-management-config/src/lib/tenant-management-config.module.ts b/npm/ng-packs/packages/tenant-management-config/src/lib/tenant-management-config.module.ts new file mode 100644 index 0000000000..7f59d28be4 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/src/lib/tenant-management-config.module.ts @@ -0,0 +1,8 @@ +import { NgModule, APP_INITIALIZER } from '@angular/core'; +import { TenantManagementConfigService } from './services/tenant-management-config.service'; +import { noop } from '@abp/ng.core'; + +@NgModule({ + providers: [{ provide: APP_INITIALIZER, deps: [TenantManagementConfigService], useFactory: noop, multi: true }], +}) +export class TenantManagementConfigModule {} diff --git a/npm/ng-packs/packages/tenant-management-config/src/public-api.ts b/npm/ng-packs/packages/tenant-management-config/src/public-api.ts new file mode 100644 index 0000000000..2067a98b7e --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of tenant-management-config + */ + +export * from './lib/services/tenant-management-config.service'; +export * from './lib/tenant-management-config.component'; +export * from './lib/tenant-management-config.module'; diff --git a/npm/ng-packs/packages/tenant-management-config/src/test.ts b/npm/ng-packs/packages/tenant-management-config/src/test.ts new file mode 100644 index 0000000000..978c64fb83 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/src/test.ts @@ -0,0 +1,21 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/npm/ng-packs/packages/tenant-management-config/tsconfig.lib.json b/npm/ng-packs/packages/tenant-management-config/tsconfig.lib.json new file mode 100644 index 0000000000..bd23948e59 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/tsconfig.lib.json @@ -0,0 +1,26 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json b/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json new file mode 100644 index 0000000000..16da33db07 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/npm/ng-packs/packages/tenant-management-config/tslint.json b/npm/ng-packs/packages/tenant-management-config/tslint.json new file mode 100644 index 0000000000..8c3919ea62 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management-config/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "abp", + "camelCase" + ], + "component-selector": [ + true, + "element", + "abp", + "kebab-case" + ] + } +} diff --git a/npm/ng-packs/packages/tenant-management/ng-package.json b/npm/ng-packs/packages/tenant-management/ng-package.json index 07fbab773b..959eae44ab 100644 --- a/npm/ng-packs/packages/tenant-management/ng-package.json +++ b/npm/ng-packs/packages/tenant-management/ng-package.json @@ -4,5 +4,9 @@ "lib": { "entryFile": "src/public-api.ts" }, - "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared", "@abp/ng.feature-management"] + "whitelistedNonPeerDependencies": [ + "@abp/ng.theme.shared", + "@abp/ng.feature-management", + "@abp/ng.tenant-management.config" + ] } diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 8f59b9179d..c1b3909534 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -3,7 +3,8 @@ "version": "0.9.0", "dependencies": { "@abp/ng.theme.shared": "^0.9.0", - "@abp/ng.feature-management": "^0.9.0" + "@abp/ng.feature-management": "^0.9.0", + "@abp/ng.tenant-management.config": "^0.0.1" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts b/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts index 5aad33a3c4..ad919c8ee1 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/constants/routes.ts @@ -1,5 +1,9 @@ import { ABP, eLayoutType } from '@abp/ng.core'; +/** + * + * @deprecated since version 0.9.0 + */ export const TENANT_MANAGEMENT_ROUTES = { routes: [ { diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts index f8a258da3b..5ab4f20716 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts @@ -25,6 +25,10 @@ import { NgxValidateCoreModule } from '@ngx-validate/core'; }) export class TenantManagementModule {} +/** + * + * @deprecated since version 0.9.0 + */ export function TenantManagementProviders(): Provider[] { return []; } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts index 427fa54e41..b9778da11f 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/setting-management.ts @@ -6,3 +6,5 @@ export interface SettingTab { order: number; requiredPolicy?: string; } + +export const SETTING_TABS = [] as SettingTab[];