oip-common 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/oip-common.mjs +1247 -394
- package/fesm2022/oip-common.mjs.map +1 -1
- package/index.d.ts +76 -2
- package/package.json +1 -1
package/fesm2022/oip-common.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, inject, signal, computed, effect, isDevMode, DestroyRef, ChangeDetectorRef, Component, Input, InjectionToken, PLATFORM_ID, ViewChild, HostBinding, EventEmitter, Output, untracked, Renderer2, SecurityContext, ChangeDetectionStrategy, Injector, EnvironmentInjector, ViewContainerRef, makeEnvironmentProviders, importProvidersFrom } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { Subject, BehaviorSubject, of, tap, shareReplay, ReplaySubject, firstValueFrom, from, filter as filter$1 } from 'rxjs';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i3$1 from 'primeng/api';
|
|
6
6
|
import { MessageService, ConfirmationService, PrimeIcons, SharedModule } from 'primeng/api';
|
|
7
7
|
import { HttpErrorResponse, HttpClient as HttpClient$1, provideHttpClient, withInterceptors, withFetch } from '@angular/common/http';
|
|
8
8
|
import * as i1$7 from '@ngx-translate/core';
|
|
@@ -22,47 +22,46 @@ import * as i1$1 from '@angular/forms';
|
|
|
22
22
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
23
23
|
import * as i1$3 from '@angular/common';
|
|
24
24
|
import { isPlatformBrowser, CommonModule, NgComponentOutlet, NgClass, DatePipe, PathLocationStrategy, LocationStrategy } from '@angular/common';
|
|
25
|
-
import * as i3$
|
|
25
|
+
import * as i3$4 from 'primeng/styleclass';
|
|
26
26
|
import { StyleClassModule } from 'primeng/styleclass';
|
|
27
27
|
import { updatePreset, updateSurfacePalette, $t, definePreset } from '@primeng/themes';
|
|
28
28
|
import Aura from '@primeng/themes/aura';
|
|
29
29
|
import * as i3 from 'primeng/selectbutton';
|
|
30
30
|
import { SelectButtonModule } from 'primeng/selectbutton';
|
|
31
31
|
import { Tabs, TabList, Tab } from 'primeng/tabs';
|
|
32
|
-
import * as i2$
|
|
32
|
+
import * as i2$1 from 'primeng/avatar';
|
|
33
33
|
import { AvatarModule } from 'primeng/avatar';
|
|
34
34
|
import { ConfirmDialog } from 'primeng/confirmdialog';
|
|
35
35
|
import * as i1$4 from 'primeng/badge';
|
|
36
36
|
import { BadgeModule } from 'primeng/badge';
|
|
37
|
-
import * as i3$
|
|
37
|
+
import * as i3$2 from 'primeng/paginator';
|
|
38
38
|
import { PaginatorModule } from 'primeng/paginator';
|
|
39
39
|
import * as i7 from 'primeng/popover';
|
|
40
40
|
import { Popover, PopoverModule } from 'primeng/popover';
|
|
41
41
|
import * as i4 from 'primeng/progressspinner';
|
|
42
42
|
import { ProgressSpinnerModule, ProgressSpinner } from 'primeng/progressspinner';
|
|
43
|
-
import * as
|
|
43
|
+
import * as i3$6 from 'primeng/tag';
|
|
44
44
|
import { Tag, TagModule } from 'primeng/tag';
|
|
45
45
|
import * as signalR from '@microsoft/signalr';
|
|
46
|
-
import * as i3$
|
|
46
|
+
import * as i3$3 from 'primeng/menu';
|
|
47
47
|
import { MenuModule } from 'primeng/menu';
|
|
48
48
|
import * as i1$6 from 'primeng/contextmenu';
|
|
49
49
|
import { ContextMenuModule, ContextMenu } from 'primeng/contextmenu';
|
|
50
|
-
import * as i3$
|
|
50
|
+
import * as i3$5 from 'primeng/dialog';
|
|
51
51
|
import { DialogModule } from 'primeng/dialog';
|
|
52
52
|
import * as i4$1 from 'primeng/inputtext';
|
|
53
53
|
import { InputTextModule, InputText } from 'primeng/inputtext';
|
|
54
|
-
import * as i2$
|
|
54
|
+
import * as i2$2 from 'primeng/ripple';
|
|
55
55
|
import { RippleModule } from 'primeng/ripple';
|
|
56
56
|
import * as i5 from 'primeng/select';
|
|
57
57
|
import { SelectModule, Select } from 'primeng/select';
|
|
58
58
|
import * as i1$8 from 'primeng/fileupload';
|
|
59
59
|
import { FileUploadModule } from 'primeng/fileupload';
|
|
60
60
|
import { ImageModule } from 'primeng/image';
|
|
61
|
-
import * as
|
|
61
|
+
import * as i2$4 from 'primeng/table';
|
|
62
62
|
import { TableModule } from 'primeng/table';
|
|
63
|
-
import * as i2$
|
|
63
|
+
import * as i2$3 from 'primeng/toggleswitch';
|
|
64
64
|
import { ToggleSwitchModule } from 'primeng/toggleswitch';
|
|
65
|
-
import { TextareaModule, Textarea } from 'primeng/textarea';
|
|
66
65
|
import * as i5$1 from 'primeng/toolbar';
|
|
67
66
|
import { ToolbarModule } from 'primeng/toolbar';
|
|
68
67
|
import * as i5$2 from 'primeng/card';
|
|
@@ -70,6 +69,7 @@ import { CardModule } from 'primeng/card';
|
|
|
70
69
|
import { DividerModule } from 'primeng/divider';
|
|
71
70
|
import * as i6 from 'primeng/panel';
|
|
72
71
|
import { PanelModule } from 'primeng/panel';
|
|
72
|
+
import { Textarea } from 'primeng/textarea';
|
|
73
73
|
import { loadRemoteModule } from '@angular-architects/module-federation';
|
|
74
74
|
import { primitive } from '@primeng/themes/aura/base';
|
|
75
75
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
@@ -541,6 +541,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
541
541
|
args: [{ providedIn: 'root' }]
|
|
542
542
|
}], ctorParameters: () => [] });
|
|
543
543
|
|
|
544
|
+
var userService$1 = {
|
|
545
|
+
failedToLoadPhoto: "Failed to load user photo"
|
|
546
|
+
};
|
|
544
547
|
var msgService$1 = {
|
|
545
548
|
success: "Success",
|
|
546
549
|
info: "Info",
|
|
@@ -549,11 +552,15 @@ var msgService$1 = {
|
|
|
549
552
|
secondary: "Secondary"
|
|
550
553
|
};
|
|
551
554
|
var primeng$1 = "";
|
|
552
|
-
var en$
|
|
555
|
+
var en$l = {
|
|
556
|
+
userService: userService$1,
|
|
553
557
|
msgService: msgService$1,
|
|
554
558
|
primeng: primeng$1
|
|
555
559
|
};
|
|
556
560
|
|
|
561
|
+
var userService = {
|
|
562
|
+
failedToLoadPhoto: "Не удалось загрузить фото пользователя"
|
|
563
|
+
};
|
|
557
564
|
var msgService = {
|
|
558
565
|
success: "Успешно",
|
|
559
566
|
info: "Информация",
|
|
@@ -753,7 +760,8 @@ var primeng = {
|
|
|
753
760
|
zoomOut: "Уменьшить"
|
|
754
761
|
}
|
|
755
762
|
};
|
|
756
|
-
var ru$
|
|
763
|
+
var ru$l = {
|
|
764
|
+
userService: userService,
|
|
757
765
|
msgService: msgService,
|
|
758
766
|
primeng: primeng
|
|
759
767
|
};
|
|
@@ -762,7 +770,7 @@ var ru$k = {
|
|
|
762
770
|
* Global dictionaries shared by all components. They are bundled with the library,
|
|
763
771
|
* so the application never requests `assets/i18n/{lang}.json`.
|
|
764
772
|
*/
|
|
765
|
-
const globalTranslations = { en: en$
|
|
773
|
+
const globalTranslations = { en: en$l, ru: ru$l };
|
|
766
774
|
/**
|
|
767
775
|
* Service for managing translation loading in the application
|
|
768
776
|
*/
|
|
@@ -1468,7 +1476,7 @@ var baseComponent$1 = {
|
|
|
1468
1476
|
security: "Security",
|
|
1469
1477
|
success: "Saved successfully"
|
|
1470
1478
|
};
|
|
1471
|
-
var en$
|
|
1479
|
+
var en$k = {
|
|
1472
1480
|
baseComponent: baseComponent$1
|
|
1473
1481
|
};
|
|
1474
1482
|
|
|
@@ -1478,7 +1486,7 @@ var baseComponent = {
|
|
|
1478
1486
|
security: "Безопасность",
|
|
1479
1487
|
success: "Сохранено"
|
|
1480
1488
|
};
|
|
1481
|
-
var ru$
|
|
1489
|
+
var ru$k = {
|
|
1482
1490
|
baseComponent: baseComponent
|
|
1483
1491
|
};
|
|
1484
1492
|
|
|
@@ -1619,7 +1627,7 @@ class BaseModuleComponent {
|
|
|
1619
1627
|
* @type {Subject<TLocalStoreSettings>}
|
|
1620
1628
|
*/
|
|
1621
1629
|
this.localSettingsUpdate = new Subject();
|
|
1622
|
-
this.baseTranslations = provideTranslations({ en: en$
|
|
1630
|
+
this.baseTranslations = provideTranslations({ en: en$k, ru: ru$k });
|
|
1623
1631
|
this.l10nService = inject(L10nService);
|
|
1624
1632
|
this.canRead = false;
|
|
1625
1633
|
this.canEdit = false;
|
|
@@ -1930,7 +1938,7 @@ var securityComponent$1 = {
|
|
|
1930
1938
|
savedSecurity: "Security settings saved",
|
|
1931
1939
|
selectRoles: "Select roles"
|
|
1932
1940
|
};
|
|
1933
|
-
var en$
|
|
1941
|
+
var en$j = {
|
|
1934
1942
|
securityComponent: securityComponent$1
|
|
1935
1943
|
};
|
|
1936
1944
|
|
|
@@ -1940,13 +1948,13 @@ var securityComponent = {
|
|
|
1940
1948
|
savedSecurity: "Настройки сохранены",
|
|
1941
1949
|
selectRoles: "Выберите роли"
|
|
1942
1950
|
};
|
|
1943
|
-
var ru$
|
|
1951
|
+
var ru$j = {
|
|
1944
1952
|
securityComponent: securityComponent
|
|
1945
1953
|
};
|
|
1946
1954
|
|
|
1947
1955
|
class SecurityComponent {
|
|
1948
1956
|
constructor() {
|
|
1949
|
-
this.translations = provideTranslations({ en: en$
|
|
1957
|
+
this.translations = provideTranslations({ en: en$j, ru: ru$j });
|
|
1950
1958
|
this.msgService = inject(MsgService);
|
|
1951
1959
|
this.translateService = inject(TranslateService);
|
|
1952
1960
|
this.httpClient = inject(HttpClient);
|
|
@@ -2115,7 +2123,7 @@ const APP_THEME_PRESETS_MERGE_MODE = new InjectionToken('APP_THEME_PRESETS_MERGE
|
|
|
2115
2123
|
factory: () => 'mergeWithDefaults'
|
|
2116
2124
|
});
|
|
2117
2125
|
|
|
2118
|
-
var en$
|
|
2126
|
+
var en$i = {
|
|
2119
2127
|
"app-configurator": {
|
|
2120
2128
|
primary: "Primary",
|
|
2121
2129
|
surface: "Surface",
|
|
@@ -2126,7 +2134,7 @@ var en$h = {
|
|
|
2126
2134
|
}
|
|
2127
2135
|
};
|
|
2128
2136
|
|
|
2129
|
-
var ru$
|
|
2137
|
+
var ru$i = {
|
|
2130
2138
|
"app-configurator": {
|
|
2131
2139
|
primary: "Основной",
|
|
2132
2140
|
surface: "Фон",
|
|
@@ -2170,7 +2178,7 @@ const PRIMARY_COLORS = [
|
|
|
2170
2178
|
];
|
|
2171
2179
|
class AppConfiguratorComponent {
|
|
2172
2180
|
constructor() {
|
|
2173
|
-
this.translations = provideTranslations({ en: en$
|
|
2181
|
+
this.translations = provideTranslations({ en: en$i, ru: ru$i });
|
|
2174
2182
|
this.router = inject(Router);
|
|
2175
2183
|
this.config = inject(PrimeNG);
|
|
2176
2184
|
this.layoutService = inject(LayoutService);
|
|
@@ -2691,7 +2699,7 @@ class AppConfiguratorComponent {
|
|
|
2691
2699
|
</div>
|
|
2692
2700
|
}
|
|
2693
2701
|
</div>
|
|
2694
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectButtonModule }, { kind: "component", type: i3.SelectButton, selector: "p-selectButton, p-selectbutton, p-select-button", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "styleClass", "ariaLabelledBy", "dataKey", "autofocus", "size", "fluid"], outputs: ["onOptionClick", "onChange"] }, { kind: "directive", type:
|
|
2702
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectButtonModule }, { kind: "component", type: i3.SelectButton, selector: "p-selectButton, p-selectbutton, p-select-button", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "styleClass", "ariaLabelledBy", "dataKey", "autofocus", "size", "fluid"], outputs: ["onOptionClick", "onChange"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
2695
2703
|
}
|
|
2696
2704
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppConfiguratorComponent, decorators: [{
|
|
2697
2705
|
type: Component,
|
|
@@ -2903,7 +2911,7 @@ class UserService {
|
|
|
2903
2911
|
// A 404 just means the user hasn't uploaded a photo yet (e.g. on first login) —
|
|
2904
2912
|
// that's an expected state, not a failure, so fall back to initials silently.
|
|
2905
2913
|
if (error?.status !== 404) {
|
|
2906
|
-
this.msgService.errorFromException(error, this.translateService.instant('
|
|
2914
|
+
this.msgService.errorFromException(error, this.translateService.instant('userService.failedToLoadPhoto'));
|
|
2907
2915
|
}
|
|
2908
2916
|
this.photoLoaded = false;
|
|
2909
2917
|
});
|
|
@@ -3178,7 +3186,7 @@ var userNotifications$1 = {
|
|
|
3178
3186
|
markAsRead: "Read",
|
|
3179
3187
|
markedAsRead: "Notification marked as read"
|
|
3180
3188
|
};
|
|
3181
|
-
var en$
|
|
3189
|
+
var en$h = {
|
|
3182
3190
|
userNotifications: userNotifications$1
|
|
3183
3191
|
};
|
|
3184
3192
|
|
|
@@ -3189,13 +3197,13 @@ var userNotifications = {
|
|
|
3189
3197
|
markAsRead: "Прочитано",
|
|
3190
3198
|
markedAsRead: "Оповещение отмечено прочитанным"
|
|
3191
3199
|
};
|
|
3192
|
-
var ru$
|
|
3200
|
+
var ru$h = {
|
|
3193
3201
|
userNotifications: userNotifications
|
|
3194
3202
|
};
|
|
3195
3203
|
|
|
3196
3204
|
class UserNotificationsComponent {
|
|
3197
3205
|
constructor() {
|
|
3198
|
-
this.translations = provideTranslations({ en: en$
|
|
3206
|
+
this.translations = provideTranslations({ en: en$h, ru: ru$h });
|
|
3199
3207
|
this.notifications = [];
|
|
3200
3208
|
this.totalCount = 0;
|
|
3201
3209
|
this.skip = 0;
|
|
@@ -3360,7 +3368,7 @@ class UserNotificationsComponent {
|
|
|
3360
3368
|
(onPageChange)="onPageChange($event)"></p-paginator>
|
|
3361
3369
|
}
|
|
3362
3370
|
</p-popover>
|
|
3363
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1$4.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i3$
|
|
3371
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1$4.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i3$2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
3364
3372
|
}
|
|
3365
3373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserNotificationsComponent, decorators: [{
|
|
3366
3374
|
type: Component,
|
|
@@ -3585,7 +3593,7 @@ class AppTopbarApplicationSwitcherComponent {
|
|
|
3585
3593
|
</p-button>
|
|
3586
3594
|
<p-menu #applicationMenu [model]="applicationMenuItems" [popup]="true" />
|
|
3587
3595
|
}
|
|
3588
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i3$
|
|
3596
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i3$3.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
3589
3597
|
}
|
|
3590
3598
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTopbarApplicationSwitcherComponent, decorators: [{
|
|
3591
3599
|
type: Component,
|
|
@@ -3624,7 +3632,7 @@ var topbar$1 = {
|
|
|
3624
3632
|
profile: "Profile",
|
|
3625
3633
|
applications: "Applications"
|
|
3626
3634
|
};
|
|
3627
|
-
var en$
|
|
3635
|
+
var en$g = {
|
|
3628
3636
|
topbar: topbar$1
|
|
3629
3637
|
};
|
|
3630
3638
|
|
|
@@ -3637,13 +3645,13 @@ var topbar = {
|
|
|
3637
3645
|
profile: "Профиль",
|
|
3638
3646
|
applications: "Приложения"
|
|
3639
3647
|
};
|
|
3640
|
-
var ru$
|
|
3648
|
+
var ru$g = {
|
|
3641
3649
|
topbar: topbar
|
|
3642
3650
|
};
|
|
3643
3651
|
|
|
3644
3652
|
class AppTopbar {
|
|
3645
3653
|
constructor() {
|
|
3646
|
-
this.translations = provideTranslations({ en: en$
|
|
3654
|
+
this.translations = provideTranslations({ en: en$g, ru: ru$g });
|
|
3647
3655
|
this.securityService = inject(SecurityService);
|
|
3648
3656
|
this.topBarService = inject(TopBarService);
|
|
3649
3657
|
this.userService = inject(UserService);
|
|
@@ -3790,7 +3798,7 @@ class AppTopbar {
|
|
|
3790
3798
|
</div>
|
|
3791
3799
|
</div>
|
|
3792
3800
|
</div>
|
|
3793
|
-
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$
|
|
3801
|
+
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$4.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }, { kind: "component", type: Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: TabList, selector: "p-tablist" }, { kind: "component", type: Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "component", type: UserNotificationsComponent, selector: "app-user-notifications" }, { kind: "component", type: AppTopbarApplicationSwitcherComponent, selector: "app-topbar-application-switcher" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
3794
3802
|
}
|
|
3795
3803
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTopbar, decorators: [{
|
|
3796
3804
|
type: Component,
|
|
@@ -4556,7 +4564,7 @@ class MenuItemComponent {
|
|
|
4556
4564
|
</ul>
|
|
4557
4565
|
}
|
|
4558
4566
|
</ng-container>
|
|
4559
|
-
`, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2$
|
|
4567
|
+
`, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2$2.Ripple, selector: "[pRipple]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }] }); }
|
|
4560
4568
|
}
|
|
4561
4569
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemComponent, decorators: [{
|
|
4562
4570
|
type: Component,
|
|
@@ -4813,7 +4821,7 @@ class MenuItemCreateDialogComponent {
|
|
|
4813
4821
|
(click)="save()" />
|
|
4814
4822
|
</div>
|
|
4815
4823
|
</p-dialog>
|
|
4816
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type:
|
|
4824
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$5.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
4817
4825
|
}
|
|
4818
4826
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemCreateDialogComponent, decorators: [{
|
|
4819
4827
|
type: Component,
|
|
@@ -5075,7 +5083,7 @@ class MenuItemEditDialogComponent {
|
|
|
5075
5083
|
(click)="save()" />
|
|
5076
5084
|
</div>
|
|
5077
5085
|
</p-dialog>
|
|
5078
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type:
|
|
5086
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$5.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i1.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
5079
5087
|
}
|
|
5080
5088
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemEditDialogComponent, decorators: [{
|
|
5081
5089
|
type: Component,
|
|
@@ -5224,7 +5232,7 @@ var menuItemCreateDialogComponent$1 = {
|
|
|
5224
5232
|
cancel: "Cancel",
|
|
5225
5233
|
save: "Save"
|
|
5226
5234
|
};
|
|
5227
|
-
var en$
|
|
5235
|
+
var en$f = {
|
|
5228
5236
|
menuComponent: menuComponent$1,
|
|
5229
5237
|
menuItemComponent: menuItemComponent$1,
|
|
5230
5238
|
menuItemEditDialogComponent: menuItemEditDialogComponent$1,
|
|
@@ -5273,7 +5281,7 @@ var menuItemCreateDialogComponent = {
|
|
|
5273
5281
|
cancel: "Отмена",
|
|
5274
5282
|
save: "Сохранить"
|
|
5275
5283
|
};
|
|
5276
|
-
var ru$
|
|
5284
|
+
var ru$f = {
|
|
5277
5285
|
menuComponent: menuComponent,
|
|
5278
5286
|
menuItemComponent: menuItemComponent,
|
|
5279
5287
|
menuItemEditDialogComponent: menuItemEditDialogComponent,
|
|
@@ -5284,7 +5292,7 @@ class MenuComponent {
|
|
|
5284
5292
|
constructor() {
|
|
5285
5293
|
// Registers the whole menu/l10n/menu.*.json bundle, which also covers
|
|
5286
5294
|
// menuItemComponent, menuItemEditDialogComponent and menuItemCreateDialogComponent.
|
|
5287
|
-
this.translations = provideTranslations({ en: en$
|
|
5295
|
+
this.translations = provideTranslations({ en: en$f, ru: ru$f });
|
|
5288
5296
|
this.menuService = inject(MenuService);
|
|
5289
5297
|
this.securityService = inject(SecurityService);
|
|
5290
5298
|
this.translateService = inject(TranslateService);
|
|
@@ -5411,14 +5419,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5411
5419
|
var blockLoader$1 = {
|
|
5412
5420
|
loading: "Loading..."
|
|
5413
5421
|
};
|
|
5414
|
-
var en$
|
|
5422
|
+
var en$e = {
|
|
5415
5423
|
blockLoader: blockLoader$1
|
|
5416
5424
|
};
|
|
5417
5425
|
|
|
5418
5426
|
var blockLoader = {
|
|
5419
5427
|
loading: "Загрузка..."
|
|
5420
5428
|
};
|
|
5421
|
-
var ru$
|
|
5429
|
+
var ru$e = {
|
|
5422
5430
|
blockLoader: blockLoader
|
|
5423
5431
|
};
|
|
5424
5432
|
|
|
@@ -5435,7 +5443,7 @@ class BlockLoaderComponent {
|
|
|
5435
5443
|
static { this.showDelayMs = 150; }
|
|
5436
5444
|
static { this.minVisibleMs = 300; }
|
|
5437
5445
|
constructor() {
|
|
5438
|
-
this.translations = provideTranslations({ en: en$
|
|
5446
|
+
this.translations = provideTranslations({ en: en$e, ru: ru$e });
|
|
5439
5447
|
this.moduleLoadingService = inject(ModuleLoadingService);
|
|
5440
5448
|
this.shownAt = 0;
|
|
5441
5449
|
this.visible = signal(false, ...(ngDevMode ? [{ debugName: "visible" }] : []));
|
|
@@ -5567,7 +5575,7 @@ var defaultSecretsBanner$1 = {
|
|
|
5567
5575
|
dismiss: "Dismiss"
|
|
5568
5576
|
}
|
|
5569
5577
|
};
|
|
5570
|
-
var en$
|
|
5578
|
+
var en$d = {
|
|
5571
5579
|
defaultSecretsBanner: defaultSecretsBanner$1
|
|
5572
5580
|
};
|
|
5573
5581
|
|
|
@@ -5589,7 +5597,7 @@ var defaultSecretsBanner = {
|
|
|
5589
5597
|
dismiss: "Скрыть"
|
|
5590
5598
|
}
|
|
5591
5599
|
};
|
|
5592
|
-
var ru$
|
|
5600
|
+
var ru$d = {
|
|
5593
5601
|
defaultSecretsBanner: defaultSecretsBanner
|
|
5594
5602
|
};
|
|
5595
5603
|
|
|
@@ -5605,7 +5613,7 @@ var ru$c = {
|
|
|
5605
5613
|
*/
|
|
5606
5614
|
class DefaultSecretsBannerComponent {
|
|
5607
5615
|
constructor() {
|
|
5608
|
-
this.translations = provideTranslations({ en: en$
|
|
5616
|
+
this.translations = provideTranslations({ en: en$d, ru: ru$d });
|
|
5609
5617
|
this.securityApi = inject(SecurityApi);
|
|
5610
5618
|
this.securityService = inject(SecurityService);
|
|
5611
5619
|
this.destroyRef = inject(DestroyRef);
|
|
@@ -5947,7 +5955,7 @@ class AppFloatingConfiguratorComponent {
|
|
|
5947
5955
|
<app-configurator />
|
|
5948
5956
|
</div>
|
|
5949
5957
|
</div>
|
|
5950
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$
|
|
5958
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$4.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }] }); }
|
|
5951
5959
|
}
|
|
5952
5960
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppFloatingConfiguratorComponent, decorators: [{
|
|
5953
5961
|
type: Component,
|
|
@@ -5988,7 +5996,7 @@ var notfound$1 = {
|
|
|
5988
5996
|
description: "Requested resource is not available.",
|
|
5989
5997
|
button: "Go to home"
|
|
5990
5998
|
};
|
|
5991
|
-
var en$
|
|
5999
|
+
var en$c = {
|
|
5992
6000
|
notfound: notfound$1
|
|
5993
6001
|
};
|
|
5994
6002
|
|
|
@@ -5998,13 +6006,13 @@ var notfound = {
|
|
|
5998
6006
|
description: "Запрашиваемый ресурс недоступен.",
|
|
5999
6007
|
button: "На главную"
|
|
6000
6008
|
};
|
|
6001
|
-
var ru$
|
|
6009
|
+
var ru$c = {
|
|
6002
6010
|
notfound: notfound
|
|
6003
6011
|
};
|
|
6004
6012
|
|
|
6005
6013
|
class NotfoundComponent {
|
|
6006
6014
|
constructor() {
|
|
6007
|
-
this.translations = provideTranslations({ en: en$
|
|
6015
|
+
this.translations = provideTranslations({ en: en$c, ru: ru$c });
|
|
6008
6016
|
}
|
|
6009
6017
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotfoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6010
6018
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: NotfoundComponent, isStandalone: true, selector: "app-notfound", ngImport: i0, template: ` <app-floating-configurator />
|
|
@@ -6064,7 +6072,7 @@ var unauthorized$1 = {
|
|
|
6064
6072
|
signInToContinue: "Sign in to continue",
|
|
6065
6073
|
signIn: "Sign In"
|
|
6066
6074
|
};
|
|
6067
|
-
var en$
|
|
6075
|
+
var en$b = {
|
|
6068
6076
|
unauthorized: unauthorized$1
|
|
6069
6077
|
};
|
|
6070
6078
|
|
|
@@ -6073,13 +6081,13 @@ var unauthorized = {
|
|
|
6073
6081
|
signInToContinue: "Войдите чтобы продолжить",
|
|
6074
6082
|
signIn: "Войти"
|
|
6075
6083
|
};
|
|
6076
|
-
var ru$
|
|
6084
|
+
var ru$b = {
|
|
6077
6085
|
unauthorized: unauthorized
|
|
6078
6086
|
};
|
|
6079
6087
|
|
|
6080
6088
|
class UnauthorizedComponent {
|
|
6081
6089
|
constructor() {
|
|
6082
|
-
this.translations = provideTranslations({ en: en$
|
|
6090
|
+
this.translations = provideTranslations({ en: en$b, ru: ru$b });
|
|
6083
6091
|
this.securityService = inject(SecurityService);
|
|
6084
6092
|
this.route = inject(ActivatedRoute);
|
|
6085
6093
|
}
|
|
@@ -6179,7 +6187,7 @@ var access$1 = {
|
|
|
6179
6187
|
message: "You do not have the necessary permissions. Please contact admins.",
|
|
6180
6188
|
button: "Go to Dashboard"
|
|
6181
6189
|
};
|
|
6182
|
-
var en$
|
|
6190
|
+
var en$a = {
|
|
6183
6191
|
access: access$1
|
|
6184
6192
|
};
|
|
6185
6193
|
|
|
@@ -6188,13 +6196,13 @@ var access = {
|
|
|
6188
6196
|
message: "У вас недостаточно прав. Пожалуйста, обратитесь к администраторам.",
|
|
6189
6197
|
button: "На главную"
|
|
6190
6198
|
};
|
|
6191
|
-
var ru$
|
|
6199
|
+
var ru$a = {
|
|
6192
6200
|
access: access
|
|
6193
6201
|
};
|
|
6194
6202
|
|
|
6195
6203
|
class AccessComponent {
|
|
6196
6204
|
constructor() {
|
|
6197
|
-
this.translations = provideTranslations({ en: en$
|
|
6205
|
+
this.translations = provideTranslations({ en: en$a, ru: ru$a });
|
|
6198
6206
|
}
|
|
6199
6207
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6200
6208
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AccessComponent, isStandalone: true, selector: "app-access", ngImport: i0, template: `<div
|
|
@@ -6227,7 +6235,7 @@ class AccessComponent {
|
|
|
6227
6235
|
</div>
|
|
6228
6236
|
</div>
|
|
6229
6237
|
</div>
|
|
6230
|
-
</div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2$
|
|
6238
|
+
</div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2$2.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6231
6239
|
}
|
|
6232
6240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AccessComponent, decorators: [{
|
|
6233
6241
|
type: Component,
|
|
@@ -6274,7 +6282,7 @@ var error$1 = {
|
|
|
6274
6282
|
message: "Requested resource is not available.",
|
|
6275
6283
|
button: "Go to Dashboard"
|
|
6276
6284
|
};
|
|
6277
|
-
var en$
|
|
6285
|
+
var en$9 = {
|
|
6278
6286
|
error: error$1
|
|
6279
6287
|
};
|
|
6280
6288
|
|
|
@@ -6283,13 +6291,13 @@ var error = {
|
|
|
6283
6291
|
message: "Запрашиваемый ресурс недоступен.",
|
|
6284
6292
|
button: "На главную"
|
|
6285
6293
|
};
|
|
6286
|
-
var ru$
|
|
6294
|
+
var ru$9 = {
|
|
6287
6295
|
error: error
|
|
6288
6296
|
};
|
|
6289
6297
|
|
|
6290
6298
|
class ErrorComponent {
|
|
6291
6299
|
constructor() {
|
|
6292
|
-
this.translations = provideTranslations({ en: en$
|
|
6300
|
+
this.translations = provideTranslations({ en: en$9, ru: ru$9 });
|
|
6293
6301
|
}
|
|
6294
6302
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6295
6303
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ErrorComponent, isStandalone: true, selector: "app-error", ngImport: i0, template: `<div
|
|
@@ -6322,7 +6330,7 @@ class ErrorComponent {
|
|
|
6322
6330
|
</div>
|
|
6323
6331
|
</div>
|
|
6324
6332
|
</div>
|
|
6325
|
-
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2$
|
|
6333
|
+
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2$2.Ripple, selector: "[pRipple]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6326
6334
|
}
|
|
6327
6335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
6328
6336
|
type: Component,
|
|
@@ -6372,7 +6380,6 @@ var error_component = /*#__PURE__*/Object.freeze({
|
|
|
6372
6380
|
var profileComponent$1 = {
|
|
6373
6381
|
changePhoto: "Upload Photo",
|
|
6374
6382
|
successfullyUploaded: "Uploaded successfully",
|
|
6375
|
-
failedToLoadPhoto: "Failed to load user photo",
|
|
6376
6383
|
deletePhoto: "Delete Photo",
|
|
6377
6384
|
deletePhotoConfirmHeader: "Delete Photo",
|
|
6378
6385
|
deletePhotoConfirmMessage: "Are you sure you want to delete your photo?",
|
|
@@ -6381,14 +6388,13 @@ var profileComponent$1 = {
|
|
|
6381
6388
|
photoDeleted: "Photo deleted",
|
|
6382
6389
|
failedToDeletePhoto: "Failed to delete user photo"
|
|
6383
6390
|
};
|
|
6384
|
-
var en$
|
|
6391
|
+
var en$8 = {
|
|
6385
6392
|
profileComponent: profileComponent$1
|
|
6386
6393
|
};
|
|
6387
6394
|
|
|
6388
6395
|
var profileComponent = {
|
|
6389
6396
|
changePhoto: "Загрузить фото",
|
|
6390
6397
|
successfullyUploaded: "Загружено",
|
|
6391
|
-
failedToLoadPhoto: "Не удалось загрузить фото пользователя",
|
|
6392
6398
|
deletePhoto: "Удалить фото",
|
|
6393
6399
|
deletePhotoConfirmHeader: "Удаление фото",
|
|
6394
6400
|
deletePhotoConfirmMessage: "Вы уверены, что хотите удалить своё фото?",
|
|
@@ -6397,13 +6403,13 @@ var profileComponent = {
|
|
|
6397
6403
|
photoDeleted: "Фото удалено",
|
|
6398
6404
|
failedToDeletePhoto: "Не удалось удалить фото пользователя"
|
|
6399
6405
|
};
|
|
6400
|
-
var ru$
|
|
6406
|
+
var ru$8 = {
|
|
6401
6407
|
profileComponent: profileComponent
|
|
6402
6408
|
};
|
|
6403
6409
|
|
|
6404
6410
|
class UserProfileComponent {
|
|
6405
6411
|
constructor() {
|
|
6406
|
-
this.translations = provideTranslations({ en: en$
|
|
6412
|
+
this.translations = provideTranslations({ en: en$8, ru: ru$8 });
|
|
6407
6413
|
this.userService = inject(UserService);
|
|
6408
6414
|
this.msgService = inject(MsgService);
|
|
6409
6415
|
this.translateService = inject(TranslateService);
|
|
@@ -6485,7 +6491,7 @@ class UserProfileComponent {
|
|
|
6485
6491
|
(onClick)="confirmDeletePhoto($event)" />
|
|
6486
6492
|
}
|
|
6487
6493
|
</div>
|
|
6488
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i1$8.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: ImageModule }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$
|
|
6494
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i1$8.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: ImageModule }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6489
6495
|
}
|
|
6490
6496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileComponent, decorators: [{
|
|
6491
6497
|
type: Component,
|
|
@@ -6545,11 +6551,12 @@ var config$1 = {
|
|
|
6545
6551
|
photo: "Photo",
|
|
6546
6552
|
profile: "Profile",
|
|
6547
6553
|
selectLanguage: "Select language",
|
|
6554
|
+
sessionManagement: "Session management",
|
|
6548
6555
|
timeFormat: "Time format",
|
|
6549
6556
|
timeZone: "Time zone",
|
|
6550
6557
|
usePhoto256x256Pixel: "Use photo 256x256 pixel"
|
|
6551
6558
|
};
|
|
6552
|
-
var en$
|
|
6559
|
+
var en$7 = {
|
|
6553
6560
|
config: config$1
|
|
6554
6561
|
};
|
|
6555
6562
|
|
|
@@ -6565,17 +6572,18 @@ var config = {
|
|
|
6565
6572
|
photo: "Фото",
|
|
6566
6573
|
profile: "Профиль",
|
|
6567
6574
|
selectLanguage: "Выберите язык",
|
|
6575
|
+
sessionManagement: "Управление сессиями",
|
|
6568
6576
|
timeFormat: "Формат времени",
|
|
6569
6577
|
timeZone: "Часовой пояс",
|
|
6570
6578
|
usePhoto256x256Pixel: "Используйте фото 256x256 пикселей"
|
|
6571
6579
|
};
|
|
6572
|
-
var ru$
|
|
6580
|
+
var ru$7 = {
|
|
6573
6581
|
config: config
|
|
6574
6582
|
};
|
|
6575
6583
|
|
|
6576
6584
|
class ConfigComponent {
|
|
6577
6585
|
constructor() {
|
|
6578
|
-
this.translations = provideTranslations({ en: en$
|
|
6586
|
+
this.translations = provideTranslations({ en: en$7, ru: ru$7 });
|
|
6579
6587
|
this.layoutService = inject(LayoutService);
|
|
6580
6588
|
this.l10nService = inject(L10nService);
|
|
6581
6589
|
this.userService = inject(UserService);
|
|
@@ -6710,11 +6718,19 @@ class ConfigComponent {
|
|
|
6710
6718
|
label="{{ 'config.goTo' | translate }}"
|
|
6711
6719
|
routerLink="/applications" />
|
|
6712
6720
|
</div>
|
|
6721
|
+
<div class="flex items-center gap-2">
|
|
6722
|
+
<label for="oip-app-config-sessions-link">{{ 'config.sessionManagement' | translate }}</label>
|
|
6723
|
+
<p-button
|
|
6724
|
+
icon="pi pi-users"
|
|
6725
|
+
id="oip-app-config-sessions-link"
|
|
6726
|
+
label="{{ 'config.goTo' | translate }}"
|
|
6727
|
+
routerLink="/sessions" />
|
|
6728
|
+
</div>
|
|
6713
6729
|
</div>
|
|
6714
6730
|
</div>
|
|
6715
6731
|
}
|
|
6716
6732
|
</div>
|
|
6717
|
-
`, isInline: true, dependencies: [{ kind: "component", type: UserProfileComponent, selector: "user-profile" }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i2$
|
|
6733
|
+
`, isInline: true, dependencies: [{ kind: "component", type: UserProfileComponent, selector: "user-profile" }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i2$3.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6718
6734
|
}
|
|
6719
6735
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigComponent, decorators: [{
|
|
6720
6736
|
type: Component,
|
|
@@ -6820,6 +6836,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6820
6836
|
label="{{ 'config.goTo' | translate }}"
|
|
6821
6837
|
routerLink="/applications" />
|
|
6822
6838
|
</div>
|
|
6839
|
+
<div class="flex items-center gap-2">
|
|
6840
|
+
<label for="oip-app-config-sessions-link">{{ 'config.sessionManagement' | translate }}</label>
|
|
6841
|
+
<p-button
|
|
6842
|
+
icon="pi pi-users"
|
|
6843
|
+
id="oip-app-config-sessions-link"
|
|
6844
|
+
label="{{ 'config.goTo' | translate }}"
|
|
6845
|
+
routerLink="/sessions" />
|
|
6846
|
+
</div>
|
|
6823
6847
|
</div>
|
|
6824
6848
|
</div>
|
|
6825
6849
|
}
|
|
@@ -6844,12 +6868,12 @@ var config_component = /*#__PURE__*/Object.freeze({
|
|
|
6844
6868
|
ConfigComponent: ConfigComponent
|
|
6845
6869
|
});
|
|
6846
6870
|
|
|
6847
|
-
var en$
|
|
6871
|
+
var en$6 = {
|
|
6848
6872
|
"db-migration": {
|
|
6849
6873
|
migrationManager: "Migration manager",
|
|
6850
6874
|
actions: {
|
|
6851
6875
|
refresh: "Refresh",
|
|
6852
|
-
cleanFilter: "
|
|
6876
|
+
cleanFilter: "Clear filter",
|
|
6853
6877
|
applyMigration: "Apply migration"
|
|
6854
6878
|
},
|
|
6855
6879
|
columns: {
|
|
@@ -6860,16 +6884,20 @@ var en$5 = {
|
|
|
6860
6884
|
},
|
|
6861
6885
|
messages: {
|
|
6862
6886
|
errorRefreshing: "Error refreshing database"
|
|
6863
|
-
}
|
|
6887
|
+
},
|
|
6888
|
+
filterPlaceholder: "Filter by migration name",
|
|
6889
|
+
empty: "No migrations",
|
|
6890
|
+
yes: "Yes",
|
|
6891
|
+
no: "No"
|
|
6864
6892
|
}
|
|
6865
6893
|
};
|
|
6866
6894
|
|
|
6867
|
-
var ru$
|
|
6895
|
+
var ru$6 = {
|
|
6868
6896
|
"db-migration": {
|
|
6869
6897
|
migrationManager: "Менеджер миграций",
|
|
6870
6898
|
actions: {
|
|
6871
6899
|
refresh: "Обновить",
|
|
6872
|
-
cleanFilter: "
|
|
6900
|
+
cleanFilter: "Сбросить фильтр",
|
|
6873
6901
|
applyMigration: "Применить миграцию"
|
|
6874
6902
|
},
|
|
6875
6903
|
columns: {
|
|
@@ -6880,28 +6908,48 @@ var ru$5 = {
|
|
|
6880
6908
|
},
|
|
6881
6909
|
messages: {
|
|
6882
6910
|
errorRefreshing: "Ошибка обновления базы данных"
|
|
6883
|
-
}
|
|
6911
|
+
},
|
|
6912
|
+
filterPlaceholder: "Фильтр по имени миграции",
|
|
6913
|
+
empty: "Нет миграций",
|
|
6914
|
+
yes: "Да",
|
|
6915
|
+
no: "Нет"
|
|
6884
6916
|
}
|
|
6885
6917
|
};
|
|
6886
6918
|
|
|
6887
6919
|
class DbMigrationComponent extends BaseModuleComponent {
|
|
6888
6920
|
constructor() {
|
|
6889
6921
|
super(...arguments);
|
|
6890
|
-
this.translations = provideTranslations({ en: en$
|
|
6922
|
+
this.translations = provideTranslations({ en: en$6, ru: ru$6 });
|
|
6923
|
+
this.data = [];
|
|
6924
|
+
this.loading = false;
|
|
6925
|
+
this.globalFilter = '';
|
|
6891
6926
|
}
|
|
6892
6927
|
async ngOnInit() {
|
|
6893
6928
|
await super.ngOnInit();
|
|
6894
6929
|
await this.refreshAction();
|
|
6895
6930
|
}
|
|
6896
6931
|
async refreshAction() {
|
|
6897
|
-
this.
|
|
6898
|
-
|
|
6899
|
-
this.data =
|
|
6900
|
-
}
|
|
6901
|
-
|
|
6932
|
+
this.loading = true;
|
|
6933
|
+
try {
|
|
6934
|
+
this.data = await this.getData();
|
|
6935
|
+
}
|
|
6936
|
+
catch (error) {
|
|
6902
6937
|
console.log(error);
|
|
6903
6938
|
this.msgService.error(this.l10nService.instant('db-migration.messages.errorRefreshing'));
|
|
6904
|
-
}
|
|
6939
|
+
}
|
|
6940
|
+
finally {
|
|
6941
|
+
this.loading = false;
|
|
6942
|
+
}
|
|
6943
|
+
}
|
|
6944
|
+
get hasActiveFilters() {
|
|
6945
|
+
if (!this.dt?.filters)
|
|
6946
|
+
return false;
|
|
6947
|
+
return Object.values(this.dt.filters).some((meta) => (Array.isArray(meta) ? meta : [meta]).some((m) => m?.value !== null && m?.value !== undefined && m?.value !== ''));
|
|
6948
|
+
}
|
|
6949
|
+
clearFilter() {
|
|
6950
|
+
this.globalFilter = '';
|
|
6951
|
+
this.dt.clearFilterValues();
|
|
6952
|
+
this.dt._filter();
|
|
6905
6953
|
}
|
|
6906
6954
|
async getData() {
|
|
6907
6955
|
return this.getMigrations();
|
|
@@ -6911,85 +6959,125 @@ class DbMigrationComponent extends BaseModuleComponent {
|
|
|
6911
6959
|
return this.applyModuleMigration(request);
|
|
6912
6960
|
}
|
|
6913
6961
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DbMigrationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6914
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DbMigrationComponent, isStandalone: true, selector: "db-migration", providers: [ConfirmationService], usesInheritance: true, ngImport: i0, template: `
|
|
6962
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DbMigrationComponent, isStandalone: true, selector: "db-migration", providers: [ConfirmationService], viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
6915
6963
|
@if (isContent) {
|
|
6916
|
-
<
|
|
6917
|
-
|
|
6918
|
-
<div>
|
|
6919
|
-
<
|
|
6920
|
-
|
|
6921
|
-
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
[pTooltip]="'db-migration.actions.refresh' | translate"
|
|
6927
|
-
(click)="refreshAction()" />
|
|
6928
|
-
<p-button
|
|
6929
|
-
icon="pi pi-filter-slash"
|
|
6930
|
-
severity="secondary"
|
|
6931
|
-
tooltipPosition="bottom"
|
|
6932
|
-
[outlined]="true"
|
|
6933
|
-
[pTooltip]="'db-migration.actions.cleanFilter' | translate"
|
|
6934
|
-
(click)="dt.clear()" />
|
|
6935
|
-
</div>
|
|
6936
|
-
<div>
|
|
6937
|
-
<p-table #dt dataKey="name" editMode="row" size="small" [scrollable]="true" [value]="data">
|
|
6938
|
-
<ng-template let-columns pTemplate="header">
|
|
6939
|
-
<tr>
|
|
6940
|
-
<th pSortableColumn="name" scope="col">
|
|
6941
|
-
{{ 'db-migration.columns.name' | translate }}
|
|
6942
|
-
<p-columnFilter display="menu" field="name" type="text" />
|
|
6943
|
-
</th>
|
|
6944
|
-
<th scope="col">{{ 'db-migration.columns.applied' | translate }}</th>
|
|
6945
|
-
<th scope="col">{{ 'db-migration.columns.exist' | translate }}</th>
|
|
6946
|
-
<th scope="col">{{ 'db-migration.columns.pending' | translate }}</th>
|
|
6947
|
-
<th scope="col"></th>
|
|
6948
|
-
</tr>
|
|
6949
|
-
</ng-template>
|
|
6964
|
+
<p-confirmDialog />
|
|
6965
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
6966
|
+
<div class="card w-full">
|
|
6967
|
+
<div class="mb-4">
|
|
6968
|
+
<p-toolbar>
|
|
6969
|
+
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
6970
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
6971
|
+
<i class="pi pi-database"></i>
|
|
6972
|
+
{{ 'db-migration.migrationManager' | translate }}
|
|
6973
|
+
</div>
|
|
6950
6974
|
|
|
6951
|
-
|
|
6952
|
-
<
|
|
6953
|
-
<
|
|
6954
|
-
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
</p-button>
|
|
6982
|
-
</td>
|
|
6983
|
-
</tr>
|
|
6984
|
-
</ng-template>
|
|
6985
|
-
</p-table>
|
|
6975
|
+
<div class="flex-1"></div>
|
|
6976
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
6977
|
+
<p-button
|
|
6978
|
+
icon="pi pi-refresh"
|
|
6979
|
+
rounded="true"
|
|
6980
|
+
severity="secondary"
|
|
6981
|
+
text="true"
|
|
6982
|
+
tooltipPosition="bottom"
|
|
6983
|
+
[loading]="loading"
|
|
6984
|
+
[pTooltip]="'db-migration.actions.refresh' | translate"
|
|
6985
|
+
(onClick)="refreshAction()"></p-button>
|
|
6986
|
+
<input
|
|
6987
|
+
class="w-full md:w-96"
|
|
6988
|
+
pInputText
|
|
6989
|
+
type="text"
|
|
6990
|
+
[placeholder]="'db-migration.filterPlaceholder' | translate"
|
|
6991
|
+
[(ngModel)]="globalFilter"
|
|
6992
|
+
(ngModelChange)="dt.filterGlobal($event, 'contains')" />
|
|
6993
|
+
<p-button
|
|
6994
|
+
icon="pi pi-filter-slash"
|
|
6995
|
+
rounded="true"
|
|
6996
|
+
severity="secondary"
|
|
6997
|
+
text="true"
|
|
6998
|
+
tooltipPosition="bottom"
|
|
6999
|
+
[disabled]="!hasActiveFilters"
|
|
7000
|
+
[pTooltip]="'db-migration.actions.cleanFilter' | translate"
|
|
7001
|
+
(onClick)="clearFilter()"></p-button>
|
|
7002
|
+
</div>
|
|
7003
|
+
</div>
|
|
7004
|
+
</p-toolbar>
|
|
6986
7005
|
</div>
|
|
7006
|
+
<p-table
|
|
7007
|
+
#dt
|
|
7008
|
+
class="mt-4"
|
|
7009
|
+
dataKey="name"
|
|
7010
|
+
sortField="name"
|
|
7011
|
+
[sortOrder]="1"
|
|
7012
|
+
[paginator]="true"
|
|
7013
|
+
[rows]="50"
|
|
7014
|
+
[globalFilterFields]="['name']"
|
|
7015
|
+
[value]="data"
|
|
7016
|
+
[loading]="loading">
|
|
7017
|
+
<ng-template pTemplate="header">
|
|
7018
|
+
<tr>
|
|
7019
|
+
<th pSortableColumn="name" scope="col">
|
|
7020
|
+
{{ 'db-migration.columns.name' | translate }}
|
|
7021
|
+
<p-sortIcon field="name"></p-sortIcon>
|
|
7022
|
+
<p-columnFilter display="menu" field="name" type="text" />
|
|
7023
|
+
</th>
|
|
7024
|
+
<th pSortableColumn="applied" scope="col">
|
|
7025
|
+
{{ 'db-migration.columns.applied' | translate }}
|
|
7026
|
+
<p-sortIcon field="applied"></p-sortIcon>
|
|
7027
|
+
</th>
|
|
7028
|
+
<th pSortableColumn="exist" scope="col">
|
|
7029
|
+
{{ 'db-migration.columns.exist' | translate }}
|
|
7030
|
+
<p-sortIcon field="exist"></p-sortIcon>
|
|
7031
|
+
</th>
|
|
7032
|
+
<th pSortableColumn="pending" scope="col">
|
|
7033
|
+
{{ 'db-migration.columns.pending' | translate }}
|
|
7034
|
+
<p-sortIcon field="pending"></p-sortIcon>
|
|
7035
|
+
</th>
|
|
7036
|
+
<th style="width: 4rem" scope="col"></th>
|
|
7037
|
+
</tr>
|
|
7038
|
+
</ng-template>
|
|
7039
|
+
<ng-template let-migration pTemplate="body">
|
|
7040
|
+
<tr>
|
|
7041
|
+
<td>{{ migration.name }}</td>
|
|
7042
|
+
<td>
|
|
7043
|
+
<p-tag
|
|
7044
|
+
[severity]="migration.applied ? 'success' : 'secondary'"
|
|
7045
|
+
[value]="(migration.applied ? 'db-migration.yes' : 'db-migration.no') | translate"></p-tag>
|
|
7046
|
+
</td>
|
|
7047
|
+
<td>
|
|
7048
|
+
<p-tag
|
|
7049
|
+
[severity]="migration.exist ? 'success' : 'secondary'"
|
|
7050
|
+
[value]="(migration.exist ? 'db-migration.yes' : 'db-migration.no') | translate"></p-tag>
|
|
7051
|
+
</td>
|
|
7052
|
+
<td>
|
|
7053
|
+
<p-tag
|
|
7054
|
+
[severity]="migration.pending ? 'warn' : 'secondary'"
|
|
7055
|
+
[value]="(migration.pending ? 'db-migration.yes' : 'db-migration.no') | translate"></p-tag>
|
|
7056
|
+
</td>
|
|
7057
|
+
<td>
|
|
7058
|
+
<p-button
|
|
7059
|
+
icon="pi pi-bolt"
|
|
7060
|
+
rounded="true"
|
|
7061
|
+
severity="secondary"
|
|
7062
|
+
text="true"
|
|
7063
|
+
tooltipPosition="left"
|
|
7064
|
+
[pTooltip]="'db-migration.actions.applyMigration' | translate"
|
|
7065
|
+
(onClick)="applyMigration(migration)"></p-button>
|
|
7066
|
+
</td>
|
|
7067
|
+
</tr>
|
|
7068
|
+
</ng-template>
|
|
7069
|
+
<ng-template pTemplate="emptymessage">
|
|
7070
|
+
<tr>
|
|
7071
|
+
<td colspan="5">{{ 'db-migration.empty' | translate }}</td>
|
|
7072
|
+
</tr>
|
|
7073
|
+
</ng-template>
|
|
7074
|
+
</p-table>
|
|
6987
7075
|
</div>
|
|
6988
7076
|
</div>
|
|
6989
7077
|
} @else if (isSecurity) {
|
|
6990
7078
|
<security [controller]="controller" [id]="id" />
|
|
6991
7079
|
}
|
|
6992
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type:
|
|
7080
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i2$4.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2$4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2$4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i2$4.ColumnFilter, selector: "p-columnFilter, p-column-filter, p-columnfilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "filterOn", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3$6.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "component", type: SecurityComponent, selector: "security", inputs: ["id", "controller"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
6993
7081
|
}
|
|
6994
7082
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DbMigrationComponent, decorators: [{
|
|
6995
7083
|
type: Component,
|
|
@@ -6999,8 +7087,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6999
7087
|
SharedModule,
|
|
7000
7088
|
TagModule,
|
|
7001
7089
|
InputTextModule,
|
|
7002
|
-
TextareaModule,
|
|
7003
7090
|
ButtonModule,
|
|
7091
|
+
ToolbarModule,
|
|
7004
7092
|
FormsModule,
|
|
7005
7093
|
ConfirmDialog,
|
|
7006
7094
|
SecurityComponent,
|
|
@@ -7010,77 +7098,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7010
7098
|
selector: 'db-migration',
|
|
7011
7099
|
template: `
|
|
7012
7100
|
@if (isContent) {
|
|
7013
|
-
<
|
|
7014
|
-
|
|
7015
|
-
<div>
|
|
7016
|
-
<
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7023
|
-
[pTooltip]="'db-migration.actions.refresh' | translate"
|
|
7024
|
-
(click)="refreshAction()" />
|
|
7025
|
-
<p-button
|
|
7026
|
-
icon="pi pi-filter-slash"
|
|
7027
|
-
severity="secondary"
|
|
7028
|
-
tooltipPosition="bottom"
|
|
7029
|
-
[outlined]="true"
|
|
7030
|
-
[pTooltip]="'db-migration.actions.cleanFilter' | translate"
|
|
7031
|
-
(click)="dt.clear()" />
|
|
7032
|
-
</div>
|
|
7033
|
-
<div>
|
|
7034
|
-
<p-table #dt dataKey="name" editMode="row" size="small" [scrollable]="true" [value]="data">
|
|
7035
|
-
<ng-template let-columns pTemplate="header">
|
|
7036
|
-
<tr>
|
|
7037
|
-
<th pSortableColumn="name" scope="col">
|
|
7038
|
-
{{ 'db-migration.columns.name' | translate }}
|
|
7039
|
-
<p-columnFilter display="menu" field="name" type="text" />
|
|
7040
|
-
</th>
|
|
7041
|
-
<th scope="col">{{ 'db-migration.columns.applied' | translate }}</th>
|
|
7042
|
-
<th scope="col">{{ 'db-migration.columns.exist' | translate }}</th>
|
|
7043
|
-
<th scope="col">{{ 'db-migration.columns.pending' | translate }}</th>
|
|
7044
|
-
<th scope="col"></th>
|
|
7045
|
-
</tr>
|
|
7046
|
-
</ng-template>
|
|
7101
|
+
<p-confirmDialog />
|
|
7102
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
7103
|
+
<div class="card w-full">
|
|
7104
|
+
<div class="mb-4">
|
|
7105
|
+
<p-toolbar>
|
|
7106
|
+
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
7107
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
7108
|
+
<i class="pi pi-database"></i>
|
|
7109
|
+
{{ 'db-migration.migrationManager' | translate }}
|
|
7110
|
+
</div>
|
|
7047
7111
|
|
|
7048
|
-
|
|
7049
|
-
<
|
|
7050
|
-
<
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
|
|
7069
|
-
|
|
7070
|
-
|
|
7071
|
-
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
|
|
7078
|
-
</p-button>
|
|
7079
|
-
</td>
|
|
7080
|
-
</tr>
|
|
7081
|
-
</ng-template>
|
|
7082
|
-
</p-table>
|
|
7112
|
+
<div class="flex-1"></div>
|
|
7113
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
7114
|
+
<p-button
|
|
7115
|
+
icon="pi pi-refresh"
|
|
7116
|
+
rounded="true"
|
|
7117
|
+
severity="secondary"
|
|
7118
|
+
text="true"
|
|
7119
|
+
tooltipPosition="bottom"
|
|
7120
|
+
[loading]="loading"
|
|
7121
|
+
[pTooltip]="'db-migration.actions.refresh' | translate"
|
|
7122
|
+
(onClick)="refreshAction()"></p-button>
|
|
7123
|
+
<input
|
|
7124
|
+
class="w-full md:w-96"
|
|
7125
|
+
pInputText
|
|
7126
|
+
type="text"
|
|
7127
|
+
[placeholder]="'db-migration.filterPlaceholder' | translate"
|
|
7128
|
+
[(ngModel)]="globalFilter"
|
|
7129
|
+
(ngModelChange)="dt.filterGlobal($event, 'contains')" />
|
|
7130
|
+
<p-button
|
|
7131
|
+
icon="pi pi-filter-slash"
|
|
7132
|
+
rounded="true"
|
|
7133
|
+
severity="secondary"
|
|
7134
|
+
text="true"
|
|
7135
|
+
tooltipPosition="bottom"
|
|
7136
|
+
[disabled]="!hasActiveFilters"
|
|
7137
|
+
[pTooltip]="'db-migration.actions.cleanFilter' | translate"
|
|
7138
|
+
(onClick)="clearFilter()"></p-button>
|
|
7139
|
+
</div>
|
|
7140
|
+
</div>
|
|
7141
|
+
</p-toolbar>
|
|
7083
7142
|
</div>
|
|
7143
|
+
<p-table
|
|
7144
|
+
#dt
|
|
7145
|
+
class="mt-4"
|
|
7146
|
+
dataKey="name"
|
|
7147
|
+
sortField="name"
|
|
7148
|
+
[sortOrder]="1"
|
|
7149
|
+
[paginator]="true"
|
|
7150
|
+
[rows]="50"
|
|
7151
|
+
[globalFilterFields]="['name']"
|
|
7152
|
+
[value]="data"
|
|
7153
|
+
[loading]="loading">
|
|
7154
|
+
<ng-template pTemplate="header">
|
|
7155
|
+
<tr>
|
|
7156
|
+
<th pSortableColumn="name" scope="col">
|
|
7157
|
+
{{ 'db-migration.columns.name' | translate }}
|
|
7158
|
+
<p-sortIcon field="name"></p-sortIcon>
|
|
7159
|
+
<p-columnFilter display="menu" field="name" type="text" />
|
|
7160
|
+
</th>
|
|
7161
|
+
<th pSortableColumn="applied" scope="col">
|
|
7162
|
+
{{ 'db-migration.columns.applied' | translate }}
|
|
7163
|
+
<p-sortIcon field="applied"></p-sortIcon>
|
|
7164
|
+
</th>
|
|
7165
|
+
<th pSortableColumn="exist" scope="col">
|
|
7166
|
+
{{ 'db-migration.columns.exist' | translate }}
|
|
7167
|
+
<p-sortIcon field="exist"></p-sortIcon>
|
|
7168
|
+
</th>
|
|
7169
|
+
<th pSortableColumn="pending" scope="col">
|
|
7170
|
+
{{ 'db-migration.columns.pending' | translate }}
|
|
7171
|
+
<p-sortIcon field="pending"></p-sortIcon>
|
|
7172
|
+
</th>
|
|
7173
|
+
<th style="width: 4rem" scope="col"></th>
|
|
7174
|
+
</tr>
|
|
7175
|
+
</ng-template>
|
|
7176
|
+
<ng-template let-migration pTemplate="body">
|
|
7177
|
+
<tr>
|
|
7178
|
+
<td>{{ migration.name }}</td>
|
|
7179
|
+
<td>
|
|
7180
|
+
<p-tag
|
|
7181
|
+
[severity]="migration.applied ? 'success' : 'secondary'"
|
|
7182
|
+
[value]="(migration.applied ? 'db-migration.yes' : 'db-migration.no') | translate"></p-tag>
|
|
7183
|
+
</td>
|
|
7184
|
+
<td>
|
|
7185
|
+
<p-tag
|
|
7186
|
+
[severity]="migration.exist ? 'success' : 'secondary'"
|
|
7187
|
+
[value]="(migration.exist ? 'db-migration.yes' : 'db-migration.no') | translate"></p-tag>
|
|
7188
|
+
</td>
|
|
7189
|
+
<td>
|
|
7190
|
+
<p-tag
|
|
7191
|
+
[severity]="migration.pending ? 'warn' : 'secondary'"
|
|
7192
|
+
[value]="(migration.pending ? 'db-migration.yes' : 'db-migration.no') | translate"></p-tag>
|
|
7193
|
+
</td>
|
|
7194
|
+
<td>
|
|
7195
|
+
<p-button
|
|
7196
|
+
icon="pi pi-bolt"
|
|
7197
|
+
rounded="true"
|
|
7198
|
+
severity="secondary"
|
|
7199
|
+
text="true"
|
|
7200
|
+
tooltipPosition="left"
|
|
7201
|
+
[pTooltip]="'db-migration.actions.applyMigration' | translate"
|
|
7202
|
+
(onClick)="applyMigration(migration)"></p-button>
|
|
7203
|
+
</td>
|
|
7204
|
+
</tr>
|
|
7205
|
+
</ng-template>
|
|
7206
|
+
<ng-template pTemplate="emptymessage">
|
|
7207
|
+
<tr>
|
|
7208
|
+
<td colspan="5">{{ 'db-migration.empty' | translate }}</td>
|
|
7209
|
+
</tr>
|
|
7210
|
+
</ng-template>
|
|
7211
|
+
</p-table>
|
|
7084
7212
|
</div>
|
|
7085
7213
|
</div>
|
|
7086
7214
|
} @else if (isSecurity) {
|
|
@@ -7089,7 +7217,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7089
7217
|
`,
|
|
7090
7218
|
providers: [ConfirmationService]
|
|
7091
7219
|
}]
|
|
7092
|
-
}]
|
|
7220
|
+
}], propDecorators: { dt: [{
|
|
7221
|
+
type: ViewChild,
|
|
7222
|
+
args: ['dt']
|
|
7223
|
+
}] } });
|
|
7093
7224
|
|
|
7094
7225
|
var dbMigration_component = /*#__PURE__*/Object.freeze({
|
|
7095
7226
|
__proto__: null,
|
|
@@ -7192,7 +7323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7192
7323
|
type: Injectable
|
|
7193
7324
|
}] });
|
|
7194
7325
|
|
|
7195
|
-
var en$
|
|
7326
|
+
var en$5 = {
|
|
7196
7327
|
"app-modules": {
|
|
7197
7328
|
title: "Modules",
|
|
7198
7329
|
refreshTooltip: "Refresh",
|
|
@@ -7206,7 +7337,8 @@ var en$4 = {
|
|
|
7206
7337
|
currentlyLoaded: "Currently Loaded",
|
|
7207
7338
|
yes: "Yes",
|
|
7208
7339
|
no: "No",
|
|
7209
|
-
deleteTooltip: "Delete"
|
|
7340
|
+
deleteTooltip: "Delete",
|
|
7341
|
+
empty: "No modules"
|
|
7210
7342
|
},
|
|
7211
7343
|
confirm: {
|
|
7212
7344
|
header: "Warning",
|
|
@@ -7218,12 +7350,15 @@ var en$4 = {
|
|
|
7218
7350
|
deleteSuccess: "Module deleted",
|
|
7219
7351
|
deleteError: "Module delete failed",
|
|
7220
7352
|
registerError: "External module registration failed",
|
|
7221
|
-
registerSuccess: "External module registered"
|
|
7222
|
-
|
|
7353
|
+
registerSuccess: "External module registered",
|
|
7354
|
+
loadError: "Failed to load modules"
|
|
7355
|
+
},
|
|
7356
|
+
filterPlaceholder: "Filter by ID or name",
|
|
7357
|
+
clearFilterTooltip: "Clear filter"
|
|
7223
7358
|
}
|
|
7224
7359
|
};
|
|
7225
7360
|
|
|
7226
|
-
var ru$
|
|
7361
|
+
var ru$5 = {
|
|
7227
7362
|
"app-modules": {
|
|
7228
7363
|
title: "Модули",
|
|
7229
7364
|
refreshTooltip: "Обновить",
|
|
@@ -7237,7 +7372,8 @@ var ru$4 = {
|
|
|
7237
7372
|
currentlyLoaded: "Загружен",
|
|
7238
7373
|
yes: "Да",
|
|
7239
7374
|
no: "Нет",
|
|
7240
|
-
deleteTooltip: "Удалить"
|
|
7375
|
+
deleteTooltip: "Удалить",
|
|
7376
|
+
empty: "Нет модулей"
|
|
7241
7377
|
},
|
|
7242
7378
|
confirm: {
|
|
7243
7379
|
header: "Внимание",
|
|
@@ -7249,15 +7385,20 @@ var ru$4 = {
|
|
|
7249
7385
|
deleteSuccess: "Модуль удален",
|
|
7250
7386
|
deleteError: "Не удалось удалить модуль",
|
|
7251
7387
|
registerError: "Не удалось зарегистрировать внешний модуль",
|
|
7252
|
-
registerSuccess: "Внешний модуль зарегистрирован"
|
|
7253
|
-
|
|
7388
|
+
registerSuccess: "Внешний модуль зарегистрирован",
|
|
7389
|
+
loadError: "Не удалось загрузить модули"
|
|
7390
|
+
},
|
|
7391
|
+
filterPlaceholder: "Фильтр по ID или имени",
|
|
7392
|
+
clearFilterTooltip: "Сбросить фильтр"
|
|
7254
7393
|
}
|
|
7255
7394
|
};
|
|
7256
7395
|
|
|
7257
|
-
L10nService.registerTranslations({ en: en$
|
|
7396
|
+
L10nService.registerTranslations({ en: en$5, ru: ru$5 });
|
|
7258
7397
|
class AppModulesComponent {
|
|
7259
7398
|
constructor() {
|
|
7260
7399
|
this.modules = [];
|
|
7400
|
+
this.moduleFilter = '';
|
|
7401
|
+
this.loading = false;
|
|
7261
7402
|
this.msgService = inject(MsgService);
|
|
7262
7403
|
this.confirmationService = inject(ConfirmationService);
|
|
7263
7404
|
this.l10nService = inject(L10nService);
|
|
@@ -7273,8 +7414,24 @@ class AppModulesComponent {
|
|
|
7273
7414
|
this.titleService.setTitle(this.t('app-modules.title'));
|
|
7274
7415
|
await this.refreshAction();
|
|
7275
7416
|
}
|
|
7417
|
+
get filteredModules() {
|
|
7418
|
+
const filter = this.moduleFilter.trim().toLowerCase();
|
|
7419
|
+
if (!filter) {
|
|
7420
|
+
return this.modules;
|
|
7421
|
+
}
|
|
7422
|
+
return this.modules.filter((module) => [module.moduleId, module.name].some((value) => value?.toString().toLowerCase().includes(filter)));
|
|
7423
|
+
}
|
|
7276
7424
|
async refreshAction() {
|
|
7277
|
-
this.
|
|
7425
|
+
this.loading = true;
|
|
7426
|
+
try {
|
|
7427
|
+
this.modules = await this.moduleService.getModulesWithLoadStatus();
|
|
7428
|
+
}
|
|
7429
|
+
catch (error) {
|
|
7430
|
+
this.msgService.errorFromException(error, this.t('app-modules.messages.loadError'), this.t('app-modules.messages.loadError'));
|
|
7431
|
+
}
|
|
7432
|
+
finally {
|
|
7433
|
+
this.loading = false;
|
|
7434
|
+
}
|
|
7278
7435
|
}
|
|
7279
7436
|
get canRegisterExternalModule() {
|
|
7280
7437
|
return !!this.externalModuleManifestUrl.trim() && !this.registeringExternalModule;
|
|
@@ -7337,46 +7494,91 @@ class AppModulesComponent {
|
|
|
7337
7494
|
<p-confirmDialog></p-confirmDialog>
|
|
7338
7495
|
<div class="flex flex-col md:flex-row gap-4">
|
|
7339
7496
|
<div class="card w-full">
|
|
7340
|
-
<div class="font-semibold text-xl mb-4">
|
|
7341
|
-
{{ 'app-modules.title' | translate }}
|
|
7342
|
-
</div>
|
|
7343
7497
|
<div class="mb-4">
|
|
7344
7498
|
<p-toolbar>
|
|
7345
7499
|
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
7346
|
-
<div class="
|
|
7500
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
7501
|
+
<i class="pi pi-box"></i>
|
|
7502
|
+
{{ 'app-modules.title' | translate }}
|
|
7503
|
+
</div>
|
|
7504
|
+
|
|
7505
|
+
<div class="flex items-center gap-1 flex-1">
|
|
7347
7506
|
<input
|
|
7348
7507
|
class="w-full"
|
|
7349
7508
|
pInputText
|
|
7350
7509
|
type="url"
|
|
7510
|
+
id="oip-app-modules-manifest-url"
|
|
7351
7511
|
[disabled]="registeringExternalModule"
|
|
7352
7512
|
[placeholder]="'app-modules.register.manifestUrlPlaceholder' | translate"
|
|
7353
7513
|
[(ngModel)]="externalModuleManifestUrl"
|
|
7354
7514
|
(keydown.enter)="registerExternalModule()" />
|
|
7355
7515
|
<p-button
|
|
7356
7516
|
icon="pi pi-plus"
|
|
7517
|
+
rounded="true"
|
|
7357
7518
|
severity="success"
|
|
7519
|
+
text="true"
|
|
7520
|
+
tooltipPosition="bottom"
|
|
7521
|
+
id="oip-app-modules-register"
|
|
7358
7522
|
[disabled]="!canRegisterExternalModule"
|
|
7359
|
-
[
|
|
7523
|
+
[pTooltip]="'app-modules.register.button' | translate"
|
|
7360
7524
|
[loading]="registeringExternalModule"
|
|
7361
7525
|
(onClick)="registerExternalModule()"></p-button>
|
|
7362
7526
|
</div>
|
|
7363
|
-
|
|
7364
|
-
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
|
|
7369
|
-
|
|
7370
|
-
|
|
7527
|
+
|
|
7528
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
7529
|
+
<p-button
|
|
7530
|
+
icon="pi pi-refresh"
|
|
7531
|
+
rounded="true"
|
|
7532
|
+
severity="secondary"
|
|
7533
|
+
text="true"
|
|
7534
|
+
tooltipPosition="bottom"
|
|
7535
|
+
[loading]="loading"
|
|
7536
|
+
[pTooltip]="'app-modules.refreshTooltip' | translate"
|
|
7537
|
+
(onClick)="refreshAction()"></p-button>
|
|
7538
|
+
<input
|
|
7539
|
+
class="w-full md:w-96"
|
|
7540
|
+
pInputText
|
|
7541
|
+
type="text"
|
|
7542
|
+
id="oip-app-modules-filter"
|
|
7543
|
+
[placeholder]="'app-modules.filterPlaceholder' | translate"
|
|
7544
|
+
[(ngModel)]="moduleFilter" />
|
|
7545
|
+
<p-button
|
|
7546
|
+
icon="pi pi-filter-slash"
|
|
7547
|
+
rounded="true"
|
|
7548
|
+
severity="secondary"
|
|
7549
|
+
text="true"
|
|
7550
|
+
tooltipPosition="bottom"
|
|
7551
|
+
id="oip-app-modules-clear-filter"
|
|
7552
|
+
[disabled]="!moduleFilter"
|
|
7553
|
+
[pTooltip]="'app-modules.clearFilterTooltip' | translate"
|
|
7554
|
+
(onClick)="moduleFilter = ''"></p-button>
|
|
7555
|
+
</div>
|
|
7371
7556
|
</div>
|
|
7372
7557
|
</p-toolbar>
|
|
7373
7558
|
</div>
|
|
7374
|
-
<p-table
|
|
7559
|
+
<p-table
|
|
7560
|
+
class="mt-4"
|
|
7561
|
+
dataKey="moduleId"
|
|
7562
|
+
sortField="name"
|
|
7563
|
+
[sortOrder]="1"
|
|
7564
|
+
[paginator]="true"
|
|
7565
|
+
[rows]="100"
|
|
7566
|
+
[value]="filteredModules"
|
|
7567
|
+
[loading]="loading">
|
|
7375
7568
|
<ng-template pTemplate="header">
|
|
7376
7569
|
<tr>
|
|
7377
|
-
<th
|
|
7378
|
-
|
|
7379
|
-
|
|
7570
|
+
<th pSortableColumn="moduleId">
|
|
7571
|
+
{{ 'app-modules.table.moduleId' | translate }}
|
|
7572
|
+
<p-sortIcon field="moduleId"></p-sortIcon>
|
|
7573
|
+
</th>
|
|
7574
|
+
<th pSortableColumn="name">
|
|
7575
|
+
{{ 'app-modules.table.name' | translate }}
|
|
7576
|
+
<p-sortIcon field="name"></p-sortIcon>
|
|
7577
|
+
</th>
|
|
7578
|
+
<th pSortableColumn="currentlyLoaded">
|
|
7579
|
+
{{ 'app-modules.table.currentlyLoaded' | translate }}
|
|
7580
|
+
<p-sortIcon field="currentlyLoaded"></p-sortIcon>
|
|
7581
|
+
</th>
|
|
7380
7582
|
<th style="width: 4rem"></th>
|
|
7381
7583
|
</tr>
|
|
7382
7584
|
</ng-template>
|
|
@@ -7403,10 +7605,15 @@ class AppModulesComponent {
|
|
|
7403
7605
|
</td>
|
|
7404
7606
|
</tr>
|
|
7405
7607
|
</ng-template>
|
|
7608
|
+
<ng-template pTemplate="emptymessage">
|
|
7609
|
+
<tr>
|
|
7610
|
+
<td colspan="4">{{ 'app-modules.table.empty' | translate }}</td>
|
|
7611
|
+
</tr>
|
|
7612
|
+
</ng-template>
|
|
7406
7613
|
</p-table>
|
|
7407
7614
|
</div>
|
|
7408
7615
|
</div>
|
|
7409
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type:
|
|
7616
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i2$4.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2$4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2$4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
7410
7617
|
}
|
|
7411
7618
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppModulesComponent, decorators: [{
|
|
7412
7619
|
type: Component,
|
|
@@ -7428,48 +7635,93 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7428
7635
|
<p-confirmDialog></p-confirmDialog>
|
|
7429
7636
|
<div class="flex flex-col md:flex-row gap-4">
|
|
7430
7637
|
<div class="card w-full">
|
|
7431
|
-
<div class="font-semibold text-xl mb-4">
|
|
7432
|
-
{{ 'app-modules.title' | translate }}
|
|
7433
|
-
</div>
|
|
7434
7638
|
<div class="mb-4">
|
|
7435
7639
|
<p-toolbar>
|
|
7436
7640
|
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
7437
|
-
<div class="
|
|
7641
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
7642
|
+
<i class="pi pi-box"></i>
|
|
7643
|
+
{{ 'app-modules.title' | translate }}
|
|
7644
|
+
</div>
|
|
7645
|
+
|
|
7646
|
+
<div class="flex items-center gap-1 flex-1">
|
|
7438
7647
|
<input
|
|
7439
7648
|
class="w-full"
|
|
7440
7649
|
pInputText
|
|
7441
7650
|
type="url"
|
|
7651
|
+
id="oip-app-modules-manifest-url"
|
|
7442
7652
|
[disabled]="registeringExternalModule"
|
|
7443
7653
|
[placeholder]="'app-modules.register.manifestUrlPlaceholder' | translate"
|
|
7444
7654
|
[(ngModel)]="externalModuleManifestUrl"
|
|
7445
7655
|
(keydown.enter)="registerExternalModule()" />
|
|
7446
7656
|
<p-button
|
|
7447
7657
|
icon="pi pi-plus"
|
|
7658
|
+
rounded="true"
|
|
7448
7659
|
severity="success"
|
|
7660
|
+
text="true"
|
|
7661
|
+
tooltipPosition="bottom"
|
|
7662
|
+
id="oip-app-modules-register"
|
|
7449
7663
|
[disabled]="!canRegisterExternalModule"
|
|
7450
|
-
[
|
|
7664
|
+
[pTooltip]="'app-modules.register.button' | translate"
|
|
7451
7665
|
[loading]="registeringExternalModule"
|
|
7452
7666
|
(onClick)="registerExternalModule()"></p-button>
|
|
7453
7667
|
</div>
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7668
|
+
|
|
7669
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
7670
|
+
<p-button
|
|
7671
|
+
icon="pi pi-refresh"
|
|
7672
|
+
rounded="true"
|
|
7673
|
+
severity="secondary"
|
|
7674
|
+
text="true"
|
|
7675
|
+
tooltipPosition="bottom"
|
|
7676
|
+
[loading]="loading"
|
|
7677
|
+
[pTooltip]="'app-modules.refreshTooltip' | translate"
|
|
7678
|
+
(onClick)="refreshAction()"></p-button>
|
|
7679
|
+
<input
|
|
7680
|
+
class="w-full md:w-96"
|
|
7681
|
+
pInputText
|
|
7682
|
+
type="text"
|
|
7683
|
+
id="oip-app-modules-filter"
|
|
7684
|
+
[placeholder]="'app-modules.filterPlaceholder' | translate"
|
|
7685
|
+
[(ngModel)]="moduleFilter" />
|
|
7686
|
+
<p-button
|
|
7687
|
+
icon="pi pi-filter-slash"
|
|
7688
|
+
rounded="true"
|
|
7689
|
+
severity="secondary"
|
|
7690
|
+
text="true"
|
|
7691
|
+
tooltipPosition="bottom"
|
|
7692
|
+
id="oip-app-modules-clear-filter"
|
|
7693
|
+
[disabled]="!moduleFilter"
|
|
7694
|
+
[pTooltip]="'app-modules.clearFilterTooltip' | translate"
|
|
7695
|
+
(onClick)="moduleFilter = ''"></p-button>
|
|
7696
|
+
</div>
|
|
7462
7697
|
</div>
|
|
7463
7698
|
</p-toolbar>
|
|
7464
7699
|
</div>
|
|
7465
|
-
<p-table
|
|
7700
|
+
<p-table
|
|
7701
|
+
class="mt-4"
|
|
7702
|
+
dataKey="moduleId"
|
|
7703
|
+
sortField="name"
|
|
7704
|
+
[sortOrder]="1"
|
|
7705
|
+
[paginator]="true"
|
|
7706
|
+
[rows]="100"
|
|
7707
|
+
[value]="filteredModules"
|
|
7708
|
+
[loading]="loading">
|
|
7466
7709
|
<ng-template pTemplate="header">
|
|
7467
7710
|
<tr>
|
|
7468
|
-
<th
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7711
|
+
<th pSortableColumn="moduleId">
|
|
7712
|
+
{{ 'app-modules.table.moduleId' | translate }}
|
|
7713
|
+
<p-sortIcon field="moduleId"></p-sortIcon>
|
|
7714
|
+
</th>
|
|
7715
|
+
<th pSortableColumn="name">
|
|
7716
|
+
{{ 'app-modules.table.name' | translate }}
|
|
7717
|
+
<p-sortIcon field="name"></p-sortIcon>
|
|
7718
|
+
</th>
|
|
7719
|
+
<th pSortableColumn="currentlyLoaded">
|
|
7720
|
+
{{ 'app-modules.table.currentlyLoaded' | translate }}
|
|
7721
|
+
<p-sortIcon field="currentlyLoaded"></p-sortIcon>
|
|
7722
|
+
</th>
|
|
7723
|
+
<th style="width: 4rem"></th>
|
|
7724
|
+
</tr>
|
|
7473
7725
|
</ng-template>
|
|
7474
7726
|
<ng-template let-module pTemplate="body">
|
|
7475
7727
|
<tr>
|
|
@@ -7494,6 +7746,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7494
7746
|
</td>
|
|
7495
7747
|
</tr>
|
|
7496
7748
|
</ng-template>
|
|
7749
|
+
<ng-template pTemplate="emptymessage">
|
|
7750
|
+
<tr>
|
|
7751
|
+
<td colspan="4">{{ 'app-modules.table.empty' | translate }}</td>
|
|
7752
|
+
</tr>
|
|
7753
|
+
</ng-template>
|
|
7497
7754
|
</p-table>
|
|
7498
7755
|
</div>
|
|
7499
7756
|
</div>
|
|
@@ -7506,6 +7763,580 @@ var appModules_component = /*#__PURE__*/Object.freeze({
|
|
|
7506
7763
|
AppModulesComponent: AppModulesComponent
|
|
7507
7764
|
});
|
|
7508
7765
|
|
|
7766
|
+
/* eslint-disable */
|
|
7767
|
+
/* tslint:disable */
|
|
7768
|
+
// @ts-nocheck
|
|
7769
|
+
class AuthSessionsApi extends HttpClient {
|
|
7770
|
+
constructor() {
|
|
7771
|
+
super(...arguments);
|
|
7772
|
+
this.getAuthSessions = (query, params = {}) => this.request({
|
|
7773
|
+
path: `/api/auth-sessions/get-auth-sessions`,
|
|
7774
|
+
method: "GET",
|
|
7775
|
+
query: query,
|
|
7776
|
+
secure: true,
|
|
7777
|
+
format: "json",
|
|
7778
|
+
...params,
|
|
7779
|
+
});
|
|
7780
|
+
this.deleteAuthSession = ({ sessionId, ...query }, params = {}) => this.request({
|
|
7781
|
+
path: `/api/auth-sessions/delete-auth-session/${sessionId}`,
|
|
7782
|
+
method: "DELETE",
|
|
7783
|
+
secure: true,
|
|
7784
|
+
...params,
|
|
7785
|
+
});
|
|
7786
|
+
this.deleteAuthSessionsByUser = ({ userId, ...query }, params = {}) => this.request({
|
|
7787
|
+
path: `/api/auth-sessions/delete-auth-sessions-by-user/${userId}`,
|
|
7788
|
+
method: "DELETE",
|
|
7789
|
+
secure: true,
|
|
7790
|
+
format: "json",
|
|
7791
|
+
...params,
|
|
7792
|
+
});
|
|
7793
|
+
this.deleteAllAuthSessions = (params = {}) => this.request({
|
|
7794
|
+
path: `/api/auth-sessions/delete-all-auth-sessions`,
|
|
7795
|
+
method: "DELETE",
|
|
7796
|
+
secure: true,
|
|
7797
|
+
format: "json",
|
|
7798
|
+
...params,
|
|
7799
|
+
});
|
|
7800
|
+
}
|
|
7801
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthSessionsApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7802
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthSessionsApi }); }
|
|
7803
|
+
}
|
|
7804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthSessionsApi, decorators: [{
|
|
7805
|
+
type: Injectable
|
|
7806
|
+
}] });
|
|
7807
|
+
|
|
7808
|
+
var en$4 = {
|
|
7809
|
+
"auth-sessions": {
|
|
7810
|
+
title: "Active sessions",
|
|
7811
|
+
refreshTooltip: "Refresh",
|
|
7812
|
+
filterPlaceholder: "Filter by user, email or IP address",
|
|
7813
|
+
table: {
|
|
7814
|
+
user: "User",
|
|
7815
|
+
created: "Signed in",
|
|
7816
|
+
lastActivity: "Last activity",
|
|
7817
|
+
expires: "Expires",
|
|
7818
|
+
ipAddress: "IP address",
|
|
7819
|
+
userAgent: "Browser",
|
|
7820
|
+
current: "Current",
|
|
7821
|
+
terminateTooltip: "Terminate session",
|
|
7822
|
+
terminateAllTooltip: "Terminate all user sessions",
|
|
7823
|
+
empty: "No active sessions"
|
|
7824
|
+
},
|
|
7825
|
+
confirm: {
|
|
7826
|
+
header: "Warning",
|
|
7827
|
+
terminateMessage: "Terminate the session of {{user}}?",
|
|
7828
|
+
terminateAllMessage: "Terminate all sessions of {{user}}?",
|
|
7829
|
+
cancel: "Cancel",
|
|
7830
|
+
terminate: "Terminate",
|
|
7831
|
+
terminateEveryoneMessage: "Terminate all sessions except the current one?"
|
|
7832
|
+
},
|
|
7833
|
+
messages: {
|
|
7834
|
+
loadError: "Failed to load sessions",
|
|
7835
|
+
terminateSuccess: "Session terminated",
|
|
7836
|
+
terminateAllSuccess: "Sessions terminated: {{count}}",
|
|
7837
|
+
terminateError: "Session termination failed"
|
|
7838
|
+
},
|
|
7839
|
+
terminateAllTooltip: "Terminate all except current",
|
|
7840
|
+
clearFilterTooltip: "Clear filter"
|
|
7841
|
+
}
|
|
7842
|
+
};
|
|
7843
|
+
|
|
7844
|
+
var ru$4 = {
|
|
7845
|
+
"auth-sessions": {
|
|
7846
|
+
title: "Активные сессии",
|
|
7847
|
+
refreshTooltip: "Обновить",
|
|
7848
|
+
filterPlaceholder: "Фильтр по пользователю, email или IP-адресу",
|
|
7849
|
+
table: {
|
|
7850
|
+
user: "Пользователь",
|
|
7851
|
+
created: "Вход",
|
|
7852
|
+
lastActivity: "Последняя активность",
|
|
7853
|
+
expires: "Истекает",
|
|
7854
|
+
ipAddress: "IP-адрес",
|
|
7855
|
+
userAgent: "Браузер",
|
|
7856
|
+
current: "Текущая",
|
|
7857
|
+
terminateTooltip: "Завершить сессию",
|
|
7858
|
+
terminateAllTooltip: "Завершить все сессии пользователя",
|
|
7859
|
+
empty: "Активных сессий нет"
|
|
7860
|
+
},
|
|
7861
|
+
confirm: {
|
|
7862
|
+
header: "Внимание",
|
|
7863
|
+
terminateMessage: "Завершить сессию пользователя {{user}}?",
|
|
7864
|
+
terminateAllMessage: "Завершить все сессии пользователя {{user}}?",
|
|
7865
|
+
cancel: "Отмена",
|
|
7866
|
+
terminate: "Завершить",
|
|
7867
|
+
terminateEveryoneMessage: "Завершить все сессии, кроме текущей?"
|
|
7868
|
+
},
|
|
7869
|
+
messages: {
|
|
7870
|
+
loadError: "Не удалось загрузить сессии",
|
|
7871
|
+
terminateSuccess: "Сессия завершена",
|
|
7872
|
+
terminateAllSuccess: "Завершено сессий: {{count}}",
|
|
7873
|
+
terminateError: "Не удалось завершить сессию"
|
|
7874
|
+
},
|
|
7875
|
+
terminateAllTooltip: "Завершить все, кроме текущей",
|
|
7876
|
+
clearFilterTooltip: "Очистить фильтр"
|
|
7877
|
+
}
|
|
7878
|
+
};
|
|
7879
|
+
|
|
7880
|
+
L10nService.registerTranslations({ en: en$4, ru: ru$4 });
|
|
7881
|
+
/**
|
|
7882
|
+
* Administrator page listing active authentication sessions with the ability to terminate them.
|
|
7883
|
+
*/
|
|
7884
|
+
class AuthSessionsComponent {
|
|
7885
|
+
constructor() {
|
|
7886
|
+
this.sessions = [];
|
|
7887
|
+
this.userFilter = '';
|
|
7888
|
+
this.loading = false;
|
|
7889
|
+
this.msgService = inject(MsgService);
|
|
7890
|
+
this.confirmationService = inject(ConfirmationService);
|
|
7891
|
+
this.l10nService = inject(L10nService);
|
|
7892
|
+
this.titleService = inject(AppTitleService);
|
|
7893
|
+
this.layoutService = inject(LayoutService);
|
|
7894
|
+
this.authSessionsApi = inject(AuthSessionsApi);
|
|
7895
|
+
this.translationsReady = firstValueFrom(this.l10nService.loadComponentTranslations('auth-sessions'));
|
|
7896
|
+
}
|
|
7897
|
+
async ngOnInit() {
|
|
7898
|
+
await this.translationsReady;
|
|
7899
|
+
this.titleService.setTitle(this.t('auth-sessions.title'));
|
|
7900
|
+
await this.refreshAction();
|
|
7901
|
+
}
|
|
7902
|
+
get filteredSessions() {
|
|
7903
|
+
const filter = this.userFilter.trim().toLowerCase();
|
|
7904
|
+
if (!filter) {
|
|
7905
|
+
return this.sessions;
|
|
7906
|
+
}
|
|
7907
|
+
return this.sessions.filter((session) => [session.userName, session.displayName, session.email, session.userId, session.ipAddress].some((value) => value?.toLowerCase().includes(filter)));
|
|
7908
|
+
}
|
|
7909
|
+
async refreshAction() {
|
|
7910
|
+
this.loading = true;
|
|
7911
|
+
try {
|
|
7912
|
+
this.sessions = await this.authSessionsApi.getAuthSessions({});
|
|
7913
|
+
}
|
|
7914
|
+
catch (error) {
|
|
7915
|
+
this.msgService.errorFromException(error, this.t('auth-sessions.messages.loadError'), this.t('auth-sessions.messages.loadError'));
|
|
7916
|
+
}
|
|
7917
|
+
finally {
|
|
7918
|
+
this.loading = false;
|
|
7919
|
+
}
|
|
7920
|
+
}
|
|
7921
|
+
get hasOtherSessionsThanCurrent() {
|
|
7922
|
+
return this.sessions.some((x) => !x.isCurrent);
|
|
7923
|
+
}
|
|
7924
|
+
async terminateAllSessions() {
|
|
7925
|
+
await this.translationsReady;
|
|
7926
|
+
this.confirmationService.confirm({
|
|
7927
|
+
header: this.t('auth-sessions.confirm.header'),
|
|
7928
|
+
message: this.t('auth-sessions.confirm.terminateEveryoneMessage'),
|
|
7929
|
+
icon: 'pi pi-power-off',
|
|
7930
|
+
rejectButtonProps: {
|
|
7931
|
+
label: this.t('auth-sessions.confirm.cancel'),
|
|
7932
|
+
severity: 'secondary',
|
|
7933
|
+
outlined: true
|
|
7934
|
+
},
|
|
7935
|
+
acceptButtonProps: {
|
|
7936
|
+
label: this.t('auth-sessions.confirm.terminate'),
|
|
7937
|
+
severity: 'danger'
|
|
7938
|
+
},
|
|
7939
|
+
accept: async () => {
|
|
7940
|
+
try {
|
|
7941
|
+
const result = await this.authSessionsApi.deleteAllAuthSessions();
|
|
7942
|
+
await this.refreshAction();
|
|
7943
|
+
this.msgService.success(this.l10nService.instant('auth-sessions.messages.terminateAllSuccess', {
|
|
7944
|
+
count: result.deletedCount ?? 0
|
|
7945
|
+
}));
|
|
7946
|
+
}
|
|
7947
|
+
catch (error) {
|
|
7948
|
+
this.msgService.errorFromException(error, this.t('auth-sessions.messages.terminateError'), this.t('auth-sessions.messages.terminateError'));
|
|
7949
|
+
}
|
|
7950
|
+
}
|
|
7951
|
+
});
|
|
7952
|
+
}
|
|
7953
|
+
hasOtherSessions(session) {
|
|
7954
|
+
return this.sessions.some((x) => x.userId === session.userId && !x.isCurrent);
|
|
7955
|
+
}
|
|
7956
|
+
async terminateSession(session) {
|
|
7957
|
+
await this.translationsReady;
|
|
7958
|
+
this.confirmationService.confirm({
|
|
7959
|
+
header: this.t('auth-sessions.confirm.header'),
|
|
7960
|
+
message: this.l10nService.instant('auth-sessions.confirm.terminateMessage', {
|
|
7961
|
+
user: session.userName ?? session.userId ?? ''
|
|
7962
|
+
}),
|
|
7963
|
+
icon: 'pi pi-sign-out',
|
|
7964
|
+
rejectButtonProps: {
|
|
7965
|
+
label: this.t('auth-sessions.confirm.cancel'),
|
|
7966
|
+
severity: 'secondary',
|
|
7967
|
+
outlined: true
|
|
7968
|
+
},
|
|
7969
|
+
acceptButtonProps: {
|
|
7970
|
+
label: this.t('auth-sessions.confirm.terminate'),
|
|
7971
|
+
severity: 'danger'
|
|
7972
|
+
},
|
|
7973
|
+
accept: async () => {
|
|
7974
|
+
try {
|
|
7975
|
+
await this.authSessionsApi.deleteAuthSession({ sessionId: session.sessionId });
|
|
7976
|
+
await this.refreshAction();
|
|
7977
|
+
this.msgService.success(this.t('auth-sessions.messages.terminateSuccess'));
|
|
7978
|
+
}
|
|
7979
|
+
catch (error) {
|
|
7980
|
+
this.msgService.errorFromException(error, this.t('auth-sessions.messages.terminateError'), this.t('auth-sessions.messages.terminateError'));
|
|
7981
|
+
}
|
|
7982
|
+
}
|
|
7983
|
+
});
|
|
7984
|
+
}
|
|
7985
|
+
async terminateUserSessions(session) {
|
|
7986
|
+
await this.translationsReady;
|
|
7987
|
+
this.confirmationService.confirm({
|
|
7988
|
+
header: this.t('auth-sessions.confirm.header'),
|
|
7989
|
+
message: this.l10nService.instant('auth-sessions.confirm.terminateAllMessage', {
|
|
7990
|
+
user: session.userName ?? session.userId ?? ''
|
|
7991
|
+
}),
|
|
7992
|
+
icon: 'pi pi-user-minus',
|
|
7993
|
+
rejectButtonProps: {
|
|
7994
|
+
label: this.t('auth-sessions.confirm.cancel'),
|
|
7995
|
+
severity: 'secondary',
|
|
7996
|
+
outlined: true
|
|
7997
|
+
},
|
|
7998
|
+
acceptButtonProps: {
|
|
7999
|
+
label: this.t('auth-sessions.confirm.terminate'),
|
|
8000
|
+
severity: 'danger'
|
|
8001
|
+
},
|
|
8002
|
+
accept: async () => {
|
|
8003
|
+
try {
|
|
8004
|
+
const result = await this.authSessionsApi.deleteAuthSessionsByUser({ userId: session.userId });
|
|
8005
|
+
await this.refreshAction();
|
|
8006
|
+
this.msgService.success(this.l10nService.instant('auth-sessions.messages.terminateAllSuccess', {
|
|
8007
|
+
count: result.deletedCount ?? 0
|
|
8008
|
+
}));
|
|
8009
|
+
}
|
|
8010
|
+
catch (error) {
|
|
8011
|
+
this.msgService.errorFromException(error, this.t('auth-sessions.messages.terminateError'), this.t('auth-sessions.messages.terminateError'));
|
|
8012
|
+
}
|
|
8013
|
+
}
|
|
8014
|
+
});
|
|
8015
|
+
}
|
|
8016
|
+
t(key) {
|
|
8017
|
+
return this.l10nService.instant(key);
|
|
8018
|
+
}
|
|
8019
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthSessionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8020
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AuthSessionsComponent, isStandalone: true, selector: "app-auth-sessions", providers: [ConfirmationService, AuthSessionsApi], ngImport: i0, template: `
|
|
8021
|
+
<p-confirmDialog></p-confirmDialog>
|
|
8022
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
8023
|
+
<div class="card w-full">
|
|
8024
|
+
<div class="mb-4">
|
|
8025
|
+
<p-toolbar>
|
|
8026
|
+
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
8027
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
8028
|
+
<i class="pi pi-users"></i>
|
|
8029
|
+
{{ 'auth-sessions.title' | translate }}
|
|
8030
|
+
</div>
|
|
8031
|
+
|
|
8032
|
+
<div class="flex-1"></div>
|
|
8033
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
8034
|
+
<p-button
|
|
8035
|
+
icon="pi pi-refresh"
|
|
8036
|
+
rounded="true"
|
|
8037
|
+
severity="secondary"
|
|
8038
|
+
text="true"
|
|
8039
|
+
tooltipPosition="bottom"
|
|
8040
|
+
[loading]="loading"
|
|
8041
|
+
[pTooltip]="'auth-sessions.refreshTooltip' | translate"
|
|
8042
|
+
(onClick)="refreshAction()"></p-button>
|
|
8043
|
+
<p-button
|
|
8044
|
+
icon="pi pi-power-off"
|
|
8045
|
+
rounded="true"
|
|
8046
|
+
severity="danger"
|
|
8047
|
+
text="true"
|
|
8048
|
+
tooltipPosition="bottom"
|
|
8049
|
+
id="oip-auth-sessions-terminate-all"
|
|
8050
|
+
[disabled]="loading || !hasOtherSessionsThanCurrent"
|
|
8051
|
+
[pTooltip]="'auth-sessions.terminateAllTooltip' | translate"
|
|
8052
|
+
(onClick)="terminateAllSessions()"></p-button>
|
|
8053
|
+
<input
|
|
8054
|
+
class="w-full md:w-96"
|
|
8055
|
+
pInputText
|
|
8056
|
+
type="text"
|
|
8057
|
+
id="oip-auth-sessions-filter"
|
|
8058
|
+
[placeholder]="'auth-sessions.filterPlaceholder' | translate"
|
|
8059
|
+
[(ngModel)]="userFilter"/>
|
|
8060
|
+
<p-button
|
|
8061
|
+
icon="pi pi-filter-slash"
|
|
8062
|
+
rounded="true"
|
|
8063
|
+
severity="secondary"
|
|
8064
|
+
text="true"
|
|
8065
|
+
tooltipPosition="bottom"
|
|
8066
|
+
id="oip-auth-sessions-clear-filter"
|
|
8067
|
+
[disabled]="!userFilter"
|
|
8068
|
+
[pTooltip]="'auth-sessions.clearFilterTooltip' | translate"
|
|
8069
|
+
(onClick)="userFilter = ''"></p-button>
|
|
8070
|
+
</div>
|
|
8071
|
+
</div>
|
|
8072
|
+
</p-toolbar>
|
|
8073
|
+
</div>
|
|
8074
|
+
<p-table
|
|
8075
|
+
class="mt-4"
|
|
8076
|
+
dataKey="sessionId"
|
|
8077
|
+
[paginator]="true"
|
|
8078
|
+
[rows]="50"
|
|
8079
|
+
sortField="lastActivityUtc"
|
|
8080
|
+
[sortOrder]="-1"
|
|
8081
|
+
[value]="filteredSessions"
|
|
8082
|
+
[loading]="loading">
|
|
8083
|
+
<ng-template pTemplate="header">
|
|
8084
|
+
<tr>
|
|
8085
|
+
<th pSortableColumn="userName">
|
|
8086
|
+
{{ 'auth-sessions.table.user' | translate }}
|
|
8087
|
+
<p-sortIcon field="userName"></p-sortIcon>
|
|
8088
|
+
</th>
|
|
8089
|
+
<th pSortableColumn="createdUtc">
|
|
8090
|
+
{{ 'auth-sessions.table.created' | translate }}
|
|
8091
|
+
<p-sortIcon field="createdUtc"></p-sortIcon>
|
|
8092
|
+
</th>
|
|
8093
|
+
<th pSortableColumn="expiresUtc">
|
|
8094
|
+
{{ 'auth-sessions.table.expires' | translate }}
|
|
8095
|
+
<p-sortIcon field="expiresUtc"></p-sortIcon>
|
|
8096
|
+
</th>
|
|
8097
|
+
<th pSortableColumn="lastActivityUtc">
|
|
8098
|
+
{{ 'auth-sessions.table.lastActivity' | translate }}
|
|
8099
|
+
<p-sortIcon field="lastActivityUtc"></p-sortIcon>
|
|
8100
|
+
</th>
|
|
8101
|
+
<th pSortableColumn="ipAddress">
|
|
8102
|
+
{{ 'auth-sessions.table.ipAddress' | translate }}
|
|
8103
|
+
<p-sortIcon field="ipAddress"></p-sortIcon>
|
|
8104
|
+
</th>
|
|
8105
|
+
<th pSortableColumn="userAgent">
|
|
8106
|
+
{{ 'auth-sessions.table.userAgent' | translate }}
|
|
8107
|
+
<p-sortIcon field="userAgent"></p-sortIcon>
|
|
8108
|
+
</th>
|
|
8109
|
+
<th style="width: 7rem"></th>
|
|
8110
|
+
</tr>
|
|
8111
|
+
</ng-template>
|
|
8112
|
+
<ng-template let-session pTemplate="body">
|
|
8113
|
+
<tr>
|
|
8114
|
+
<td>
|
|
8115
|
+
<div class="flex items-center gap-2">
|
|
8116
|
+
<div class="flex flex-col">
|
|
8117
|
+
<span class="font-medium">{{ session.userName }}</span>
|
|
8118
|
+
@if (session.displayName || session.email) {
|
|
8119
|
+
<span class="text-sm text-muted-color">{{ session.displayName || session.email }}</span>
|
|
8120
|
+
}
|
|
8121
|
+
</div>
|
|
8122
|
+
@if (session.isCurrent) {
|
|
8123
|
+
<p-tag severity="info" [value]="'auth-sessions.table.current' | translate"></p-tag>
|
|
8124
|
+
}
|
|
8125
|
+
</div>
|
|
8126
|
+
</td>
|
|
8127
|
+
<td>{{ session.createdUtc | date: layoutService.dateTimeFormat() }}</td>
|
|
8128
|
+
<td>{{ session.expiresUtc | date: layoutService.dateTimeFormat() }}</td>
|
|
8129
|
+
<td>{{ session.lastActivityUtc | date: layoutService.dateTimeFormat() }}</td>
|
|
8130
|
+
<td>{{ session.ipAddress }}</td>
|
|
8131
|
+
<td class="max-w-80 truncate" [pTooltip]="session.userAgent" tooltipPosition="top">
|
|
8132
|
+
{{ session.userAgent }}
|
|
8133
|
+
</td>
|
|
8134
|
+
<td>
|
|
8135
|
+
<div class="flex gap-1">
|
|
8136
|
+
<p-button
|
|
8137
|
+
icon="pi pi-sign-out"
|
|
8138
|
+
rounded="true"
|
|
8139
|
+
severity="danger"
|
|
8140
|
+
text="true"
|
|
8141
|
+
tooltipPosition="bottom"
|
|
8142
|
+
[disabled]="session.isCurrent"
|
|
8143
|
+
[pTooltip]="'auth-sessions.table.terminateTooltip' | translate"
|
|
8144
|
+
(onClick)="terminateSession(session)"></p-button>
|
|
8145
|
+
<p-button
|
|
8146
|
+
icon="pi pi-user-minus"
|
|
8147
|
+
rounded="true"
|
|
8148
|
+
severity="danger"
|
|
8149
|
+
text="true"
|
|
8150
|
+
tooltipPosition="bottom"
|
|
8151
|
+
[disabled]="!session.userId || !hasOtherSessions(session)"
|
|
8152
|
+
[pTooltip]="'auth-sessions.table.terminateAllTooltip' | translate"
|
|
8153
|
+
(onClick)="terminateUserSessions(session)"></p-button>
|
|
8154
|
+
</div>
|
|
8155
|
+
</td>
|
|
8156
|
+
</tr>
|
|
8157
|
+
</ng-template>
|
|
8158
|
+
<ng-template pTemplate="emptymessage">
|
|
8159
|
+
<tr>
|
|
8160
|
+
<td colspan="7">{{ 'auth-sessions.table.empty' | translate }}</td>
|
|
8161
|
+
</tr>
|
|
8162
|
+
</ng-template>
|
|
8163
|
+
</p-table>
|
|
8164
|
+
</div>
|
|
8165
|
+
</div>
|
|
8166
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i2$4.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2$4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2$4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }] }); }
|
|
8167
|
+
}
|
|
8168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthSessionsComponent, decorators: [{
|
|
8169
|
+
type: Component,
|
|
8170
|
+
args: [{
|
|
8171
|
+
imports: [
|
|
8172
|
+
FormsModule,
|
|
8173
|
+
TableModule,
|
|
8174
|
+
Tag,
|
|
8175
|
+
ButtonModule,
|
|
8176
|
+
ToolbarModule,
|
|
8177
|
+
Tooltip,
|
|
8178
|
+
ConfirmDialog,
|
|
8179
|
+
TranslatePipe,
|
|
8180
|
+
InputTextModule,
|
|
8181
|
+
DatePipe
|
|
8182
|
+
],
|
|
8183
|
+
providers: [ConfirmationService, AuthSessionsApi],
|
|
8184
|
+
selector: 'app-auth-sessions',
|
|
8185
|
+
template: `
|
|
8186
|
+
<p-confirmDialog></p-confirmDialog>
|
|
8187
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
8188
|
+
<div class="card w-full">
|
|
8189
|
+
<div class="mb-4">
|
|
8190
|
+
<p-toolbar>
|
|
8191
|
+
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
8192
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
8193
|
+
<i class="pi pi-users"></i>
|
|
8194
|
+
{{ 'auth-sessions.title' | translate }}
|
|
8195
|
+
</div>
|
|
8196
|
+
|
|
8197
|
+
<div class="flex-1"></div>
|
|
8198
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
8199
|
+
<p-button
|
|
8200
|
+
icon="pi pi-refresh"
|
|
8201
|
+
rounded="true"
|
|
8202
|
+
severity="secondary"
|
|
8203
|
+
text="true"
|
|
8204
|
+
tooltipPosition="bottom"
|
|
8205
|
+
[loading]="loading"
|
|
8206
|
+
[pTooltip]="'auth-sessions.refreshTooltip' | translate"
|
|
8207
|
+
(onClick)="refreshAction()"></p-button>
|
|
8208
|
+
<p-button
|
|
8209
|
+
icon="pi pi-power-off"
|
|
8210
|
+
rounded="true"
|
|
8211
|
+
severity="danger"
|
|
8212
|
+
text="true"
|
|
8213
|
+
tooltipPosition="bottom"
|
|
8214
|
+
id="oip-auth-sessions-terminate-all"
|
|
8215
|
+
[disabled]="loading || !hasOtherSessionsThanCurrent"
|
|
8216
|
+
[pTooltip]="'auth-sessions.terminateAllTooltip' | translate"
|
|
8217
|
+
(onClick)="terminateAllSessions()"></p-button>
|
|
8218
|
+
<input
|
|
8219
|
+
class="w-full md:w-96"
|
|
8220
|
+
pInputText
|
|
8221
|
+
type="text"
|
|
8222
|
+
id="oip-auth-sessions-filter"
|
|
8223
|
+
[placeholder]="'auth-sessions.filterPlaceholder' | translate"
|
|
8224
|
+
[(ngModel)]="userFilter"/>
|
|
8225
|
+
<p-button
|
|
8226
|
+
icon="pi pi-filter-slash"
|
|
8227
|
+
rounded="true"
|
|
8228
|
+
severity="secondary"
|
|
8229
|
+
text="true"
|
|
8230
|
+
tooltipPosition="bottom"
|
|
8231
|
+
id="oip-auth-sessions-clear-filter"
|
|
8232
|
+
[disabled]="!userFilter"
|
|
8233
|
+
[pTooltip]="'auth-sessions.clearFilterTooltip' | translate"
|
|
8234
|
+
(onClick)="userFilter = ''"></p-button>
|
|
8235
|
+
</div>
|
|
8236
|
+
</div>
|
|
8237
|
+
</p-toolbar>
|
|
8238
|
+
</div>
|
|
8239
|
+
<p-table
|
|
8240
|
+
class="mt-4"
|
|
8241
|
+
dataKey="sessionId"
|
|
8242
|
+
[paginator]="true"
|
|
8243
|
+
[rows]="50"
|
|
8244
|
+
sortField="lastActivityUtc"
|
|
8245
|
+
[sortOrder]="-1"
|
|
8246
|
+
[value]="filteredSessions"
|
|
8247
|
+
[loading]="loading">
|
|
8248
|
+
<ng-template pTemplate="header">
|
|
8249
|
+
<tr>
|
|
8250
|
+
<th pSortableColumn="userName">
|
|
8251
|
+
{{ 'auth-sessions.table.user' | translate }}
|
|
8252
|
+
<p-sortIcon field="userName"></p-sortIcon>
|
|
8253
|
+
</th>
|
|
8254
|
+
<th pSortableColumn="createdUtc">
|
|
8255
|
+
{{ 'auth-sessions.table.created' | translate }}
|
|
8256
|
+
<p-sortIcon field="createdUtc"></p-sortIcon>
|
|
8257
|
+
</th>
|
|
8258
|
+
<th pSortableColumn="expiresUtc">
|
|
8259
|
+
{{ 'auth-sessions.table.expires' | translate }}
|
|
8260
|
+
<p-sortIcon field="expiresUtc"></p-sortIcon>
|
|
8261
|
+
</th>
|
|
8262
|
+
<th pSortableColumn="lastActivityUtc">
|
|
8263
|
+
{{ 'auth-sessions.table.lastActivity' | translate }}
|
|
8264
|
+
<p-sortIcon field="lastActivityUtc"></p-sortIcon>
|
|
8265
|
+
</th>
|
|
8266
|
+
<th pSortableColumn="ipAddress">
|
|
8267
|
+
{{ 'auth-sessions.table.ipAddress' | translate }}
|
|
8268
|
+
<p-sortIcon field="ipAddress"></p-sortIcon>
|
|
8269
|
+
</th>
|
|
8270
|
+
<th pSortableColumn="userAgent">
|
|
8271
|
+
{{ 'auth-sessions.table.userAgent' | translate }}
|
|
8272
|
+
<p-sortIcon field="userAgent"></p-sortIcon>
|
|
8273
|
+
</th>
|
|
8274
|
+
<th style="width: 7rem"></th>
|
|
8275
|
+
</tr>
|
|
8276
|
+
</ng-template>
|
|
8277
|
+
<ng-template let-session pTemplate="body">
|
|
8278
|
+
<tr>
|
|
8279
|
+
<td>
|
|
8280
|
+
<div class="flex items-center gap-2">
|
|
8281
|
+
<div class="flex flex-col">
|
|
8282
|
+
<span class="font-medium">{{ session.userName }}</span>
|
|
8283
|
+
@if (session.displayName || session.email) {
|
|
8284
|
+
<span class="text-sm text-muted-color">{{ session.displayName || session.email }}</span>
|
|
8285
|
+
}
|
|
8286
|
+
</div>
|
|
8287
|
+
@if (session.isCurrent) {
|
|
8288
|
+
<p-tag severity="info" [value]="'auth-sessions.table.current' | translate"></p-tag>
|
|
8289
|
+
}
|
|
8290
|
+
</div>
|
|
8291
|
+
</td>
|
|
8292
|
+
<td>{{ session.createdUtc | date: layoutService.dateTimeFormat() }}</td>
|
|
8293
|
+
<td>{{ session.expiresUtc | date: layoutService.dateTimeFormat() }}</td>
|
|
8294
|
+
<td>{{ session.lastActivityUtc | date: layoutService.dateTimeFormat() }}</td>
|
|
8295
|
+
<td>{{ session.ipAddress }}</td>
|
|
8296
|
+
<td class="max-w-80 truncate" [pTooltip]="session.userAgent" tooltipPosition="top">
|
|
8297
|
+
{{ session.userAgent }}
|
|
8298
|
+
</td>
|
|
8299
|
+
<td>
|
|
8300
|
+
<div class="flex gap-1">
|
|
8301
|
+
<p-button
|
|
8302
|
+
icon="pi pi-sign-out"
|
|
8303
|
+
rounded="true"
|
|
8304
|
+
severity="danger"
|
|
8305
|
+
text="true"
|
|
8306
|
+
tooltipPosition="bottom"
|
|
8307
|
+
[disabled]="session.isCurrent"
|
|
8308
|
+
[pTooltip]="'auth-sessions.table.terminateTooltip' | translate"
|
|
8309
|
+
(onClick)="terminateSession(session)"></p-button>
|
|
8310
|
+
<p-button
|
|
8311
|
+
icon="pi pi-user-minus"
|
|
8312
|
+
rounded="true"
|
|
8313
|
+
severity="danger"
|
|
8314
|
+
text="true"
|
|
8315
|
+
tooltipPosition="bottom"
|
|
8316
|
+
[disabled]="!session.userId || !hasOtherSessions(session)"
|
|
8317
|
+
[pTooltip]="'auth-sessions.table.terminateAllTooltip' | translate"
|
|
8318
|
+
(onClick)="terminateUserSessions(session)"></p-button>
|
|
8319
|
+
</div>
|
|
8320
|
+
</td>
|
|
8321
|
+
</tr>
|
|
8322
|
+
</ng-template>
|
|
8323
|
+
<ng-template pTemplate="emptymessage">
|
|
8324
|
+
<tr>
|
|
8325
|
+
<td colspan="7">{{ 'auth-sessions.table.empty' | translate }}</td>
|
|
8326
|
+
</tr>
|
|
8327
|
+
</ng-template>
|
|
8328
|
+
</p-table>
|
|
8329
|
+
</div>
|
|
8330
|
+
</div>
|
|
8331
|
+
`
|
|
8332
|
+
}]
|
|
8333
|
+
}], ctorParameters: () => [] });
|
|
8334
|
+
|
|
8335
|
+
var authSessions_component = /*#__PURE__*/Object.freeze({
|
|
8336
|
+
__proto__: null,
|
|
8337
|
+
AuthSessionsComponent: AuthSessionsComponent
|
|
8338
|
+
});
|
|
8339
|
+
|
|
7509
8340
|
var ServiceType;
|
|
7510
8341
|
(function (ServiceType) {
|
|
7511
8342
|
ServiceType["Service"] = "Service";
|
|
@@ -7514,10 +8345,8 @@ var ServiceType;
|
|
|
7514
8345
|
|
|
7515
8346
|
var applications$1 = {
|
|
7516
8347
|
title: "Applications",
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
search: "Search",
|
|
7520
|
-
clear: "Clear",
|
|
8348
|
+
searchPlaceholder: "Filter applications",
|
|
8349
|
+
clear: "Clear filter",
|
|
7521
8350
|
add: "Add",
|
|
7522
8351
|
refreshTooltip: "Refresh",
|
|
7523
8352
|
empty: "No applications found",
|
|
@@ -7562,10 +8391,8 @@ var en$3 = {
|
|
|
7562
8391
|
|
|
7563
8392
|
var applications = {
|
|
7564
8393
|
title: "Приложения",
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
search: "Найти",
|
|
7568
|
-
clear: "Очистить",
|
|
8394
|
+
searchPlaceholder: "Фильтр по приложениям",
|
|
8395
|
+
clear: "Сбросить фильтр",
|
|
7569
8396
|
add: "Добавить",
|
|
7570
8397
|
refreshTooltip: "Обновить",
|
|
7571
8398
|
empty: "Приложения не найдены",
|
|
@@ -7833,65 +8660,71 @@ class ApplicationsComponent {
|
|
|
7833
8660
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7834
8661
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ApplicationsComponent, isStandalone: true, selector: "app-applications", providers: [ApplicationsApi, ConfirmationService], ngImport: i0, template: `
|
|
7835
8662
|
<p-confirmDialog></p-confirmDialog>
|
|
7836
|
-
<div class="flex flex-col gap-4">
|
|
8663
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
7837
8664
|
<div class="card w-full">
|
|
7838
|
-
<div class="
|
|
7839
|
-
<div>
|
|
7840
|
-
<div class="font-semibold text-xl mb-1">
|
|
7841
|
-
{{ 'applications.title' | translate }}
|
|
7842
|
-
</div>
|
|
7843
|
-
<p class="m-0 text-surface-500">{{ 'applications.subtitle' | translate }}</p>
|
|
7844
|
-
</div>
|
|
7845
|
-
<div class="flex flex-col gap-2 sm:flex-row">
|
|
7846
|
-
<input
|
|
7847
|
-
class="w-full sm:w-72"
|
|
7848
|
-
pInputText
|
|
7849
|
-
type="text"
|
|
7850
|
-
[placeholder]="'applications.searchPlaceholder' | translate"
|
|
7851
|
-
[(ngModel)]="globalFilter"
|
|
7852
|
-
(keydown.enter)="applyGlobalFilter()" />
|
|
7853
|
-
<p-button
|
|
7854
|
-
icon="pi pi-search"
|
|
7855
|
-
[label]="'applications.search' | translate"
|
|
7856
|
-
(onClick)="applyGlobalFilter()"></p-button>
|
|
7857
|
-
<p-button
|
|
7858
|
-
icon="pi pi-filter-slash"
|
|
7859
|
-
severity="secondary"
|
|
7860
|
-
[label]="'applications.clear' | translate"
|
|
7861
|
-
(onClick)="clearFilters()"></p-button>
|
|
7862
|
-
</div>
|
|
7863
|
-
</div>
|
|
7864
|
-
|
|
7865
|
-
<div class="my-4">
|
|
8665
|
+
<div class="mb-4">
|
|
7866
8666
|
<p-toolbar>
|
|
7867
|
-
<
|
|
7868
|
-
|
|
7869
|
-
|
|
7870
|
-
|
|
7871
|
-
|
|
7872
|
-
|
|
7873
|
-
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
|
|
7877
|
-
|
|
7878
|
-
|
|
7879
|
-
|
|
7880
|
-
|
|
7881
|
-
|
|
8667
|
+
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
8668
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
8669
|
+
<i class="pi pi-th-large"></i>
|
|
8670
|
+
{{ 'applications.title' | translate }}
|
|
8671
|
+
</div>
|
|
8672
|
+
|
|
8673
|
+
<div class="flex-1"></div>
|
|
8674
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
8675
|
+
<p-button
|
|
8676
|
+
icon="pi pi-refresh"
|
|
8677
|
+
rounded="true"
|
|
8678
|
+
severity="secondary"
|
|
8679
|
+
text="true"
|
|
8680
|
+
tooltipPosition="bottom"
|
|
8681
|
+
id="oip-applications-refresh"
|
|
8682
|
+
[loading]="loading"
|
|
8683
|
+
[disabled]="activeRowAction"
|
|
8684
|
+
[pTooltip]="'applications.refreshTooltip' | translate"
|
|
8685
|
+
(onClick)="refreshAction()"></p-button>
|
|
8686
|
+
<p-button
|
|
8687
|
+
icon="pi pi-plus"
|
|
8688
|
+
rounded="true"
|
|
8689
|
+
severity="success"
|
|
8690
|
+
text="true"
|
|
8691
|
+
tooltipPosition="bottom"
|
|
8692
|
+
id="oip-applications-add"
|
|
8693
|
+
[disabled]="loading || activeRowAction"
|
|
8694
|
+
[pTooltip]="'applications.add' | translate"
|
|
8695
|
+
(onClick)="beginCreateApplication()"></p-button>
|
|
8696
|
+
<input
|
|
8697
|
+
class="w-full md:w-96"
|
|
8698
|
+
pInputText
|
|
8699
|
+
type="text"
|
|
8700
|
+
id="oip-applications-filter"
|
|
8701
|
+
[placeholder]="'applications.searchPlaceholder' | translate"
|
|
8702
|
+
[(ngModel)]="globalFilter"
|
|
8703
|
+
(ngModelChange)="applyGlobalFilter()" />
|
|
8704
|
+
<p-button
|
|
8705
|
+
icon="pi pi-filter-slash"
|
|
8706
|
+
rounded="true"
|
|
8707
|
+
severity="secondary"
|
|
8708
|
+
text="true"
|
|
8709
|
+
tooltipPosition="bottom"
|
|
8710
|
+
id="oip-applications-clear-filter"
|
|
8711
|
+
[disabled]="!globalFilter"
|
|
8712
|
+
[pTooltip]="'applications.clear' | translate"
|
|
8713
|
+
(onClick)="clearFilters()"></p-button>
|
|
8714
|
+
</div>
|
|
8715
|
+
</div>
|
|
7882
8716
|
</p-toolbar>
|
|
7883
8717
|
</div>
|
|
7884
8718
|
|
|
7885
8719
|
<p-table
|
|
7886
|
-
|
|
8720
|
+
class="mt-4"
|
|
7887
8721
|
dataKey="code"
|
|
7888
|
-
|
|
7889
|
-
[
|
|
7890
|
-
[loading]="loading"
|
|
8722
|
+
sortField="order"
|
|
8723
|
+
[sortOrder]="1"
|
|
7891
8724
|
[paginator]="true"
|
|
7892
|
-
[rows]="
|
|
7893
|
-
[
|
|
7894
|
-
[
|
|
8725
|
+
[rows]="50"
|
|
8726
|
+
[value]="visibleApplications"
|
|
8727
|
+
[loading]="loading">
|
|
7895
8728
|
<ng-template pTemplate="header">
|
|
7896
8729
|
<tr>
|
|
7897
8730
|
<th pSortableColumn="code">
|
|
@@ -8011,10 +8844,11 @@ class ApplicationsComponent {
|
|
|
8011
8844
|
"></p-tag>
|
|
8012
8845
|
</td>
|
|
8013
8846
|
<td>
|
|
8014
|
-
<div class="flex items-center justify-center gap-
|
|
8847
|
+
<div class="flex items-center justify-center gap-1">
|
|
8015
8848
|
@if (application._isEditing) {
|
|
8016
8849
|
<p-button
|
|
8017
8850
|
icon="pi pi-check"
|
|
8851
|
+
rounded="true"
|
|
8018
8852
|
severity="success"
|
|
8019
8853
|
text="true"
|
|
8020
8854
|
tooltipPosition="bottom"
|
|
@@ -8023,6 +8857,7 @@ class ApplicationsComponent {
|
|
|
8023
8857
|
(onClick)="saveApplication(application)"></p-button>
|
|
8024
8858
|
<p-button
|
|
8025
8859
|
icon="pi pi-times"
|
|
8860
|
+
rounded="true"
|
|
8026
8861
|
severity="secondary"
|
|
8027
8862
|
text="true"
|
|
8028
8863
|
tooltipPosition="bottom"
|
|
@@ -8032,6 +8867,7 @@ class ApplicationsComponent {
|
|
|
8032
8867
|
} @else {
|
|
8033
8868
|
<p-button
|
|
8034
8869
|
icon="pi pi-pencil"
|
|
8870
|
+
rounded="true"
|
|
8035
8871
|
text="true"
|
|
8036
8872
|
tooltipPosition="bottom"
|
|
8037
8873
|
[disabled]="activeRowAction"
|
|
@@ -8039,6 +8875,7 @@ class ApplicationsComponent {
|
|
|
8039
8875
|
(onClick)="editApplication(application)"></p-button>
|
|
8040
8876
|
<p-button
|
|
8041
8877
|
icon="pi pi-trash"
|
|
8878
|
+
rounded="true"
|
|
8042
8879
|
severity="danger"
|
|
8043
8880
|
text="true"
|
|
8044
8881
|
tooltipPosition="bottom"
|
|
@@ -8053,15 +8890,13 @@ class ApplicationsComponent {
|
|
|
8053
8890
|
|
|
8054
8891
|
<ng-template pTemplate="emptymessage">
|
|
8055
8892
|
<tr>
|
|
8056
|
-
<td
|
|
8057
|
-
{{ 'applications.empty' | translate }}
|
|
8058
|
-
</td>
|
|
8893
|
+
<td colspan="10">{{ 'applications.empty' | translate }}</td>
|
|
8059
8894
|
</tr>
|
|
8060
8895
|
</ng-template>
|
|
8061
8896
|
</p-table>
|
|
8062
8897
|
</div>
|
|
8063
8898
|
</div>
|
|
8064
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type:
|
|
8899
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i2$4.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2$4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2$4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5$1.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i2$3.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
8065
8900
|
}
|
|
8066
8901
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationsComponent, decorators: [{
|
|
8067
8902
|
type: Component,
|
|
@@ -8083,65 +8918,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8083
8918
|
selector: 'app-applications',
|
|
8084
8919
|
template: `
|
|
8085
8920
|
<p-confirmDialog></p-confirmDialog>
|
|
8086
|
-
<div class="flex flex-col gap-4">
|
|
8921
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
8087
8922
|
<div class="card w-full">
|
|
8088
|
-
<div class="
|
|
8089
|
-
<div>
|
|
8090
|
-
<div class="font-semibold text-xl mb-1">
|
|
8091
|
-
{{ 'applications.title' | translate }}
|
|
8092
|
-
</div>
|
|
8093
|
-
<p class="m-0 text-surface-500">{{ 'applications.subtitle' | translate }}</p>
|
|
8094
|
-
</div>
|
|
8095
|
-
<div class="flex flex-col gap-2 sm:flex-row">
|
|
8096
|
-
<input
|
|
8097
|
-
class="w-full sm:w-72"
|
|
8098
|
-
pInputText
|
|
8099
|
-
type="text"
|
|
8100
|
-
[placeholder]="'applications.searchPlaceholder' | translate"
|
|
8101
|
-
[(ngModel)]="globalFilter"
|
|
8102
|
-
(keydown.enter)="applyGlobalFilter()" />
|
|
8103
|
-
<p-button
|
|
8104
|
-
icon="pi pi-search"
|
|
8105
|
-
[label]="'applications.search' | translate"
|
|
8106
|
-
(onClick)="applyGlobalFilter()"></p-button>
|
|
8107
|
-
<p-button
|
|
8108
|
-
icon="pi pi-filter-slash"
|
|
8109
|
-
severity="secondary"
|
|
8110
|
-
[label]="'applications.clear' | translate"
|
|
8111
|
-
(onClick)="clearFilters()"></p-button>
|
|
8112
|
-
</div>
|
|
8113
|
-
</div>
|
|
8114
|
-
|
|
8115
|
-
<div class="my-4">
|
|
8923
|
+
<div class="mb-4">
|
|
8116
8924
|
<p-toolbar>
|
|
8117
|
-
<
|
|
8118
|
-
|
|
8119
|
-
|
|
8120
|
-
|
|
8121
|
-
|
|
8122
|
-
|
|
8123
|
-
|
|
8124
|
-
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
|
|
8925
|
+
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
8926
|
+
<div class="font-semibold text-lg flex items-center gap-2 mx-2">
|
|
8927
|
+
<i class="pi pi-th-large"></i>
|
|
8928
|
+
{{ 'applications.title' | translate }}
|
|
8929
|
+
</div>
|
|
8930
|
+
|
|
8931
|
+
<div class="flex-1"></div>
|
|
8932
|
+
<div class="flex items-center gap-1 w-full md:w-auto">
|
|
8933
|
+
<p-button
|
|
8934
|
+
icon="pi pi-refresh"
|
|
8935
|
+
rounded="true"
|
|
8936
|
+
severity="secondary"
|
|
8937
|
+
text="true"
|
|
8938
|
+
tooltipPosition="bottom"
|
|
8939
|
+
id="oip-applications-refresh"
|
|
8940
|
+
[loading]="loading"
|
|
8941
|
+
[disabled]="activeRowAction"
|
|
8942
|
+
[pTooltip]="'applications.refreshTooltip' | translate"
|
|
8943
|
+
(onClick)="refreshAction()"></p-button>
|
|
8944
|
+
<p-button
|
|
8945
|
+
icon="pi pi-plus"
|
|
8946
|
+
rounded="true"
|
|
8947
|
+
severity="success"
|
|
8948
|
+
text="true"
|
|
8949
|
+
tooltipPosition="bottom"
|
|
8950
|
+
id="oip-applications-add"
|
|
8951
|
+
[disabled]="loading || activeRowAction"
|
|
8952
|
+
[pTooltip]="'applications.add' | translate"
|
|
8953
|
+
(onClick)="beginCreateApplication()"></p-button>
|
|
8954
|
+
<input
|
|
8955
|
+
class="w-full md:w-96"
|
|
8956
|
+
pInputText
|
|
8957
|
+
type="text"
|
|
8958
|
+
id="oip-applications-filter"
|
|
8959
|
+
[placeholder]="'applications.searchPlaceholder' | translate"
|
|
8960
|
+
[(ngModel)]="globalFilter"
|
|
8961
|
+
(ngModelChange)="applyGlobalFilter()" />
|
|
8962
|
+
<p-button
|
|
8963
|
+
icon="pi pi-filter-slash"
|
|
8964
|
+
rounded="true"
|
|
8965
|
+
severity="secondary"
|
|
8966
|
+
text="true"
|
|
8967
|
+
tooltipPosition="bottom"
|
|
8968
|
+
id="oip-applications-clear-filter"
|
|
8969
|
+
[disabled]="!globalFilter"
|
|
8970
|
+
[pTooltip]="'applications.clear' | translate"
|
|
8971
|
+
(onClick)="clearFilters()"></p-button>
|
|
8972
|
+
</div>
|
|
8973
|
+
</div>
|
|
8132
8974
|
</p-toolbar>
|
|
8133
8975
|
</div>
|
|
8134
8976
|
|
|
8135
8977
|
<p-table
|
|
8136
|
-
|
|
8978
|
+
class="mt-4"
|
|
8137
8979
|
dataKey="code"
|
|
8138
|
-
|
|
8139
|
-
[
|
|
8140
|
-
[loading]="loading"
|
|
8980
|
+
sortField="order"
|
|
8981
|
+
[sortOrder]="1"
|
|
8141
8982
|
[paginator]="true"
|
|
8142
|
-
[rows]="
|
|
8143
|
-
[
|
|
8144
|
-
[
|
|
8983
|
+
[rows]="50"
|
|
8984
|
+
[value]="visibleApplications"
|
|
8985
|
+
[loading]="loading">
|
|
8145
8986
|
<ng-template pTemplate="header">
|
|
8146
8987
|
<tr>
|
|
8147
8988
|
<th pSortableColumn="code">
|
|
@@ -8261,10 +9102,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8261
9102
|
"></p-tag>
|
|
8262
9103
|
</td>
|
|
8263
9104
|
<td>
|
|
8264
|
-
<div class="flex items-center justify-center gap-
|
|
9105
|
+
<div class="flex items-center justify-center gap-1">
|
|
8265
9106
|
@if (application._isEditing) {
|
|
8266
9107
|
<p-button
|
|
8267
9108
|
icon="pi pi-check"
|
|
9109
|
+
rounded="true"
|
|
8268
9110
|
severity="success"
|
|
8269
9111
|
text="true"
|
|
8270
9112
|
tooltipPosition="bottom"
|
|
@@ -8273,6 +9115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8273
9115
|
(onClick)="saveApplication(application)"></p-button>
|
|
8274
9116
|
<p-button
|
|
8275
9117
|
icon="pi pi-times"
|
|
9118
|
+
rounded="true"
|
|
8276
9119
|
severity="secondary"
|
|
8277
9120
|
text="true"
|
|
8278
9121
|
tooltipPosition="bottom"
|
|
@@ -8282,6 +9125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8282
9125
|
} @else {
|
|
8283
9126
|
<p-button
|
|
8284
9127
|
icon="pi pi-pencil"
|
|
9128
|
+
rounded="true"
|
|
8285
9129
|
text="true"
|
|
8286
9130
|
tooltipPosition="bottom"
|
|
8287
9131
|
[disabled]="activeRowAction"
|
|
@@ -8289,6 +9133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8289
9133
|
(onClick)="editApplication(application)"></p-button>
|
|
8290
9134
|
<p-button
|
|
8291
9135
|
icon="pi pi-trash"
|
|
9136
|
+
rounded="true"
|
|
8292
9137
|
severity="danger"
|
|
8293
9138
|
text="true"
|
|
8294
9139
|
tooltipPosition="bottom"
|
|
@@ -8303,9 +9148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8303
9148
|
|
|
8304
9149
|
<ng-template pTemplate="emptymessage">
|
|
8305
9150
|
<tr>
|
|
8306
|
-
<td
|
|
8307
|
-
{{ 'applications.empty' | translate }}
|
|
8308
|
-
</td>
|
|
9151
|
+
<td colspan="10">{{ 'applications.empty' | translate }}</td>
|
|
8309
9152
|
</tr>
|
|
8310
9153
|
</ng-template>
|
|
8311
9154
|
</p-table>
|
|
@@ -9244,7 +10087,7 @@ class DiscussionComponent {
|
|
|
9244
10087
|
</div>
|
|
9245
10088
|
}
|
|
9246
10089
|
</section>
|
|
9247
|
-
`, isInline: true, styles: [":host{display:block}.file-trigger{position:relative;display:inline-flex}.file-trigger input{position:absolute;inset:0;opacity:0;cursor:pointer}.markdown-preview,.history-markdown{word-break:break-word}.markdown-preview :is(h1,h2,h3),.history-markdown :is(h1,h2,h3){margin:0 0 .75rem;font-weight:600}.markdown-preview a,.history-markdown a{color:#2563eb;text-decoration:underline;text-underline-offset:.18em}.emoji-popover{display:flex;flex-wrap:wrap;gap:.5rem;max-width:16rem}.emoji-option{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;font-size:1.25rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$
|
|
10090
|
+
`, isInline: true, styles: [":host{display:block}.file-trigger{position:relative;display:inline-flex}.file-trigger input{position:absolute;inset:0;opacity:0;cursor:pointer}.markdown-preview,.history-markdown{word-break:break-word}.markdown-preview :is(h1,h2,h3),.history-markdown :is(h1,h2,h3){margin:0 0 .75rem;font-weight:600}.markdown-preview a,.history-markdown a{color:#2563eb;text-decoration:underline;text-underline-offset:.18em}.emoji-popover{display:flex;flex-wrap:wrap;gap:.5rem;max-width:16rem}.emoji-option{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;font-size:1.25rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "directive", type: i3$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i5$2.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i6.Panel, selector: "p-panel", inputs: ["id", "toggleable", "header", "collapsed", "styleClass", "iconPos", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i7.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3$6.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["autoResize", "pSize", "variant", "fluid", "invalid"], outputs: ["onResize"] }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9248
10091
|
}
|
|
9249
10092
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionComponent, decorators: [{
|
|
9250
10093
|
type: Component,
|
|
@@ -10831,6 +11674,15 @@ function oipModulesRoute(path = 'modules') {
|
|
|
10831
11674
|
data: { requireAdmin: true }
|
|
10832
11675
|
};
|
|
10833
11676
|
}
|
|
11677
|
+
/** Active authentication sessions, administrators only. */
|
|
11678
|
+
function oipSessionsRoute(path = 'sessions') {
|
|
11679
|
+
return {
|
|
11680
|
+
path,
|
|
11681
|
+
loadComponent: () => Promise.resolve().then(function () { return authSessions_component; }).then((m) => m.AuthSessionsComponent),
|
|
11682
|
+
canActivate: [oipAuthGuard],
|
|
11683
|
+
data: { requireAdmin: true }
|
|
11684
|
+
};
|
|
11685
|
+
}
|
|
10834
11686
|
/** Discussion module. The path must keep an `:id` segment. */
|
|
10835
11687
|
function oipDiscussionRoute(path = 'discussion/:id') {
|
|
10836
11688
|
return {
|
|
@@ -10898,6 +11750,7 @@ function provideOipRoutes(options = {}) {
|
|
|
10898
11750
|
builtInRoute(features.config, oipConfigRoute, children);
|
|
10899
11751
|
builtInRoute(features.applications, oipApplicationsRoute, children);
|
|
10900
11752
|
builtInRoute(features.modules, oipModulesRoute, children);
|
|
11753
|
+
builtInRoute(features.sessions, oipSessionsRoute, children);
|
|
10901
11754
|
builtInRoute(features.discussion, oipDiscussionRoute, children);
|
|
10902
11755
|
builtInRoute(features.dbMigration, oipDbMigrationRoute, children);
|
|
10903
11756
|
builtInRoute(features.iframeModule, oipIframeModuleRoute, children);
|
|
@@ -10937,5 +11790,5 @@ function provideOipRoutes(options = {}) {
|
|
|
10937
11790
|
* Generated bundle index. Do not edit.
|
|
10938
11791
|
*/
|
|
10939
11792
|
|
|
10940
|
-
export { APP_INFO_TOKEN, APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AccessComponent, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppInfoService, AppLayoutComponent, AppModulesComponent, AppTopbar, AppTopbarApplicationSwitcherComponent, ApplicationRegistryService, ApplicationsApi, ApplicationsComponent, AuthGuardService, BaseModuleComponent, BffSecurityService, BlockLoaderComponent, ConfigComponent, ContentType, CustomElementExtensionModuleHostComponent, DbMigrationComponent, DefaultSecretsBannerComponent, DiscussionComponent, ErrorComponent, ExtensionLoaderService, ExtensionModuleHostComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, ModuleInstanceRightsService, ModuleLoadingService, MsgService, NoModulesComponent, NotfoundComponent, NotificationApi, NotificationService, OIP_EXTENSION_EVENTS, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, StartPageService, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserProfileComponent, UserService, convertToPrimeNgDateFormat, defaultTheme, emitOipContextChange, emitOipError, emitOipNavigate, emitOipNotify, emitOipSettingsChange, emitOipTitleChange, langIntercept, mergeWithDefaults, moduleAccessGuard, oipAccessRoute, oipApplicationsRoute, oipAuthGuard, oipConfigRoute, oipDbMigrationRoute, oipDiscussionRoute, oipErrorRoute, oipExtensionsRoute, oipIframeModuleRoute, oipModulesRoute, oipNoModulesRoute, oipProfileRoute, oipStartRedirectGuard, oipStartRoute, provideAppInfo, provideAppThemes, provideLogoComponent, provideOip, provideOipRoutes, provideTranslations, replaceDefaults };
|
|
11793
|
+
export { APP_INFO_TOKEN, APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AccessComponent, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppInfoService, AppLayoutComponent, AppModulesComponent, AppTopbar, AppTopbarApplicationSwitcherComponent, ApplicationRegistryService, ApplicationsApi, ApplicationsComponent, AuthGuardService, AuthSessionsApi, AuthSessionsComponent, BaseModuleComponent, BffSecurityService, BlockLoaderComponent, ConfigComponent, ContentType, CustomElementExtensionModuleHostComponent, DbMigrationComponent, DefaultSecretsBannerComponent, DiscussionComponent, ErrorComponent, ExtensionLoaderService, ExtensionModuleHostComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, ModuleInstanceRightsService, ModuleLoadingService, MsgService, NoModulesComponent, NotfoundComponent, NotificationApi, NotificationService, OIP_EXTENSION_EVENTS, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, StartPageService, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserProfileComponent, UserService, convertToPrimeNgDateFormat, defaultTheme, emitOipContextChange, emitOipError, emitOipNavigate, emitOipNotify, emitOipSettingsChange, emitOipTitleChange, langIntercept, mergeWithDefaults, moduleAccessGuard, oipAccessRoute, oipApplicationsRoute, oipAuthGuard, oipConfigRoute, oipDbMigrationRoute, oipDiscussionRoute, oipErrorRoute, oipExtensionsRoute, oipIframeModuleRoute, oipModulesRoute, oipNoModulesRoute, oipProfileRoute, oipSessionsRoute, oipStartRedirectGuard, oipStartRoute, provideAppInfo, provideAppThemes, provideLogoComponent, provideOip, provideOipRoutes, provideTranslations, replaceDefaults };
|
|
10941
11794
|
//# sourceMappingURL=oip-common.mjs.map
|