diff --git a/admin/webapp/.browserslistrc b/admin/webapp/.browserslistrc index 251d34200..2af9b2d83 100644 --- a/admin/webapp/.browserslistrc +++ b/admin/webapp/.browserslistrc @@ -1,12 +1,16 @@ # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. + # For additional information regarding the format and rule options, please see: + # https://github.com/browserslist/browserslist#queries # For the full list of supported browsers by the Angular framework, please see: + # https://angular.io/guide/browser-support # You can see what browsers were selected by your queries by running: -# npx browserslist + +# npx browserslist last 1 Chrome version last 1 Firefox version @@ -14,4 +18,3 @@ last 2 Edge major versions last 2 Safari major versions last 2 iOS major versions Firefox ESR -IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/admin/webapp/.eslintrc.json b/admin/webapp/.eslintrc.json deleted file mode 100644 index 9eec1569c..000000000 --- a/admin/webapp/.eslintrc.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "root": true, - "ignorePatterns": [], - "overrides": [ - { - "files": [ - "*.ts" - ], - "parserOptions": { - "project": [ - "tsconfig.json" - ], - "createDefaultProgram": true - }, - "extends": [ - "plugin:@angular-eslint/recommended", - "plugin:@angular-eslint/template/process-inline-templates", - "plugin:prettier/recommended" - ], - "rules": {} - }, - { - "files": [ - "*.html" - ], - "extends": [ - "plugin:@angular-eslint/template/recommended" - ], - "plugins": [ - "angular-data-test-id" - ], - "rules": { - "angular-data-test-id/data-test-id": "off" - } - }, - { - "files": [ - "*.html" - ], - "excludedFiles": [ - "*inline-template-*.component.html" - ], - "extends": [ - "plugin:prettier/recommended" - ], - "rules": { - "prettier/prettier": [ - "error", - { - "parser": "angular" - } - ] - } - } - ] -} diff --git a/admin/webapp/.nvmrc b/admin/webapp/.nvmrc index 82c219143..1e4f3920b 100644 --- a/admin/webapp/.nvmrc +++ b/admin/webapp/.nvmrc @@ -1 +1 @@ -12.22.12 +24.12.0 \ No newline at end of file diff --git a/admin/webapp/angular.json b/admin/webapp/angular.json index 0e82ab58b..a2781d3d9 100644 --- a/admin/webapp/angular.json +++ b/admin/webapp/angular.json @@ -41,15 +41,12 @@ "screenfull", "@antv/algorithm/lib/asyncIndex", "color", - "insert-css", - ], - "assets": [ - "websrc/favicon.ico", - "websrc/assets" + "insert-css" ], + "assets": ["websrc/favicon.ico", "websrc/assets"], "styles": [ "websrc/app/core/systemPrepare/systemPrepare.scss", - "websrc/styles.scss", + "websrc/styles.scss" ], "stylePreprocessorOptions": { "includePaths": ["websrc/app/common/styles"] @@ -125,10 +122,7 @@ "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", - "assets": [ - "websrc/favicon.ico", - "websrc/assets" - ], + "assets": ["websrc/favicon.ico", "websrc/assets"], "styles": [ "websrc/app/core/systemPrepare/systemPrepare.scss", "websrc/styles.scss" @@ -146,16 +140,12 @@ "lint": { "builder": "@angular-eslint/builder:lint", "options": { - "lintFilePatterns": [ - "websrc/app/**/*.ts", - "websrc/app/**/*.html" - ] + "lintFilePatterns": ["websrc/app/**/*.ts", "websrc/app/**/*.html"] } } } } }, - "defaultProject": "neuvector", "cli": { "analytics": false, "defaultCollection": "@angular-eslint/schematics", diff --git a/admin/webapp/eslint.config.mjs b/admin/webapp/eslint.config.mjs new file mode 100644 index 000000000..05c225b0f --- /dev/null +++ b/admin/webapp/eslint.config.mjs @@ -0,0 +1,69 @@ +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import { defineConfig, globalIgnores } from 'eslint/config'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default defineConfig([ + globalIgnores([ + '**/dist/**', + '**/node_modules/**', + '**/root/**', + '**/assets/**', + '.angular/**', + '**/*.woff', + '**/*.woff2', + ]), + + { + files: ['**/*.ts'], + extends: [ + ...compat.extends( + 'plugin:@angular-eslint/recommended', + 'plugin:@angular-eslint/template/process-inline-templates' + ), + eslintPluginPrettierRecommended, + ], + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + parserOptions: { + project: ['tsconfig.json'], + createDefaultProgram: true, + }, + }, + rules: { + '@angular-eslint/prefer-standalone': 'off', + '@angular-eslint/prefer-inject': 'off', + }, + }, + + { + files: ['**/*.html'], + extends: [...compat.extends('plugin:@angular-eslint/template/recommended')], + }, + + { + files: ['**/*.html'], + ignores: ['**/*inline-template-*.component.html'], + extends: [eslintPluginPrettierRecommended], + rules: { + 'prettier/prettier': [ + 'error', + { + parser: 'angular', + }, + ], + }, + }, +]); diff --git a/admin/webapp/package.json b/admin/webapp/package.json index 5e02cd4cb..6349731e6 100644 --- a/admin/webapp/package.json +++ b/admin/webapp/package.json @@ -5,6 +5,10 @@ "author": "SUSE NeuVector", "license": "Apache License", "private": true, + "engines": { + "node": ">=22.11.0", + "npm": ">=10.0.0" + }, "scripts": { "ng": "ng", "start": "ng serve", @@ -15,43 +19,29 @@ "format": "prettier --write \"websrc/app/**/*.{ts,html,json}\"", "format:check": "prettier --config ./.prettierrc --list-different \"websrc/app/**/*.{ts,html,json}\"", "prebuild:watch": "npm run prebuild", - "build:watch": "ng lint --fix; ng build --watch --configuration development", + "build:watch": "ng build --watch --configuration development", "test": "ng test" }, "dependencies": { - "@angular-slider/ngx-slider": "^2.0.4", - "@angular/animations": "14.3.0", - "@angular/cdk": "14.2.7", - "@angular/common": "14.3.0", - "@angular/compiler": "14.3.0", - "@angular/core": "14.3.0", - "@angular/forms": "14.3.0", - "@angular/material": "14.2.7", - "@angular/platform-browser": "14.3.0", - "@angular/platform-browser-dynamic": "14.3.0", - "@angular/router": "14.3.0", + "@angular-slider/ngx-slider": "^20.0.0", + "@angular/material": "^20.2.14", "@antv/g6": "^4.8.9", "@circlon/angular-tree-component": "11.0.4", "@fortawesome/fontawesome-free": "5.15.4", - "@fullcalendar/angular": "5.11.5", - "@fullcalendar/bootstrap": "4.4.2", - "@fullcalendar/core": "4.4.2", - "@fullcalendar/daygrid": "4.4.2", - "@fullcalendar/interaction": "4.4.2", - "@fullcalendar/list": "4.4.2", - "@fullcalendar/timegrid": "4.4.2", - "@ngx-formly/core": "^5.11.1", - "@ngx-formly/material": "^5.11.1", - "@ngx-translate/core": "11.0.1", + "@fullcalendar/angular": "^6.1.20", + "@fullcalendar/bootstrap5": "^6.1.20", + "@fullcalendar/core": "^6.1.20", + "@fullcalendar/daygrid": "^6.1.20", + "@fullcalendar/interaction": "^6.1.20", + "@fullcalendar/list": "^6.1.20", + "@fullcalendar/timegrid": "^6.1.20", + "@ngx-formly/core": "^7.0.1", + "@ngx-formly/material": "^7.0.1", + "@ngx-translate/core": "^17.0.0", "@ngx-translate/http-loader": "4.0.0", - "@typescript-eslint/eslint-plugin": "^5.19.0", - "@typescript-eslint/parser": "^5.19.0", "ag-grid-angular": "^31.3.4", "ag-grid-community": "^31.3.4", - "ang-jsoneditor": "^1.10.5", - "angular-gauge": "^4.0.0", "angular-imask": "6.6.3", - "angular-notifier": "^11.0.0", "axe-core": "^4.4.1", "bootstrap": "5.3.3", "chart.js": "3.9.1", @@ -61,8 +51,8 @@ "country-flag-icons": "^1.5.5", "easy-pie-chart": "2.1.7", "enhanced-resolve": "3.4.1", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.0.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.5", "file-saver": "^2.0.5", "hammerjs": "2.0.8", "html-entities": "^2.3.3", @@ -72,24 +62,24 @@ "jquery-slimscroll": "1.3.8", "jquery-sparkline": "2.4.0", "jquery.browser": "0.1.0", - "jsoneditor": "^9.9.2", - "lodash": "4.17.21", + "jsoneditor": "^10.4.2", + "lodash": "^4.17.23", "moment": "2.30.1", "ng2-charts": "3.0.8", - "ng2-file-upload": "^1.4.0", - "ngx-avatar": "^4.1.0", - "ngx-bootstrap": "5.6.2", - "ngx-cookie-service": "13.1.2", + "ng2-file-upload": "^9.0.0", + "ngx-avatars": "^1.10.1", + "ngx-bootstrap": "^20.0.2", + "ngx-cookie-service": "^20.1.1", + "ngx-gauge": "^12.0.0", "ngx-infinite-scroll": "9.1.0", "ngx-select-ex": "4.0.0", - "ngx-toastr": "13.2.1", + "ngx-timeago": "^4.0.0", + "ngx-toastr": "^19.1.0", "ngx-webstorage-service": "^5.0.0", "pako": "^2.0.4", "popper.js": "1.16.1", - "prettier": "^2.6.2", - "prettier-eslint": "^13.0.0", + "prettier-eslint": "^16.4.2", "roboto-fontface": "0.10.0", - "rxjs": "6.6.7", "rxjs-compat": "6.6.7", "save-dev": "0.0.1-security", "screenfull": "3.3.3", @@ -101,59 +91,63 @@ "ts-helpers": "1.1.2", "tslib": "2.8.1", "uuid": "^8.3.2", - "web-animations-js": "2.3.2", - "zone.js": "0.11.4" + "web-animations-js": "2.3.2" }, "devDependencies": { - "@angular-builders/custom-webpack": "14.1.0", - "@angular-devkit/build-angular": "14.2.13", - "@angular-eslint/builder": "14.4.0", - "@angular-eslint/eslint-plugin": "14.4.0", - "@angular-eslint/eslint-plugin-template": "14.4.0", - "@angular-eslint/schematics": "14.4.0", - "@angular-eslint/template-parser": "14.4.0", - "@angular/cli": "14.2.13", - "@angular/compiler-cli": "14.3.0", + "@angular-builders/custom-webpack": "^20.0.0", + "@angular-devkit/build-angular": "^20.3.13", + "@angular-eslint/builder": "^20.0.0", + "@angular-eslint/eslint-plugin": "^20.0.0", + "@angular-eslint/eslint-plugin-template": "^20.0.0", + "@angular-eslint/schematics": "^20.0.0", + "@angular-eslint/template-parser": "^20.0.0", + "@angular/animations": "^20.3.15", + "@angular/cdk": "^20.2.14", + "@angular/cli": "^20.3.13", + "@angular/common": "^20.3.15", + "@angular/compiler": "^20.3.15", + "@angular/compiler-cli": "^20.3.15", + "@angular/core": "^20.3.15", + "@angular/forms": "^20.3.15", + "@angular/platform-browser": "^20.3.15", + "@angular/platform-browser-dynamic": "^20.3.15", + "@angular/router": "^20.3.15", + "@eslint/eslintrc": "^3.3.3", + "@eslint/js": "^9.39.2", "@types/codemirror": "0.0.109", "@types/file-saver": "^2.0.5", "@types/jasmine": "3.10.18", "@types/jasminewd2": "2.0.13", "@types/jquery": "3.5.32", "@types/lodash": "4.14.118", - "@types/node": "12.20.55", + "@types/node": "^22.10.0", "@types/uuid": "^8.3.4", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/utils": "^8.53.1", + "ajv": "^8.17.1", + "ajv-keywords": "^5.1.0", "brotli-webpack-plugin": "^1.1.0", "compression-webpack-plugin": "^10.0.0", - "eslint": "^8.12.0", - "eslint-plugin-angular-data-test-id": "^1.0.0", + "eslint": "^9.39.2", "husky": "^7.0.4", "jasmine-core": "3.99.1", "jasmine-spec-reporter": "5.0.2", "karma": "6.4.4", "karma-chrome-launcher": "3.2.0", - "karma-cli": "1.0.1", "karma-coverage": "~2.2.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-jasmine": "4.0.2", "karma-jasmine-html-reporter": "1.7.0", "karma-read-json": "1.1.0", "loaders.css": "0.1.2", + "prettier": "^3.8.0", + "rxjs": "^7.8.2", + "schema-utils": "^4.3.3", "ts-node": "8.10.2", - "tslint": "6.1.3", - "typescript": "4.6.2" - }, - "overrides": { - "@angular/cli": { - "semver": "7.7.1" - }, - "@angular-eslint/schematics": { - "semver": "7.7.1" - }, - "@nrwl/devkit": { - "semver": "7.7.1" - }, - "@nrwl/cli": { - "semver": "7.7.1" - } + "typescript": "5.8", + "webpack": "^5.103.0", + "webpack-dev-server": "^5.2.3", + "zone.js": "^0.15.0" } } diff --git a/admin/webapp/websrc/app/app.component.ts b/admin/webapp/websrc/app/app.component.ts index aaa8aa07f..efddae3c9 100644 --- a/admin/webapp/websrc/app/app.component.ts +++ b/admin/webapp/websrc/app/app.component.ts @@ -23,7 +23,9 @@ import { Cluster, ClusterData } from '@common/types'; import { MapConstant } from '@common/constants/map.constant'; @Component({ + standalone: false, selector: 'app-root', + templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], }) @@ -196,9 +198,12 @@ export class AppComponent implements OnInit { fn(...args); if (GlobalVariable.user) { if (timeout) clearTimeout(timeout); - timeout = setTimeout(() => { - fn(...args); - }, GlobalVariable.user.token.timeout * 1000 + 10000); + timeout = setTimeout( + () => { + fn(...args); + }, + GlobalVariable.user.token.timeout * 1000 + 10000 + ); } timerId = null; }, delay); diff --git a/admin/webapp/websrc/app/app.module.ts b/admin/webapp/websrc/app/app.module.ts index d39d3b92c..547384dc5 100644 --- a/admin/webapp/websrc/app/app.module.ts +++ b/admin/webapp/websrc/app/app.module.ts @@ -1,6 +1,5 @@ -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; // this is needed! import { NgModule, Inject } from '@angular/core'; -import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { HttpClient, provideHttpClient } from '@angular/common/http'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; @@ -13,6 +12,13 @@ import { RoutesModule } from './routes/routes.module'; import { GlobalVariable } from '@common/variables/global.variable'; import { GlobalConstant } from '@common/constants/global.constant'; import { LOCAL_STORAGE, StorageService } from 'ngx-webstorage-service'; +import { BrowserModule } from '@angular/platform-browser'; +import { + HTTP_INTERCEPTORS, + withInterceptorsFromDi, +} from '@angular/common/http'; +import { AuthInterceptor } from '@core/interceptor/auth.interceptor'; +import { provideAnimations } from '@angular/platform-browser/animations'; export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); @@ -27,12 +33,11 @@ export function getWindow() { @NgModule({ declarations: [AppComponent], imports: [ - HttpClientModule, - BrowserAnimationsModule, CoreModule, FrameModule, NvCommonModule.forRoot(), RoutesModule, + BrowserModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, @@ -41,7 +46,16 @@ export function getWindow() { }, }), ], - providers: [{ provide: WindowWrapper, useFactory: getWindow }], + providers: [ + provideHttpClient(withInterceptorsFromDi()), + { provide: WindowWrapper, useFactory: getWindow }, + { + provide: HTTP_INTERCEPTORS, + useClass: AuthInterceptor, + multi: true, // This is mandatory + }, + provideAnimations(), + ], bootstrap: [AppComponent], }) export class AppModule { diff --git a/admin/webapp/websrc/app/common/api/assets-http.service.ts b/admin/webapp/websrc/app/common/api/assets-http.service.ts index fd4cfc1e2..f2ecfadc2 100644 --- a/admin/webapp/websrc/app/common/api/assets-http.service.ts +++ b/admin/webapp/websrc/app/common/api/assets-http.service.ts @@ -19,7 +19,37 @@ import { import { PathConstant } from '@common/constants/path.constant'; import { PlatformsData } from '@common/types/compliance/platformsData'; import { Observable } from 'rxjs'; -import { pluck } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; + +interface WorkloadResponse { + workloads: Workload[]; +} + +interface VulnerabilityReportResponse { + report: { + vulnerabilities: Vulnerability[]; + }; +} + +interface ProcessInfoResponse { + processes: ProcessInfo[]; +} + +interface ConfigResponse { + config: ScanConfig; +} + +interface ControllerResponse { + controllers: Controller[]; +} + +interface EnforcerResponse { + enforcers: Enforcer[]; +} + +interface ScannerResponse { + scanners: Scanner[]; +} @Injectable() export class AssetsHttpService { @@ -42,8 +72,8 @@ export class AssetsHttpService { getContainers(): Observable { return GlobalVariable.http - .get(PathConstant.CONTAINER_URL) - .pipe(pluck('workloads')); + .get(PathConstant.CONTAINER_URL) + .pipe(map(r => r.workloads)); } getScannedContainers(start: number, limit: number): Observable { @@ -72,10 +102,10 @@ export class AssetsHttpService { isShowingAccepted ? { id, show: 'accepted' } : { id } ) as any; return GlobalVariable.http - .get(PathConstant.SCAN_URL, { + .get(PathConstant.SCAN_URL, { params, }) - .pipe(pluck('report', 'vulnerabilities')); + .pipe(map(r => r.report.vulnerabilities)); } getHostReport( @@ -86,8 +116,8 @@ export class AssetsHttpService { isShowingAccepted ? { id, show: 'accepted' } : { id } ) as any; return GlobalVariable.http - .get(PathConstant.SCAN_HOST_URL, { params }) - .pipe(pluck('report', 'vulnerabilities')); + .get(PathConstant.SCAN_HOST_URL, { params }) + .pipe(map(r => r.report.vulnerabilities)); } getPlatformReport( @@ -98,36 +128,40 @@ export class AssetsHttpService { isShowingAccepted ? { platform, show: 'accepted' } : { platform } ) as any; return GlobalVariable.http - .get(PathConstant.SCAN_PLATFORM_URL, { params }) - .pipe(pluck('report', 'vulnerabilities')); + .get(PathConstant.SCAN_PLATFORM_URL, { + params, + }) + .pipe(map(r => r.report.vulnerabilities)); } getNodeWorkloads(id: string): Observable { return GlobalVariable.http - .get(PathConstant.NODE_WORKLOADS_URL, { params: { id } }) - .pipe(pluck('workloads')); + .get(PathConstant.NODE_WORKLOADS_URL, { + params: { id }, + }) + .pipe(map(r => r.workloads)); } getProcess(id: string): Observable { return GlobalVariable.http - .get(PathConstant.CONTAINER_PROCESS_URL, { + .get(PathConstant.CONTAINER_PROCESS_URL, { params: { id }, }) - .pipe(pluck('processes')); + .pipe(map(r => r.processes)); } getProcessHistory(id: string): Observable { return GlobalVariable.http - .get(PathConstant.CONTAINER_PROCESS_HISTORY_URL, { + .get(PathConstant.CONTAINER_PROCESS_HISTORY_URL, { params: { id }, }) - .pipe(pluck('processes')); + .pipe(map(r => r.processes)); } getScanConfig(): Observable { return GlobalVariable.http - .get(PathConstant.SCAN_CONFIG_URL) - .pipe(pluck('config')); + .get(PathConstant.SCAN_CONFIG_URL) + .pipe(map(r => r.config)); } postScanConfig(config: ScanConfig): Observable { @@ -189,8 +223,8 @@ export class AssetsHttpService { getControllers(): Observable { return GlobalVariable.http - .get(PathConstant.CONTROLLER_URL) - .pipe(pluck('controllers')); + .get(PathConstant.CONTROLLER_URL) + .pipe(map(r => r.controllers)); } getControllerStats(id: string): Observable { @@ -202,8 +236,8 @@ export class AssetsHttpService { getEnforcers(): Observable { return GlobalVariable.http - .get(PathConstant.ENFORCER_URL) - .pipe(pluck('enforcers')); + .get(PathConstant.ENFORCER_URL) + .pipe(map(r => r.enforcers)); } getEnforcerStats(id: string): Observable { @@ -214,7 +248,7 @@ export class AssetsHttpService { getScanners(): Observable { return GlobalVariable.http - .get(PathConstant.SCANNER_URL) - .pipe(pluck('scanners')); + .get(PathConstant.SCANNER_URL) + .pipe(map(r => r.scanners)); } } diff --git a/admin/webapp/websrc/app/common/api/auth-http.service.ts b/admin/webapp/websrc/app/common/api/auth-http.service.ts index 2c8f0fb63..766277e59 100644 --- a/admin/webapp/websrc/app/common/api/auth-http.service.ts +++ b/admin/webapp/websrc/app/common/api/auth-http.service.ts @@ -20,20 +20,48 @@ import { } from '@common/types'; import { GlobalVariable } from '@common/variables/global.variable'; import { Observable } from 'rxjs'; -import { map, pluck } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; + +interface SsoServerResponse { + redirect: SsoServer; +} + +interface LicenseResponse { + license: LicenseGetResponse; +} + +interface PublicPasswordProfileResponse { + pwd_profiles: PublicPasswordProfile; +} + +interface RoleResponse { + roles: Role[]; +} + +interface ApikeyResponse { + apikey: Apikey; +} + +interface ApikeyInitResponse { + apikey: ApikeyInit; +} + +interface PermissionOptionsResponse { + options: PermissionOptionResponse; +} @Injectable() export class AuthHttpService { getSamlSLOServer(): Observable { return GlobalVariable.http - .get(PathConstant.SAML_SLO_URL) - .pipe(pluck('redirect')); + .get(PathConstant.SAML_SLO_URL) + .pipe(map(r => r.redirect)); } getLicense(): Observable { return GlobalVariable.http - .get(PathConstant.LICENSE_URL) - .pipe(pluck('license')); + .get(PathConstant.LICENSE_URL) + .pipe(map(r => r.license)); } postLicense(body: RenewLicensePostBody): Observable { @@ -89,8 +117,8 @@ export class AuthHttpService { getRoles(): Observable { return GlobalVariable.http - .get(PathConstant.ROLES) - .pipe(pluck('roles')); + .get(PathConstant.ROLES) + .pipe(map(r => r.roles)); } addRole(role: Role): Observable { @@ -117,18 +145,18 @@ export class AuthHttpService { getApikey(name: string): Observable { return GlobalVariable.http - .get(PathConstant.APIKEY_URL, { + .get(PathConstant.APIKEY_URL, { params: { name }, }) - .pipe(pluck('apikey')); + .pipe(map(r => r.apikey)); } postApikey(apikey: Apikey): Observable { return GlobalVariable.http - .post(PathConstant.APIKEY_URL, { + .post(PathConstant.APIKEY_URL, { apikey, }) - .pipe(pluck('apikey')); + .pipe(map(r => r.apikey)); } deleteApikey(name: string): Observable { @@ -161,15 +189,16 @@ export class AuthHttpService { getPermissionOptions(): Observable { return GlobalVariable.http - .get(PathConstant.PERMISSION_OPTIONS) - .pipe(pluck('options')); + .get(PathConstant.PERMISSION_OPTIONS) + .pipe(map(r => r.options)); } getPwdProfile(): Observable { return GlobalVariable.http - .get<{ pwd_profiles: PasswordProfile[]; active_profile_name: string }>( - PathConstant.PASSWORD_PROFILE - ) + .get<{ + pwd_profiles: PasswordProfile[]; + active_profile_name: string; + }>(PathConstant.PASSWORD_PROFILE) .pipe( map(pwdProfileResponse => { const active_profile_name = @@ -183,8 +212,8 @@ export class AuthHttpService { getPublicPwdProfile(): Observable { return GlobalVariable.http - .get(PathConstant.PUBLIC_PASSWORD_PROFILE) - .pipe(pluck('pwd_profile')); + .get(PathConstant.PUBLIC_PASSWORD_PROFILE) + .pipe(map(r => r.pwd_profiles)); } patchPwdProfile(profile: PasswordProfile): Observable { diff --git a/admin/webapp/websrc/app/common/api/config-http.service.ts b/admin/webapp/websrc/app/common/api/config-http.service.ts index 37c1495ed..e924f0151 100644 --- a/admin/webapp/websrc/app/common/api/config-http.service.ts +++ b/admin/webapp/websrc/app/common/api/config-http.service.ts @@ -12,7 +12,11 @@ import { } from '@common/types'; import { GlobalVariable } from '@common/variables/global.variable'; import { BehaviorSubject, Observable, throwError } from 'rxjs'; -import { pluck, catchError } from 'rxjs/operators'; +import { catchError, map } from 'rxjs/operators'; + +interface ConfigResponse { + config: ConfigV2Response; +} @Injectable() export class ConfigHttpService { @@ -29,8 +33,8 @@ export class ConfigHttpService { if (source) options = Object.assign(options, { params: { source: source } }); return GlobalVariable.http - .get(PathConstant.CONFIG_V2_URL, options) - .pipe(pluck('config')); + .get(PathConstant.CONFIG_V2_URL, options) + .pipe(map(r => r.config)); } getFedConfig(): Observable { @@ -57,7 +61,6 @@ export class ConfigHttpService { const options = { params: { id: exportMode }, responseType: 'arraybuffer' as any, - cache: false, headers: { 'Cache-Control': 'no-store' }, }; return GlobalVariable.http @@ -138,7 +141,6 @@ export class ConfigHttpService { getCspSupport() { const options = { responseType: 'arraybuffer' as any, - cache: false, headers: { 'Cache-Control': 'no-store' }, observe: 'response' as any, }; diff --git a/admin/webapp/websrc/app/common/api/events-http.service.ts b/admin/webapp/websrc/app/common/api/events-http.service.ts index 71860d0b0..a66ab0e50 100644 --- a/admin/webapp/websrc/app/common/api/events-http.service.ts +++ b/admin/webapp/websrc/app/common/api/events-http.service.ts @@ -3,30 +3,38 @@ import { PathConstant } from '@common/constants/path.constant'; import { Audit, EventItem } from '@common/types'; import { GlobalVariable } from '@common/variables/global.variable'; import { Observable } from 'rxjs'; -import { pluck } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; + +interface EventsResponse { + events: EventItem[]; +} + +interface AuditsResponse { + audits: Audit[]; +} @Injectable() export class EventsHttpService { getEvents(): Observable { return GlobalVariable.http - .get(PathConstant.EVENT_URL) - .pipe(pluck('events')); + .get(PathConstant.EVENT_URL) + .pipe(map(r => r.events)); } getEventsByLimit(start: number, limit: number): Observable { return GlobalVariable.http - .get(PathConstant.EVENT_URL, { + .get(PathConstant.EVENT_URL, { params: { start, limit, }, }) - .pipe(pluck('events')); + .pipe(map(r => r.events)); } getRiskReports(): Observable { return GlobalVariable.http - .get(PathConstant.AUDIT_URL) - .pipe(pluck('audits')); + .get(PathConstant.AUDIT_URL) + .pipe(map(r => r.audits)); } } diff --git a/admin/webapp/websrc/app/common/api/policy-http.service.ts b/admin/webapp/websrc/app/common/api/policy-http.service.ts index a394fde75..06f269afe 100644 --- a/admin/webapp/websrc/app/common/api/policy-http.service.ts +++ b/admin/webapp/websrc/app/common/api/policy-http.service.ts @@ -4,7 +4,32 @@ import { Group, NetworkRule, ResponseRule, Service } from '@common/types'; import { GlobalVariable } from '@common/variables/global.variable'; import { Observable } from 'rxjs'; import { GlobalConstant } from '@common/constants/global.constant'; -import { pluck } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; + +interface GroupResponse { + group: Group; +} + +interface ServiceResponse { + services: Service[]; + service: Service; +} + +interface ConfigResponse { + config: any; +} + +interface DLPGroupResponse { + dlp_group: any; +} + +interface WAFGroupResponse { + waf_group: any; +} + +interface SensorsResponse { + sensors: any[]; +} @Injectable() export class PolicyHttpService { @@ -30,10 +55,10 @@ export class PolicyHttpService { getGroup(name: string): Observable { return GlobalVariable.http - .get(PathConstant.GROUP_URL, { + .get(PathConstant.GROUP_URL, { params: { name }, }) - .pipe(pluck('group')); + .pipe(map(r => r.group)); } postGroup(payload) { @@ -68,20 +93,20 @@ export class PolicyHttpService { getServices(params?: any): Observable { if (params) { return GlobalVariable.http - .get(PathConstant.SERVICE_URL, { + .get(PathConstant.SERVICE_URL, { params, }) - .pipe(pluck('services')); + .pipe(map(r => r.services)); } return GlobalVariable.http - .get(PathConstant.SERVICE_URL) - .pipe(pluck('services')); + .get(PathConstant.SERVICE_URL) + .pipe(map(r => r.services)); } getService(name: string): Observable { return GlobalVariable.http - .get(PathConstant.SERVICE_URL, { params: { name } }) - .pipe(pluck('service')); + .get(PathConstant.SERVICE_URL, { params: { name } }) + .pipe(map(r => r.service)); } patchService(payload, config?) { @@ -113,8 +138,8 @@ export class PolicyHttpService { getGroupScript(name: string) { return GlobalVariable.http - .get(PathConstant.GROUP_SCRIPT_URL, { params: { name } }) - .pipe(pluck('config')); + .get(PathConstant.GROUP_SCRIPT_URL, { params: { name } }) + .pipe(map(r => r.config)); } patchGroupScript(payload) { @@ -123,8 +148,8 @@ export class PolicyHttpService { getDLPGroups(name: string) { return GlobalVariable.http - .get(PathConstant.DLP_GROUPS_URL, { params: { name } }) - .pipe(pluck('dlp_group')); + .get(PathConstant.DLP_GROUPS_URL, { params: { name } }) + .pipe(map(r => r.dlp_group)); } patchDLPGroup(payload) { @@ -147,14 +172,14 @@ export class PolicyHttpService { }); } return GlobalVariable.http - .get(PathConstant.DLP_SENSORS_URL, ...options) - .pipe(pluck('sensors')); + .get(PathConstant.DLP_SENSORS_URL, ...options) + .pipe(map(r => r.sensors)); } getWAFGroups(name: string) { return GlobalVariable.http - .get(PathConstant.WAF_GROUPS_URL, { params: { name } }) - .pipe(pluck('waf_group')); + .get(PathConstant.WAF_GROUPS_URL, { params: { name } }) + .pipe(map(r => r.waf_group)); } patchWAFGroup(payload) { @@ -177,7 +202,7 @@ export class PolicyHttpService { }); } return GlobalVariable.http - .get(PathConstant.WAF_SENSORS_URL, ...options) - .pipe(pluck('sensors')); + .get(PathConstant.WAF_SENSORS_URL, ...options) + .pipe(map(r => r.sensors)); } } diff --git a/admin/webapp/websrc/app/common/constants/global.constant.ts b/admin/webapp/websrc/app/common/constants/global.constant.ts index 8b06e6621..8811e198a 100644 --- a/admin/webapp/websrc/app/common/constants/global.constant.ts +++ b/admin/webapp/websrc/app/common/constants/global.constant.ts @@ -248,7 +248,6 @@ export class GlobalConstant { }; public static NOTIFICATION_TYPE = { - DEFAULT: 'default', INFO: 'info', SUCCESS: 'success', WARNING: 'warning', diff --git a/admin/webapp/websrc/app/common/directives/displayControl.directive.ts b/admin/webapp/websrc/app/common/directives/displayControl.directive.ts index a30a85ecd..f9f757d73 100644 --- a/admin/webapp/websrc/app/common/directives/displayControl.directive.ts +++ b/admin/webapp/websrc/app/common/directives/displayControl.directive.ts @@ -3,6 +3,7 @@ import { AuthUtilsService } from '@common/utils/auth.utils'; @Directive({ selector: '[appDisplayControl]', + standalone: false, }) export class DisplayControlDirective { constructor( diff --git a/admin/webapp/websrc/app/common/directives/maskInput.directive.ts b/admin/webapp/websrc/app/common/directives/maskInput.directive.ts index c79b245a9..55c486d59 100644 --- a/admin/webapp/websrc/app/common/directives/maskInput.directive.ts +++ b/admin/webapp/websrc/app/common/directives/maskInput.directive.ts @@ -9,13 +9,17 @@ import { ControlContainer } from '@angular/forms'; @Directive({ selector: '[appMaskInput]', + standalone: false, }) export class MaskInputDirective implements OnInit { @Input() maskOnBlur = false; private value: any; private element: HTMLInputElement; - constructor(private el: ElementRef, private form: ControlContainer) { + constructor( + private el: ElementRef, + private form: ControlContainer + ) { this.element = el.nativeElement; } diff --git a/admin/webapp/websrc/app/common/directives/observe/observe.directive.ts b/admin/webapp/websrc/app/common/directives/observe/observe.directive.ts index 3a48aec4f..6822a48ad 100644 --- a/admin/webapp/websrc/app/common/directives/observe/observe.directive.ts +++ b/admin/webapp/websrc/app/common/directives/observe/observe.directive.ts @@ -21,6 +21,7 @@ export class ErrorContext { @Directive({ selector: '[appObserve]', + standalone: false, }) export class ObserveDirective implements OnDestroy, OnInit { private errorRef!: TemplateRef; diff --git a/admin/webapp/websrc/app/common/directives/observe/observe.module.ts b/admin/webapp/websrc/app/common/directives/observe/observe.module.ts index 15b75d937..f3b8514ef 100644 --- a/admin/webapp/websrc/app/common/directives/observe/observe.module.ts +++ b/admin/webapp/websrc/app/common/directives/observe/observe.module.ts @@ -3,6 +3,7 @@ import { ObserveDirective } from '@common/directives/observe/observe.directive'; @NgModule({ declarations: [ObserveDirective], + imports: [], exports: [ObserveDirective], }) export class ObserveModule {} diff --git a/admin/webapp/websrc/app/common/directives/remote-grid-binding.directive.ts b/admin/webapp/websrc/app/common/directives/remote-grid-binding.directive.ts index 4940992ca..dc1a11246 100644 --- a/admin/webapp/websrc/app/common/directives/remote-grid-binding.directive.ts +++ b/admin/webapp/websrc/app/common/directives/remote-grid-binding.directive.ts @@ -12,6 +12,7 @@ import { catchError, tap } from 'rxjs/operators'; @Directive({ selector: '[remoteGridBinding]', + standalone: false, }) export class RemoteGridBindingDirective { @Input() remoteGridBinding!: RemoteGridApi; diff --git a/admin/webapp/websrc/app/common/directives/two-way-infinite-scroll.directive.ts b/admin/webapp/websrc/app/common/directives/two-way-infinite-scroll.directive.ts index 457e139a6..3f2b9d6e9 100644 --- a/admin/webapp/websrc/app/common/directives/two-way-infinite-scroll.directive.ts +++ b/admin/webapp/websrc/app/common/directives/two-way-infinite-scroll.directive.ts @@ -8,10 +8,11 @@ import { @Directive({ selector: '[appTwoWayInfiniteScroll]', + standalone: false, }) export class TwoWayInfiniteScrollDirective implements OnInit { @Input() ctx: any; - element: HTMLDivElement; + element!: HTMLDivElement; constructor(private elementRef: ElementRef) { console.log('appTwoWayInfiniteScroll is working...'); diff --git a/admin/webapp/websrc/app/common/guards/pending-changes.guard.ts b/admin/webapp/websrc/app/common/guards/pending-changes.guard.ts index fb2248a65..562959c2a 100644 --- a/admin/webapp/websrc/app/common/guards/pending-changes.guard.ts +++ b/admin/webapp/websrc/app/common/guards/pending-changes.guard.ts @@ -7,9 +7,7 @@ export interface ComponentCanDeactivate { } @Injectable() -export class PendingChangesGuard - implements CanDeactivate -{ +export class PendingChangesGuard implements CanDeactivate { canDeactivate( component: ComponentCanDeactivate ): boolean | Observable { diff --git a/admin/webapp/websrc/app/common/neuvector-formly/button/button.component.ts b/admin/webapp/websrc/app/common/neuvector-formly/button/button.component.ts index c959cd948..18552d65c 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/button/button.component.ts +++ b/admin/webapp/websrc/app/common/neuvector-formly/button/button.component.ts @@ -2,7 +2,9 @@ import { Component } from '@angular/core'; import { FieldType, FieldTypeConfig } from '@ngx-formly/core'; @Component({ + standalone: false, selector: 'app-button', + templateUrl: './button.component.html', styleUrls: ['./button.component.scss'], }) diff --git a/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html b/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html index ab68b5cea..ebafd3845 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html +++ b/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.html @@ -1,6 +1,7 @@ {{ to.header | translate diff --git a/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.ts b/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.ts index 614d48377..8b2542b95 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.ts +++ b/admin/webapp/websrc/app/common/neuvector-formly/card/card.component.ts @@ -38,7 +38,9 @@ import { FieldType, FieldTypeConfig } from '@ngx-formly/core'; * }; */ @Component({ + standalone: false, selector: 'app-card', + templateUrl: './card.component.html', styleUrls: ['./card.component.scss'], }) diff --git a/admin/webapp/websrc/app/common/neuvector-formly/checkbox/checkbox.component.ts b/admin/webapp/websrc/app/common/neuvector-formly/checkbox/checkbox.component.ts index bc65ff92e..1a510376c 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/checkbox/checkbox.component.ts +++ b/admin/webapp/websrc/app/common/neuvector-formly/checkbox/checkbox.component.ts @@ -2,7 +2,9 @@ import { Component, OnInit } from '@angular/core'; import { FieldType, FieldTypeConfig } from '@ngx-formly/core'; @Component({ + standalone: false, selector: 'app-checkbox', + templateUrl: './checkbox.component.html', styleUrls: ['./checkbox.component.scss'], }) diff --git a/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.html b/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.html index f7cb6d7de..0bea2d76f 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.html +++ b/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.html @@ -1,10 +1,10 @@ - - {{ field.templateOptions.label || '' | translate }} - + {{ field.templateOptions?.label ?? '' | translate }} + - @@ -12,24 +12,24 @@ - + - + [placeholder]="field.templateOptions?.placeholder ?? '' | translate" + [required]="field.templateOptions?.required" /> + - {{ field.templateOptions.hint | translate }} + {{ field.templateOptions?.hint ?? '' | translate }} - {{ field.templateOptions.hint || '' | translate }} + {{ field.templateOptions?.hint ?? '' | translate }} diff --git a/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.ts b/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.ts index 8c83ce6d2..2e015329b 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.ts +++ b/admin/webapp/websrc/app/common/neuvector-formly/chips-input/chips-input.component.ts @@ -7,7 +7,9 @@ import { InputDialogComponent } from '@components/ui/input-dialog/input-dialog.c import { TranslateService } from '@ngx-translate/core'; @Component({ + standalone: false, selector: 'app-chips-input', + templateUrl: './chips-input.component.html', styleUrls: ['./chips-input.component.scss'], }) @@ -16,7 +18,10 @@ export class ChipsInputComponent extends FieldType { readonly separatorKeysCodes = [ENTER, COMMA] as const; chips: string[] = []; - constructor(private dialog: MatDialog, private tr: TranslateService) { + constructor( + private dialog: MatDialog, + private tr: TranslateService + ) { super(); } diff --git a/admin/webapp/websrc/app/common/neuvector-formly/edit-table-controls/edit-table-controls.component.ts b/admin/webapp/websrc/app/common/neuvector-formly/edit-table-controls/edit-table-controls.component.ts index 5e7e5bb10..795366bbe 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/edit-table-controls/edit-table-controls.component.ts +++ b/admin/webapp/websrc/app/common/neuvector-formly/edit-table-controls/edit-table-controls.component.ts @@ -3,6 +3,7 @@ import { FormControl, FormGroup } from '@angular/forms'; import { FieldType, FieldTypeConfig } from '@ngx-formly/core'; @Component({ + standalone: false, selector: 'app-edit-table-controls', templateUrl: './edit-table-controls.component.html', styleUrls: ['./edit-table-controls.component.scss'], diff --git a/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.html b/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.html index 1ed0330ac..1d91c0566 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.html +++ b/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.html @@ -10,16 +10,18 @@ *matHeaderCellDef [id]="currField.viewValue" [ngStyle]="{ - flex: currField.flexWidth ? '0 0 ' + currField.flexWidth : '1' + flex: currField.flexWidth ? '0 0 ' + currField.flexWidth : '1', }"> {{ currField.viewValue | translate }} - + @@ -33,7 +35,7 @@ type="button" class="mt-3" (click)="add()" - [disabled]="field.templateOptions.disabled"> - add_circle - {{ field.templateOptions.addButtonText | translate }} + [disabled]="field.templateOptions?.disabled"> + add_circle + {{ field.templateOptions?.addButtonText | translate }} diff --git a/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.ts b/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.ts index e80e6d9dd..31c34b7f5 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.ts +++ b/admin/webapp/websrc/app/common/neuvector-formly/edit-table/edit-table.component.ts @@ -13,7 +13,9 @@ interface VisibleField { } @Component({ + standalone: false, selector: 'app-edit-table', + templateUrl: './edit-table.component.html', styleUrls: ['./edit-table.component.scss'], }) @@ -29,12 +31,20 @@ export class EditTableComponent } ngOnInit(): void { - this.field.templateOptions.remove = this.remove.bind(this); - this.field.templateOptions.add = this.add.bind(this); + if (!this.field.props) { + this.field.props = {}; + } + + this.field.props.remove = this.remove.bind(this); + this.field.props.add = this.add.bind(this); + this.dataSource.data = this.field.fieldGroup!; - this.visibleFields = this.getFields(this.field.fieldArray!); + const fieldArray = + typeof this.field.fieldArray === 'function' + ? this.field.fieldArray(this.field) + : this.field.fieldArray!; + this.visibleFields = this.getFields(fieldArray); } - getFields(fa: FormlyFieldConfig): VisibleField[] { const ret: VisibleField[] = []; fa.fieldGroup?.forEach(ffg => { diff --git a/admin/webapp/websrc/app/common/neuvector-formly/edit-webhook-table-controls/edit-webhook-table-controls.component.html b/admin/webapp/websrc/app/common/neuvector-formly/edit-webhook-table-controls/edit-webhook-table-controls.component.html index 0178e6ccc..124e4835f 100644 --- a/admin/webapp/websrc/app/common/neuvector-formly/edit-webhook-table-controls/edit-webhook-table-controls.component.html +++ b/admin/webapp/websrc/app/common/neuvector-formly/edit-webhook-table-controls/edit-webhook-table-controls.component.html @@ -1,6 +1,6 @@
- - diff --git a/admin/webapp/websrc/app/routes/compliance/compliance.component.ts b/admin/webapp/websrc/app/routes/compliance/compliance.component.ts index 102c1fae5..d851b1cc3 100644 --- a/admin/webapp/websrc/app/routes/compliance/compliance.component.ts +++ b/admin/webapp/websrc/app/routes/compliance/compliance.component.ts @@ -5,6 +5,7 @@ import { ComplianceFilterService } from './compliance.filter.service'; import { MapConstant } from '@common/constants/map.constant'; @Component({ + standalone: false, selector: 'app-compliance', templateUrl: './compliance.component.html', styleUrls: ['./compliance.component.scss'], diff --git a/admin/webapp/websrc/app/routes/compliance/compliance.service.ts b/admin/webapp/websrc/app/routes/compliance/compliance.service.ts index a30d712c0..cbd9a8acb 100644 --- a/admin/webapp/websrc/app/routes/compliance/compliance.service.ts +++ b/admin/webapp/websrc/app/routes/compliance/compliance.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs'; -import { catchError, map, repeatWhen, tap } from 'rxjs/operators'; +import { catchError, map, startWith, switchMap, tap } from 'rxjs/operators'; import { Compliance, ComplianceAvailableFilters, @@ -63,82 +63,91 @@ export class ComplianceService { initCompliance() { this.initComplianceDetails(); - return combineLatest([ - this.getDomain(), - this.getContainer(), - this.getHost(), - this.getPlatform(), - this.getCompliance(), - this.getAvailableFilters(), - ]).pipe( - map(([domain, container, host, platform, compliance, filters]) => { - const complianceDist = { - error: 0, - high: 0, - warning: 0, - note: 0, - pass: 0, - manual: 0, - info: 0, - platform: 0, - image: 0, - node: 0, - container: 0, - }; - compliance.compliances.forEach(compliance => { - if (compliance.level === 'WARN') complianceDist.warning += 1; - if (compliance.level === 'INFO') complianceDist.info += 1; - if (compliance.level === 'PASS') complianceDist.pass += 1; - if (compliance.level === 'NOTE') complianceDist.note += 1; - if (compliance.level === 'ERROR') complianceDist.error += 1; - if (compliance.level === 'HIGH') complianceDist.high += 1; - if (compliance.level === 'MANUAL') complianceDist.manual += 1; - if (compliance.platforms.length) complianceDist.platform += 1; - if (compliance.images.length) complianceDist.image += 1; - if (compliance.nodes.length) complianceDist.node += 1; - if (compliance.workloads.length) complianceDist.container += 1; - }); - compliance = this.mapWorkloadService(compliance, this.workloadMap); - return { - domain, - container, - host, - platform, - compliance, - filters, - complianceDist, - }; - }), - tap( - ({ compliance: { compliances, kubernetes_cis_version }, filters }) => { - this.kubeVersion = kubernetes_cis_version; - this.complianceFilterService.workloadMap = this.workloadMap; - this.complianceFilterService.availableFilters = filters; - this.complianceFilterService.advFilter = - this.complianceFilterService.initAdvFilter(); - setRisks(compliances, this.workloadMap); - this.assetsViewPdfService.masterData = { - workloadMap4Pdf: this.workloadMap4Pdf, - hostMap4Pdf: this.hostMap4Pdf, - platformMap4Pdf: this.platformMap4Pdf, - imageMap4Pdf: this.imageMap4Pdf, - }; - if (this.complianceFilterService.isAdvFilterOn()) { - this.complianceFilterService.resetFilter( - this.complianceFilterService.advFilter - ); - this.complianceFilterService.filtered = true; - } else { - this.complianceFilterService.resetFilter(); - this.complianceFilterService.filtered = false; - } - this.complianceFilterService.filteredCis = compliances; - } - ), - // finalize(() => { - // this.runWorkers(); - // }), - repeatWhen(() => this.refreshSubject$) + return this.refreshSubject$.pipe( + startWith(null), + switchMap(() => + combineLatest([ + this.getDomain(), + this.getContainer(), + this.getHost(), + this.getPlatform(), + this.getCompliance(), + this.getAvailableFilters(), + ]).pipe( + map(([domain, container, host, platform, compliance, filters]) => { + const complianceDist = { + error: 0, + high: 0, + warning: 0, + note: 0, + pass: 0, + manual: 0, + info: 0, + platform: 0, + image: 0, + node: 0, + container: 0, + }; + + compliance.compliances.forEach(c => { + if (c.level === 'WARN') complianceDist.warning++; + if (c.level === 'INFO') complianceDist.info++; + if (c.level === 'PASS') complianceDist.pass++; + if (c.level === 'NOTE') complianceDist.note++; + if (c.level === 'ERROR') complianceDist.error++; + if (c.level === 'HIGH') complianceDist.high++; + if (c.level === 'MANUAL') complianceDist.manual++; + if (c.platforms.length) complianceDist.platform++; + if (c.images.length) complianceDist.image++; + if (c.nodes.length) complianceDist.node++; + if (c.workloads.length) complianceDist.container++; + }); + + compliance = this.mapWorkloadService(compliance, this.workloadMap); + + return { + domain, + container, + host, + platform, + compliance, + filters, + complianceDist, + }; + }), + tap( + ({ + compliance: { compliances, kubernetes_cis_version }, + filters, + }) => { + this.kubeVersion = kubernetes_cis_version; + this.complianceFilterService.workloadMap = this.workloadMap; + this.complianceFilterService.availableFilters = filters; + this.complianceFilterService.advFilter = + this.complianceFilterService.initAdvFilter(); + setRisks(compliances, this.workloadMap); + this.assetsViewPdfService.masterData = { + workloadMap4Pdf: this.workloadMap4Pdf, + hostMap4Pdf: this.hostMap4Pdf, + platformMap4Pdf: this.platformMap4Pdf, + imageMap4Pdf: this.imageMap4Pdf, + }; + + if (this.complianceFilterService.isAdvFilterOn()) { + this.complianceFilterService.resetFilter( + this.complianceFilterService.advFilter + ); + this.complianceFilterService.filtered = true; + } else { + this.complianceFilterService.resetFilter(); + this.complianceFilterService.filtered = false; + } + + this.complianceFilterService.filteredCis = compliances; + } + ) + ) + ) ); } diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/admission-rules.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/admission-rules.component.html index 709e62909..a2997b9ec 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/admission-rules.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/admission-rules.component.html @@ -22,7 +22,7 @@

class="policy-top-button" *appDisplayControl="'write_admission'" (click)="openConfigAssessmentDialog()"> - flask + flask {{ 'admissionControl.MATCHING_TEST' | translate }}

@@ -32,14 +32,14 @@

{{ 'admissionControl.MORE' | translate }} arrow_drop_down - + @@ -51,7 +51,7 @@

!selectedAdmissionRules || selectedAdmissionRules.length === 0 " (click)="openExportPopup()"> - download + download {{ 'admissionControl.EXPORT' | translate }} @@ -60,7 +60,7 @@

mat-menu-item class="d-flex align-items-center" (click)="openImportPopup()"> - upload + upload {{ 'admissionControl.IMPORT' | translate }} @@ -87,7 +87,7 @@

@@ -106,7 +106,7 @@

+ class="d-flex justify-content-end align-items-center me-2">
@@ -133,7 +133,7 @@

selectedAdmissionRules.length > 0 && !hasSelectedDefaultRule " - class="mr-2"> + class="me-2">

- +

diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/action-buttons/action-buttons.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/action-buttons/action-buttons.component.ts index f51b449b6..29dd143ec 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/action-buttons/action-buttons.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/action-buttons/action-buttons.component.ts @@ -16,6 +16,7 @@ import { NotificationService } from '@services/notification.service'; import { updateGridData } from '@common/utils/common.utils'; @Component({ + standalone: false, selector: 'app-action-buttons', templateUrl: './action-buttons.component.html', styleUrls: ['./action-buttons.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.html index 08af6ed28..eccac561a 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.html @@ -44,7 +44,7 @@

'text-deny': !addEditAdmissionRuleForm.controls.isException.value, 'text-success': - addEditAdmissionRuleForm.controls.isException.value + addEditAdmissionRuleForm.controls.isException.value, }"> {{ (addEditAdmissionRuleForm.controls.isException.value @@ -55,7 +55,7 @@

- + {{ 'admissionControl.COMMENT' | translate }} [attr.maxlength]="'general.FILTER_MAX_LEN' | translate" formControlName="comment" /> - + CRITERIA_PATTERN.RESOURCE ).includes(mainCriterion.name) " - appearance="standard" class="col-12 col-md-3"> mainCriterion.name !== 'saBindRiskyRole' && mainCriterion.name !== 'imageVerifiers' " - appearance="standard" class="col-12 col-md-4"> mainCriterion.name !== 'saBindRiskyRole' && mainCriterion.name !== 'imageVerifiers' " - appearance="standard" class="col-12 col-md-4"> - - + - + [matAutocomplete]="autoValueChip" [matChipInputFor]="valueChipList" [matChipInputSeparatorKeyCodes]="SEPARATOR_KEYS_CODES" /> - + CRITERIA_PATTERN.RESOURCE ).includes(subOption.name) && subOption.ops.length > 1 " - appearance="standard" class="col-12 col-md-3"> subOption.ops[0].toUpperCase() | translate }}
- + *ngIf=" UNITS[subOption.name] && UNITS[subOption.name].length > 1 " - appearance="standard" class="col-12 col-md-1">
- - @@ -374,7 +365,7 @@

cancel - + placeholder="{{ 'admissionControl.CRITERIA' | translate }}" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="SEPARATOR_KEYS_CODES" /> - +
{{ pspCriteria }}
@@ -441,7 +432,7 @@

> 'text-muted': !addEditAdmissionRuleForm.controls.enabled.value, 'text-success': - addEditAdmissionRuleForm.controls.enabled.value + addEditAdmissionRuleForm.controls.enabled.value, }"> {{ (addEditAdmissionRuleForm.controls.enabled.value @@ -530,7 +521,7 @@

