UNPKG

161 kBSource Map (JSON)View Raw
1{"version":3,"file":"ng-jhipster.js","sources":["../../src/config.ts","../../src/config.service.ts","../../src/component/jhi-item-count.component.ts","../../src/component/jhi-boolean.component.ts","../../src/component/index.ts","../../src/directive/number-of-bytes.ts","../../src/directive/maxbytes.directive.ts","../../src/directive/minbytes.directive.ts","../../src/directive/max.directive.ts","../../src/directive/min.directive.ts","../../src/directive/sort.directive.ts","../../src/directive/sort-by.directive.ts","../../src/directive/index.ts","../../src/language/language.service.ts","../../src/language/jhi-translate.directive.ts","../../src/language/jhi-missing-translation.config.ts","../../src/language/index.ts","../../src/component/metrics/jhi-metrics-modal-threads.component.ts","../../src/component/metrics/jhi-jvm-memory.component.ts","../../src/component/metrics/jhi-jvm-threads.component.ts","../../src/component/metrics/jhi-metrics-cache.component.ts","../../src/component/metrics/jhi-metrics-datasource.component.ts","../../src/component/metrics/jhi-metrics-endpoints-requests.ts","../../src/component/metrics/jhi-metrics-garbagecollector.component.ts","../../src/component/metrics/jhi-metrics-request.component.ts","../../src/component/metrics/jhi-metrics-system.component.ts","../../src/pipe/capitalize.pipe.ts","../../src/pipe/filter.pipe.ts","../../src/pipe/keys.pipe.ts","../../src/pipe/order-by.pipe.ts","../../src/pipe/pure-filter.pipe.ts","../../src/pipe/truncate-characters.pipe.ts","../../src/pipe/truncate-words.pipe.ts","../../src/jhi-components.ts","../../src/ng-jhipster.module.ts","../../src/pipe/index.ts","../../src/service/pagination-util.service.ts","../../src/service/parse-links.service.ts","../../src/service/data-util.service.ts","../../src/service/date-util.service.ts","../../src/service/event-manager.service.ts","../../src/service/event-with-content.model.ts","../../src/service/alert.service.ts","../../src/service/base64.service.ts","../../src/service/resolve-paging-params.service.ts","../../src/service/index.ts","../../src/public_api.ts","../../src/ng-jhipster.ts"],"sourcesContent":["/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { faSort, faSortDown, faSortUp, IconDefinition } from '@fortawesome/free-solid-svg-icons';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiModuleConfig {\n sortIcon?: IconDefinition = faSort;\n sortAscIcon?: IconDefinition = faSortUp;\n sortDescIcon?: IconDefinition = faSortDown;\n i18nEnabled? = false;\n defaultI18nLang? = 'en';\n noi18nMessage? = 'translation-not-found';\n alertAsToast? = false;\n alertTimeout? = 5000;\n classBadgeTrue? = 'badge badge-success';\n classBadgeFalse? = 'badge badge-danger';\n classTrue? = 'fa fa-lg fa-check text-success';\n classFalse? = 'fa fa-lg fa-times text-danger';\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { JhiModuleConfig } from './config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiConfigService {\n CONFIG_OPTIONS: JhiModuleConfig;\n\n constructor(moduleConfig?: JhiModuleConfig) {\n this.CONFIG_OPTIONS = {\n ...new JhiModuleConfig(),\n ...moduleConfig\n };\n }\n\n getConfig(): JhiModuleConfig {\n return this.CONFIG_OPTIONS;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\nimport { JhiConfigService } from '../config.service';\n\n/**\n * A component that will take care of item count statistics of a pagination.\n */\n@Component({\n selector: 'jhi-item-count',\n template: `\n <div *ngIf=\"i18nEnabled; else noI18n\" class=\"info jhi-item-count\" jhiTranslate=\"global.item-count\" [translateValues]=\"i18nValues()\">\n /* [attr.translateValues] is used to get entire values in tests */\n </div>\n <ng-template #noI18n class=\"info jhi-item-count\">\n Showing\n {{ (page - 1) * itemsPerPage == 0 ? 1 : (page - 1) * itemsPerPage + 1 }}\n - {{ page * itemsPerPage < total ? page * itemsPerPage : total }} of {{ total }} items.\n </ng-template>\n `\n})\nexport class JhiItemCountComponent {\n /**\n * current page number.\n */\n @Input() page: number;\n\n /**\n * Total number of items.\n */\n @Input() total: number;\n\n /**\n * Number of items per page.\n */\n @Input() itemsPerPage: number;\n\n /**\n * True if the generated application use i18n\n */\n i18nEnabled: boolean;\n\n constructor(config: JhiConfigService) {\n this.i18nEnabled = config.CONFIG_OPTIONS.i18nEnabled;\n }\n\n /**\n * \"translate-values\" JSON of the template\n */\n i18nValues(): Object {\n const first = (this.page - 1) * this.itemsPerPage === 0 ? 1 : (this.page - 1) * this.itemsPerPage + 1;\n const second = this.page * this.itemsPerPage < this.total ? this.page * this.itemsPerPage : this.total;\n\n return {\n first,\n second,\n total: this.total\n };\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input, OnInit } from '@angular/core';\nimport { JhiModuleConfig } from '../config';\nimport { JhiConfigService } from '../config.service';\n\n/**\n * This component can be used to display a boolean value by defining the @Input attributes\n * If an attribute is not provided, default values will be applied (see JhiModuleConfig class)\n * Have a look at the following examples\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * <jhi-boolean [value]=\"inputBooleanVariable\"></jhi-boolean>\n *\n * - Display a green check when inputBooleanVariable is true\n * - Display a red cross when inputBooleanVariable is false\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * <jhi-boolean\n * [value]=\"inputBooleanVariable\">\n * classTrue=\"fa fa-lg fa-check text-primary\"\n * classFalse=\"fa fa-lg fa-times text-warning\"\n * </jhi-boolean>\n *\n * - Display a blue check when inputBooleanVariable is true\n * - Display an orange cross when inputBooleanVariable is false\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * <jhi-boolean\n * [value]=\"inputBooleanVariable\">\n * classTrue=\"fa fa-lg fa-check\"\n * classFalse=\"\"\n * </jhi-boolean>\n *\n * - Display a black check when inputBooleanVariable is true\n * - Do not display anything when inputBooleanVariable is false\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * <jhi-boolean\n * [value]=\"inputBooleanVariable\"\n * [textTrue]=\"'userManagement.activated' | translate\"\n * textFalse=\"deactivated\">\n * </jhi-boolean>\n *\n * - Display a green badge when inputBooleanVariable is true\n * - Display a red badge when inputBooleanVariable is false\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * <jhi-boolean\n * [value]=\"user.activated\"\n * classTrue=\"badge badge-warning\"\n * classFalse=\"badge badge-info\"\n * [textTrue]=\"'userManagement.activated' | translate\"\n * textFalse=\"deactivated\">\n * </jhi-boolean>\n *\n * - Display an orange badge and write 'activated' when inputBooleanVariable is true\n * - Display a blue badge and write 'deactivated' when inputBooleanVariable is false\n */\n@Component({\n selector: 'jhi-boolean',\n template: `\n <span [ngClass]=\"value ? classTrue : classFalse\" [innerHtml]=\"value ? textTrue : textFalse\"> </span>\n `\n})\nexport class JhiBooleanComponent implements OnInit {\n /**\n * the boolean input value\n */\n @Input() value: boolean;\n\n /**\n * the class(es) (space separated) that will be applied if value is true\n */\n @Input() classTrue: string;\n\n /**\n * the class(es) (space separated) that will be applied if the input value is false\n */\n @Input() classFalse: string;\n\n /**\n * the text that will be displayed if the input value is true\n */\n @Input() textTrue: string;\n\n /**\n * the text that will be displayed if the input value is false\n */\n @Input() textFalse: string;\n\n config: JhiModuleConfig;\n\n constructor(configService: JhiConfigService) {\n this.config = configService.getConfig();\n }\n\n ngOnInit() {\n if (this.textTrue === undefined) {\n if (this.classTrue === undefined) {\n this.classTrue = this.config.classTrue;\n }\n } else {\n if (this.classTrue === undefined) {\n this.classTrue = this.config.classBadgeTrue;\n }\n }\n\n if (this.textFalse === undefined) {\n if (this.classFalse === undefined) {\n this.classFalse = this.config.classFalse;\n }\n } else {\n if (this.classFalse === undefined) {\n this.classFalse = this.config.classBadgeFalse;\n }\n }\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport * from './jhi-item-count.component';\nexport * from './jhi-boolean.component';\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport function numberOfBytes(base64String: string) {\n function endsWith(suffix: string, str: string) {\n return str.includes(suffix, str.length - suffix.length);\n }\n\n function paddingSize(value: string) {\n if (endsWith('==', value)) {\n return 2;\n }\n if (endsWith('=', value)) {\n return 1;\n }\n return 0;\n }\n return (base64String.length / 4) * 3 - paddingSize(base64String);\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS } from '@angular/forms';\n\nimport { numberOfBytes } from './number-of-bytes';\n\n@Directive({\n selector: '[jhiMaxbytes][ngModel]',\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => JhiMaxbytesValidatorDirective), multi: true }]\n})\nexport class JhiMaxbytesValidatorDirective {\n @Input() jhiMaxbytes: number;\n\n constructor() {}\n\n validate(c: FormControl) {\n return c.value && numberOfBytes(c.value) > this.jhiMaxbytes\n ? {\n maxbytes: {\n valid: false\n }\n }\n : null;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS } from '@angular/forms';\n\nimport { numberOfBytes } from './number-of-bytes';\n\n@Directive({\n selector: '[jhiMinbytes][ngModel]',\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => JhiMinbytesValidatorDirective), multi: true }]\n})\nexport class JhiMinbytesValidatorDirective {\n @Input() jhiMinbytes: number;\n\n constructor() {}\n\n validate(c: FormControl) {\n return c.value && numberOfBytes(c.value) < this.jhiMinbytes\n ? {\n minbytes: {\n valid: false\n }\n }\n : null;\n }\n}\n","/*\n Copyright 2013-Present the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS } from '@angular/forms';\n\n@Directive({\n selector: '[jhiMax][ngModel]',\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => JhiMaxValidatorDirective), multi: true }]\n})\nexport class JhiMaxValidatorDirective {\n @Input() jhiMax: number;\n\n constructor() {}\n\n validate(c: FormControl) {\n return c.value === undefined || c.value === null || c.value <= this.jhiMax\n ? null\n : {\n max: {\n valid: false\n }\n };\n }\n}\n","/*\n Copyright 2013-Present the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { FormControl, NG_VALIDATORS } from '@angular/forms';\n\n@Directive({\n selector: '[jhiMin][ngModel]',\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => JhiMinValidatorDirective), multi: true }]\n})\nexport class JhiMinValidatorDirective {\n @Input() jhiMin: number;\n\n constructor() {}\n\n validate(c: FormControl) {\n return c.value === undefined || c.value === null || c.value >= this.jhiMin\n ? null\n : {\n min: {\n valid: false\n }\n };\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\n@Directive({\n selector: '[jhiSort]'\n})\nexport class JhiSortDirective {\n @Input() predicate: string;\n @Input() ascending: boolean;\n @Input() callback: Function;\n\n @Output() predicateChange: EventEmitter<string> = new EventEmitter();\n @Output() ascendingChange: EventEmitter<boolean> = new EventEmitter();\n\n activeIconComponent: FaIconComponent;\n constructor() {}\n\n sort(field: string) {\n this.ascending = field !== this.predicate ? true : !this.ascending;\n this.predicate = field;\n this.predicateChange.emit(field);\n this.ascendingChange.emit(this.ascending);\n this.callback();\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { AfterContentInit, ContentChild, Directive, Host, HostListener, Input } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\n\nimport { JhiConfigService } from '../config.service';\nimport { JhiSortDirective } from './sort.directive';\n\n@Directive({\n selector: '[jhiSortBy]'\n})\nexport class JhiSortByDirective implements AfterContentInit {\n @Input() jhiSortBy: string;\n @ContentChild(FaIconComponent, { static: true }) iconComponent: FaIconComponent;\n\n sortIcon: IconDefinition;\n sortAscIcon: IconDefinition;\n sortDescIcon: IconDefinition;\n\n constructor(@Host() private jhiSort: JhiSortDirective, configService: JhiConfigService) {\n this.jhiSort = jhiSort;\n const config = configService.getConfig();\n this.sortIcon = config.sortIcon;\n this.sortAscIcon = config.sortAscIcon;\n this.sortDescIcon = config.sortDescIcon;\n }\n\n ngAfterContentInit(): void {\n if (this.jhiSort.predicate && this.jhiSort.predicate !== '_score' && this.jhiSort.predicate === this.jhiSortBy) {\n this.updateIconDefinition(this.iconComponent, this.jhiSort.ascending ? this.sortAscIcon : this.sortDescIcon);\n this.jhiSort.activeIconComponent = this.iconComponent;\n }\n }\n\n @HostListener('click')\n onClick() {\n if (this.jhiSort.predicate && this.jhiSort.predicate !== '_score') {\n this.jhiSort.sort(this.jhiSortBy);\n this.updateIconDefinition(this.jhiSort.activeIconComponent, this.sortIcon);\n this.updateIconDefinition(this.iconComponent, this.jhiSort.ascending ? this.sortAscIcon : this.sortDescIcon);\n this.jhiSort.activeIconComponent = this.iconComponent;\n }\n }\n\n private updateIconDefinition(iconComponent: FaIconComponent, icon: IconDefinition) {\n if (iconComponent) {\n iconComponent.icon = icon.iconName;\n iconComponent.render();\n }\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport * from './maxbytes.directive';\nexport * from './minbytes.directive';\nexport * from './max.directive';\nexport * from './min.directive';\nexport * from './sort.directive';\nexport * from './sort-by.directive';\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { JhiConfigService } from '../config.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiLanguageService {\n currentLang = 'en';\n\n constructor(private translateService: TranslateService, private configService: JhiConfigService) {}\n\n init(): void {\n const config = this.configService.getConfig();\n this.currentLang = config.defaultI18nLang;\n this.translateService.setDefaultLang(this.currentLang);\n this.translateService.use(this.currentLang);\n }\n\n changeLanguage(languageKey: string): void {\n this.currentLang = languageKey;\n this.configService.CONFIG_OPTIONS.defaultI18nLang = languageKey;\n this.translateService.use(this.currentLang);\n }\n\n /**\n * @deprecated Will be removed when releasing generator-jhipster v7\n */\n getCurrent(): Promise<string> {\n return Promise.resolve(this.currentLang);\n }\n\n getCurrentLanguage(): string {\n return this.currentLang;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Input, Directive, ElementRef, OnChanges, OnInit, Optional, OnDestroy } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { JhiConfigService } from '../config.service';\n\n/**\n * A wrapper directive on top of the translate pipe as the inbuilt translate directive from ngx-translate is too verbose and buggy\n */\n@Directive({\n selector: '[jhiTranslate]'\n})\nexport class JhiTranslateDirective implements OnChanges, OnInit, OnDestroy {\n @Input() jhiTranslate: string;\n @Input() translateValues: any;\n\n private readonly directiveDestroyed = new Subject<never>();\n\n constructor(private configService: JhiConfigService, private el: ElementRef, @Optional() private translateService: TranslateService) {}\n\n ngOnInit() {\n const enabled = this.configService.getConfig().i18nEnabled;\n if (enabled) {\n this.translateService.onLangChange.pipe(takeUntil(this.directiveDestroyed)).subscribe(() => {\n this.getTranslation();\n });\n }\n }\n\n ngOnChanges() {\n const enabled = this.configService.getConfig().i18nEnabled;\n\n if (enabled) {\n this.getTranslation();\n }\n }\n\n ngOnDestroy() {\n this.directiveDestroyed.next();\n this.directiveDestroyed.complete();\n\n }\n\n private getTranslation() {\n this.translateService\n .get(this.jhiTranslate, this.translateValues)\n .pipe(takeUntil(this.directiveDestroyed))\n .subscribe(\n value => {\n this.el.nativeElement.innerHTML = value;\n },\n () => {\n return `${this.configService.getConfig().noi18nMessage}[${this.jhiTranslate}]`;\n }\n );\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\nimport { JhiConfigService } from '../config.service';\n\nexport class JhiMissingTranslationHandler implements MissingTranslationHandler {\n constructor(private configService: JhiConfigService) {}\n\n handle(params: MissingTranslationHandlerParams) {\n const key = params.key;\n return `${this.configService.getConfig().noi18nMessage}[${key}]`;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport * from './language.service';\nexport * from './jhi-translate.directive';\nexport * from './jhi-missing-translation.config';\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'jhi-thread-modal',\n template: `\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" jhiTranslate=\"metrics.jvm.threads.dump.title\">Threads dump</h4>\n <button type=\"button\" class=\"close\" (click)=\"activeModal.dismiss('closed')\">&times;</button>\n </div>\n <div class=\"modal-body\">\n <span class=\"badge badge-primary\" (click)=\"threadDumpFilter = {}\">\n All&nbsp;<span class=\"badge badge-pill badge-default\">{{ threadDumpAll }}</span> </span\n >&nbsp;\n <span class=\"badge badge-success\" (click)=\"threadDumpFilter = { threadState: 'RUNNABLE' }\">\n Runnable&nbsp;<span class=\"badge badge-pill badge-default\">{{ threadDumpRunnable }}</span> </span\n >&nbsp;\n <span class=\"badge badge-info\" (click)=\"threadDumpFilter = { threadState: 'WAITING' }\"\n >Waiting&nbsp;<span class=\"badge badge-pill badge-default\">{{ threadDumpWaiting }}</span></span\n >&nbsp;\n <span class=\"badge badge-warning\" (click)=\"threadDumpFilter = { threadState: 'TIMED_WAITING' }\">\n Timed Waiting&nbsp;<span class=\"badge badge-pill badge-default\">{{ threadDumpTimedWaiting }}</span> </span\n >&nbsp;\n <span class=\"badge badge-danger\" (click)=\"threadDumpFilter = { threadState: 'BLOCKED' }\"\n >Blocked&nbsp;<span class=\"badge badge-pill badge-default\">{{ threadDumpBlocked }}</span></span\n >&nbsp;\n <div class=\"mt-2\">&nbsp;</div>\n Filter\n <input type=\"text\" [(ngModel)]=\"threadDumpFilter\" class=\"form-control\" />\n <div class=\"pad\" *ngFor=\"let entry of (threadDump | pureFilter: threadDumpFilter:'lockName' | keys)\">\n <h6>\n <span class=\"badge\" [ngClass]=\"getBadgeClass(entry.value.threadState)\">{{ entry.value.threadState }}</span\n >&nbsp;{{ entry.value.threadName }}\n (ID\n {{ entry.value.threadId }})\n <a (click)=\"entry.show = !entry.show\" href=\"javascript:void(0);\">\n <span [hidden]=\"entry.show\" jhiTranslate=\"metrics.jvm.threads.dump.show\">Show StackTrace</span>\n <span [hidden]=\"!entry.show\" jhiTranslate=\"metrics.jvm.threads.dump.hide\">Hide StackTrace</span>\n </a>\n </h6>\n <div class=\"card\" [hidden]=\"!entry.show\">\n <div class=\"card-body\">\n <div *ngFor=\"let st of (entry.value.stackTrace | keys)\" class=\"break\">\n <samp\n >{{ st.value.className }}.{{ st.value.methodName }}(<code\n >{{ st.value.fileName }}:{{ st.value.lineNumber }}</code\n >)</samp\n >\n <span class=\"mt-1\"></span>\n </div>\n </div>\n </div>\n <table class=\"table table-sm table-responsive\">\n <thead>\n <tr>\n <th jhiTranslate=\"metrics.jvm.threads.dump.blockedtime\">Blocked Time</th>\n <th jhiTranslate=\"metrics.jvm.threads.dump.blockedcount\">Blocked Count</th>\n <th jhiTranslate=\"metrics.jvm.threads.dump.waitedtime\">Waited Time</th>\n <th jhiTranslate=\"metrics.jvm.threads.dump.waitedcount\">Waited Count</th>\n <th jhiTranslate=\"metrics.jvm.threads.dump.lockname\">Lock Name</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{{ entry.value.blockedTime }}</td>\n <td>{{ entry.value.blockedCount }}</td>\n <td>{{ entry.value.waitedTime }}</td>\n <td>{{ entry.value.waitedCount }}</td>\n <td class=\"thread-dump-modal-lock\" title=\"{{ entry.value.lockName }}\">\n <code>{{ entry.value.lockName }}</code>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary float-left\" data-dismiss=\"modal\" (click)=\"activeModal.dismiss('closed')\">\n Done\n </button>\n </div>\n `\n})\nexport class JhiThreadModalComponent implements OnInit {\n threadDumpFilter: any;\n threadDump: any;\n threadDumpAll = 0;\n threadDumpBlocked = 0;\n threadDumpRunnable = 0;\n threadDumpTimedWaiting = 0;\n threadDumpWaiting = 0;\n\n constructor(public activeModal: NgbActiveModal) {}\n\n ngOnInit() {\n this.threadDump.forEach(value => {\n if (value.threadState === 'RUNNABLE') {\n this.threadDumpRunnable += 1;\n } else if (value.threadState === 'WAITING') {\n this.threadDumpWaiting += 1;\n } else if (value.threadState === 'TIMED_WAITING') {\n this.threadDumpTimedWaiting += 1;\n } else if (value.threadState === 'BLOCKED') {\n this.threadDumpBlocked += 1;\n }\n });\n\n this.threadDumpAll = this.threadDumpRunnable + this.threadDumpWaiting + this.threadDumpTimedWaiting + this.threadDumpBlocked;\n }\n\n getBadgeClass(threadState) {\n if (threadState === 'RUNNABLE') {\n return 'badge-success';\n } else if (threadState === 'WAITING') {\n return 'badge-info';\n } else if (threadState === 'TIMED_WAITING') {\n return 'badge-warning';\n } else if (threadState === 'BLOCKED') {\n return 'badge-danger';\n }\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-jvm-memory',\n template: `\n <h4 jhiTranslate=\"metrics.jvm.memory.title\">Memory</h4>\n <div *ngIf=\"!updating\">\n <div *ngFor=\"let entry of (jvmMemoryMetrics | keys)\">\n <span *ngIf=\"entry.value.max != -1; else other\">\n <span>{{ entry.key }}</span> ({{ entry.value.used / 1048576 | number: '1.0-0' }}M /\n {{ entry.value.max / 1048576 | number: '1.0-0' }}M)\n </span>\n <div>Committed : {{ entry.value.committed / 1048576 | number: '1.0-0' }}M</div>\n <ng-template #other\n ><span\n ><span>{{ entry.key }}</span> {{ entry.value.used / 1048576 | number: '1.0-0' }}M</span\n >\n </ng-template>\n <ngb-progressbar\n *ngIf=\"entry.value.max != -1\"\n type=\"success\"\n [value]=\"(100 * entry.value.used) / entry.value.max\"\n [striped]=\"true\"\n [animated]=\"false\"\n >\n <span>{{ (entry.value.used * 100) / entry.value.max | number: '1.0-0' }}%</span>\n </ngb-progressbar>\n </div>\n </div>\n `\n})\nexport class JhiJvmMemoryComponent {\n /**\n * object containing all jvm memory metrics\n */\n @Input() jvmMemoryMetrics: {};\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input, OnInit } from '@angular/core';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { JhiThreadModalComponent } from './jhi-metrics-modal-threads.component';\n\n@Component({\n selector: 'jhi-jvm-threads',\n template: `\n <h4 jhiTranslate=\"metrics.jvm.threads.title\">Threads</h4>\n <span><span jhiTranslate=\"metrics.jvm.threads.runnable\">Runnable</span> {{ threadStats.threadDumpRunnable }}</span>\n <ngb-progressbar\n [value]=\"threadStats.threadDumpRunnable\"\n [max]=\"threadStats.threadDumpAll\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n >\n <span>{{ (threadStats.threadDumpRunnable * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>\n </ngb-progressbar>\n <span><span jhiTranslate=\"metrics.jvm.threads.timedwaiting\">Timed Waiting</span> ({{ threadStats.threadDumpTimedWaiting }})</span>\n <ngb-progressbar\n [value]=\"threadStats.threadDumpTimedWaiting\"\n [max]=\"threadStats.threadDumpAll\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"warning\"\n >\n <span>{{ (threadStats.threadDumpTimedWaiting * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>\n </ngb-progressbar>\n <span><span jhiTranslate=\"metrics.jvm.threads.waiting\">Waiting</span> ({{ threadStats.threadDumpWaiting }})</span>\n <ngb-progressbar\n [value]=\"threadStats.threadDumpWaiting\"\n [max]=\"threadStats.threadDumpAll\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"warning\"\n >\n <span>{{ (threadStats.threadDumpWaiting * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>\n </ngb-progressbar>\n <span><span jhiTranslate=\"metrics.jvm.threads.blocked\">Blocked</span> ({{ threadStats.threadDumpBlocked }})</span>\n <ngb-progressbar\n [value]=\"threadStats.threadDumpBlocked\"\n [max]=\"threadStats.threadDumpAll\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n >\n <span>{{ (threadStats.threadDumpBlocked * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>\n </ngb-progressbar>\n <div>Total: {{ threadStats.threadDumpAll }}</div>\n <button class=\"hand btn btn-primary btn-sm\" (click)=\"open()\" data-toggle=\"modal\" data-target=\"#threadDump\">\n <span>Expand</span>\n </button>\n `\n})\nexport class JhiJvmThreadsComponent implements OnInit {\n threadStats: {\n threadDumpAll: number;\n threadDumpRunnable: number;\n threadDumpTimedWaiting: number;\n threadDumpWaiting: number;\n threadDumpBlocked: number;\n };\n\n /**\n * object containing thread related metrics\n */\n @Input() threadData: any;\n\n constructor(private modalService: NgbModal) {}\n\n ngOnInit() {\n this.threadStats = {\n threadDumpRunnable: 0,\n threadDumpWaiting: 0,\n threadDumpTimedWaiting: 0,\n threadDumpBlocked: 0,\n threadDumpAll: 0\n };\n\n this.threadData.forEach(value => {\n if (value.threadState === 'RUNNABLE') {\n this.threadStats.threadDumpRunnable += 1;\n } else if (value.threadState === 'WAITING') {\n this.threadStats.threadDumpWaiting += 1;\n } else if (value.threadState === 'TIMED_WAITING') {\n this.threadStats.threadDumpTimedWaiting += 1;\n } else if (value.threadState === 'BLOCKED') {\n this.threadStats.threadDumpBlocked += 1;\n }\n });\n\n this.threadStats.threadDumpAll =\n this.threadStats.threadDumpRunnable +\n this.threadStats.threadDumpWaiting +\n this.threadStats.threadDumpTimedWaiting +\n this.threadStats.threadDumpBlocked;\n }\n\n open() {\n const modalRef = this.modalService.open(JhiThreadModalComponent);\n modalRef.componentInstance.threadDump = this.threadData;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-metrics-cache',\n template: `\n <h3 jhiTranslate=\"metrics.cache.title\">Cache statistics</h3>\n <div class=\"table-responsive\" *ngIf=\"!updating\">\n <table class=\"table table-striped\">\n <thead>\n <tr>\n <th jhiTranslate=\"metrics.cache.cachename\">Cache name</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.hits\">Cache Hits</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.misses\">Cache Misses</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.gets\">Cache Gets</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.puts\">Cache Puts</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.removals\">Cache Removals</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.evictions\">Cache Evictions</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.hitPercent\">Cache Hit %</th>\n <th class=\"text-right\" data-translate=\"metrics.cache.missPercent\">Cache Miss %</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let entry of (cacheMetrics | keys)\">\n <td>{{ entry.key }}</td>\n <td class=\"text-right\">{{ entry.value['cache.gets.hit'] }}</td>\n <td class=\"text-right\">{{ entry.value['cache.gets.miss'] }}</td>\n <td class=\"text-right\">{{ entry.value['cache.gets.hit'] + entry.value['cache.gets.miss'] }}</td>\n <td class=\"text-right\">{{ entry.value['cache.puts'] }}</td>\n <td class=\"text-right\">{{ entry.value['cache.removals'] }}</td>\n <td class=\"text-right\">{{ entry.value['cache.evictions'] }}</td>\n <td class=\"text-right\">\n {{\n filterNaN(\n (100 * entry.value['cache.gets.hit']) / (entry.value['cache.gets.hit'] + entry.value['cache.gets.miss'])\n ) | number: '1.0-4'\n }}\n </td>\n <td class=\"text-right\">\n {{\n filterNaN(\n (100 * entry.value['cache.gets.miss']) /\n (entry.value['cache.gets.hit'] + entry.value['cache.gets.miss'])\n ) | number: '1.0-4'\n }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n `\n})\nexport class JhiMetricsCacheComponent {\n /**\n * object containing all cache related metrics\n */\n @Input() cacheMetrics: {};\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n\n filterNaN(input) {\n if (isNaN(input)) {\n return 0;\n }\n return input;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-metrics-datasource',\n template: `\n <h3 jhiTranslate=\"metrics.datasource.title\">DataSource statistics (time in millisecond)</h3>\n <div class=\"table-responsive\" *ngIf=\"!updating\">\n <table class=\"table table-striped\">\n <thead>\n <tr>\n <th>\n <span jhiTranslate=\"metrics.datasource.usage\">Connection Pool Usage</span> (active:\n {{ datasourceMetrics.active.value }}, min: {{ datasourceMetrics.min.value }}, max:\n {{ datasourceMetrics.max.value }}, idle: {{ datasourceMetrics.idle.value }})\n </th>\n <th class=\"text-right\" jhiTranslate=\"metrics.datasource.count\">Count</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.datasource.mean\">Mean</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.min\">Min</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p50\">p50</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p75\">p75</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p95\">p95</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p99\">p99</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.datasource.max\">Max</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Acquire</td>\n <td class=\"text-right\">{{ datasourceMetrics.acquire.count }}</td>\n <td class=\"text-right\">{{ filterNaN(datasourceMetrics.acquire.mean) | number: '1.0-2' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.acquire['0.0'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.acquire['0.5'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.acquire['0.75'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.acquire['0.95'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.acquire['0.99'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ filterNaN(datasourceMetrics.acquire.max) | number: '1.0-2' }}</td>\n </tr>\n <tr>\n <td>Creation</td>\n <td class=\"text-right\">{{ datasourceMetrics.creation.count }}</td>\n <td class=\"text-right\">{{ filterNaN(datasourceMetrics.creation.mean) | number: '1.0-2' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.creation['0.0'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.creation['0.5'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.creation['0.75'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.creation['0.95'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.creation['0.99'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ filterNaN(datasourceMetrics.creation.max) | number: '1.0-2' }}</td>\n </tr>\n <tr>\n <td>Usage</td>\n <td class=\"text-right\">{{ datasourceMetrics.usage.count }}</td>\n <td class=\"text-right\">{{ filterNaN(datasourceMetrics.usage.mean) | number: '1.0-2' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.usage['0.0'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.usage['0.5'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.usage['0.75'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.usage['0.95'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ datasourceMetrics.usage['0.99'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ filterNaN(datasourceMetrics.usage.max) | number: '1.0-2' }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n `\n})\nexport class JhiMetricsDatasourceComponent {\n /**\n * object containing all datasource related metrics\n */\n @Input() datasourceMetrics: {\n active: any;\n min: any;\n idle: any;\n max: any;\n usage: any;\n acquire: any;\n creation: any;\n };\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n\n filterNaN(input) {\n if (isNaN(input)) {\n return 0;\n }\n return input;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-metrics-endpoints-requests',\n template: `\n <h3>Endpoints requests (time in millisecond)</h3>\n <div class=\"table-responsive\" *ngIf=\"!updating\">\n <table class=\"table table-striped\">\n <thead>\n <tr>\n <th>Method</th>\n <th>Endpoint url</th>\n <th class=\"text-right\">Count</th>\n <th class=\"text-right\">Mean</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let entry of (endpointsRequestsMetrics | keys)\">\n <tr *ngFor=\"let method of (entry.value | keys)\">\n <td>{{ method.key }}</td>\n <td>{{ entry.key }}</td>\n <td class=\"text-right\">{{ method.value.count }}</td>\n <td class=\"text-right\">{{ method.value.mean | number: '1.0-3' }}</td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n `\n})\nexport class JhiMetricsEndpointsRequestsComponent {\n /**\n * object containing service related metrics\n */\n @Input() endpointsRequestsMetrics: {};\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-metrics-garbagecollector',\n template: `\n <div class=\"row\">\n <div class=\"col-md-4\">\n <div *ngIf=\"garbageCollectorMetrics\">\n <span>\n GC Live Data Size/GC Max Data Size ({{\n garbageCollectorMetrics['jvm.gc.live.data.size'] / 1048576 | number: '1.0-0'\n }}M / {{ garbageCollectorMetrics['jvm.gc.max.data.size'] / 1048576 | number: '1.0-0' }}M)</span\n >\n <ngb-progressbar\n [max]=\"garbageCollectorMetrics['jvm.gc.max.data.size']\"\n [value]=\"garbageCollectorMetrics['jvm.gc.live.data.size']\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n >\n <span\n >{{\n (100 * garbageCollectorMetrics['jvm.gc.live.data.size']) / garbageCollectorMetrics['jvm.gc.max.data.size']\n | number: '1.0-2'\n }}%</span\n >\n </ngb-progressbar>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div *ngIf=\"garbageCollectorMetrics\">\n <span>\n GC Memory Promoted/GC Memory Allocated ({{\n garbageCollectorMetrics['jvm.gc.memory.promoted'] / 1048576 | number: '1.0-0'\n }}M / {{ garbageCollectorMetrics['jvm.gc.memory.allocated'] / 1048576 | number: '1.0-0' }}M)</span\n >\n <ngb-progressbar\n [max]=\"garbageCollectorMetrics['jvm.gc.memory.allocated']\"\n [value]=\"garbageCollectorMetrics['jvm.gc.memory.promoted']\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n >\n <span\n >{{\n (100 * garbageCollectorMetrics['jvm.gc.memory.promoted']) /\n garbageCollectorMetrics['jvm.gc.memory.allocated'] | number: '1.0-2'\n }}%</span\n >\n </ngb-progressbar>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"row\" *ngIf=\"garbageCollectorMetrics\">\n <div class=\"col-md-9\">Classes loaded</div>\n <div class=\"col-md-3 text-right\">{{ garbageCollectorMetrics.classesLoaded }}</div>\n </div>\n <div class=\"row\" *ngIf=\"garbageCollectorMetrics\">\n <div class=\"col-md-9\">Classes unloaded</div>\n <div class=\"col-md-3 text-right\">{{ garbageCollectorMetrics.classesUnloaded }}</div>\n </div>\n </div>\n <div class=\"table-responsive\" *ngIf=\"!updating && garbageCollectorMetrics\">\n <table class=\"table table-striped\">\n <thead>\n <tr>\n <th></th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.count\">Count</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.mean\">Mean</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.min\">Min</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p50\">p50</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p75\">p75</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p95\">p95</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.p99\">p99</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.servicesstats.table.max\">Max</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>jvm.gc.pause</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause'].count }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause'].mean | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause']['0.0'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause']['0.5'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause']['0.75'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause']['0.95'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause']['0.99'] | number: '1.0-3' }}</td>\n <td class=\"text-right\">{{ garbageCollectorMetrics['jvm.gc.pause'].max | number: '1.0-3' }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n `\n})\nexport class JhiMetricsGarbageCollectorComponent {\n /**\n * object containing garbage collector related metrics\n */\n @Input() garbageCollectorMetrics: any;\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-metrics-request',\n template: `\n <h3 jhiTranslate=\"metrics.jvm.http.title\">HTTP requests (time in millisecond)</h3>\n <table class=\"table table-striped\" *ngIf=\"!updating\">\n <thead>\n <tr>\n <th jhiTranslate=\"metrics.jvm.http.table.code\">Code</th>\n <th jhiTranslate=\"metrics.jvm.http.table.count\">Count</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.jvm.http.table.mean\">Mean</th>\n <th class=\"text-right\" jhiTranslate=\"metrics.jvm.http.table.max\">Max</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let entry of (requestMetrics['percode'] | keys)\">\n <td>{{ entry.key }}</td>\n <td>\n <ngb-progressbar\n [max]=\"requestMetrics['all'].count\"\n [value]=\"entry.value.count\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n >\n <span>{{ entry.value.count }}</span>\n </ngb-progressbar>\n </td>\n <td class=\"text-right\">\n {{ filterNaN(entry.value.mean) | number: '1.0-2' }}\n </td>\n <td class=\"text-right\">{{ entry.value.max | number: '1.0-2' }}</td>\n </tr>\n </tbody>\n </table>\n `\n})\nexport class JhiMetricsHttpRequestComponent {\n /**\n * object containing http request related metrics\n */\n @Input() requestMetrics: {};\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n\n filterNaN(input) {\n if (isNaN(input)) {\n return 0;\n }\n return input;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'jhi-metrics-system',\n template: `\n <h4>System</h4>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-4\">Uptime</div>\n <div class=\"col-md-8 text-right\">{{ convertMillisecondsToDuration(systemMetrics['process.uptime']) }}</div>\n </div>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-4\">Start time</div>\n <div class=\"col-md-8 text-right\">{{ systemMetrics['process.start.time'] | date: 'full' }}</div>\n </div>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-9\">Process CPU usage</div>\n <div class=\"col-md-3 text-right\">{{ 100 * systemMetrics['process.cpu.usage'] | number: '1.0-2' }} %</div>\n </div>\n <ngb-progressbar\n [value]=\"100 * systemMetrics['process.cpu.usage']\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n *ngIf=\"!updating\"\n >\n <span>{{ 100 * systemMetrics['process.cpu.usage'] | number: '1.0-2' }} %</span>\n </ngb-progressbar>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-9\">System CPU usage</div>\n <div class=\"col-md-3 text-right\">{{ 100 * systemMetrics['system.cpu.usage'] | number: '1.0-2' }} %</div>\n </div>\n <ngb-progressbar\n [value]=\"100 * systemMetrics['system.cpu.usage']\"\n [striped]=\"true\"\n [animated]=\"false\"\n type=\"success\"\n *ngIf=\"!updating\"\n >\n <span>{{ 100 * systemMetrics['system.cpu.usage'] | number: '1.0-2' }} %</span>\n </ngb-progressbar>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-9\">System CPU count</div>\n <div class=\"col-md-3 text-right\">{{ systemMetrics['system.cpu.count'] }}</div>\n </div>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-9\">System 1m Load average</div>\n <div class=\"col-md-3 text-right\">{{ systemMetrics['system.load.average.1m'] | number: '1.0-2' }}</div>\n </div>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-9\">Process files max</div>\n <div class=\"col-md-3 text-right\">{{ systemMetrics['process.files.max'] | number: '1.0-0' }}</div>\n </div>\n <div class=\"row\" *ngIf=\"!updating\">\n <div class=\"col-md-9\">Process files open</div>\n <div class=\"col-md-3 text-right\">{{ systemMetrics['process.files.open'] | number: '1.0-0' }}</div>\n </div>\n `\n})\nexport class JhiMetricsSystemComponent {\n /**\n * object containing thread related metrics\n */\n @Input() systemMetrics: {};\n\n /**\n * boolean field saying if the metrics are in the process of being updated\n */\n @Input() updating: boolean;\n\n convertMillisecondsToDuration(ms) {\n const times = {\n year: 31557600000,\n month: 2629746000,\n day: 86400000,\n hour: 3600000,\n minute: 60000,\n second: 1000\n };\n let timeString = '';\n for (const key in times) {\n if (Math.floor(ms / times[key]) > 0) {\n let plural = '';\n if (Math.floor(ms / times[key]) > 1) {\n plural = 's';\n }\n timeString += Math.floor(ms / times[key]).toString() + ' ' + key.toString() + plural + ' ';\n ms = ms - times[key] * Math.floor(ms / times[key]);\n }\n }\n return timeString;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'capitalize' })\nexport class JhiCapitalizePipe implements PipeTransform {\n transform(input: string): string {\n if (input !== null) {\n input = input.toLowerCase();\n }\n return input.substring(0, 1).toUpperCase() + input.substring(1);\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'filter', pure: false })\nexport class JhiFilterPipe implements PipeTransform {\n transform(input: any[], filter: any, field?: string): any {\n if (typeof filter === 'undefined' || filter === '') {\n return input;\n }\n\n // if filter is of type 'function' compute current value of filter, otherwise return filter\n const currentFilter = typeof filter === 'function' ? filter() : filter;\n\n if (typeof currentFilter === 'number') {\n return input.filter(this.filterByNumber(currentFilter, field));\n }\n if (typeof currentFilter === 'boolean') {\n return input.filter(this.filterByBoolean(currentFilter, field));\n }\n if (typeof currentFilter === 'string') {\n return input.filter(this.filterByString(currentFilter, field));\n }\n if (typeof currentFilter === 'object') {\n // filter by object ignores 'field' if specified\n return input.filter(this.filterByObject(currentFilter));\n }\n\n // 'symbol' && 'undefined'\n return input.filter(this.filterDefault(currentFilter, field));\n }\n\n private filterByNumber(filter, field?) {\n return value =>\n (value && !filter) || (typeof value === 'object' && field)\n ? value[field] && typeof value[field] === 'number' && value[field] === filter\n : typeof value === 'number' && value === filter;\n }\n\n private filterByBoolean(filter, field?) {\n return value =>\n typeof value === 'object' && field\n ? value[field] && typeof value[field] === 'boolean' && value[field] === filter\n : typeof value === 'boolean' && value === filter;\n }\n\n private filterByString(filter, field?) {\n return value =>\n (value && !filter) || (typeof value === 'object' && field)\n ? value[field] && typeof value[field] === 'string' && value[field].toLowerCase().includes(filter.toLowerCase())\n : typeof value === 'string' && value.toLowerCase().includes(filter.toLowerCase());\n }\n\n private filterDefault(filter, field?) {\n return value => ((value && !filter) || (typeof value === 'object' && field) ? value[field] && filter === value : filter === value);\n }\n\n private filterByObject(filter) {\n return value => {\n const keys = Object.keys(filter);\n let isMatching = false;\n\n // all fields defined in filter object must match\n for (const key of keys) {\n if (typeof filter[key] === 'number') {\n isMatching = this.filterByNumber(filter[key])(value[key]);\n } else if (typeof filter[key] === 'boolean') {\n isMatching = this.filterByBoolean(filter[key])(value[key]);\n } else if (typeof filter[key] === 'string') {\n isMatching = this.filterByString(filter[key])(value[key]);\n } else {\n isMatching = this.filterDefault(filter[key])(value[key]);\n }\n }\n return isMatching;\n };\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'keys' })\nexport class JhiKeysPipe implements PipeTransform {\n transform(value: any): any {\n const keys = [];\n const valueKeys = Object.keys(value);\n for (const key of valueKeys) {\n keys.push({ key, value: value[key] });\n }\n return keys;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'orderBy' })\nexport class JhiOrderByPipe implements PipeTransform {\n transform(values: any[], predicate = '', reverse = false): any {\n if (predicate === '') {\n return reverse ? values.sort().reverse() : values.sort();\n }\n return values.sort((a, b) => {\n if (a[predicate] < b[predicate]) {\n return reverse ? 1 : -1;\n } else if (b[predicate] < a[predicate]) {\n return reverse ? -1 : 1;\n }\n return 0;\n });\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { JhiFilterPipe } from './filter.pipe';\n\n@Pipe({ name: 'pureFilter' })\nexport class JhiPureFilterPipe extends JhiFilterPipe implements PipeTransform {\n transform(input: any[], filter: any, field?: string): any {\n return super.transform(input, filter, field);\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'truncateCharacters' })\nexport class JhiTruncateCharactersPipe implements PipeTransform {\n transform(input: string, chars: number, breakOnWord?: boolean): string {\n if (isNaN(chars)) {\n return input;\n }\n if (chars <= 0) {\n return '';\n }\n if (input && input.length > chars) {\n input = input.substring(0, chars);\n\n if (!breakOnWord) {\n const lastspace = input.lastIndexOf(' ');\n // Get last space\n if (lastspace !== -1) {\n input = input.substr(0, lastspace);\n }\n } else {\n while (input.endsWith(' ')) {\n input = input.substr(0, input.length - 1);\n }\n }\n return input + '...';\n }\n return input;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'truncateWords' })\nexport class JhiTruncateWordsPipe implements PipeTransform {\n transform(input: string, words: number): string {\n if (isNaN(words)) {\n return input;\n }\n if (words <= 0) {\n return '';\n }\n if (input) {\n const inputWords = input.split(/\\s+/);\n if (inputWords.length > words) {\n input = inputWords.slice(0, words).join(' ') + '...';\n }\n }\n\n return input;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { JhiBooleanComponent } from './component/jhi-boolean.component';\nimport { JhiItemCountComponent } from './component/jhi-item-count.component';\nimport { JhiJvmMemoryComponent } from './component/metrics/jhi-jvm-memory.component';\nimport { JhiJvmThreadsComponent } from './component/metrics/jhi-jvm-threads.component';\nimport { JhiMetricsCacheComponent } from './component/metrics/jhi-metrics-cache.component';\nimport { JhiMetricsDatasourceComponent } from './component/metrics/jhi-metrics-datasource.component';\nimport { JhiMetricsEndpointsRequestsComponent } from './component/metrics/jhi-metrics-endpoints-requests';\nimport { JhiMetricsGarbageCollectorComponent } from './component/metrics/jhi-metrics-garbagecollector.component';\nimport { JhiThreadModalComponent } from './component/metrics/jhi-metrics-modal-threads.component';\nimport { JhiMetricsHttpRequestComponent } from './component/metrics/jhi-metrics-request.component';\nimport { JhiMetricsSystemComponent } from './component/metrics/jhi-metrics-system.component';\nimport { JhiMaxValidatorDirective } from './directive/max.directive';\nimport { JhiMaxbytesValidatorDirective } from './directive/maxbytes.directive';\nimport { JhiMinValidatorDirective } from './directive/min.directive';\nimport { JhiMinbytesValidatorDirective } from './directive/minbytes.directive';\nimport { JhiSortByDirective } from './directive/sort-by.directive';\nimport { JhiSortDirective } from './directive/sort.directive';\nimport { JhiCapitalizePipe } from './pipe/capitalize.pipe';\nimport { JhiFilterPipe } from './pipe/filter.pipe';\nimport { JhiKeysPipe } from './pipe/keys.pipe';\nimport { JhiOrderByPipe } from './pipe/order-by.pipe';\nimport { JhiPureFilterPipe } from './pipe/pure-filter.pipe';\nimport { JhiTruncateCharactersPipe } from './pipe/truncate-characters.pipe';\nimport { JhiTruncateWordsPipe } from './pipe/truncate-words.pipe';\n\nexport const JHI_PIPES = [\n JhiCapitalizePipe,\n JhiFilterPipe,\n JhiKeysPipe,\n JhiOrderByPipe,\n JhiPureFilterPipe,\n JhiTruncateCharactersPipe,\n JhiTruncateWordsPipe\n];\n\nexport const JHI_DIRECTIVES = [\n JhiMaxValidatorDirective,\n JhiMinValidatorDirective,\n JhiMaxbytesValidatorDirective,\n JhiMinbytesValidatorDirective,\n JhiSortDirective,\n JhiSortByDirective\n];\n\nexport const JHI_COMPONENTS = [\n JhiItemCountComponent,\n JhiBooleanComponent,\n JhiJvmMemoryComponent,\n JhiJvmThreadsComponent,\n JhiMetricsHttpRequestComponent,\n JhiMetricsEndpointsRequestsComponent,\n JhiMetricsCacheComponent,\n JhiMetricsDatasourceComponent,\n JhiMetricsSystemComponent,\n JhiMetricsGarbageCollectorComponent,\n JhiThreadModalComponent\n];\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { JhiThreadModalComponent } from './component/metrics/jhi-metrics-modal-threads.component';\nimport { JhiModuleConfig } from './config';\nimport { JhiConfigService } from './config.service';\nimport { JHI_COMPONENTS, JHI_DIRECTIVES, JHI_PIPES } from './jhi-components';\nimport { JhiMissingTranslationHandler } from './language/jhi-missing-translation.config';\nimport { JhiTranslateDirective } from './language/jhi-translate.directive';\n\nexport function translatePartialLoader(http: HttpClient) {\n return new TranslateHttpLoader(http, 'i18n/', `.json?buildTimestamp=${process.env.BUILD_TIMESTAMP}`);\n}\n\nexport function missingTranslationHandler(configService: JhiConfigService) {\n return new JhiMissingTranslationHandler(configService);\n}\n\n@NgModule({\n imports: [CommonModule, NgbModule, FormsModule],\n declarations: [...JHI_PIPES, ...JHI_DIRECTIVES, ...JHI_COMPONENTS, JhiTranslateDirective],\n entryComponents: [JhiThreadModalComponent],\n exports: [...JHI_PIPES, ...JHI_DIRECTIVES, ...JHI_COMPONENTS, JhiTranslateDirective, CommonModule],\n})\nexport class NgJhipsterModule {\n static forRoot(moduleConfig: JhiModuleConfig): ModuleWithProviders<NgJhipsterModule> {\n return {\n ngModule: NgJhipsterModule,\n providers: [{ provide: JhiModuleConfig, useValue: moduleConfig }],\n };\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport * from './truncate-characters.pipe';\nexport * from './truncate-words.pipe';\nexport * from './order-by.pipe';\nexport * from './filter.pipe';\nexport * from './pure-filter.pipe';\nexport * from './capitalize.pipe';\nexport * from './keys.pipe';\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\n\n/**\n * An utility service for pagination\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiPaginationUtil {\n constructor() {}\n\n /**\n * Method to find whether the sort is defined\n */\n parseAscending(sort: string): boolean {\n let sortArray = sort.split(',');\n sortArray = sortArray.length > 1 ? sortArray : sort.split('%2C');\n if (sortArray.length > 1) {\n return sortArray.slice(-1)[0] === 'asc';\n }\n // default to true if no sort is defined\n return true;\n }\n\n /**\n * Method to query params are strings, and need to be parsed\n */\n parsePage(page: string): number {\n return parseInt(page, 10);\n }\n\n /**\n * Method to sort can be in the format `id,asc` or `id`\n */\n parsePredicate(sort: string): string {\n return sort.split(',')[0].split('%2C')[0];\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\n\n/**\n * An utility service for link parsing.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiParseLinks {\n constructor() {}\n\n /**\n * Method to parse the links\n */\n parse(header: string): any {\n if (header.length === 0) {\n throw new Error('input must not be of zero length');\n }\n\n // Split parts by comma\n const parts: string[] = header.split(',');\n const links: any = {};\n\n // Parse each part into a named link\n parts.forEach(p => {\n const section: string[] = p.split(';');\n\n if (section.length !== 2) {\n throw new Error('section could not be split on \";\"');\n }\n\n const url: string = section[0].replace(/<(.*)>/, '$1').trim();\n const queryString: any = {};\n\n url.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'), ($0, $1, $2, $3) => (queryString[$1] = $3));\n\n let page: any = queryString.page;\n\n if (typeof page === 'string') {\n page = parseInt(page, 10);\n }\n\n const name: string = section[1].replace(/rel=\"(.*)\"/, '$1').trim();\n links[name] = page;\n });\n return links;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { ElementRef, Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { FormGroup } from '@angular/forms';\n\nexport type JhiFileLoadErrorType = 'not.image' | 'could.not.extract';\n\nexport interface JhiFileLoadError {\n message: string;\n key: JhiFileLoadErrorType;\n params?: any;\n}\n\n/**\n * An utility service for data.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiDataUtils {\n constructor() {}\n\n /**\n * Method to abbreviate the text given\n */\n abbreviate(text: string, append = '...'): string {\n if (text.length < 30) {\n return text;\n }\n return text ? text.substring(0, 15) + append + text.slice(-10) : '';\n }\n\n /**\n * Method to find the byte size of the string provides\n */\n byteSize(base64String: string): string {\n return this.formatAsBytes(this.size(base64String));\n }\n\n /**\n * Method to open file\n */\n openFile(contentType: string, data: string): void {\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n // To support IE and Edge\n const byteCharacters = atob(data);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], {\n type: contentType\n });\n window.navigator.msSaveOrOpenBlob(blob);\n } else {\n // Other browsers\n const fileURL = `data:${contentType};base64,${data}`;\n const win = window.open();\n win.document.write(\n '<iframe src=\"' +\n fileURL +\n '\" frameborder=\"0\" style=\"border:0; top:0; left:0; bottom:0; right:0; width:100%; height:100%;\" allowfullscreen></iframe>'\n );\n }\n }\n\n /**\n * Method to convert the file to base64\n */\n toBase64(file: File, cb: Function): void {\n const fileReader: FileReader = new FileReader();\n fileReader.onload = function(e: any) {\n const base64Data: string = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\n cb(base64Data);\n };\n fileReader.readAsDataURL(file);\n }\n\n /**\n * Method to clear the input\n */\n clearInputImage(entity: any, elementRef: ElementRef, field: string, fieldContentType: string, idInput: string): void {\n if (entity && field && fieldContentType) {\n if (Object.prototype.hasOwnProperty.call(entity, field)) {\n entity[field] = null;\n }\n if (Object.prototype.hasOwnProperty.call(entity, fieldContentType)) {\n entity[fieldContentType] = null;\n }\n if (elementRef && idInput && elementRef.nativeElement.querySelector('#' + idInput)) {\n elementRef.nativeElement.querySelector('#' + idInput).value = null;\n }\n }\n }\n\n /**\n * Sets the base 64 data & file type of the 1st file on the event (event.target.files[0]) in the passed entity object\n * and returns a promise.\n *\n * @param event the object containing the file (at event.target.files[0])\n * @param entity the object to set the file's 'base 64 data' and 'file type' on\n * @param field the field name to set the file's 'base 64 data' on\n * @param isImage boolean representing if the file represented by the event is an image\n * @returns a promise that resolves to the modified entity if operation is successful, otherwise rejects with an error message\n */\n setFileData(event, entity, field: string, isImage: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n if (event && event.target && event.target.files && event.target.files[0]) {\n const file: File = event.target.files[0];\n if (isImage && !file.type.startsWith('image/')) {\n reject(`File was expected to be an image but was found to be ${file.type}`);\n } else {\n this.toBase64(file, base64Data => {\n entity[field] = base64Data;\n entity[`${field}ContentType`] = file.type;\n resolve(entity);\n });\n }\n } else {\n reject(`Base64 data was not set as file could not be extracted from passed parameter: ${event}`);\n }\n });\n }\n\n /**\n * Sets the base 64 data & file type of the 1st file on the event (event.target.files[0]) in the passed entity object\n * and returns an observable.\n *\n * @param event the object containing the file (at event.target.files[0])\n * @param editForm the form group where the input field is located\n * @param field the field name to set the file's 'base 64 data' on\n * @param isImage boolean representing if the file represented by the event is an image\n * @returns an observable that loads file to form field and completes if sussessful\n * or returns error as JhiFileLoadError on failure\n */\n loadFileToForm(event: Event, editForm: FormGroup, field: string, isImage: boolean): Observable<void> {\n return new Observable((observer: Observer<void>) => {\n const eventTarget: HTMLInputElement = event.target as HTMLInputElement;\n if (eventTarget.files && eventTarget.files[0]) {\n const file: File = eventTarget.files[0];\n if (isImage && !file.type.startsWith('image/')) {\n const error: JhiFileLoadError = {\n message: `File was expected to be an image but was found to be '${file.type}'`,\n key: 'not.image',\n params: { fileType: file.type }\n };\n observer.error(error);\n } else {\n const fieldContentType: string = field + 'ContentType';\n this.toBase64(file, (base64Data: string) => {\n editForm.patchValue({\n [field]: base64Data,\n [fieldContentType]: file.type\n });\n observer.next();\n observer.complete();\n });\n }\n } else {\n const error: JhiFileLoadError = {\n message: 'Could not extract file',\n key: 'could.not.extract',\n params: { event }\n };\n observer.error(error);\n }\n });\n }\n\n /**\n * Method to download file\n */\n downloadFile(contentType: string, data: string, fileName: string): void {\n const byteCharacters = atob(data);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], {\n type: contentType\n });\n const tempLink = document.createElement('a');\n tempLink.href = window.URL.createObjectURL(blob);\n tempLink.download = fileName;\n tempLink.target = '_blank';\n tempLink.click();\n }\n\n private endsWith(suffix: string, str: string): boolean {\n return str.includes(suffix, str.length - suffix.length);\n }\n\n private paddingSize(value: string): number {\n if (this.endsWith('==', value)) {\n return 2;\n }\n if (this.endsWith('=', value)) {\n return 1;\n }\n return 0;\n }\n\n private size(value: string): number {\n return (value.length / 4) * 3 - this.paddingSize(value);\n }\n\n private formatAsBytes(size: number): string {\n return size.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ') + ' bytes';\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\n\n/**\n * An utility service for date.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiDateUtils {\n private pattern = 'yyyy-MM-dd';\n private datePipe: DatePipe;\n\n constructor() {\n this.datePipe = new DatePipe('en');\n }\n\n /**\n * Method to convert the date time from server into JS date object\n */\n convertDateTimeFromServer(date: any) {\n if (date) {\n return new Date(date);\n } else {\n return null;\n }\n }\n\n /**\n * Method to convert the date from server into JS date object\n */\n convertLocalDateFromServer(date: any) {\n if (date) {\n const dateString = date.split('-');\n return new Date(dateString[0], dateString[1] - 1, dateString[2]);\n }\n return null;\n }\n\n /**\n * Method to convert the JS date object into specified date pattern\n */\n convertLocalDateToServer(date: any, pattern = this.pattern) {\n if (date) {\n const newDate = new Date(date.year, date.month - 1, date.day);\n return this.datePipe.transform(newDate, pattern);\n } else {\n return null;\n }\n }\n\n /**\n * Method to get the default date pattern\n */\n dateformat() {\n return this.pattern;\n }\n\n // TODO Change this method when moving from datetime-local input to NgbDatePicker\n toDate(date: any): Date {\n if (date === undefined || date === null) {\n return null;\n }\n const dateParts = date.split(/\\D+/);\n if (dateParts.length === 7) {\n return new Date(dateParts[0], dateParts[1] - 1, dateParts[2], dateParts[3], dateParts[4], dateParts[5], dateParts[6]);\n }\n if (dateParts.length === 6) {\n return new Date(dateParts[0], dateParts[1] - 1, dateParts[2], dateParts[3], dateParts[4], dateParts[5]);\n }\n return new Date(dateParts[0], dateParts[1] - 1, dateParts[2], dateParts[3], dateParts[4]);\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable, Observer, Subscription } from 'rxjs';\nimport { filter, share, map } from 'rxjs/operators';\nimport { JhiEventWithContent } from './event-with-content.model';\n\n/**\n * An utility class to manage RX events\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiEventManager {\n observable: Observable<JhiEventWithContent<any> | string>;\n observer: Observer<JhiEventWithContent<any> | string>;\n\n constructor() {\n this.observable = Observable.create((observer: Observer<JhiEventWithContent<any> | string>) => {\n this.observer = observer;\n }).pipe(share());\n }\n\n /**\n * Method to broadcast the event to observer\n */\n broadcast(event: JhiEventWithContent<any> | string): void {\n if (this.observer) {\n this.observer.next(event);\n }\n }\n\n /**\n * Method to subscribe to an event with callback\n */\n subscribe(eventName: string, callback: any): Subscription {\n const subscriber: Subscription = this.observable\n .pipe(\n filter((event: JhiEventWithContent<any> | string) => {\n if (typeof event === 'string') {\n return event === eventName;\n }\n return event.name === eventName;\n }),\n map((event: JhiEventWithContent<any> | string) => {\n if (typeof event !== 'string') {\n // when releasing generator-jhipster v7 then current return will be changed to\n // (to avoid redundant code response.content in JhiEventManager.subscribe callbacks):\n // return event.content;\n return event;\n }\n })\n )\n .subscribe(callback);\n return subscriber;\n }\n\n /**\n * Method to unsubscribe the subscription\n */\n destroy(subscriber: Subscription): void {\n subscriber.unsubscribe();\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport class JhiEventWithContent<T> {\n constructor(public name: string, public content: T) {}\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable, SecurityContext, Optional, NgZone } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { JhiConfigService } from '../config.service';\n\nexport type JhiAlertType = 'success' | 'danger' | 'warning' | 'info';\n\nexport interface JhiAlert {\n id?: number;\n type: JhiAlertType;\n msg: string;\n params?: any;\n timeout?: number;\n toast?: boolean;\n position?: string;\n scoped?: boolean;\n close?: (alerts: JhiAlert[]) => void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiAlertService {\n private alertId: number;\n private alerts: JhiAlert[];\n private timeout: number;\n private toast: boolean;\n private i18nEnabled: boolean;\n\n constructor(\n private sanitizer: DomSanitizer,\n private configService: JhiConfigService,\n private ngZone: NgZone,\n @Optional() private translateService: TranslateService\n ) {\n const config = this.configService.getConfig();\n this.toast = config.alertAsToast;\n this.i18nEnabled = config.i18nEnabled;\n this.alertId = 0; // unique id for each alert. Starts from 0.\n this.alerts = [];\n this.timeout = config.alertTimeout;\n }\n\n clear() {\n this.alerts.splice(0, this.alerts.length);\n }\n\n get(): JhiAlert[] {\n return this.alerts;\n }\n\n success(msg: string, params?: any, position?: string): JhiAlert {\n return this.addAlert(\n {\n type: 'success',\n msg,\n params,\n timeout: this.timeout,\n toast: this.isToast(),\n position\n },\n []\n );\n }\n\n error(msg: string, params?: any, position?: string): JhiAlert {\n return this.addAlert(\n {\n type: 'danger',\n msg,\n params,\n timeout: this.timeout,\n toast: this.isToast(),\n position\n },\n []\n );\n }\n\n warning(msg: string, params?: any, position?: string): JhiAlert {\n return this.addAlert(\n {\n type: 'warning',\n msg,\n params,\n timeout: this.timeout,\n toast: this.isToast(),\n position\n },\n []\n );\n }\n\n info(msg: string, params?: any, position?: string): JhiAlert {\n return this.addAlert(\n {\n type: 'info',\n msg,\n params,\n timeout: this.timeout,\n toast: this.isToast(),\n position\n },\n []\n );\n }\n\n addAlert(alertOptions: JhiAlert, extAlerts: JhiAlert[]): JhiAlert {\n alertOptions.id = this.alertId++;\n if (this.i18nEnabled && alertOptions.msg) {\n alertOptions.msg = this.translateService.instant(alertOptions.msg, alertOptions.params);\n }\n const alert = this.factory(alertOptions);\n if (alertOptions.timeout && alertOptions.timeout > 0) {\n // Workaround protractor waiting for setTimeout.\n // Reference https://www.protractortest.org/#/timeouts\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.ngZone.run(() => {\n this.closeAlert(alertOptions.id, extAlerts);\n });\n }, alertOptions.timeout);\n });\n }\n return alert;\n }\n\n closeAlert(id: number, extAlerts?: JhiAlert[]): JhiAlert[] {\n const thisAlerts: JhiAlert[] = extAlerts && extAlerts.length > 0 ? extAlerts : this.alerts;\n return this.closeAlertByIndex(thisAlerts.map(e => e.id).indexOf(id), thisAlerts);\n }\n\n closeAlertByIndex(index: number, thisAlerts: JhiAlert[]): JhiAlert[] {\n return thisAlerts.splice(index, 1);\n }\n\n isToast(): boolean {\n return this.toast;\n }\n\n private factory(alertOptions: JhiAlert): JhiAlert {\n const alert: JhiAlert = {\n type: alertOptions.type,\n msg: this.sanitizer.sanitize(SecurityContext.HTML, alertOptions.msg),\n id: alertOptions.id,\n timeout: alertOptions.timeout,\n toast: alertOptions.toast,\n position: alertOptions.position ? alertOptions.position : 'top right',\n scoped: alertOptions.scoped,\n close: (alerts: JhiAlert[]) => {\n return this.closeAlert(alertOptions.id, alerts);\n }\n };\n if (!alert.scoped) {\n this.alerts.push(alert);\n }\n return alert;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n/* eslint no-bitwise: off */\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiBase64Service {\n private keyStr: string = 'ABCDEFGHIJKLMNOP' + 'QRSTUVWXYZabcdef' + 'ghijklmnopqrstuv' + 'wxyz0123456789+/' + '=';\n\n encode(input) {\n let output = '';\n let enc1: any = '';\n let enc2: any = '';\n let enc3: any = '';\n let enc4: any = '';\n let chr1: any = '';\n let chr2: any = '';\n let chr3: any = '';\n let i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) + this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4);\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n }\n\n return output;\n }\n\n decode(input) {\n let output = '';\n let enc1: any = '';\n let enc2: any = '';\n let enc3: any = '';\n let enc4: any = '';\n let chr1: any = '';\n let chr2: any = '';\n let chr3: any = '';\n let i = 0;\n\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n input = input.replace(/[^A-Za-z0-9+/=]/g, '');\n\n while (i < input.length) {\n enc1 = this.keyStr.indexOf(input.charAt(i++));\n enc2 = this.keyStr.indexOf(input.charAt(i++));\n enc3 = this.keyStr.indexOf(input.charAt(i++));\n enc4 = this.keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output = output + String.fromCharCode(chr1);\n\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n }\n\n return output;\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\nimport { JhiPaginationUtil } from './pagination-util.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JhiResolvePagingParams implements Resolve<any> {\n constructor(private paginationUtil: JhiPaginationUtil) {}\n\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const page = route.queryParams['page'] ? route.queryParams['page'] : '1';\n const defaultSort = route.data['defaultSort'] ? route.data['defaultSort'] : 'id,asc';\n const sort = route.queryParams['sort'] ? route.queryParams['sort'] : defaultSort;\n return {\n page: this.paginationUtil.parsePage(page),\n predicate: this.paginationUtil.parsePredicate(sort),\n ascending: this.paginationUtil.parseAscending(sort)\n };\n }\n}\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport * from './pagination-util.service';\nexport * from './parse-links.service';\nexport * from './data-util.service';\nexport * from './date-util.service';\nexport * from './event-manager.service';\nexport * from './event-with-content.model';\nexport * from './alert.service';\nexport * from './base64.service';\nexport * from './resolve-paging-params.service';\n","/*\n Copyright 2013-2020 the original author or authors from the JHipster project.\n\n This file is part of the JHipster project, see https://www.jhipster.tech/\n for more information.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexport * from './component/index';\nexport { JhiModuleConfig } from './config';\nexport * from './config.service';\nexport * from './directive/index';\nexport * from './language/index';\nexport { missingTranslationHandler, NgJhipsterModule, translatePartialLoader } from './ng-jhipster.module';\nexport * from './pipe/index';\nexport * from './service/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {JhiJvmMemoryComponent as ɵd} from './component/metrics/jhi-jvm-memory.component';\nexport {JhiJvmThreadsComponent as ɵe} from './component/metrics/jhi-jvm-threads.component';\nexport {JhiMetricsCacheComponent as ɵh} from './component/metrics/jhi-metrics-cache.component';\nexport {JhiMetricsDatasourceComponent as ɵi} from './component/metrics/jhi-metrics-datasource.component';\nexport {JhiMetricsEndpointsRequestsComponent as ɵg} from './component/metrics/jhi-metrics-endpoints-requests';\nexport {JhiMetricsGarbageCollectorComponent as ɵk} from './component/metrics/jhi-metrics-garbagecollector.component';\nexport {JhiThreadModalComponent as ɵl} from './component/metrics/jhi-metrics-modal-threads.component';\nexport {JhiMetricsHttpRequestComponent as ɵf} from './component/metrics/jhi-metrics-request.component';\nexport {JhiMetricsSystemComponent as ɵj} from './component/metrics/jhi-metrics-system.component';\nexport {JHI_COMPONENTS as ɵc,JHI_DIRECTIVES as ɵb,JHI_PIPES as ɵa} from './jhi-components';"],"names":[],"mappings":"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"}
\No newline at end of file