mirror of
https://github.com/ceph/ceph
synced 2026-08-01 22:45:39 +00:00
mgr/dashboard: upgrade angular to 19
* bump nodejs to 22.21.1 * remove swagger-ui from the package.json and import the bundled version of it which is `swagger-ui-dist`. This removes the dependencies to the react redux which is bought by the swagger-ui and also reduces the build assets and build warnings. we really don't need the whole swagger-ui package to be present here. Also importing the swagger-ui.css inside the api-docs component lazily. since our project is now under nx, upgraded using the nx migrate command. It took care of the changes where it added the `standalone: false` to all our files since we are still on modular architecture. Other changes include - adding `flush()` to fakeAsync mock test - fixing some complaints raised by tsc linter as per the new typescript type checks - removed `this` from html components - fixed jest config for newer presets Signed-off-by: Nizamudeen A <nia@redhat.com>
This commit is contained in:
parent
f3395690ff
commit
52aeababe4
@ -211,7 +211,7 @@ The build process is based on `Node.js <https://nodejs.org/>`_ and requires the
|
||||
Prerequisites
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* Node 20.18.1 or higher
|
||||
* Node 22.21.1 or higher
|
||||
* NPM 10.5.2 or higher
|
||||
|
||||
nodeenv:
|
||||
|
||||
@ -133,7 +133,7 @@ build_dashboard_frontend() {
|
||||
|
||||
$CURR_DIR/src/tools/setup-virtualenv.sh $TEMP_DIR
|
||||
$TEMP_DIR/bin/pip install nodeenv
|
||||
$TEMP_DIR/bin/nodeenv --verbose -p --node=20.18.1
|
||||
$TEMP_DIR/bin/nodeenv --verbose -p --node=22.21.1
|
||||
cd src/pybind/mgr/dashboard/frontend
|
||||
|
||||
. $TEMP_DIR/bin/activate
|
||||
|
||||
@ -1 +1 @@
|
||||
v20.18.1
|
||||
v22.21.1
|
||||
|
||||
@ -69,7 +69,7 @@ else(WITH_SYSTEM_NPM)
|
||||
OUTPUT "${mgr-dashboard-nodeenv-dir}/bin/npm"
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${mgr-dashboard-nodeenv-dir}
|
||||
COMMAND ${mgr-dashboard-nodeenv-dir}/bin/pip install nodeenv
|
||||
COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv --verbose ${node_mirror_opt} -p --node=20.18.1
|
||||
COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv --verbose ${node_mirror_opt} -p --node=22.21.1
|
||||
# ensure that the files that nodeenv unpacks from tarballs are owned by
|
||||
# the current user. This can be an issue due to the node tarball using
|
||||
# uid 1000 and running the unpack in a id-mapped namespace (container)
|
||||
|
||||
@ -12,12 +12,15 @@ const jestConfig = {
|
||||
moduleNameMapper: {
|
||||
'\\.scss$': 'identity-obj-proxy',
|
||||
'~/(.*)$': '<rootDir>/src/$1',
|
||||
'^@carbon/icons/es/(.*)$': '@carbon/icons/lib/$1.js'
|
||||
'^@carbon/icons/es/(.*)$': '@carbon/icons/lib/$1.js',
|
||||
'^lodash-es$': 'lodash',
|
||||
},
|
||||
moduleFileExtensions: ['ts', 'html', 'js', 'json', 'mjs', 'cjs'],
|
||||
preset: 'jest-preset-angular',
|
||||
setupFilesAfterEnv: ['<rootDir>/src/setupJest.ts'],
|
||||
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$|'.concat(esModules.join('|'), ')')],
|
||||
transformIgnorePatterns: [
|
||||
'node_modules/(?!.*\\.mjs$|lodash-es|carbon-components-angular|@angular/localize|' + esModules.join('|') + ')'
|
||||
],
|
||||
transform: {
|
||||
'^.+\\.(ts|html|mjs)$': [
|
||||
'jest-preset-angular',
|
||||
|
||||
9880
src/pybind/mgr/dashboard/frontend/package-lock.json
generated
9880
src/pybind/mgr/dashboard/frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -38,15 +38,15 @@
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "18.2.11",
|
||||
"@angular/common": "18.2.11",
|
||||
"@angular/compiler": "18.2.11",
|
||||
"@angular/core": "18.2.11",
|
||||
"@angular/forms": "18.2.11",
|
||||
"@angular/localize": "18.2.11",
|
||||
"@angular/platform-browser": "18.2.11",
|
||||
"@angular/platform-browser-dynamic": "18.2.11",
|
||||
"@angular/router": "18.2.11",
|
||||
"@angular/animations": "19.2.9",
|
||||
"@angular/common": "19.2.9",
|
||||
"@angular/compiler": "19.2.9",
|
||||
"@angular/core": "19.2.9",
|
||||
"@angular/forms": "19.2.9",
|
||||
"@angular/localize": "19.2.9",
|
||||
"@angular/platform-browser": "19.2.9",
|
||||
"@angular/platform-browser-dynamic": "19.2.9",
|
||||
"@angular/router": "19.2.9",
|
||||
"@carbon/charts-angular": "1.23.9",
|
||||
"@carbon/icons": "11.63.0",
|
||||
"@carbon/styles": "1.83.0",
|
||||
@ -76,24 +76,24 @@
|
||||
"rxjs": "6.6.3",
|
||||
"simplebar-angular": "3.3.0",
|
||||
"stream-browserify": "3.0.0",
|
||||
"swagger-ui": "5.3.1",
|
||||
"swagger-ui-dist": "5.31.0",
|
||||
"timers-browserify": "2.0.12",
|
||||
"tslib": "2.6.2",
|
||||
"xml2js": "0.6.2",
|
||||
"zone.js": "0.14.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "18.2.20",
|
||||
"@angular-devkit/core": "18.2.11",
|
||||
"@angular-devkit/schematics": "18.2.11",
|
||||
"@angular-devkit/build-angular": "19.2.9",
|
||||
"@angular-devkit/core": "19.2.9",
|
||||
"@angular-devkit/schematics": "19.2.9",
|
||||
"@angular-eslint/builder": "18.4.0",
|
||||
"@angular-eslint/eslint-plugin": "18.4.0",
|
||||
"@angular-eslint/eslint-plugin-template": "18.4.0",
|
||||
"@angular-eslint/schematics": "18.4.0",
|
||||
"@angular-eslint/template-parser": "18.4.0",
|
||||
"@angular/cli": "18.2.11",
|
||||
"@angular/compiler-cli": "18.2.11",
|
||||
"@angular/language-service": "18.2.11",
|
||||
"@angular/cli": "19.2.9",
|
||||
"@angular/compiler-cli": "19.2.9",
|
||||
"@angular/language-service": "19.2.9",
|
||||
"@applitools/eyes-cypress": "3.52.0",
|
||||
"@compodoc/compodoc": "1.1.26",
|
||||
"@cypress/browserify-preprocessor": "3.0.2",
|
||||
@ -102,6 +102,7 @@
|
||||
"@nx/module-federation": "20.8.1",
|
||||
"@nx/webpack": "20.8.1",
|
||||
"@nx/workspace": "20.8.1",
|
||||
"@rspack/core": "1.4.11",
|
||||
"@schematics/angular": "18.2.11",
|
||||
"@types/brace-expansion": "1.1.0",
|
||||
"@types/cypress": "0.1.6",
|
||||
@ -110,8 +111,7 @@
|
||||
"@types/jest": "29.5.4",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@types/lodash": "4.14.161",
|
||||
"@types/node": "18.17.12",
|
||||
"@types/swagger-ui": "3.52.0",
|
||||
"@types/node": "22.19.3",
|
||||
"@types/validator": "13.15.10",
|
||||
"@types/xml2js": "0.4.14",
|
||||
"@typescript-eslint/eslint-plugin": "8.14.0",
|
||||
@ -147,7 +147,7 @@
|
||||
"stylelint-scss": "6.12.1",
|
||||
"table": "6.8.0",
|
||||
"ts-node": "10.9.2",
|
||||
"typescript": "5.4.5",
|
||||
"typescript": "5.8.3",
|
||||
"validator": "13.15.23"
|
||||
},
|
||||
"cypress-cucumber-preprocessor": {
|
||||
|
||||
@ -84,15 +84,9 @@
|
||||
"glob": "**/swagger-ui.css",
|
||||
"input": "node_modules/swagger-ui-dist",
|
||||
"output": "."
|
||||
},
|
||||
{
|
||||
"glob": "**/swagger-ui-bundle.js",
|
||||
"input": "node_modules/swagger-ui-dist",
|
||||
"output": "."
|
||||
}
|
||||
],
|
||||
"styles": [
|
||||
"node_modules/swagger-ui/dist/swagger-ui.css",
|
||||
"node_modules/ngx-toastr/toastr.css",
|
||||
"src/styles.scss"
|
||||
],
|
||||
|
||||
@ -5,7 +5,8 @@ import { NgbPopoverConfig, NgbTooltipConfig } from '@ng-bootstrap/ng-bootstrap';
|
||||
@Component({
|
||||
selector: 'cd-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.scss']
|
||||
styleUrls: ['./app.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class AppComponent {
|
||||
constructor(popoverConfig: NgbPopoverConfig, tooltipConfig: NgbTooltipConfig) {
|
||||
|
||||
@ -6,7 +6,8 @@ import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
|
||||
@Component({
|
||||
selector: 'cd-iscsi-setting',
|
||||
templateUrl: './iscsi-setting.component.html',
|
||||
styleUrls: ['./iscsi-setting.component.scss']
|
||||
styleUrls: ['./iscsi-setting.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiSettingComponent implements OnInit {
|
||||
@Input()
|
||||
|
||||
@ -3,6 +3,7 @@ import { Component } from '@angular/core';
|
||||
@Component({
|
||||
selector: 'cd-iscsi-tabs',
|
||||
templateUrl: './iscsi-tabs.component.html',
|
||||
styleUrls: ['./iscsi-tabs.component.scss']
|
||||
styleUrls: ['./iscsi-tabs.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTabsComponent {}
|
||||
|
||||
@ -14,7 +14,8 @@ import { TreeViewService } from '~/app/shared/services/tree-view.service';
|
||||
@Component({
|
||||
selector: 'cd-iscsi-target-details',
|
||||
templateUrl: './iscsi-target-details.component.html',
|
||||
styleUrls: ['./iscsi-target-details.component.scss']
|
||||
styleUrls: ['./iscsi-target-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
|
||||
@Input()
|
||||
|
||||
@ -15,7 +15,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-iscsi-target-discovery-modal',
|
||||
templateUrl: './iscsi-target-discovery-modal.component.html',
|
||||
styleUrls: ['./iscsi-target-discovery-modal.component.scss']
|
||||
styleUrls: ['./iscsi-target-discovery-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTargetDiscoveryModalComponent implements OnInit {
|
||||
discoveryForm: CdFormGroup;
|
||||
|
||||
@ -25,7 +25,8 @@ import { IscsiTargetIqnSettingsModalComponent } from '../iscsi-target-iqn-settin
|
||||
@Component({
|
||||
selector: 'cd-iscsi-target-form',
|
||||
templateUrl: './iscsi-target-form.component.html',
|
||||
styleUrls: ['./iscsi-target-form.component.scss']
|
||||
styleUrls: ['./iscsi-target-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTargetFormComponent extends CdForm implements OnInit {
|
||||
cephIscsiConfigVersion: number;
|
||||
|
||||
@ -11,7 +11,8 @@ import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
|
||||
@Component({
|
||||
selector: 'cd-iscsi-target-image-settings-modal',
|
||||
templateUrl: './iscsi-target-image-settings-modal.component.html',
|
||||
styleUrls: ['./iscsi-target-image-settings-modal.component.scss']
|
||||
styleUrls: ['./iscsi-target-image-settings-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTargetImageSettingsModalComponent implements OnInit {
|
||||
image: string;
|
||||
|
||||
@ -11,7 +11,8 @@ import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
|
||||
@Component({
|
||||
selector: 'cd-iscsi-target-iqn-settings-modal',
|
||||
templateUrl: './iscsi-target-iqn-settings-modal.component.html',
|
||||
styleUrls: ['./iscsi-target-iqn-settings-modal.component.scss']
|
||||
styleUrls: ['./iscsi-target-iqn-settings-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTargetIqnSettingsModalComponent implements OnInit {
|
||||
target_controls: UntypedFormControl;
|
||||
|
||||
@ -29,7 +29,8 @@ import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
|
||||
selector: 'cd-iscsi-target-list',
|
||||
templateUrl: './iscsi-target-list.component.html',
|
||||
styleUrls: ['./iscsi-target-list.component.scss'],
|
||||
providers: [TaskListService]
|
||||
providers: [TaskListService],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiTargetListComponent extends ListWithDetails implements OnInit, OnDestroy {
|
||||
@ViewChild(TableComponent)
|
||||
|
||||
@ -8,7 +8,8 @@ import { IscsiBackstorePipe } from '~/app/shared/pipes/iscsi-backstore.pipe';
|
||||
@Component({
|
||||
selector: 'cd-iscsi',
|
||||
templateUrl: './iscsi.component.html',
|
||||
styleUrls: ['./iscsi.component.scss']
|
||||
styleUrls: ['./iscsi.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class IscsiComponent implements OnInit {
|
||||
@ViewChild('iscsiSparklineTpl', { static: true })
|
||||
|
||||
@ -23,7 +23,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-bootstrap-create-modal',
|
||||
templateUrl: './bootstrap-create-modal.component.html',
|
||||
styleUrls: ['./bootstrap-create-modal.component.scss']
|
||||
styleUrls: ['./bootstrap-create-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class BootstrapCreateModalComponent
|
||||
extends BaseModal
|
||||
|
||||
@ -16,7 +16,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-bootstrap-import-modal',
|
||||
templateUrl: './bootstrap-import-modal.component.html',
|
||||
styleUrls: ['./bootstrap-import-modal.component.scss']
|
||||
styleUrls: ['./bootstrap-import-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class BootstrapImportModalComponent extends BaseModal implements OnInit, OnDestroy {
|
||||
pools: any[] = [];
|
||||
|
||||
@ -9,7 +9,8 @@ import { CephShortVersionPipe } from '~/app/shared/pipes/ceph-short-version.pipe
|
||||
@Component({
|
||||
selector: 'cd-mirroring-daemons',
|
||||
templateUrl: './daemon-list.component.html',
|
||||
styleUrls: ['./daemon-list.component.scss']
|
||||
styleUrls: ['./daemon-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class DaemonListComponent implements OnInit, OnDestroy {
|
||||
@ViewChild('healthTmpl', { static: true })
|
||||
|
||||
@ -8,7 +8,8 @@ import { TableStatusViewCache } from '~/app/shared/classes/table-status-view-cac
|
||||
@Component({
|
||||
selector: 'cd-mirroring-images',
|
||||
templateUrl: './image-list.component.html',
|
||||
styleUrls: ['./image-list.component.scss']
|
||||
styleUrls: ['./image-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class ImageListComponent implements OnInit, OnDestroy {
|
||||
@ViewChild('stateTmpl', { static: true })
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
|
||||
@Pipe({
|
||||
name: 'mirrorHealthColor'
|
||||
name: 'mirrorHealthColor',
|
||||
standalone: false
|
||||
})
|
||||
export class MirrorHealthColorPipe implements PipeTransform {
|
||||
transform(value: any): any {
|
||||
|
||||
@ -21,7 +21,8 @@ import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
|
||||
@Component({
|
||||
selector: 'cd-mirroring',
|
||||
templateUrl: './overview.component.html',
|
||||
styleUrls: ['./overview.component.scss']
|
||||
styleUrls: ['./overview.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OverviewComponent implements OnInit, OnDestroy {
|
||||
rbdmirroringForm: CdFormGroup;
|
||||
|
||||
@ -16,7 +16,8 @@ import { BaseModal } from 'carbon-components-angular';
|
||||
@Component({
|
||||
selector: 'cd-pool-edit-mode-modal',
|
||||
templateUrl: './pool-edit-mode-modal.component.html',
|
||||
styleUrls: ['./pool-edit-mode-modal.component.scss']
|
||||
styleUrls: ['./pool-edit-mode-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class PoolEditModeModalComponent extends BaseModal implements OnInit, OnDestroy {
|
||||
poolName: string;
|
||||
|
||||
@ -12,7 +12,8 @@ import { BaseModal } from 'carbon-components-angular';
|
||||
@Component({
|
||||
selector: 'cd-pool-edit-peer-modal',
|
||||
templateUrl: './pool-edit-peer-modal.component.html',
|
||||
styleUrls: ['./pool-edit-peer-modal.component.scss']
|
||||
styleUrls: ['./pool-edit-peer-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class PoolEditPeerModalComponent extends BaseModal implements OnInit {
|
||||
editPeerForm: CdFormGroup;
|
||||
|
||||
@ -22,7 +22,8 @@ const BASE_URL = '/block/mirroring';
|
||||
@Component({
|
||||
selector: 'cd-mirroring-pools',
|
||||
templateUrl: './pool-list.component.html',
|
||||
styleUrls: ['./pool-list.component.scss']
|
||||
styleUrls: ['./pool-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class PoolListComponent implements OnInit, OnDestroy {
|
||||
@ViewChild('healthTmpl', { static: true })
|
||||
|
||||
@ -17,7 +17,8 @@ import { CephServiceSpec } from '~/app/shared/models/service.interface';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-gateway-group',
|
||||
templateUrl: './nvmeof-gateway-group.component.html',
|
||||
styleUrls: ['./nvmeof-gateway-group.component.scss']
|
||||
styleUrls: ['./nvmeof-gateway-group.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofGatewayGroupComponent implements OnInit {
|
||||
@ViewChild(TableComponent, { static: true })
|
||||
|
||||
@ -14,7 +14,8 @@ enum TABS {
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-gateway',
|
||||
templateUrl: './nvmeof-gateway.component.html',
|
||||
styleUrls: ['./nvmeof-gateway.component.scss']
|
||||
styleUrls: ['./nvmeof-gateway.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofGatewayComponent {
|
||||
selectedTab: TABS;
|
||||
|
||||
@ -15,7 +15,8 @@ import { InitiatorRequest, NvmeofService } from '~/app/shared/api/nvmeof.service
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-initiators-form',
|
||||
templateUrl: './nvmeof-initiators-form.component.html',
|
||||
styleUrls: ['./nvmeof-initiators-form.component.scss']
|
||||
styleUrls: ['./nvmeof-initiators-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofInitiatorsFormComponent implements OnInit {
|
||||
permission: Permission;
|
||||
|
||||
@ -18,7 +18,8 @@ const BASE_URL = 'block/nvmeof/subsystems';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-initiators-list',
|
||||
templateUrl: './nvmeof-initiators-list.component.html',
|
||||
styleUrls: ['./nvmeof-initiators-list.component.scss']
|
||||
styleUrls: ['./nvmeof-initiators-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofInitiatorsListComponent implements OnInit {
|
||||
@Input()
|
||||
|
||||
@ -21,7 +21,8 @@ import { Host } from '~/app/shared/models/host.interface';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-listeners-form',
|
||||
templateUrl: './nvmeof-listeners-form.component.html',
|
||||
styleUrls: ['./nvmeof-listeners-form.component.scss']
|
||||
styleUrls: ['./nvmeof-listeners-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofListenersFormComponent implements OnInit {
|
||||
action: string;
|
||||
|
||||
@ -19,7 +19,8 @@ const BASE_URL = 'block/nvmeof/subsystems';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-listeners-list',
|
||||
templateUrl: './nvmeof-listeners-list.component.html',
|
||||
styleUrls: ['./nvmeof-listeners-list.component.scss']
|
||||
styleUrls: ['./nvmeof-listeners-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofListenersListComponent implements OnInit {
|
||||
@Input()
|
||||
|
||||
@ -26,7 +26,8 @@ import { HttpResponse } from '@angular/common/http';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-namespaces-form',
|
||||
templateUrl: './nvmeof-namespaces-form.component.html',
|
||||
styleUrls: ['./nvmeof-namespaces-form.component.scss']
|
||||
styleUrls: ['./nvmeof-namespaces-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofNamespacesFormComponent implements OnInit {
|
||||
action: string;
|
||||
|
||||
@ -21,7 +21,8 @@ const BASE_URL = 'block/nvmeof/subsystems';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-namespaces-list',
|
||||
templateUrl: './nvmeof-namespaces-list.component.html',
|
||||
styleUrls: ['./nvmeof-namespaces-list.component.scss']
|
||||
styleUrls: ['./nvmeof-namespaces-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofNamespacesListComponent implements OnInit {
|
||||
@Input()
|
||||
|
||||
@ -5,7 +5,8 @@ import { Permissions } from '~/app/shared/models/permissions';
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-subsystems-details',
|
||||
templateUrl: './nvmeof-subsystems-details.component.html',
|
||||
styleUrls: ['./nvmeof-subsystems-details.component.scss']
|
||||
styleUrls: ['./nvmeof-subsystems-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofSubsystemsDetailsComponent implements OnChanges {
|
||||
@Input()
|
||||
|
||||
@ -18,7 +18,8 @@ import {
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-subsystems-form',
|
||||
templateUrl: './nvmeof-subsystems-form.component.html',
|
||||
styleUrls: ['./nvmeof-subsystems-form.component.scss']
|
||||
styleUrls: ['./nvmeof-subsystems-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofSubsystemsFormComponent implements OnInit {
|
||||
permission: Permission;
|
||||
|
||||
@ -22,7 +22,8 @@ const DEFAULT_PLACEHOLDER = $localize`Enter group name`;
|
||||
@Component({
|
||||
selector: 'cd-nvmeof-subsystems',
|
||||
templateUrl: './nvmeof-subsystems.component.html',
|
||||
styleUrls: ['./nvmeof-subsystems.component.scss']
|
||||
styleUrls: ['./nvmeof-subsystems.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class NvmeofSubsystemsComponent extends ListWithDetails implements OnInit {
|
||||
subsystems: NvmeofSubsystem[] = [];
|
||||
|
||||
@ -17,7 +17,8 @@ import { RbdConfigurationService } from '~/app/shared/services/rbd-configuration
|
||||
@Component({
|
||||
selector: 'cd-rbd-configuration-form',
|
||||
templateUrl: './rbd-configuration-form.component.html',
|
||||
styleUrls: ['./rbd-configuration-form.component.scss']
|
||||
styleUrls: ['./rbd-configuration-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdConfigurationFormComponent implements OnInit {
|
||||
@Input()
|
||||
|
||||
@ -14,7 +14,8 @@ import { RbdConfigurationService } from '~/app/shared/services/rbd-configuration
|
||||
@Component({
|
||||
selector: 'cd-rbd-configuration-table',
|
||||
templateUrl: './rbd-configuration-list.component.html',
|
||||
styleUrls: ['./rbd-configuration-list.component.scss']
|
||||
styleUrls: ['./rbd-configuration-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdConfigurationListComponent implements OnInit, OnChanges {
|
||||
@Input()
|
||||
|
||||
@ -7,7 +7,8 @@ import { RbdFormModel } from '../rbd-form/rbd-form.model';
|
||||
@Component({
|
||||
selector: 'cd-rbd-details',
|
||||
templateUrl: './rbd-details.component.html',
|
||||
styleUrls: ['./rbd-details.component.scss']
|
||||
styleUrls: ['./rbd-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdDetailsComponent implements OnChanges {
|
||||
@Input()
|
||||
|
||||
@ -45,7 +45,8 @@ class ExternalData {
|
||||
@Component({
|
||||
selector: 'cd-rbd-form',
|
||||
templateUrl: './rbd-form.component.html',
|
||||
styleUrls: ['./rbd-form.component.scss']
|
||||
styleUrls: ['./rbd-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdFormComponent extends CdForm implements OnInit {
|
||||
poolPermission: Permission;
|
||||
|
||||
@ -42,7 +42,8 @@ const BASE_URL = 'block/rbd';
|
||||
providers: [
|
||||
TaskListService,
|
||||
{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }
|
||||
]
|
||||
],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdListComponent extends ListWithDetails implements OnInit {
|
||||
@ViewChild(TableComponent, { static: true })
|
||||
|
||||
@ -24,7 +24,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-rbd-namespace-form-modal',
|
||||
templateUrl: './rbd-namespace-form-modal.component.html',
|
||||
styleUrls: ['./rbd-namespace-form-modal.component.scss']
|
||||
styleUrls: ['./rbd-namespace-form-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdNamespaceFormModalComponent extends BaseModal implements OnInit {
|
||||
poolPermission: Permission;
|
||||
|
||||
@ -23,7 +23,8 @@ import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
|
||||
selector: 'cd-rbd-namespace-list',
|
||||
templateUrl: './rbd-namespace-list.component.html',
|
||||
styleUrls: ['./rbd-namespace-list.component.scss'],
|
||||
providers: [TaskListService]
|
||||
providers: [TaskListService],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdNamespaceListComponent implements OnInit {
|
||||
columns: CdTableColumn[];
|
||||
|
||||
@ -3,6 +3,7 @@ import { Component } from '@angular/core';
|
||||
@Component({
|
||||
selector: 'cd-rbd-performance',
|
||||
templateUrl: './rbd-performance.component.html',
|
||||
styleUrls: ['./rbd-performance.component.scss']
|
||||
styleUrls: ['./rbd-performance.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdPerformanceComponent {}
|
||||
|
||||
@ -17,7 +17,8 @@ import { TaskManagerService } from '~/app/shared/services/task-manager.service';
|
||||
@Component({
|
||||
selector: 'cd-rbd-snapshot-form-modal',
|
||||
templateUrl: './rbd-snapshot-form-modal.component.html',
|
||||
styleUrls: ['./rbd-snapshot-form-modal.component.scss']
|
||||
styleUrls: ['./rbd-snapshot-form-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdSnapshotFormModalComponent extends BaseModal implements OnInit {
|
||||
snapshotForm: CdFormGroup;
|
||||
|
||||
@ -44,7 +44,8 @@ import { DeletionImpact } from '~/app/shared/enum/delete-confirmation-modal-impa
|
||||
templateUrl: './rbd-snapshot-list.component.html',
|
||||
styleUrls: ['./rbd-snapshot-list.component.scss'],
|
||||
providers: [TaskListService],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: false
|
||||
})
|
||||
export class RbdSnapshotListComponent implements OnInit, OnChanges {
|
||||
@Input()
|
||||
|
||||
@ -6,7 +6,8 @@ import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
|
||||
@Component({
|
||||
selector: 'cd-rbd-tabs',
|
||||
templateUrl: './rbd-tabs.component.html',
|
||||
styleUrls: ['./rbd-tabs.component.scss']
|
||||
styleUrls: ['./rbd-tabs.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdTabsComponent {
|
||||
grafanaPermission: Permission;
|
||||
|
||||
@ -32,7 +32,8 @@ import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
|
||||
selector: 'cd-rbd-trash-list',
|
||||
templateUrl: './rbd-trash-list.component.html',
|
||||
styleUrls: ['./rbd-trash-list.component.scss'],
|
||||
providers: [TaskListService]
|
||||
providers: [TaskListService],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdTrashListComponent implements OnInit {
|
||||
@ViewChild(TableComponent, { static: true })
|
||||
|
||||
@ -16,7 +16,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-rbd-trash-move-modal',
|
||||
templateUrl: './rbd-trash-move-modal.component.html',
|
||||
styleUrls: ['./rbd-trash-move-modal.component.scss']
|
||||
styleUrls: ['./rbd-trash-move-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdTrashMoveModalComponent extends BaseModal implements OnInit {
|
||||
imageSpec: ImageSpec;
|
||||
|
||||
@ -16,7 +16,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-rbd-trash-purge-modal',
|
||||
templateUrl: './rbd-trash-purge-modal.component.html',
|
||||
styleUrls: ['./rbd-trash-purge-modal.component.scss']
|
||||
styleUrls: ['./rbd-trash-purge-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdTrashPurgeModalComponent extends BaseModal implements OnInit {
|
||||
poolPermission: Permission;
|
||||
|
||||
@ -14,7 +14,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-rbd-trash-restore-modal',
|
||||
templateUrl: './rbd-trash-restore-modal.component.html',
|
||||
styleUrls: ['./rbd-trash-restore-modal.component.scss']
|
||||
styleUrls: ['./rbd-trash-restore-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class RbdTrashRestoreModalComponent extends BaseModal implements OnInit {
|
||||
executingTasks: ExecutingTask[];
|
||||
|
||||
@ -25,7 +25,8 @@ const DEBOUNCE_TIMER = 300;
|
||||
@Component({
|
||||
selector: 'cd-cephfs-auth-modal',
|
||||
templateUrl: './cephfs-auth-modal.component.html',
|
||||
styleUrls: ['./cephfs-auth-modal.component.scss']
|
||||
styleUrls: ['./cephfs-auth-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsAuthModalComponent extends CdForm implements OnInit, AfterViewInit {
|
||||
subvolumeGroup: string;
|
||||
|
||||
@ -10,7 +10,8 @@ import { ChartTooltip } from '~/app/shared/models/chart-tooltip';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-chart',
|
||||
templateUrl: './cephfs-chart.component.html',
|
||||
styleUrls: ['./cephfs-chart.component.scss']
|
||||
styleUrls: ['./cephfs-chart.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsChartComponent implements OnChanges, OnInit {
|
||||
@ViewChild('chartCanvas', { static: true })
|
||||
|
||||
@ -20,7 +20,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-cephfs-clients',
|
||||
templateUrl: './cephfs-clients.component.html',
|
||||
styleUrls: ['./cephfs-clients.component.scss']
|
||||
styleUrls: ['./cephfs-clients.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsClientsComponent extends BaseModal implements OnInit {
|
||||
@Input()
|
||||
|
||||
@ -5,7 +5,7 @@ import { SharedModule } from '~/app/shared/shared.module';
|
||||
import { configureTestBed } from '~/testing/unit-test-helper';
|
||||
import { CephfsDetailComponent } from './cephfs-detail.component';
|
||||
|
||||
@Component({ selector: 'cd-cephfs-chart', template: '' })
|
||||
@Component({ selector: 'cd-cephfs-chart', template: '', standalone: false })
|
||||
class CephfsChartStubComponent {
|
||||
@Input()
|
||||
mdsCounter: any;
|
||||
|
||||
@ -7,7 +7,8 @@ import { DimlessPipe } from '~/app/shared/pipes/dimless.pipe';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-detail',
|
||||
templateUrl: './cephfs-detail.component.html',
|
||||
styleUrls: ['./cephfs-detail.component.scss']
|
||||
styleUrls: ['./cephfs-detail.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsDetailComponent implements OnChanges, OnInit {
|
||||
@ViewChild('poolUsageTpl', { static: true })
|
||||
|
||||
@ -53,7 +53,8 @@ type TQuotaSettings = 'max_bytes' | 'max_files';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-directories',
|
||||
templateUrl: './cephfs-directories.component.html',
|
||||
styleUrls: ['./cephfs-directories.component.scss']
|
||||
styleUrls: ['./cephfs-directories.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsDirectoriesComponent implements OnInit, OnChanges {
|
||||
@ViewChild(TreeViewComponent)
|
||||
|
||||
@ -26,7 +26,8 @@ import { Host } from '~/app/shared/models/host.interface';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-form',
|
||||
templateUrl: './cephfs-form.component.html',
|
||||
styleUrls: ['./cephfs-form.component.scss']
|
||||
styleUrls: ['./cephfs-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsVolumeFormComponent extends CdForm implements OnInit {
|
||||
@ViewChild('crushInfoTabs') crushInfoTabs: NgbNav;
|
||||
|
||||
@ -16,7 +16,7 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
import { CephfsListComponent } from './cephfs-list.component';
|
||||
import { CephfsService } from '~/app/shared/api/cephfs.service';
|
||||
|
||||
@Component({ selector: 'cd-cephfs-tabs', template: '' })
|
||||
@Component({ selector: 'cd-cephfs-tabs', template: '', standalone: false })
|
||||
class CephfsTabsStubComponent {
|
||||
@Input()
|
||||
selection: CdTableSelection;
|
||||
|
||||
@ -34,7 +34,8 @@ const BASE_URL = 'cephfs/fs';
|
||||
selector: 'cd-cephfs-list',
|
||||
templateUrl: './cephfs-list.component.html',
|
||||
styleUrls: ['./cephfs-list.component.scss'],
|
||||
providers: [{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }]
|
||||
providers: [{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsListComponent extends ListWithDetails implements OnInit {
|
||||
@ViewChild('deleteTpl', { static: true })
|
||||
|
||||
@ -6,7 +6,8 @@ import { MountData } from '~/app/shared/models/cephfs.model';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-mount-details',
|
||||
templateUrl: './cephfs-mount-details.component.html',
|
||||
styleUrls: ['./cephfs-mount-details.component.scss']
|
||||
styleUrls: ['./cephfs-mount-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsMountDetailsComponent extends BaseModal implements OnInit {
|
||||
@ViewChild('mountDetailsTpl', { static: true })
|
||||
|
||||
@ -40,7 +40,8 @@ const DEBOUNCE_TIMER = 300;
|
||||
@Component({
|
||||
selector: 'cd-cephfs-snapshotschedule-form',
|
||||
templateUrl: './cephfs-snapshotschedule-form.component.html',
|
||||
styleUrls: ['./cephfs-snapshotschedule-form.component.scss']
|
||||
styleUrls: ['./cephfs-snapshotschedule-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSnapshotscheduleFormComponent extends CdForm implements OnInit {
|
||||
subvol!: string;
|
||||
|
||||
@ -32,7 +32,8 @@ import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-snapshotschedule-list',
|
||||
templateUrl: './cephfs-snapshotschedule-list.component.html',
|
||||
styleUrls: ['./cephfs-snapshotschedule-list.component.scss']
|
||||
styleUrls: ['./cephfs-snapshotschedule-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSnapshotscheduleListComponent
|
||||
extends CdForm
|
||||
|
||||
@ -20,7 +20,8 @@ import { Observable } from 'rxjs';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-subvolume-form',
|
||||
templateUrl: './cephfs-subvolume-form.component.html',
|
||||
styleUrls: ['./cephfs-subvolume-form.component.scss']
|
||||
styleUrls: ['./cephfs-subvolume-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSubvolumeFormComponent extends CdForm implements OnInit {
|
||||
subvolumeForm: CdFormGroup;
|
||||
|
||||
@ -25,7 +25,8 @@ import { DeletionImpact } from '~/app/shared/enum/delete-confirmation-modal-impa
|
||||
@Component({
|
||||
selector: 'cd-cephfs-subvolume-group',
|
||||
templateUrl: './cephfs-subvolume-group.component.html',
|
||||
styleUrls: ['./cephfs-subvolume-group.component.scss']
|
||||
styleUrls: ['./cephfs-subvolume-group.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSubvolumeGroupComponent implements OnInit, OnChanges {
|
||||
@ViewChild('quotaUsageTpl', { static: true })
|
||||
|
||||
@ -40,7 +40,8 @@ import { DeletionImpact } from '~/app/shared/enum/delete-confirmation-modal-impa
|
||||
@Component({
|
||||
selector: 'cd-cephfs-subvolume-list',
|
||||
templateUrl: './cephfs-subvolume-list.component.html',
|
||||
styleUrls: ['./cephfs-subvolume-list.component.scss']
|
||||
styleUrls: ['./cephfs-subvolume-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSubvolumeListComponent extends CdForm implements OnInit, OnChanges {
|
||||
@ViewChild('quotaUsageTpl', { static: true })
|
||||
|
||||
@ -14,7 +14,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-subvolume-snapshots-form',
|
||||
templateUrl: './cephfs-subvolume-snapshots-form.component.html',
|
||||
styleUrls: ['./cephfs-subvolume-snapshots-form.component.scss']
|
||||
styleUrls: ['./cephfs-subvolume-snapshots-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSubvolumeSnapshotsFormComponent extends CdForm implements OnInit {
|
||||
subVolumeGroups: string[];
|
||||
|
||||
@ -32,7 +32,8 @@ import { DeletionImpact } from '~/app/shared/enum/delete-confirmation-modal-impa
|
||||
@Component({
|
||||
selector: 'cd-cephfs-subvolume-snapshots-list',
|
||||
templateUrl: './cephfs-subvolume-snapshots-list.component.html',
|
||||
styleUrls: ['./cephfs-subvolume-snapshots-list.component.scss']
|
||||
styleUrls: ['./cephfs-subvolume-snapshots-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSubvolumeSnapshotsListComponent implements OnInit, OnChanges {
|
||||
@Input() fsName: string;
|
||||
|
||||
@ -17,7 +17,8 @@ import { OctalToHumanReadablePipe } from '~/app/shared/pipes/octal-to-human-read
|
||||
@Component({
|
||||
selector: 'cd-cephfs-subvolumegroup-form',
|
||||
templateUrl: './cephfs-subvolumegroup-form.component.html',
|
||||
styleUrls: ['./cephfs-subvolumegroup-form.component.scss']
|
||||
styleUrls: ['./cephfs-subvolumegroup-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsSubvolumegroupFormComponent extends CdForm implements OnInit {
|
||||
subvolumegroupForm: CdFormGroup;
|
||||
|
||||
@ -71,7 +71,7 @@ describe('CephfsTabsComponent', () => {
|
||||
component.softRefresh();
|
||||
};
|
||||
|
||||
@Component({ selector: 'cd-cephfs-chart', template: '' })
|
||||
@Component({ selector: 'cd-cephfs-chart', template: '', standalone: false })
|
||||
class CephfsChartStubComponent {
|
||||
@Input()
|
||||
mdsCounter: any;
|
||||
|
||||
@ -12,7 +12,8 @@ import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
|
||||
@Component({
|
||||
selector: 'cd-cephfs-tabs',
|
||||
templateUrl: './cephfs-tabs.component.html',
|
||||
styleUrls: ['./cephfs-tabs.component.scss']
|
||||
styleUrls: ['./cephfs-tabs.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CephfsTabsComponent implements OnChanges, OnDestroy {
|
||||
@Input()
|
||||
|
||||
@ -5,7 +5,8 @@ import _ from 'lodash';
|
||||
@Component({
|
||||
selector: 'cd-configuration-details',
|
||||
templateUrl: './configuration-details.component.html',
|
||||
styleUrls: ['./configuration-details.component.scss']
|
||||
styleUrls: ['./configuration-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class ConfigurationDetailsComponent implements OnChanges {
|
||||
@Input()
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
[id]="section"
|
||||
[placeholder]="humanReadableType"
|
||||
[formControlName]="section"
|
||||
[step]="getStep(type, this.configForm.getValue(section))">
|
||||
[step]="getStep(type, configForm.getValue(section))">
|
||||
<span class="invalid-feedback"
|
||||
*ngIf="configForm.showError(section, formDir, 'pattern')">
|
||||
{{ patternHelpText }}
|
||||
|
||||
@ -21,7 +21,8 @@ const RGW = 'rgw';
|
||||
@Component({
|
||||
selector: 'cd-configuration-form',
|
||||
templateUrl: './configuration-form.component.html',
|
||||
styleUrls: ['./configuration-form.component.scss']
|
||||
styleUrls: ['./configuration-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class ConfigurationFormComponent extends CdForm implements OnInit {
|
||||
configForm: CdFormGroup;
|
||||
|
||||
@ -17,7 +17,8 @@ const RGW = 'rgw';
|
||||
@Component({
|
||||
selector: 'cd-configuration',
|
||||
templateUrl: './configuration.component.html',
|
||||
styleUrls: ['./configuration.component.scss']
|
||||
styleUrls: ['./configuration.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class ConfigurationComponent extends ListWithDetails implements OnInit {
|
||||
permission: Permission;
|
||||
|
||||
@ -13,7 +13,8 @@ import { WizardStepsService } from '~/app/shared/services/wizard-steps.service';
|
||||
@Component({
|
||||
selector: 'cd-create-cluster-review',
|
||||
templateUrl: './create-cluster-review.component.html',
|
||||
styleUrls: ['./create-cluster-review.component.scss']
|
||||
styleUrls: ['./create-cluster-review.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CreateClusterReviewComponent implements OnInit {
|
||||
hosts: object[] = [];
|
||||
|
||||
@ -39,7 +39,8 @@ import { Step } from 'carbon-components-angular';
|
||||
@Component({
|
||||
selector: 'cd-create-cluster',
|
||||
templateUrl: './create-cluster.component.html',
|
||||
styleUrls: ['./create-cluster.component.scss']
|
||||
styleUrls: ['./create-cluster.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CreateClusterComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||
@ViewChild('skipConfirmTpl', { static: true })
|
||||
|
||||
@ -35,7 +35,8 @@ export interface CrushmapNode {
|
||||
@Component({
|
||||
selector: 'cd-crushmap',
|
||||
templateUrl: './crushmap.component.html',
|
||||
styleUrls: ['./crushmap.component.scss']
|
||||
styleUrls: ['./crushmap.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class CrushmapComponent implements OnDestroy, OnInit {
|
||||
private sub = new Subscription();
|
||||
|
||||
@ -5,7 +5,8 @@ import { Permissions } from '~/app/shared/models/permissions';
|
||||
@Component({
|
||||
selector: 'cd-host-details',
|
||||
templateUrl: './host-details.component.html',
|
||||
styleUrls: ['./host-details.component.scss']
|
||||
styleUrls: ['./host-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class HostDetailsComponent {
|
||||
@Input()
|
||||
|
||||
@ -18,7 +18,8 @@ const HOSTS = 'hosts';
|
||||
@Component({
|
||||
selector: 'cd-host-form',
|
||||
templateUrl: './host-form.component.html',
|
||||
styleUrls: ['./host-form.component.scss']
|
||||
styleUrls: ['./host-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class HostFormComponent extends CdForm implements OnInit {
|
||||
open: boolean = false;
|
||||
|
||||
@ -42,7 +42,8 @@ const BASE_URL = 'hosts';
|
||||
selector: 'cd-hosts',
|
||||
templateUrl: './hosts.component.html',
|
||||
styleUrls: ['./hosts.component.scss'],
|
||||
providers: [{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }]
|
||||
providers: [{ provide: URLBuilderService, useValue: new URLBuilderService(BASE_URL) }],
|
||||
standalone: false
|
||||
})
|
||||
export class HostsComponent extends ListWithDetails implements OnDestroy, OnInit {
|
||||
private sub = new Subscription();
|
||||
|
||||
@ -34,7 +34,8 @@ import { ModalCdsService } from '~/app/shared/services/modal-cds.service';
|
||||
@Component({
|
||||
selector: 'cd-inventory-devices',
|
||||
templateUrl: './inventory-devices.component.html',
|
||||
styleUrls: ['./inventory-devices.component.scss']
|
||||
styleUrls: ['./inventory-devices.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class InventoryDevicesComponent implements OnInit, OnDestroy {
|
||||
@ViewChild(TableComponent, { static: true })
|
||||
|
||||
@ -11,7 +11,8 @@ import { InventoryDevice } from './inventory-devices/inventory-device.model';
|
||||
@Component({
|
||||
selector: 'cd-inventory',
|
||||
templateUrl: './inventory.component.html',
|
||||
styleUrls: ['./inventory.component.scss']
|
||||
styleUrls: ['./inventory.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class InventoryComponent implements OnChanges, OnInit, OnDestroy {
|
||||
// Display inventory page only for this hostname, ignore to display all.
|
||||
|
||||
@ -12,7 +12,8 @@ import { Icons } from '~/app/shared/enum/icons.enum';
|
||||
@Component({
|
||||
selector: 'cd-logs',
|
||||
templateUrl: './logs.component.html',
|
||||
styleUrls: ['./logs.component.scss']
|
||||
styleUrls: ['./logs.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class LogsComponent implements OnInit, OnDestroy {
|
||||
@Input()
|
||||
|
||||
@ -5,7 +5,8 @@ import { MgrModuleService } from '~/app/shared/api/mgr-module.service';
|
||||
@Component({
|
||||
selector: 'cd-mgr-module-details',
|
||||
templateUrl: './mgr-module-details.component.html',
|
||||
styleUrls: ['./mgr-module-details.component.scss']
|
||||
styleUrls: ['./mgr-module-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MgrModuleDetailsComponent implements OnChanges {
|
||||
module_config: any;
|
||||
|
||||
@ -17,7 +17,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-mgr-module-form',
|
||||
templateUrl: './mgr-module-form.component.html',
|
||||
styleUrls: ['./mgr-module-form.component.scss']
|
||||
styleUrls: ['./mgr-module-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MgrModuleFormComponent extends CdForm implements OnInit {
|
||||
mgrModuleForm: CdFormGroup;
|
||||
|
||||
@ -15,7 +15,8 @@ import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
|
||||
@Component({
|
||||
selector: 'cd-mgr-module-list',
|
||||
templateUrl: './mgr-module-list.component.html',
|
||||
styleUrls: ['./mgr-module-list.component.scss']
|
||||
styleUrls: ['./mgr-module-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MgrModuleListComponent extends ListWithDetails {
|
||||
@ViewChild(TableComponent, { static: true })
|
||||
|
||||
@ -8,7 +8,8 @@ import { CellTemplate } from '~/app/shared/enum/cell-template.enum';
|
||||
@Component({
|
||||
selector: 'cd-monitor',
|
||||
templateUrl: './monitor.component.html',
|
||||
styleUrls: ['./monitor.component.scss']
|
||||
styleUrls: ['./monitor.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MonitorComponent {
|
||||
mon_status: any;
|
||||
|
||||
@ -3,7 +3,8 @@ import { Component, Input } from '@angular/core';
|
||||
@Component({
|
||||
selector: 'cd-multi-cluster-details',
|
||||
templateUrl: './multi-cluster-details.component.html',
|
||||
styleUrls: ['./multi-cluster-details.component.scss']
|
||||
styleUrls: ['./multi-cluster-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MultiClusterDetailsComponent {
|
||||
@Input()
|
||||
|
||||
@ -14,7 +14,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-multi-cluster-form',
|
||||
templateUrl: './multi-cluster-form.component.html',
|
||||
styleUrls: ['./multi-cluster-form.component.scss']
|
||||
styleUrls: ['./multi-cluster-form.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MultiClusterFormComponent implements OnInit, OnDestroy {
|
||||
@Output()
|
||||
|
||||
@ -26,7 +26,8 @@ import { ListWithDetails } from '~/app/shared/classes/list-with-details.class';
|
||||
@Component({
|
||||
selector: 'cd-multi-cluster-list',
|
||||
templateUrl: './multi-cluster-list.component.html',
|
||||
styleUrls: ['./multi-cluster-list.component.scss']
|
||||
styleUrls: ['./multi-cluster-list.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MultiClusterListComponent extends ListWithDetails implements OnInit, OnDestroy {
|
||||
@ViewChild(TableComponent)
|
||||
|
||||
@ -24,7 +24,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-multi-cluster',
|
||||
templateUrl: './multi-cluster.component.html',
|
||||
styleUrls: ['./multi-cluster.component.scss']
|
||||
styleUrls: ['./multi-cluster.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class MultiClusterComponent implements OnInit, OnDestroy {
|
||||
COUNT_OF_UTILIZATION_CHARTS = 5;
|
||||
@ -91,7 +92,7 @@ export class MultiClusterComponent implements OnInit, OnDestroy {
|
||||
PROMETHEUS_DELAY = 20000;
|
||||
LOAD_DELAY = 5000;
|
||||
CLUSTERS_REFRESH_INTERVAL = 30000;
|
||||
interval: NodeJS.Timer;
|
||||
interval: number;
|
||||
selectedTime: any;
|
||||
multiClusterQueries: any = {};
|
||||
managedByConfig$: Observable<any>;
|
||||
@ -286,7 +287,7 @@ export class MultiClusterComponent implements OnInit, OnDestroy {
|
||||
this.alerts = this.queriesResults.ALERTS;
|
||||
this.getAlertsInfo();
|
||||
this.getClustersInfo();
|
||||
this.interval = setInterval(() => {
|
||||
this.interval = window.setInterval(() => {
|
||||
this.getClustersInfo();
|
||||
}, this.CLUSTERS_REFRESH_INTERVAL);
|
||||
});
|
||||
|
||||
@ -13,7 +13,8 @@ import { TaskWrapperService } from '~/app/shared/services/task-wrapper.service';
|
||||
@Component({
|
||||
selector: 'cd-osd-creation-preview-modal',
|
||||
templateUrl: './osd-creation-preview-modal.component.html',
|
||||
styleUrls: ['./osd-creation-preview-modal.component.scss']
|
||||
styleUrls: ['./osd-creation-preview-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OsdCreationPreviewModalComponent {
|
||||
@Input()
|
||||
|
||||
@ -9,7 +9,8 @@ import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
|
||||
@Component({
|
||||
selector: 'cd-osd-details',
|
||||
templateUrl: './osd-details.component.html',
|
||||
styleUrls: ['./osd-details.component.scss']
|
||||
styleUrls: ['./osd-details.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OsdDetailsComponent implements OnChanges {
|
||||
@Input()
|
||||
|
||||
@ -15,7 +15,8 @@ import { DevicesSelectionClearEvent } from './devices-selection-clear-event.inte
|
||||
@Component({
|
||||
selector: 'cd-osd-devices-selection-groups',
|
||||
templateUrl: './osd-devices-selection-groups.component.html',
|
||||
styleUrls: ['./osd-devices-selection-groups.component.scss']
|
||||
styleUrls: ['./osd-devices-selection-groups.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OsdDevicesSelectionGroupsComponent implements OnInit, OnChanges {
|
||||
// data, wal, db
|
||||
|
||||
@ -22,7 +22,8 @@ import { WizardStepsService } from '~/app/shared/services/wizard-steps.service';
|
||||
@Component({
|
||||
selector: 'cd-osd-devices-selection-modal',
|
||||
templateUrl: './osd-devices-selection-modal.component.html',
|
||||
styleUrls: ['./osd-devices-selection-modal.component.scss']
|
||||
styleUrls: ['./osd-devices-selection-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OsdDevicesSelectionModalComponent implements AfterViewInit {
|
||||
@ViewChild('inventoryDevices')
|
||||
|
||||
@ -15,7 +15,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-osd-flags-indiv-modal',
|
||||
templateUrl: './osd-flags-indiv-modal.component.html',
|
||||
styleUrls: ['./osd-flags-indiv-modal.component.scss']
|
||||
styleUrls: ['./osd-flags-indiv-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OsdFlagsIndivModalComponent implements OnInit {
|
||||
permissions: Permissions;
|
||||
|
||||
@ -14,7 +14,8 @@ import { NotificationService } from '~/app/shared/services/notification.service'
|
||||
@Component({
|
||||
selector: 'cd-osd-flags-modal',
|
||||
templateUrl: './osd-flags-modal.component.html',
|
||||
styleUrls: ['./osd-flags-modal.component.scss']
|
||||
styleUrls: ['./osd-flags-modal.component.scss'],
|
||||
standalone: false
|
||||
})
|
||||
export class OsdFlagsModalComponent implements OnInit {
|
||||
permissions: Permissions;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user