@@ -542,19 +533,16 @@

- - +
- + [(ngModel)]="customCriterion.name" [attr.maxlength]="'general.FILTER_MAX_LEN' | translate" /> - + nodeValueType !== 'key' && nodeValueType " - appearance="standard" style="width: 100%"> nodeValueType !== 'key' && nodeValueType " - appearance="standard" style="width: 100%">
diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.ts index be626911f..229fa7bac 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/add-edit-admission-rule-modal/add-edit-admission-rule-modal.component.ts @@ -17,11 +17,6 @@ import { import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { BytesPipe } from '@common/pipes/app.pipes'; import { TranslateService } from '@ngx-translate/core'; -import { - JsonEditorComponent, - JsonEditorOptions, - JsonEditorTreeNode, -} from 'ang-jsoneditor'; import { getValueType4Text, groupBy, @@ -30,8 +25,10 @@ import { import { NotificationService } from '@services/notification.service'; import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; import { UtilsService } from '@common/utils/app.utils'; +import { NgJsonEditorComponent } from '../ng-json-editor/ng-json-editor.component'; @Component({ + standalone: false, selector: 'app-add-edit-admission-rule-modal', templateUrl: './add-edit-admission-rule-modal.component.html', styleUrls: ['./add-edit-admission-rule-modal.component.scss'], @@ -67,9 +64,9 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { isPSSBaseline: boolean = false; isPSSRestricted: boolean = false; isMainView: boolean = true; - @ViewChild(JsonEditorComponent, { static: false }) - editor: JsonEditorComponent; - jsonEditorOptions: JsonEditorOptions; + @ViewChild(NgJsonEditorComponent, { static: false }) + editor: NgJsonEditorComponent; + jsonEditorOptions: any; podTemplateData: any; podTemplateTreeData: any; nodeValueType: string = ''; @@ -80,6 +77,7 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { sigVerifierOptions: string[] = []; valuechips: string[] = []; valuechipsModel: any; + ruleCriteria: any[] = []; @ViewChild('valueChipsInput') valueChipsInput: ElementRef; get containers() { return this.CONTAINER_TYPES; @@ -110,7 +108,7 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { private utils: UtilsService, @Inject(MAT_DIALOG_DATA) public data: any ) { - this.jsonEditorOptions = new JsonEditorOptions(); + this.jsonEditorOptions = {}; } ngOnInit(): void { @@ -172,11 +170,12 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { this.isContainersValid = this.validateContainers(); this.getCriteriaOptions(); if (this.data.opType !== GlobalConstant.MODAL_OP.ADD) { - let criteria = JSON.parse( + this.ruleCriteria = JSON.parse( JSON.stringify(this.addEditAdmissionRuleForm.controls.criteria.value) ); + this.addEditAdmissionRuleForm.controls.criteria.setValue([]); - this.renderCriteriaTag(criteria); + this.renderCriteriaTag(this.ruleCriteria); } this.addEditAdmissionRuleForm .get('criteria')! @@ -303,6 +302,7 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { const index = this.valuechips.indexOf(valueChip); if (index >= 0) { this.valuechips.splice(index, 1); + this.mainCriterion.value = this.valuechips.join(','); } }; @@ -447,15 +447,15 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { criterion, isCustomized ); - this.addEditAdmissionRuleForm.controls.criteria.setValue( - this.admissionRulesService.checkAndAppendCriteria( - tag.tagName, - criterion, - this.addEditAdmissionRuleForm.controls.criteria, - isCustomized, - this.nodeValueType - ) + this.ruleCriteria = this.admissionRulesService.checkAndAppendCriteria( + tag.tagName, + criterion, + this.ruleCriteria, + isCustomized, + this.nodeValueType ); + this.addEditAdmissionRuleForm.controls.criteria.setValue(this.ruleCriteria); + this.addEditAdmissionRuleForm.controls.criteria.markAsTouched(); if (isCustomized) { this.clearCustomizedCriterion(); } else { @@ -464,19 +464,17 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { }; removeCriterionFromChip = criterion => { - this.addEditAdmissionRuleForm.controls.criteria.setValue( - this.admissionRulesService.removeCriterionFromChip( - criterion, - this.addEditAdmissionRuleForm.controls.criteria - ) + this.ruleCriteria = this.admissionRulesService.removeCriterionFromChip( + criterion, + this.ruleCriteria ); + this.addEditAdmissionRuleForm.controls.criteria.setValue(this.ruleCriteria); + this.addEditAdmissionRuleForm.controls.criteria.markAsTouched(); this.clearCriterionDetail(); if ( - !this.getCriterionNameList(this.criteriaOptions).includes( - criterion.value.name - ) + !this.getCriterionNameList(this.criteriaOptions).includes(criterion.name) ) { - this.removeUnexistingCriterionName(criterion.value.name); + this.removeUnexistingCriterionName(criterion.name); } }; @@ -529,14 +527,13 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { this.criterionValueList = [this.mainCriterion.name]; this.subOptions = null; } + // this.ruleCriteria = JSON.parse(JSON.stringify(criterion)); }; isInvalidCriteriaComb = (): boolean => { - let criteriaNameList = this.addEditAdmissionRuleForm.value.criteria.map( - criterion => { - return criterion.value.name; - } - ); + let criteriaNameList = this.ruleCriteria.map(criterion => { + return criterion.value.name; + }); return ( (criteriaNameList.includes('storageClassName') && criteriaNameList.length > 1 && @@ -549,6 +546,7 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { updateRule = () => { let adminRule = this.addEditAdmissionRuleForm.value; + adminRule.criteria = JSON.parse(JSON.stringify(this.ruleCriteria)); adminRule.criteria = adminRule.criteria.map(criterion => { if ( criterion.value.sub_criteria && @@ -569,7 +567,8 @@ export class AddEditAdmissionRuleModalComponent implements OnInit { } if (criterion.value.name === 'saBindRiskyRole') { // For Service account bound risky role - (criterion.value.type = 'saBindRiskyRole'), (criterion.value.name = ''); + ((criterion.value.type = 'saBindRiskyRole'), + (criterion.value.name = '')); criterion.value.path = ''; } return criterion.value; diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.html index e080a9b2a..34f1c2ec6 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.html @@ -21,7 +21,7 @@

formControlName="clientModeFormControl" aria-label="Select an option">
- + {{ 'admissionControl.SERVICE' | translate }} ({{ data.state.adm_client_mode_options.service }}) @@ -34,7 +34,7 @@

- + {{ 'admissionControl.URL' | translate }} ({{ data.state.adm_client_mode_options.url }}) @@ -62,7 +62,7 @@

[loading]="submittingForm" [text]="'setting.SUBMIT' | translate" [type]="'submit'" - class="pull-right ml-auto"> + class="pull-right ms-auto">

@@ -89,7 +89,7 @@

[loading]="submittingTest" [text]="'admissionControl.TEST' | translate" (btnClick)="testK8s()" - class="pull-right ml-auto"> + class="pull-right ms-auto">

diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.ts index 6d86f02c6..8d79ca13d 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/advance-setting-modal/advance-setting-modal.component.ts @@ -9,6 +9,7 @@ import { GlobalConstant } from '@common/constants/global.constant'; import { UtilsService } from '@common/utils/app.utils'; @Component({ + standalone: false, selector: 'app-advance-setting-modal', templateUrl: './advance-setting-modal.component.html', styleUrls: ['./advance-setting-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.html index aba7bac2e..14ba9cb1e 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.html @@ -23,12 +23,12 @@

csv_file
-
+
print
- {{ 'admissionControl.GLOBAL_MODE' | translate }}: | translate : { propsUnavailable: - configAssessmentResult.props_unavailable.join(', ') + configAssessmentResult.props_unavailable.join(', '), } }}
diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.ts index a66d5057b..41e79f723 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/configuration-assessment-modal.component.ts @@ -15,6 +15,7 @@ import { arrayToCsv } from '@common/utils/common.utils'; import { saveAs } from 'file-saver'; @Component({ + standalone: false, selector: 'app-configuration-assessment-modal', templateUrl: './configuration-assessment-modal.component.html', styleUrls: ['./configuration-assessment-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.html index 6a8b89096..b7c884340 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.html @@ -1,10 +1,10 @@
-
+
-
-
+
+
{{ index }}
diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.ts index e8713b7f5..160b1ef46 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/index-cell/index-cell.component.ts @@ -3,6 +3,7 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-index-cell', templateUrl: './index-cell.component.html', styleUrls: ['./index-cell.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/matched-rule-list/matched-rule-list.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/matched-rule-list/matched-rule-list.component.ts index 3d6f1d540..7ef438d46 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/matched-rule-list/matched-rule-list.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-modal/matched-rule-list/matched-rule-list.component.ts @@ -5,6 +5,7 @@ import { MatchedRule } from '@common/types'; import { MapConstant } from '@common/constants/map.constant'; @Component({ + standalone: false, selector: 'app-matched-rule-list', templateUrl: './matched-rule-list.component.html', styleUrls: ['./matched-rule-list.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.html index dcc8a6e6b..d449a7487 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.html @@ -14,13 +14,13 @@ style="border-bottom: 1px solid #999" *ngFor="let item of testResult.data; let i = index" [attr.data-index]="i"> -
+
<{{ item.index }}> {{ @@ -28,13 +28,13 @@ }}
- {{ 'admissionControl.matchingTestGrid.NAME' | translate }}: {{ item.name }}
-
- + {{ 'admissionControl.matchingTestGrid.MSG' | translate }}: {{ item.message }} @@ -117,7 +117,7 @@
-
+
* {{ testResult.instruction.title }}
diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.ts index c3918a36b..0646483e0 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/configuration-assessment-result-printable-report/configuration-assessment-result-printable-report.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit, Input } from '@angular/core'; import { MapConstant } from '@common/constants/map.constant'; @Component({ + standalone: false, selector: 'app-configuration-assessment-result-printable-report', templateUrl: './configuration-assessment-result-printable-report.component.html', @@ -9,9 +10,7 @@ import { MapConstant } from '@common/constants/map.constant'; './configuration-assessment-result-printable-report.component.scss', ], }) -export class ConfigurationAssessmentResultPrintableReportComponent - implements OnInit -{ +export class ConfigurationAssessmentResultPrintableReportComponent implements OnInit { @Input() testResult: any; colourMap: any = MapConstant.colourMap; Array = Array; diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/criterion-description-icon/criterion-description-icon.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/criterion-description-icon/criterion-description-icon.component.ts index b8c0b7321..322a2154c 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/criterion-description-icon/criterion-description-icon.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/criterion-description-icon/criterion-description-icon.component.ts @@ -1,6 +1,7 @@ import { Component, Input } from '@angular/core'; @Component({ + standalone: false, selector: 'app-criterion-description-icon', templateUrl: './criterion-description-icon.component.html', styleUrls: ['./criterion-description-icon.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.html index dfa47d912..c91eb86f7 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.html @@ -23,7 +23,7 @@

- + diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.ts index 8c76d67d8..964a99f21 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/export-admission-rules-modal/export-admission-rules-modal.component.ts @@ -12,6 +12,7 @@ import { GlobalConstant } from '@common/constants/global.constant'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; @Component({ + standalone: false, selector: 'app-export-admission-rules-modal', templateUrl: './export-admission-rules-modal.component.html', styleUrls: ['./export-admission-rules-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.html index 82ef482f8..efe40e26d 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.html +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.html @@ -26,7 +26,7 @@

-
+
@@ -40,10 +40,10 @@ diff --git a/admin/webapp/websrc/app/routes/components/exposed-service-pod-grid/exposure-service-pod-report-grid/exposure-service-pod-report-grid.component.ts b/admin/webapp/websrc/app/routes/components/exposed-service-pod-grid/exposure-service-pod-report-grid/exposure-service-pod-report-grid.component.ts index 7385247a3..2bad48aff 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-service-pod-grid/exposure-service-pod-report-grid/exposure-service-pod-report-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/exposed-service-pod-grid/exposure-service-pod-report-grid/exposure-service-pod-report-grid.component.ts @@ -4,6 +4,7 @@ import { groupBy } from '@common/utils/common.utils'; import { MapConstant } from '@common/constants/map.constant'; @Component({ + standalone: false, selector: 'app-exposure-service-pod-report-grid', templateUrl: './exposure-service-pod-report-grid.component.html', styleUrls: ['./exposure-service-pod-report-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.html b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.html index f083f38de..86bc8eb0a 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.html +++ b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.html @@ -70,7 +70,7 @@ diff --git a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.ts b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.ts index 6b96882e3..e3b8c0677 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.ts +++ b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/conversation-entry-list/conversation-entry-list.component.ts @@ -5,13 +5,12 @@ import { MapConstant } from '@common/constants/map.constant'; import { ConversationReportEntryByService } from '@common/types'; @Component({ + standalone: false, selector: 'app-conversation-entry-list', templateUrl: './conversation-entry-list.component.html', styleUrls: ['./conversation-entry-list.component.scss'], }) -export class ConversationEntryListComponent - implements ICellRendererAngularComp -{ +export class ConversationEntryListComponent implements ICellRendererAngularComp { params: ICellRendererParams; colourMap: any = MapConstant.colourMap; conversationEntryList: Array; diff --git a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-conv-grid.component.ts b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-conv-grid.component.ts index 834bb6f3b..cd6705281 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-conv-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-conv-grid.component.ts @@ -20,6 +20,7 @@ import { uuid } from '@common/utils/common.utils'; import { RegistryDetailsVulnerabilitiesCellComponent } from '@routes/registries/registry-details/registry-details-table/registry-details-vulnerabilities-cell/registry-details-vulnerabilities-cell.component'; @Component({ + standalone: false, selector: 'app-exposed-servicepod-conv-grid', templateUrl: './exposed-servicepod-conv-grid.component.html', styleUrls: ['./exposed-servicepod-conv-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.html b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.html index eecb6054e..154d42b64 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.html +++ b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.html @@ -1,10 +1,10 @@
-
+
-
-
+
+
{{ name }}
diff --git a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.ts b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.ts index 7fd8ecd43..d8ae8250c 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/exposed-servicepod-grid-servicepod-cell/exposed-servicepod-grid-servicepod-cell.component.ts @@ -4,13 +4,12 @@ import { ICellRendererParams } from 'ag-grid-community'; import { accumulateActionLevel } from '@common/utils/common.utils'; @Component({ + standalone: false, selector: 'app-exposed-servicepod-grid-servicepod-cell', templateUrl: './exposed-servicepod-grid-servicepod-cell.component.html', styleUrls: ['./exposed-servicepod-grid-servicepod-cell.component.scss'], }) -export class ExposedServicepodGridServicepodCellComponent - implements ICellRendererAngularComp -{ +export class ExposedServicepodGridServicepodCellComponent implements ICellRendererAngularComp { params!: ICellRendererParams; name!: string; isParent!: boolean; diff --git a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/external-host-cell/external-host-cell.component.ts b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/external-host-cell/external-host-cell.component.ts index 0fd3276bb..c2dc3084d 100644 --- a/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/external-host-cell/external-host-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/exposed-servicepod-conv-grid/external-host-cell/external-host-cell.component.ts @@ -3,6 +3,7 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-external-host-cell', templateUrl: './external-host-cell.component.html', styleUrls: ['./external-host-cell.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/exposure-grid/exposure-grid.component.ts b/admin/webapp/websrc/app/routes/components/exposure-grid/exposure-grid.component.ts index 93250a1e0..a52c11bff 100644 --- a/admin/webapp/websrc/app/routes/components/exposure-grid/exposure-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/exposure-grid/exposure-grid.component.ts @@ -3,6 +3,7 @@ import { MatTabChangeEvent } from '@angular/material/tabs'; import { ExposedServicePodGridComponent } from '@components/exposed-service-pod-grid/exposed-service-pod-grid.component'; @Component({ + standalone: false, selector: 'app-exposure-grid', templateUrl: './exposure-grid.component.html', styleUrls: ['./exposure-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/exposure-panel/exposure-panel.component.html b/admin/webapp/websrc/app/routes/components/exposure-panel/exposure-panel.component.html index 05c918393..e1e91fc56 100644 --- a/admin/webapp/websrc/app/routes/components/exposure-panel/exposure-panel.component.html +++ b/admin/webapp/websrc/app/routes/components/exposure-panel/exposure-panel.component.html @@ -26,7 +26,7 @@ [instructions]="instructions"> - + { this.getSelectedFileAccessRules.emit(this.selectedFileAccessRules); if (this.gridApi) { diff --git a/admin/webapp/websrc/app/routes/components/file-access-rules/file-access-rules.module.ts b/admin/webapp/websrc/app/routes/components/file-access-rules/file-access-rules.module.ts index 3bf6b9e2c..67fb92502 100644 --- a/admin/webapp/websrc/app/routes/components/file-access-rules/file-access-rules.module.ts +++ b/admin/webapp/websrc/app/routes/components/file-access-rules/file-access-rules.module.ts @@ -22,10 +22,6 @@ import { OperationCellComponent } from './partial/predefined-file-access-rules-m AgGridModule, // AgGridModule.withComponents([]), ], - entryComponents: [ - AddEditFileAccessRuleModalComponent, - PredefinedFileAccessRulesModalComponent, - ], exports: [FileAccessRulesComponent], }) export class FileAccessRulesModule {} diff --git a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.html b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.html index 89f22e2d4..8d75db8d9 100644 --- a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.html @@ -63,12 +63,12 @@

- {{ + {{ 'service.ALLOW_ALERT' | translate }}
-
- infoinfo{{ 'general.SAMPLE' | translate }}
@@ -123,15 +123,15 @@

- - + {{ app }} cancel - + [matChipInputSeparatorKeyCodes]="separatorKeysCodes" [matChipInputAddOnBlur]="true" (matChipInputTokenEnd)="addAppIntoChip($event)" /> - + Criterion is required! diff --git a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.ts b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.ts index bf115b9fe..129aea703 100644 --- a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/add-edit-file-access-rule-modal/add-edit-file-access-rule-modal.component.ts @@ -19,6 +19,7 @@ import { TranslateService } from '@ngx-translate/core'; import { updateGridData } from '@common/utils/common.utils'; @Component({ + standalone: false, selector: 'app-add-edit-file-access-rule-modal', templateUrl: './add-edit-file-access-rule-modal.component.html', styleUrls: ['./add-edit-file-access-rule-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.html b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.html index 4bcaab924..3cb7aca8d 100644 --- a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.html +++ b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.html @@ -9,6 +9,6 @@
- +

diff --git a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.ts b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.ts index 857c458d8..55aa84896 100644 --- a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/operation-cell/operation-cell/operation-cell.component.ts @@ -11,6 +11,7 @@ import { GlobalConstant } from '@common/constants/global.constant'; import { updateGridData } from '@common/utils/common.utils'; @Component({ + standalone: false, selector: 'app-operation-cell', templateUrl: './operation-cell.component.html', styleUrls: ['./operation-cell.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/predefined-file-access-rules-modal.component.ts b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/predefined-file-access-rules-modal.component.ts index 48ad5fedb..d1b178419 100644 --- a/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/predefined-file-access-rules-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/file-access-rules/partial/predefined-file-access-rules-modal/predefined-file-access-rules-modal.component.ts @@ -8,6 +8,7 @@ import { TranslateService } from '@ngx-translate/core'; import { GlobalVariable } from '@common/variables/global.variable'; @Component({ + standalone: false, selector: 'app-predefined-file-access-rules-modal', templateUrl: './predefined-file-access-rules-modal.component.html', styleUrls: ['./predefined-file-access-rules-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.html b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.html index 51531ea17..b08b0ca35 100644 --- a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.html +++ b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.html @@ -15,7 +15,7 @@
launch - check_circle
diff --git a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.scss b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.scss index 6c3070543..f007ea717 100644 --- a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.scss +++ b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.scss @@ -6,6 +6,7 @@ display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; + font-size: 12px; &.clamped { -webkit-line-clamp: 2; } @@ -13,3 +14,4 @@ -webkit-line-clamp: none; } } + diff --git a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts index deaf5dcc3..1193ccd45 100644 --- a/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts +++ b/admin/webapp/websrc/app/routes/components/global-notifications/global-notifications.component.ts @@ -25,6 +25,7 @@ import { NotificationService } from '@services/notification.service'; import { UtilsService } from '@common/utils/app.utils'; @Component({ + standalone: false, selector: 'app-global-notifications', templateUrl: './global-notifications.component.html', styleUrls: ['./global-notifications.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/group-details/group-details.component.html b/admin/webapp/websrc/app/routes/components/group-details/group-details.component.html index c48c5c7e1..03af30952 100644 --- a/admin/webapp/websrc/app/routes/components/group-details/group-details.component.html +++ b/admin/webapp/websrc/app/routes/components/group-details/group-details.component.html @@ -1,7 +1,7 @@
- + {{ 'enum.FILTER' | translate }} @@ -9,7 +9,7 @@
- + {{ 'enum.FILTER' | translate }} @@ -22,7 +22,7 @@
- + {{ 'enum.FILTER' | translate }} @@ -86,7 +86,7 @@
- + {{ 'enum.FILTER' | translate }} @@ -150,7 +150,7 @@
- + {{ 'enum.FILTER' | translate }} @@ -158,7 +158,7 @@
- + {{ 'enum.FILTER' | translate }} @@ -171,7 +171,7 @@ class="d-flex align-items-center justify-content-end">
- + {{ 'enum.FILTER' | translate }} @@ -202,7 +202,7 @@ class="d-flex align-items-center justify-content-end">
- + {{ 'enum.FILTER' | translate }} diff --git a/admin/webapp/websrc/app/routes/components/group-details/group-details.component.ts b/admin/webapp/websrc/app/routes/components/group-details/group-details.component.ts index 9cb0e5d5f..47a61f199 100644 --- a/admin/webapp/websrc/app/routes/components/group-details/group-details.component.ts +++ b/admin/webapp/websrc/app/routes/components/group-details/group-details.component.ts @@ -18,6 +18,7 @@ export const groupDetailsTabs = [ ]; @Component({ + standalone: false, selector: 'app-group-details', templateUrl: './group-details.component.html', styleUrls: ['./group-details.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check-action-button/custom-check-action-button.component.ts b/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check-action-button/custom-check-action-button.component.ts index 6b7b9a3f2..760ca53d1 100644 --- a/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check-action-button/custom-check-action-button.component.ts +++ b/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check-action-button/custom-check-action-button.component.ts @@ -9,13 +9,12 @@ import { NotificationService } from '@services/notification.service'; import { updateGridData } from '@common/utils/common.utils'; @Component({ + standalone: false, selector: 'app-custom-check-action-button', templateUrl: './custom-check-action-button.component.html', styleUrls: ['./custom-check-action-button.component.scss'], }) -export class CustomCheckActionButtonComponent - implements ICellRendererAngularComp -{ +export class CustomCheckActionButtonComponent implements ICellRendererAngularComp { params!: ICellRendererParams; constructor( diff --git a/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check/custom-check.component.html b/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check/custom-check.component.html index 5e56a159c..c87099415 100644 --- a/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check/custom-check.component.html +++ b/admin/webapp/websrc/app/routes/components/group-details/partial/custom-check/custom-check.component.html @@ -3,7 +3,7 @@ [formGroup]="customCheckForm" *ngIf="!isRefreshingForm" class="col-sm-6"> - + {{ 'group.script.NAME' | translate }} - + {{ 'group.script.SCRIPT' | translate }}
- {{ item?.file?.name | shortenFromMiddle : 30 }} + {{ item?.file?.name | shortenFromMiddle: 30 }} - {{ item?.file?.size / 1024 / 1024 | number : '.2' }} MB + {{ item?.file?.size / 1024 / 1024 | number: '.2' }} MB
diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.ts index 43a669c55..31e44d502 100644 --- a/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.ts +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/import-test-file/import-test-file.component.ts @@ -20,6 +20,7 @@ import { NotificationService } from '@services/notification.service'; import { MapConstant } from '@common/constants/map.constant'; @Component({ + standalone: false, selector: 'app-import-test-file', templateUrl: './import-test-file.component.html', styleUrls: ['./import-test-file.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.html b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.html new file mode 100644 index 000000000..e17e1c2d9 --- /dev/null +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.html @@ -0,0 +1 @@ +
diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.scss b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.spec.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.spec.ts new file mode 100644 index 000000000..a9a24df19 --- /dev/null +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NgJsonEditorComponent } from './ng-json-editor.component'; + +describe('NgJsonEditorComponent', () => { + let component: NgJsonEditorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [NgJsonEditorComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(NgJsonEditorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.ts b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.ts new file mode 100644 index 000000000..077505e90 --- /dev/null +++ b/admin/webapp/websrc/app/routes/components/admission-rules/partial/ng-json-editor/ng-json-editor.component.ts @@ -0,0 +1,37 @@ +import { Component } from '@angular/core'; +import { + AfterViewInit, + ElementRef, + Input, + NgZone, + OnDestroy, +} from '@angular/core'; +import JSONEditor from 'jsoneditor'; + +@Component({ + selector: 'app-ng-json-editor', + standalone: false, + templateUrl: './ng-json-editor.component.html', + styleUrl: './ng-json-editor.component.scss', +}) +export class NgJsonEditorComponent implements AfterViewInit, OnDestroy { + @Input() data: any; + @Input() options: any; + editor: any; + + constructor( + private container: ElementRef, + private ngZone: NgZone + ) {} + + ngAfterViewInit() { + this.ngZone.runOutsideAngular(() => { + this.editor = new JSONEditor(this.container.nativeElement, this.options); + this.editor.set(this.data); + }); + } + + ngOnDestroy() { + this.editor.destroy(); + } +} diff --git a/admin/webapp/websrc/app/routes/components/apikeys-grid/add-apikey-dialog/add-apikey-dialog.component.html b/admin/webapp/websrc/app/routes/components/apikeys-grid/add-apikey-dialog/add-apikey-dialog.component.html index 1764ef620..ed59a9b33 100644 --- a/admin/webapp/websrc/app/routes/components/apikeys-grid/add-apikey-dialog/add-apikey-dialog.component.html +++ b/admin/webapp/websrc/app/routes/components/apikeys-grid/add-apikey-dialog/add-apikey-dialog.component.html @@ -20,10 +20,10 @@

key - + {{ 'apikey.gridHeader.NAME' | translate }} @@ -38,10 +38,10 @@

person - + {{ 'apikey.gridHeader.DESCRIPTION' | translate }} @@ -52,11 +52,13 @@

- + {{ 'apikey.addApikey.EXPIRE' | translate }} - + - +

-
+
- + {{ 'apikey.gridHeader.ROLE' | translate }} @@ -114,7 +116,7 @@

{{ category }} -
+
diff --git a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-category-cell/compliance-grid-category-cell.component.ts b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-category-cell/compliance-grid-category-cell.component.ts index 0e63da79e..86aa2e484 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-category-cell/compliance-grid-category-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-category-cell/compliance-grid-category-cell.component.ts @@ -3,14 +3,13 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-compliance-grid-category-cell', templateUrl: './compliance-grid-category-cell.component.html', styleUrls: ['./compliance-grid-category-cell.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class ComplianceGridCategoryCellComponent - implements ICellRendererAngularComp -{ +export class ComplianceGridCategoryCellComponent implements ICellRendererAngularComp { params: any; category!: string; isParent!: boolean; diff --git a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.html b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.html index c5ce5f6b1..840b483c3 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.html +++ b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.html @@ -1,7 +1,7 @@ {{ name }} diff --git a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.ts b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.ts index f624db2b8..70aca9446 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-name-cell/compliance-grid-name-cell.component.ts @@ -4,14 +4,13 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-compliance-grid-name-cell', templateUrl: './compliance-grid-name-cell.component.html', styleUrls: ['./compliance-grid-name-cell.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class ComplianceGridNameCellComponent - implements ICellRendererAngularComp -{ +export class ComplianceGridNameCellComponent implements ICellRendererAngularComp { params!: any; name!: string; includeRemediation!: boolean; diff --git a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-status-cell/compliance-grid-status-cell.component.ts b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-status-cell/compliance-grid-status-cell.component.ts index 71a50f5c9..9a77831a8 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-status-cell/compliance-grid-status-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid-status-cell/compliance-grid-status-cell.component.ts @@ -5,14 +5,13 @@ import { ICellRendererParams } from 'ag-grid-community'; import { UtilsService } from '@common/utils/app.utils'; @Component({ + standalone: false, selector: 'app-compliance-grid-status-cell', templateUrl: './compliance-grid-status-cell.component.html', styleUrls: ['./compliance-grid-status-cell.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class ComplianceGridStatusCellComponent - implements ICellRendererAngularComp -{ +export class ComplianceGridStatusCellComponent implements ICellRendererAngularComp { params!: ICellRendererParams; status!: string; labelCode!: string; diff --git a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid.component.ts b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid.component.ts index 3cfb73499..b18321a5e 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-grid/compliance-grid.component.ts @@ -42,6 +42,7 @@ export type ComplianceRow = Check & { }; @Component({ + standalone: false, selector: 'app-compliance-grid', templateUrl: './compliance-grid.component.html', styleUrls: ['./compliance-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/compliance-grid/remediation-detail-dialog/remediation-detail-dialog.component.ts b/admin/webapp/websrc/app/routes/components/compliance-grid/remediation-detail-dialog/remediation-detail-dialog.component.ts index 60b90afe8..e3ed6d6d5 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-grid/remediation-detail-dialog/remediation-detail-dialog.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-grid/remediation-detail-dialog/remediation-detail-dialog.component.ts @@ -2,6 +2,7 @@ import { Component, Input } from '@angular/core'; import { Check } from '@common/types'; @Component({ + standalone: false, selector: 'app-remediation-detail-dialog', templateUrl: './remediation-detail-dialog.component.html', styleUrls: ['./remediation-detail-dialog.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid-dialog/compliance-regulation-grid-dialog.component.ts b/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid-dialog/compliance-regulation-grid-dialog.component.ts index 817c7b5cc..3f874fde9 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid-dialog/compliance-regulation-grid-dialog.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid-dialog/compliance-regulation-grid-dialog.component.ts @@ -3,6 +3,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { ComplianceCsvService } from '@routes/compliance/csv-generation/compliance-csv.service'; @Component({ + standalone: false, selector: 'app-compliance-regulation-grid-dialog', templateUrl: './compliance-regulation-grid-dialog.component.html', styleUrls: ['./compliance-regulation-grid-dialog.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid.component.ts b/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid.component.ts index 3fec197cc..96ada6d95 100644 --- a/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/compliance-regulation-grid/compliance-regulation-grid.component.ts @@ -9,6 +9,7 @@ import { } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-compliance-regulation-grid', templateUrl: './compliance-regulation-grid.component.html', styleUrls: ['./compliance-regulation-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/container-brief/container-brief-dialog/container-brief-dialog.component.html b/admin/webapp/websrc/app/routes/components/container-brief/container-brief-dialog/container-brief-dialog.component.html index 2038265f4..367241593 100644 --- a/admin/webapp/websrc/app/routes/components/container-brief/container-brief-dialog/container-brief-dialog.component.html +++ b/admin/webapp/websrc/app/routes/components/container-brief/container-brief-dialog/container-brief-dialog.component.html @@ -5,7 +5,7 @@ class="d-flex align-items-center justify-content-between" style="cursor: move; margin-top: -24px; padding-top: 10px">
- check_box_blankcheck_box_blank{{ data.workload.display_name }}
@@ -260,7 +258,7 @@ {{ item.key }}
-
+
IP:{{ net.ip }}/{{ net.ip_prefix }}
diff --git a/admin/webapp/websrc/app/routes/components/container-brief/container-brief.component.ts b/admin/webapp/websrc/app/routes/components/container-brief/container-brief.component.ts index d1010b3d5..ed34c4b25 100644 --- a/admin/webapp/websrc/app/routes/components/container-brief/container-brief.component.ts +++ b/admin/webapp/websrc/app/routes/components/container-brief/container-brief.component.ts @@ -3,6 +3,7 @@ import { Workload } from '@common/types'; import { Router } from '@angular/router'; @Component({ + standalone: false, selector: 'app-container-brief', templateUrl: './container-brief.component.html', styleUrls: ['./container-brief.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.html b/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.html index 5d9f99de0..b4e6d37ee 100644 --- a/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.html +++ b/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.html @@ -8,7 +8,7 @@ fontSet="fa" fontIcon="fa-credit-card"> -
+
{{ 'controllers.detail.ID' | translate }}
{{ container.brief.id }} @@ -25,7 +25,7 @@ fontSet="fa" fontIcon="fa-cogs"> -
+
{{ 'network.gridHeader.SERVICE' | translate }}
{{ container.brief.service || ' ' }} @@ -43,7 +43,7 @@ fontSet="fa" fontIcon="fa-credit-card"> -
+
{{ 'network.gridHeader.SERVICE_ACCOUNT' | translate }}
{{ container.rt_attributes.service_account }} @@ -60,7 +60,7 @@ fontSet="fa" fontIcon="fa-globe"> -
+
{{ 'containers.detail.NETWORK_MODE' | translate }}
{{ container.rt_attributes.network_mode }} @@ -75,7 +75,7 @@ fontSet="fa" fontIcon="fa-archive"> -
+
{{ 'containers.detail.IMAGE' | translate }}
@@ -109,11 +109,11 @@ fontSet="fa" fontIcon="fa-calendar"> -
+
{{ 'containers.detail.IMAGE_CREATED_AT' | translate }}
{{ - (container.brief.image_created_at | date : 'MMM dd, y HH:mm:ss') || + (container.brief.image_created_at | date: 'MMM dd, y HH:mm:ss') || ' ' }}
@@ -129,7 +129,7 @@ fontSet="fa" fontIcon="fa-archive"> -
+
{{ 'containers.detail.BASE_OS' | translate }}
{{ container.security.scan_summary.base_os }} @@ -146,7 +146,7 @@ container.rt_attributes.privileged ? 'fa-user-times' : 'fa-user-check' "> -
+
{{ 'containers.detail.ROOT_PRIVILEGED' | translate }}
{{ container.rt_attributes.privileged }} @@ -161,7 +161,7 @@ fontSet="fa" fontIcon="fa-shield-alt"> -
+
{{ 'containers.detail.ENFORCER' | translate }}
{{ container.enforcer_name }} @@ -178,10 +178,10 @@ fontSet="fa" fontIcon="fa-calendar"> -
+
{{ 'enforcers.detail.DISCONNECTED_AT' | translate }}
- {{ container.finished_at | date : 'MMM dd, y HH:mm:ss' }} + {{ container.finished_at | date: 'MMM dd, y HH:mm:ss' }}
@@ -204,7 +204,7 @@
IP: {{ net.ip }}/{{ net.ip_prefix }}
diff --git a/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.ts b/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.ts index df78c5ead..ef304ed72 100644 --- a/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.ts +++ b/admin/webapp/websrc/app/routes/components/container-detail/container-detail.component.ts @@ -7,6 +7,7 @@ import { WorkloadRow } from '@services/containers.service'; import { RegistriesService } from '@services/registries.service'; @Component({ + standalone: false, selector: 'app-container-detail', templateUrl: './container-detail.component.html', styleUrls: ['./container-detail.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/container-stats/container-stats.component.ts b/admin/webapp/websrc/app/routes/components/container-stats/container-stats.component.ts index dc879feb3..9103b252b 100644 --- a/admin/webapp/websrc/app/routes/components/container-stats/container-stats.component.ts +++ b/admin/webapp/websrc/app/routes/components/container-stats/container-stats.component.ts @@ -13,6 +13,7 @@ import { Chart, ChartConfiguration } from 'chart.js'; import { BaseChartDirective } from 'ng2-charts'; @Component({ + standalone: false, selector: 'app-container-stats', templateUrl: './container-stats.component.html', styleUrls: ['./container-stats.component.scss'], @@ -29,7 +30,10 @@ export class ContainerStatsComponent byteData!: ComponentChartData; sessionData!: ComponentChartData; - constructor(private utils: UtilsService, private tr: TranslateService) {} + constructor( + private utils: UtilsService, + private tr: TranslateService + ) {} ngOnInit(): void { this.initData(); diff --git a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.html b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.html index a7780b1d1..002d33de9 100644 --- a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.html +++ b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.html @@ -1,9 +1,9 @@
-
+
-
+
{{ name }}
diff --git a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.ts b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.ts index c126a91c5..5c231c609 100644 --- a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-name-cell/containers-grid-name-cell.component.ts @@ -3,13 +3,12 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-containers-grid-name-cell', templateUrl: './containers-grid-name-cell.component.html', styleUrls: ['./containers-grid-name-cell.component.scss'], }) -export class ContainersGridNameCellComponent - implements ICellRendererAngularComp -{ +export class ContainersGridNameCellComponent implements ICellRendererAngularComp { params!: ICellRendererParams; name!: string; isParent!: boolean; diff --git a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-state-cell/containers-grid-state-cell.component.ts b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-state-cell/containers-grid-state-cell.component.ts index b1bd309a6..9533691c2 100644 --- a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-state-cell/containers-grid-state-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-state-cell/containers-grid-state-cell.component.ts @@ -5,14 +5,13 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-containers-grid-state-cell', templateUrl: './containers-grid-state-cell.component.html', styleUrls: ['./containers-grid-state-cell.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class ContainersGridStateCellComponent - implements ICellRendererAngularComp -{ +export class ContainersGridStateCellComponent implements ICellRendererAngularComp { params!: ICellRendererParams; state!: string; displayState!: string; diff --git a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-status-cell/containers-grid-status-cell.component.ts b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-status-cell/containers-grid-status-cell.component.ts index d2e203755..65e1924f7 100644 --- a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-status-cell/containers-grid-status-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid-status-cell/containers-grid-status-cell.component.ts @@ -5,14 +5,14 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-containers-grid-status-cell', templateUrl: './containers-grid-status-cell.component.html', styleUrls: ['./containers-grid-status-cell.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) -export class ContainersGridStatusCellComponent - implements ICellRendererAngularComp -{ +export class ContainersGridStatusCellComponent implements ICellRendererAngularComp { params!: ICellRendererParams; status!: string; result!: string; diff --git a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.html b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.html index 7653c2167..055fbd852 100644 --- a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.html +++ b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.html @@ -13,7 +13,7 @@
-
+
Docker  {{ 'containers.CIS_VERSION' | translate }}:  {{ versionInfoService.infoData.docker_cis_version }}   @@ -25,12 +25,12 @@ *ngIf="versionInfoService.infoData.run_at" class="fa fa-info-circle" matTooltip="{{ 'scan.gridHeader.TIME' | translate }}: {{ - versionInfoService.infoData.run_at | date : 'MMM dd, y HH:mm:ss' + versionInfoService.infoData.run_at | date: 'MMM dd, y HH:mm:ss' }}" matTooltipPosition="above">
-
+
@@ -60,7 +60,7 @@ mat-stroked-button aria-label="Scan action" type="button" - class="mr-3" + class="me-3" (click)="scan.emit(selectedContainer)" [disabled]=" !selectedContainer || selectedContainer.brief.state === 'exit' diff --git a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.ts b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.ts index 81b7083c4..38a00e056 100644 --- a/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/containers-grid/containers-grid.component.ts @@ -32,6 +32,7 @@ import { ContainersGridStatusCellComponent } from './containers-grid-status-cell import { QuickFilterComponent } from '@components/quick-filter/quick-filter.component'; @Component({ + standalone: false, selector: 'app-containers-grid', templateUrl: './containers-grid.component.html', styleUrls: ['./containers-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid-status-cell/controllers-grid-status-cell.component.ts b/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid-status-cell/controllers-grid-status-cell.component.ts index 5b50b42dc..6c37dbd7c 100644 --- a/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid-status-cell/controllers-grid-status-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid-status-cell/controllers-grid-status-cell.component.ts @@ -5,14 +5,13 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-controllers-grid-status-cell', templateUrl: './controllers-grid-status-cell.component.html', styleUrls: ['./controllers-grid-status-cell.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class ControllersGridStatusCellComponent - implements ICellRendererAngularComp -{ +export class ControllersGridStatusCellComponent implements ICellRendererAngularComp { params!: ICellRendererParams; status!: string; statusText!: string; diff --git a/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid.component.ts b/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid.component.ts index 44ad7a308..07052179d 100644 --- a/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/controllers-grid/controllers-grid.component.ts @@ -26,6 +26,7 @@ import { MultiClusterService } from '@services/multi-cluster.service'; import { finalize, map } from 'rxjs/operators'; @Component({ + standalone: false, selector: 'app-controllers-grid', templateUrl: './controllers-grid.component.html', styleUrls: ['./controllers-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/dlp-sensors.component.html b/admin/webapp/websrc/app/routes/components/dlp-sensors/dlp-sensors.component.html index 8f1b8faed..727683624 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/dlp-sensors.component.html +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/dlp-sensors.component.html @@ -78,7 +78,7 @@

- + {{ 'dlp.patternGrid.CONTEXT' | translate }} diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.ts b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.ts index 74507c880..3585c6d10 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component.ts @@ -18,6 +18,7 @@ import { import { GlobalVariable } from '@common/variables/global.variable'; @Component({ + standalone: false, selector: 'app-add-edit-rule-modal', templateUrl: './add-edit-rule-modal.component.html', styleUrls: ['./add-edit-rule-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.html b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.html index 553867ca5..93f858404 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.html +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.html @@ -20,7 +20,7 @@

- + {{ 'dlp.sensorModal.SENSOR_NAME' | translate }} {{ 'dlp.msg.NAME_VALID' | translate }} "fed." - + {{ 'dlp.sensorModal.COMMENT' | translate }} diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.ts b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.ts index 1d59dd7db..55e7ee87f 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.ts +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component.ts @@ -17,6 +17,7 @@ import { UtilsService } from '@common/utils/app.utils'; import { updateGridData } from '@common/utils/common.utils'; @Component({ + standalone: false, selector: 'app-add-edit-sensor-modal', templateUrl: './add-edit-sensor-modal.component.html', styleUrls: ['./add-edit-sensor-modal.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/pattern-action-buttons/pattern-action-buttons.component.ts b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/pattern-action-buttons/pattern-action-buttons.component.ts index 3db9c0b8c..f0542a835 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/pattern-action-buttons/pattern-action-buttons.component.ts +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/pattern-action-buttons/pattern-action-buttons.component.ts @@ -3,7 +3,8 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ - selector: 'app-pattern-action-buttons', + standalone: false, + selector: 'app-dlp-pattern-action-buttons', templateUrl: './pattern-action-buttons.component.html', styleUrls: ['./pattern-action-buttons.component.scss'], }) diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.html b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.html index ae194fcd9..de703d215 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.html +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.html @@ -23,6 +23,6 @@
- +
diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.ts b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.ts index e970110d7..afa9f48ff 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.ts +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/rule-action-buttons/rule-action-buttons.component.ts @@ -1,19 +1,20 @@ import { Component } from '@angular/core'; -import { ICellRendererAngularComp } from 'ag-grid-angular'; -import { ICellRendererParams } from 'ag-grid-community'; -import { AddEditRuleModalComponent } from '@components/dlp-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component'; import { MatDialog } from '@angular/material/dialog'; import { GlobalConstant } from '@common/constants/global.constant'; +import { MapConstant } from '@common/constants/map.constant'; +import { UtilsService } from '@common/utils/app.utils'; +import { AddEditRuleModalComponent } from '@components/dlp-sensors/partial/add-edit-rule-modal/add-edit-rule-modal.component'; import { ConfirmDialogComponent } from '@components/ui/confirm-dialog/confirm-dialog.component'; -import { switchMap } from 'rxjs/operators'; -import { DlpSensorsService } from '@services/dlp-sensors.service'; import { TranslateService } from '@ngx-translate/core'; +import { DlpSensorsService } from '@services/dlp-sensors.service'; import { NotificationService } from '@services/notification.service'; -import { MapConstant } from '@common/constants/map.constant'; -import { UtilsService } from '@common/utils/app.utils'; +import { ICellRendererAngularComp } from 'ag-grid-angular'; +import { ICellRendererParams } from 'ag-grid-community'; +import { switchMap } from 'rxjs/operators'; @Component({ - selector: 'app-rule-action-buttons', + standalone: false, + selector: 'app-dlp-rule-action-buttons', templateUrl: './rule-action-buttons.component.html', styleUrls: ['./rule-action-buttons.component.scss'], }) diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.html b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.html index bb067eca5..230c3f003 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.html +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.html @@ -24,6 +24,6 @@

- +
diff --git a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.ts b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.ts index 7a57ca0de..f68297ded 100644 --- a/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.ts +++ b/admin/webapp/websrc/app/routes/components/dlp-sensors/partial/sensor-action-buttons/sensor-action-buttons.component.ts @@ -1,20 +1,21 @@ import { Component } from '@angular/core'; -import { ICellRendererAngularComp } from 'ag-grid-angular'; -import { ICellRendererParams } from 'ag-grid-community'; -import { AddEditSensorModalComponent } from '@components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component'; import { MatDialog } from '@angular/material/dialog'; import { GlobalConstant } from '@common/constants/global.constant'; +import { MapConstant } from '@common/constants/map.constant'; +import { UtilsService } from '@common/utils/app.utils'; +import { updateGridData } from '@common/utils/common.utils'; +import { AddEditSensorModalComponent } from '@components/dlp-sensors/partial/add-edit-sensor-modal/add-edit-sensor-modal.component'; import { ConfirmDialogComponent } from '@components/ui/confirm-dialog/confirm-dialog.component'; -import { switchMap } from 'rxjs/operators'; import { TranslateService } from '@ngx-translate/core'; import { DlpSensorsService } from '@services/dlp-sensors.service'; import { NotificationService } from '@services/notification.service'; -import { MapConstant } from '@common/constants/map.constant'; -import { UtilsService } from '@common/utils/app.utils'; -import { updateGridData } from '@common/utils/common.utils'; +import { ICellRendererAngularComp } from 'ag-grid-angular'; +import { ICellRendererParams } from 'ag-grid-community'; +import { switchMap } from 'rxjs/operators'; @Component({ - selector: 'app-sensor-action-buttons', + standalone: false, + selector: 'app-dlp-sensor-action-buttons', templateUrl: './sensor-action-buttons.component.html', styleUrls: ['./sensor-action-buttons.component.scss'], }) diff --git a/admin/webapp/websrc/app/routes/components/enforcer-brief/enforcer-brief-dialog/enforcer-brief-dialog.component.html b/admin/webapp/websrc/app/routes/components/enforcer-brief/enforcer-brief-dialog/enforcer-brief-dialog.component.html index 21e8b38b3..dbb55d4c0 100644 --- a/admin/webapp/websrc/app/routes/components/enforcer-brief/enforcer-brief-dialog/enforcer-brief-dialog.component.html +++ b/admin/webapp/websrc/app/routes/components/enforcer-brief/enforcer-brief-dialog/enforcer-brief-dialog.component.html @@ -5,7 +5,7 @@ class="d-flex align-items-center justify-content-between" style="cursor: move; margin-top: -24px; padding-top: 10px">
- storagestorage{{ data.enforcer.display_name }}
diff --git a/admin/webapp/websrc/app/routes/components/enforcers-grid/enforcers-grid.component.ts b/admin/webapp/websrc/app/routes/components/enforcers-grid/enforcers-grid.component.ts index 08429b4ad..e42e8d2ae 100644 --- a/admin/webapp/websrc/app/routes/components/enforcers-grid/enforcers-grid.component.ts +++ b/admin/webapp/websrc/app/routes/components/enforcers-grid/enforcers-grid.component.ts @@ -30,6 +30,7 @@ import { MultiClusterService } from '@services/multi-cluster.service'; import { finalize, map } from 'rxjs/operators'; @Component({ + standalone: false, selector: 'app-enforcers-grid', templateUrl: './enforcers-grid.component.html', styleUrls: ['./enforcers-grid.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-filter/events-grid-filter.component.html b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-filter/events-grid-filter.component.html index 60ae17c62..c69291cd8 100644 --- a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-filter/events-grid-filter.component.html +++ b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-filter/events-grid-filter.component.html @@ -8,20 +8,21 @@

{{ 'general.FILTER_MATCH_ALL' | translate }}


- - + + id="fromDate" matInput /> MM/DD/YYYY - - - close - - +
+ + +
+
- - + + id="toDate" matInput /> MM/DD/YYYY - - - close - - +
+ + +
+
@@ -69,7 +66,7 @@

- + {{ getDisplayName(filterLevel[i]) }} @@ -80,7 +77,7 @@

{{ 'event.gridHeader.NAME' | translate }} - + *ngIf="form.controls.name.hasError('invalidAutocompleteString')"> {{ 'securityEvent.AUTOCOMPLETE_INVALID' - | translate : { field: ('event.gridHeader.NAME' | translate) } + | translate: { field: ('event.gridHeader.NAME' | translate) } }} @@ -106,7 +103,7 @@

{{ 'event.gridHeader.USER_NAME' | translate }} - + *ngIf="form.controls.userName.hasError('invalidAutocompleteString')"> {{ 'securityEvent.AUTOCOMPLETE_INVALID' - | translate - : { field: ('event.gridHeader.USER_NAME' | translate) } + | translate: { field: ('event.gridHeader.USER_NAME' | translate) } }}

{{ 'securityEvent.HOST' | translate }} - + *ngIf="form.controls.host.hasError('invalidAutocompleteString')"> {{ 'securityEvent.AUTOCOMPLETE_INVALID' - | translate : { field: ('securityEvent.HOST' | translate) } + | translate: { field: ('securityEvent.HOST' | translate) } }} @@ -159,7 +155,7 @@

{{ 'event.gridHeader.CONTAINER' | translate }} - + *ngIf="form.controls.container.hasError('invalidAutocompleteString')"> {{ 'securityEvent.AUTOCOMPLETE_INVALID' - | translate - : { field: ('event.gridHeader.CONTAINER' | translate) } + | translate: { field: ('event.gridHeader.CONTAINER' | translate) } }} @@ -188,7 +183,7 @@

{{ 'event.gridHeader.IMAGE' | translate }} - + *ngIf="form.controls.image.hasError('invalidAutocompleteString')"> {{ 'securityEvent.AUTOCOMPLETE_INVALID' - | translate : { field: ('event.gridHeader.IMAGE' | translate) } + | translate: { field: ('event.gridHeader.IMAGE' | translate) } }}

- - - + + - {{ domainChip }} - + [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes" [placeholder]="'ldap.ADD_DOMAIN' | translate" /> - + @@ -253,7 +248,7 @@

{{ 'securityEvent.OTHER_KEYWORD' | translate }} - + {{ 'securityEvent.EXCLUDED_KEYWORD' | translate }} - +

-
+
`; } else { if (k !== 'Level' && k !== 'Failcnt' && k !== 'PageFaults') { - itemMap[ - k - ] = `
${this.tr.instant( - `event.msg.${parseDivideStyle(k).toUpperCase()}` - )}: ${this.bytesPipe.transform( - v as any - )}
`; + itemMap[k] = + `
${this.tr.instant( + `event.msg.${parseDivideStyle(k).toUpperCase()}` + )}: ${this.bytesPipe.transform( + v as any + )}
`; } else { - itemMap[ - k - ] = `
${this.tr.instant( - `event.msg.${parseDivideStyle(k).toUpperCase()}` - )}: ${numberWithCommas(v)}
`; + itemMap[k] = + `
${this.tr.instant( + `event.msg.${parseDivideStyle(k).toUpperCase()}` + )}: ${numberWithCommas(v)}
`; } if (k === 'UsageLimit' && v === MIN_UNIT64) { - itemMap[ - k - ] = `
${this.tr.instant( - 'event.msg.NOT_SET_LIMIT' - )}
`; + itemMap[k] = + `
${this.tr.instant( + 'event.msg.NOT_SET_LIMIT' + )}
`; } } }); @@ -149,19 +148,17 @@ export class EventsGridMessageCellComponent }; Object.entries(msg).forEach(([k, v]) => { if (k === 'Percentage') { - itemMap[ - k - ] = `
${this.tr.instant( - `event.msg.${parseDivideStyle(k).toUpperCase()}` - )}: ${v}%
`; + itemMap[k] = + `
${this.tr.instant( + `event.msg.${parseDivideStyle(k).toUpperCase()}` + )}: ${v}%
`; } else { - itemMap[ - k - ] = `
${this.tr.instant( - `event.msg.${parseDivideStyle(k).toUpperCase()}` - )}: ${this.bytesPipe.transform( - v as any - )}
`; + itemMap[k] = + `
${this.tr.instant( + `event.msg.${parseDivideStyle(k).toUpperCase()}` + )}: ${this.bytesPipe.transform( + v as any + )}
`; } }); return Object.values(itemMap).join(''); diff --git a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.html b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.html index a7780b1d1..002d33de9 100644 --- a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.html +++ b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.html @@ -1,9 +1,9 @@
-
+
-
+
{{ name }}
diff --git a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.ts b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.ts index 2104152df..2bed69ea5 100644 --- a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-name-cell/events-grid-name-cell.component.ts @@ -3,6 +3,7 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-events-grid-name-cell', templateUrl: './events-grid-name-cell.component.html', styleUrls: ['./events-grid-name-cell.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-user-cell/events-grid-user-cell.component.ts b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-user-cell/events-grid-user-cell.component.ts index c44e83c68..943f7e949 100644 --- a/admin/webapp/websrc/app/routes/components/events-grid/events-grid-user-cell/events-grid-user-cell.component.ts +++ b/admin/webapp/websrc/app/routes/components/events-grid/events-grid-user-cell/events-grid-user-cell.component.ts @@ -3,6 +3,7 @@ import { ICellRendererAngularComp } from 'ag-grid-angular'; import { ICellRendererParams } from 'ag-grid-community'; @Component({ + standalone: false, selector: 'app-events-grid-user-cell', templateUrl: './events-grid-user-cell.component.html', styleUrls: ['./events-grid-user-cell.component.scss'], diff --git a/admin/webapp/websrc/app/routes/components/events-grid/events-grid.component.html b/admin/webapp/websrc/app/routes/components/events-grid/events-grid.component.html index 2b265471e..304e624df 100644 --- a/admin/webapp/websrc/app/routes/components/events-grid/events-grid.component.html +++ b/admin/webapp/websrc/app/routes/components/events-grid/events-grid.component.html @@ -19,6 +19,7 @@