oip-common 0.9.0 → 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 +1237 -390
- 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';
|
|
@@ -552,7 +552,7 @@ var msgService$1 = {
|
|
|
552
552
|
secondary: "Secondary"
|
|
553
553
|
};
|
|
554
554
|
var primeng$1 = "";
|
|
555
|
-
var en$
|
|
555
|
+
var en$l = {
|
|
556
556
|
userService: userService$1,
|
|
557
557
|
msgService: msgService$1,
|
|
558
558
|
primeng: primeng$1
|
|
@@ -760,7 +760,7 @@ var primeng = {
|
|
|
760
760
|
zoomOut: "Уменьшить"
|
|
761
761
|
}
|
|
762
762
|
};
|
|
763
|
-
var ru$
|
|
763
|
+
var ru$l = {
|
|
764
764
|
userService: userService,
|
|
765
765
|
msgService: msgService,
|
|
766
766
|
primeng: primeng
|
|
@@ -770,7 +770,7 @@ var ru$k = {
|
|
|
770
770
|
* Global dictionaries shared by all components. They are bundled with the library,
|
|
771
771
|
* so the application never requests `assets/i18n/{lang}.json`.
|
|
772
772
|
*/
|
|
773
|
-
const globalTranslations = { en: en$
|
|
773
|
+
const globalTranslations = { en: en$l, ru: ru$l };
|
|
774
774
|
/**
|
|
775
775
|
* Service for managing translation loading in the application
|
|
776
776
|
*/
|
|
@@ -1476,7 +1476,7 @@ var baseComponent$1 = {
|
|
|
1476
1476
|
security: "Security",
|
|
1477
1477
|
success: "Saved successfully"
|
|
1478
1478
|
};
|
|
1479
|
-
var en$
|
|
1479
|
+
var en$k = {
|
|
1480
1480
|
baseComponent: baseComponent$1
|
|
1481
1481
|
};
|
|
1482
1482
|
|
|
@@ -1486,7 +1486,7 @@ var baseComponent = {
|
|
|
1486
1486
|
security: "Безопасность",
|
|
1487
1487
|
success: "Сохранено"
|
|
1488
1488
|
};
|
|
1489
|
-
var ru$
|
|
1489
|
+
var ru$k = {
|
|
1490
1490
|
baseComponent: baseComponent
|
|
1491
1491
|
};
|
|
1492
1492
|
|
|
@@ -1627,7 +1627,7 @@ class BaseModuleComponent {
|
|
|
1627
1627
|
* @type {Subject<TLocalStoreSettings>}
|
|
1628
1628
|
*/
|
|
1629
1629
|
this.localSettingsUpdate = new Subject();
|
|
1630
|
-
this.baseTranslations = provideTranslations({ en: en$
|
|
1630
|
+
this.baseTranslations = provideTranslations({ en: en$k, ru: ru$k });
|
|
1631
1631
|
this.l10nService = inject(L10nService);
|
|
1632
1632
|
this.canRead = false;
|
|
1633
1633
|
this.canEdit = false;
|
|
@@ -1938,7 +1938,7 @@ var securityComponent$1 = {
|
|
|
1938
1938
|
savedSecurity: "Security settings saved",
|
|
1939
1939
|
selectRoles: "Select roles"
|
|
1940
1940
|
};
|
|
1941
|
-
var en$
|
|
1941
|
+
var en$j = {
|
|
1942
1942
|
securityComponent: securityComponent$1
|
|
1943
1943
|
};
|
|
1944
1944
|
|
|
@@ -1948,13 +1948,13 @@ var securityComponent = {
|
|
|
1948
1948
|
savedSecurity: "Настройки сохранены",
|
|
1949
1949
|
selectRoles: "Выберите роли"
|
|
1950
1950
|
};
|
|
1951
|
-
var ru$
|
|
1951
|
+
var ru$j = {
|
|
1952
1952
|
securityComponent: securityComponent
|
|
1953
1953
|
};
|
|
1954
1954
|
|
|
1955
1955
|
class SecurityComponent {
|
|
1956
1956
|
constructor() {
|
|
1957
|
-
this.translations = provideTranslations({ en: en$
|
|
1957
|
+
this.translations = provideTranslations({ en: en$j, ru: ru$j });
|
|
1958
1958
|
this.msgService = inject(MsgService);
|
|
1959
1959
|
this.translateService = inject(TranslateService);
|
|
1960
1960
|
this.httpClient = inject(HttpClient);
|
|
@@ -2123,7 +2123,7 @@ const APP_THEME_PRESETS_MERGE_MODE = new InjectionToken('APP_THEME_PRESETS_MERGE
|
|
|
2123
2123
|
factory: () => 'mergeWithDefaults'
|
|
2124
2124
|
});
|
|
2125
2125
|
|
|
2126
|
-
var en$
|
|
2126
|
+
var en$i = {
|
|
2127
2127
|
"app-configurator": {
|
|
2128
2128
|
primary: "Primary",
|
|
2129
2129
|
surface: "Surface",
|
|
@@ -2134,7 +2134,7 @@ var en$h = {
|
|
|
2134
2134
|
}
|
|
2135
2135
|
};
|
|
2136
2136
|
|
|
2137
|
-
var ru$
|
|
2137
|
+
var ru$i = {
|
|
2138
2138
|
"app-configurator": {
|
|
2139
2139
|
primary: "Основной",
|
|
2140
2140
|
surface: "Фон",
|
|
@@ -2178,7 +2178,7 @@ const PRIMARY_COLORS = [
|
|
|
2178
2178
|
];
|
|
2179
2179
|
class AppConfiguratorComponent {
|
|
2180
2180
|
constructor() {
|
|
2181
|
-
this.translations = provideTranslations({ en: en$
|
|
2181
|
+
this.translations = provideTranslations({ en: en$i, ru: ru$i });
|
|
2182
2182
|
this.router = inject(Router);
|
|
2183
2183
|
this.config = inject(PrimeNG);
|
|
2184
2184
|
this.layoutService = inject(LayoutService);
|
|
@@ -2699,7 +2699,7 @@ class AppConfiguratorComponent {
|
|
|
2699
2699
|
</div>
|
|
2700
2700
|
}
|
|
2701
2701
|
</div>
|
|
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:
|
|
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" }] }); }
|
|
2703
2703
|
}
|
|
2704
2704
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppConfiguratorComponent, decorators: [{
|
|
2705
2705
|
type: Component,
|
|
@@ -3186,7 +3186,7 @@ var userNotifications$1 = {
|
|
|
3186
3186
|
markAsRead: "Read",
|
|
3187
3187
|
markedAsRead: "Notification marked as read"
|
|
3188
3188
|
};
|
|
3189
|
-
var en$
|
|
3189
|
+
var en$h = {
|
|
3190
3190
|
userNotifications: userNotifications$1
|
|
3191
3191
|
};
|
|
3192
3192
|
|
|
@@ -3197,13 +3197,13 @@ var userNotifications = {
|
|
|
3197
3197
|
markAsRead: "Прочитано",
|
|
3198
3198
|
markedAsRead: "Оповещение отмечено прочитанным"
|
|
3199
3199
|
};
|
|
3200
|
-
var ru$
|
|
3200
|
+
var ru$h = {
|
|
3201
3201
|
userNotifications: userNotifications
|
|
3202
3202
|
};
|
|
3203
3203
|
|
|
3204
3204
|
class UserNotificationsComponent {
|
|
3205
3205
|
constructor() {
|
|
3206
|
-
this.translations = provideTranslations({ en: en$
|
|
3206
|
+
this.translations = provideTranslations({ en: en$h, ru: ru$h });
|
|
3207
3207
|
this.notifications = [];
|
|
3208
3208
|
this.totalCount = 0;
|
|
3209
3209
|
this.skip = 0;
|
|
@@ -3368,7 +3368,7 @@ class UserNotificationsComponent {
|
|
|
3368
3368
|
(onPageChange)="onPageChange($event)"></p-paginator>
|
|
3369
3369
|
}
|
|
3370
3370
|
</p-popover>
|
|
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$
|
|
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" }] }); }
|
|
3372
3372
|
}
|
|
3373
3373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserNotificationsComponent, decorators: [{
|
|
3374
3374
|
type: Component,
|
|
@@ -3593,7 +3593,7 @@ class AppTopbarApplicationSwitcherComponent {
|
|
|
3593
3593
|
</p-button>
|
|
3594
3594
|
<p-menu #applicationMenu [model]="applicationMenuItems" [popup]="true" />
|
|
3595
3595
|
}
|
|
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$
|
|
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" }] }); }
|
|
3597
3597
|
}
|
|
3598
3598
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTopbarApplicationSwitcherComponent, decorators: [{
|
|
3599
3599
|
type: Component,
|
|
@@ -3632,7 +3632,7 @@ var topbar$1 = {
|
|
|
3632
3632
|
profile: "Profile",
|
|
3633
3633
|
applications: "Applications"
|
|
3634
3634
|
};
|
|
3635
|
-
var en$
|
|
3635
|
+
var en$g = {
|
|
3636
3636
|
topbar: topbar$1
|
|
3637
3637
|
};
|
|
3638
3638
|
|
|
@@ -3645,13 +3645,13 @@ var topbar = {
|
|
|
3645
3645
|
profile: "Профиль",
|
|
3646
3646
|
applications: "Приложения"
|
|
3647
3647
|
};
|
|
3648
|
-
var ru$
|
|
3648
|
+
var ru$g = {
|
|
3649
3649
|
topbar: topbar
|
|
3650
3650
|
};
|
|
3651
3651
|
|
|
3652
3652
|
class AppTopbar {
|
|
3653
3653
|
constructor() {
|
|
3654
|
-
this.translations = provideTranslations({ en: en$
|
|
3654
|
+
this.translations = provideTranslations({ en: en$g, ru: ru$g });
|
|
3655
3655
|
this.securityService = inject(SecurityService);
|
|
3656
3656
|
this.topBarService = inject(TopBarService);
|
|
3657
3657
|
this.userService = inject(UserService);
|
|
@@ -3798,7 +3798,7 @@ class AppTopbar {
|
|
|
3798
3798
|
</div>
|
|
3799
3799
|
</div>
|
|
3800
3800
|
</div>
|
|
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$
|
|
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" }] }); }
|
|
3802
3802
|
}
|
|
3803
3803
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTopbar, decorators: [{
|
|
3804
3804
|
type: Component,
|
|
@@ -4564,7 +4564,7 @@ class MenuItemComponent {
|
|
|
4564
4564
|
</ul>
|
|
4565
4565
|
}
|
|
4566
4566
|
</ng-container>
|
|
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$
|
|
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"] }] }); }
|
|
4568
4568
|
}
|
|
4569
4569
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemComponent, decorators: [{
|
|
4570
4570
|
type: Component,
|
|
@@ -4821,7 +4821,7 @@ class MenuItemCreateDialogComponent {
|
|
|
4821
4821
|
(click)="save()" />
|
|
4822
4822
|
</div>
|
|
4823
4823
|
</p-dialog>
|
|
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:
|
|
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" }] }); }
|
|
4825
4825
|
}
|
|
4826
4826
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemCreateDialogComponent, decorators: [{
|
|
4827
4827
|
type: Component,
|
|
@@ -5083,7 +5083,7 @@ class MenuItemEditDialogComponent {
|
|
|
5083
5083
|
(click)="save()" />
|
|
5084
5084
|
</div>
|
|
5085
5085
|
</p-dialog>
|
|
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:
|
|
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" }] }); }
|
|
5087
5087
|
}
|
|
5088
5088
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemEditDialogComponent, decorators: [{
|
|
5089
5089
|
type: Component,
|
|
@@ -5232,7 +5232,7 @@ var menuItemCreateDialogComponent$1 = {
|
|
|
5232
5232
|
cancel: "Cancel",
|
|
5233
5233
|
save: "Save"
|
|
5234
5234
|
};
|
|
5235
|
-
var en$
|
|
5235
|
+
var en$f = {
|
|
5236
5236
|
menuComponent: menuComponent$1,
|
|
5237
5237
|
menuItemComponent: menuItemComponent$1,
|
|
5238
5238
|
menuItemEditDialogComponent: menuItemEditDialogComponent$1,
|
|
@@ -5281,7 +5281,7 @@ var menuItemCreateDialogComponent = {
|
|
|
5281
5281
|
cancel: "Отмена",
|
|
5282
5282
|
save: "Сохранить"
|
|
5283
5283
|
};
|
|
5284
|
-
var ru$
|
|
5284
|
+
var ru$f = {
|
|
5285
5285
|
menuComponent: menuComponent,
|
|
5286
5286
|
menuItemComponent: menuItemComponent,
|
|
5287
5287
|
menuItemEditDialogComponent: menuItemEditDialogComponent,
|
|
@@ -5292,7 +5292,7 @@ class MenuComponent {
|
|
|
5292
5292
|
constructor() {
|
|
5293
5293
|
// Registers the whole menu/l10n/menu.*.json bundle, which also covers
|
|
5294
5294
|
// menuItemComponent, menuItemEditDialogComponent and menuItemCreateDialogComponent.
|
|
5295
|
-
this.translations = provideTranslations({ en: en$
|
|
5295
|
+
this.translations = provideTranslations({ en: en$f, ru: ru$f });
|
|
5296
5296
|
this.menuService = inject(MenuService);
|
|
5297
5297
|
this.securityService = inject(SecurityService);
|
|
5298
5298
|
this.translateService = inject(TranslateService);
|
|
@@ -5419,14 +5419,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
5419
5419
|
var blockLoader$1 = {
|
|
5420
5420
|
loading: "Loading..."
|
|
5421
5421
|
};
|
|
5422
|
-
var en$
|
|
5422
|
+
var en$e = {
|
|
5423
5423
|
blockLoader: blockLoader$1
|
|
5424
5424
|
};
|
|
5425
5425
|
|
|
5426
5426
|
var blockLoader = {
|
|
5427
5427
|
loading: "Загрузка..."
|
|
5428
5428
|
};
|
|
5429
|
-
var ru$
|
|
5429
|
+
var ru$e = {
|
|
5430
5430
|
blockLoader: blockLoader
|
|
5431
5431
|
};
|
|
5432
5432
|
|
|
@@ -5443,7 +5443,7 @@ class BlockLoaderComponent {
|
|
|
5443
5443
|
static { this.showDelayMs = 150; }
|
|
5444
5444
|
static { this.minVisibleMs = 300; }
|
|
5445
5445
|
constructor() {
|
|
5446
|
-
this.translations = provideTranslations({ en: en$
|
|
5446
|
+
this.translations = provideTranslations({ en: en$e, ru: ru$e });
|
|
5447
5447
|
this.moduleLoadingService = inject(ModuleLoadingService);
|
|
5448
5448
|
this.shownAt = 0;
|
|
5449
5449
|
this.visible = signal(false, ...(ngDevMode ? [{ debugName: "visible" }] : []));
|
|
@@ -5575,7 +5575,7 @@ var defaultSecretsBanner$1 = {
|
|
|
5575
5575
|
dismiss: "Dismiss"
|
|
5576
5576
|
}
|
|
5577
5577
|
};
|
|
5578
|
-
var en$
|
|
5578
|
+
var en$d = {
|
|
5579
5579
|
defaultSecretsBanner: defaultSecretsBanner$1
|
|
5580
5580
|
};
|
|
5581
5581
|
|
|
@@ -5597,7 +5597,7 @@ var defaultSecretsBanner = {
|
|
|
5597
5597
|
dismiss: "Скрыть"
|
|
5598
5598
|
}
|
|
5599
5599
|
};
|
|
5600
|
-
var ru$
|
|
5600
|
+
var ru$d = {
|
|
5601
5601
|
defaultSecretsBanner: defaultSecretsBanner
|
|
5602
5602
|
};
|
|
5603
5603
|
|
|
@@ -5613,7 +5613,7 @@ var ru$c = {
|
|
|
5613
5613
|
*/
|
|
5614
5614
|
class DefaultSecretsBannerComponent {
|
|
5615
5615
|
constructor() {
|
|
5616
|
-
this.translations = provideTranslations({ en: en$
|
|
5616
|
+
this.translations = provideTranslations({ en: en$d, ru: ru$d });
|
|
5617
5617
|
this.securityApi = inject(SecurityApi);
|
|
5618
5618
|
this.securityService = inject(SecurityService);
|
|
5619
5619
|
this.destroyRef = inject(DestroyRef);
|
|
@@ -5955,7 +5955,7 @@ class AppFloatingConfiguratorComponent {
|
|
|
5955
5955
|
<app-configurator />
|
|
5956
5956
|
</div>
|
|
5957
5957
|
</div>
|
|
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$
|
|
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" }] }); }
|
|
5959
5959
|
}
|
|
5960
5960
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppFloatingConfiguratorComponent, decorators: [{
|
|
5961
5961
|
type: Component,
|
|
@@ -5996,7 +5996,7 @@ var notfound$1 = {
|
|
|
5996
5996
|
description: "Requested resource is not available.",
|
|
5997
5997
|
button: "Go to home"
|
|
5998
5998
|
};
|
|
5999
|
-
var en$
|
|
5999
|
+
var en$c = {
|
|
6000
6000
|
notfound: notfound$1
|
|
6001
6001
|
};
|
|
6002
6002
|
|
|
@@ -6006,13 +6006,13 @@ var notfound = {
|
|
|
6006
6006
|
description: "Запрашиваемый ресурс недоступен.",
|
|
6007
6007
|
button: "На главную"
|
|
6008
6008
|
};
|
|
6009
|
-
var ru$
|
|
6009
|
+
var ru$c = {
|
|
6010
6010
|
notfound: notfound
|
|
6011
6011
|
};
|
|
6012
6012
|
|
|
6013
6013
|
class NotfoundComponent {
|
|
6014
6014
|
constructor() {
|
|
6015
|
-
this.translations = provideTranslations({ en: en$
|
|
6015
|
+
this.translations = provideTranslations({ en: en$c, ru: ru$c });
|
|
6016
6016
|
}
|
|
6017
6017
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotfoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6018
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 />
|
|
@@ -6072,7 +6072,7 @@ var unauthorized$1 = {
|
|
|
6072
6072
|
signInToContinue: "Sign in to continue",
|
|
6073
6073
|
signIn: "Sign In"
|
|
6074
6074
|
};
|
|
6075
|
-
var en$
|
|
6075
|
+
var en$b = {
|
|
6076
6076
|
unauthorized: unauthorized$1
|
|
6077
6077
|
};
|
|
6078
6078
|
|
|
@@ -6081,13 +6081,13 @@ var unauthorized = {
|
|
|
6081
6081
|
signInToContinue: "Войдите чтобы продолжить",
|
|
6082
6082
|
signIn: "Войти"
|
|
6083
6083
|
};
|
|
6084
|
-
var ru$
|
|
6084
|
+
var ru$b = {
|
|
6085
6085
|
unauthorized: unauthorized
|
|
6086
6086
|
};
|
|
6087
6087
|
|
|
6088
6088
|
class UnauthorizedComponent {
|
|
6089
6089
|
constructor() {
|
|
6090
|
-
this.translations = provideTranslations({ en: en$
|
|
6090
|
+
this.translations = provideTranslations({ en: en$b, ru: ru$b });
|
|
6091
6091
|
this.securityService = inject(SecurityService);
|
|
6092
6092
|
this.route = inject(ActivatedRoute);
|
|
6093
6093
|
}
|
|
@@ -6187,7 +6187,7 @@ var access$1 = {
|
|
|
6187
6187
|
message: "You do not have the necessary permissions. Please contact admins.",
|
|
6188
6188
|
button: "Go to Dashboard"
|
|
6189
6189
|
};
|
|
6190
|
-
var en$
|
|
6190
|
+
var en$a = {
|
|
6191
6191
|
access: access$1
|
|
6192
6192
|
};
|
|
6193
6193
|
|
|
@@ -6196,13 +6196,13 @@ var access = {
|
|
|
6196
6196
|
message: "У вас недостаточно прав. Пожалуйста, обратитесь к администраторам.",
|
|
6197
6197
|
button: "На главную"
|
|
6198
6198
|
};
|
|
6199
|
-
var ru$
|
|
6199
|
+
var ru$a = {
|
|
6200
6200
|
access: access
|
|
6201
6201
|
};
|
|
6202
6202
|
|
|
6203
6203
|
class AccessComponent {
|
|
6204
6204
|
constructor() {
|
|
6205
|
-
this.translations = provideTranslations({ en: en$
|
|
6205
|
+
this.translations = provideTranslations({ en: en$a, ru: ru$a });
|
|
6206
6206
|
}
|
|
6207
6207
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6208
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
|
|
@@ -6235,7 +6235,7 @@ class AccessComponent {
|
|
|
6235
6235
|
</div>
|
|
6236
6236
|
</div>
|
|
6237
6237
|
</div>
|
|
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$
|
|
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" }] }); }
|
|
6239
6239
|
}
|
|
6240
6240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AccessComponent, decorators: [{
|
|
6241
6241
|
type: Component,
|
|
@@ -6282,7 +6282,7 @@ var error$1 = {
|
|
|
6282
6282
|
message: "Requested resource is not available.",
|
|
6283
6283
|
button: "Go to Dashboard"
|
|
6284
6284
|
};
|
|
6285
|
-
var en$
|
|
6285
|
+
var en$9 = {
|
|
6286
6286
|
error: error$1
|
|
6287
6287
|
};
|
|
6288
6288
|
|
|
@@ -6291,13 +6291,13 @@ var error = {
|
|
|
6291
6291
|
message: "Запрашиваемый ресурс недоступен.",
|
|
6292
6292
|
button: "На главную"
|
|
6293
6293
|
};
|
|
6294
|
-
var ru$
|
|
6294
|
+
var ru$9 = {
|
|
6295
6295
|
error: error
|
|
6296
6296
|
};
|
|
6297
6297
|
|
|
6298
6298
|
class ErrorComponent {
|
|
6299
6299
|
constructor() {
|
|
6300
|
-
this.translations = provideTranslations({ en: en$
|
|
6300
|
+
this.translations = provideTranslations({ en: en$9, ru: ru$9 });
|
|
6301
6301
|
}
|
|
6302
6302
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6303
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
|
|
@@ -6330,7 +6330,7 @@ class ErrorComponent {
|
|
|
6330
6330
|
</div>
|
|
6331
6331
|
</div>
|
|
6332
6332
|
</div>
|
|
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$
|
|
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" }] }); }
|
|
6334
6334
|
}
|
|
6335
6335
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
6336
6336
|
type: Component,
|
|
@@ -6388,7 +6388,7 @@ var profileComponent$1 = {
|
|
|
6388
6388
|
photoDeleted: "Photo deleted",
|
|
6389
6389
|
failedToDeletePhoto: "Failed to delete user photo"
|
|
6390
6390
|
};
|
|
6391
|
-
var en$
|
|
6391
|
+
var en$8 = {
|
|
6392
6392
|
profileComponent: profileComponent$1
|
|
6393
6393
|
};
|
|
6394
6394
|
|
|
@@ -6403,13 +6403,13 @@ var profileComponent = {
|
|
|
6403
6403
|
photoDeleted: "Фото удалено",
|
|
6404
6404
|
failedToDeletePhoto: "Не удалось удалить фото пользователя"
|
|
6405
6405
|
};
|
|
6406
|
-
var ru$
|
|
6406
|
+
var ru$8 = {
|
|
6407
6407
|
profileComponent: profileComponent
|
|
6408
6408
|
};
|
|
6409
6409
|
|
|
6410
6410
|
class UserProfileComponent {
|
|
6411
6411
|
constructor() {
|
|
6412
|
-
this.translations = provideTranslations({ en: en$
|
|
6412
|
+
this.translations = provideTranslations({ en: en$8, ru: ru$8 });
|
|
6413
6413
|
this.userService = inject(UserService);
|
|
6414
6414
|
this.msgService = inject(MsgService);
|
|
6415
6415
|
this.translateService = inject(TranslateService);
|
|
@@ -6491,7 +6491,7 @@ class UserProfileComponent {
|
|
|
6491
6491
|
(onClick)="confirmDeletePhoto($event)" />
|
|
6492
6492
|
}
|
|
6493
6493
|
</div>
|
|
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$
|
|
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" }] }); }
|
|
6495
6495
|
}
|
|
6496
6496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileComponent, decorators: [{
|
|
6497
6497
|
type: Component,
|
|
@@ -6551,11 +6551,12 @@ var config$1 = {
|
|
|
6551
6551
|
photo: "Photo",
|
|
6552
6552
|
profile: "Profile",
|
|
6553
6553
|
selectLanguage: "Select language",
|
|
6554
|
+
sessionManagement: "Session management",
|
|
6554
6555
|
timeFormat: "Time format",
|
|
6555
6556
|
timeZone: "Time zone",
|
|
6556
6557
|
usePhoto256x256Pixel: "Use photo 256x256 pixel"
|
|
6557
6558
|
};
|
|
6558
|
-
var en$
|
|
6559
|
+
var en$7 = {
|
|
6559
6560
|
config: config$1
|
|
6560
6561
|
};
|
|
6561
6562
|
|
|
@@ -6571,17 +6572,18 @@ var config = {
|
|
|
6571
6572
|
photo: "Фото",
|
|
6572
6573
|
profile: "Профиль",
|
|
6573
6574
|
selectLanguage: "Выберите язык",
|
|
6575
|
+
sessionManagement: "Управление сессиями",
|
|
6574
6576
|
timeFormat: "Формат времени",
|
|
6575
6577
|
timeZone: "Часовой пояс",
|
|
6576
6578
|
usePhoto256x256Pixel: "Используйте фото 256x256 пикселей"
|
|
6577
6579
|
};
|
|
6578
|
-
var ru$
|
|
6580
|
+
var ru$7 = {
|
|
6579
6581
|
config: config
|
|
6580
6582
|
};
|
|
6581
6583
|
|
|
6582
6584
|
class ConfigComponent {
|
|
6583
6585
|
constructor() {
|
|
6584
|
-
this.translations = provideTranslations({ en: en$
|
|
6586
|
+
this.translations = provideTranslations({ en: en$7, ru: ru$7 });
|
|
6585
6587
|
this.layoutService = inject(LayoutService);
|
|
6586
6588
|
this.l10nService = inject(L10nService);
|
|
6587
6589
|
this.userService = inject(UserService);
|
|
@@ -6716,11 +6718,19 @@ class ConfigComponent {
|
|
|
6716
6718
|
label="{{ 'config.goTo' | translate }}"
|
|
6717
6719
|
routerLink="/applications" />
|
|
6718
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>
|
|
6719
6729
|
</div>
|
|
6720
6730
|
</div>
|
|
6721
6731
|
}
|
|
6722
6732
|
</div>
|
|
6723
|
-
`, 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" }] }); }
|
|
6724
6734
|
}
|
|
6725
6735
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigComponent, decorators: [{
|
|
6726
6736
|
type: Component,
|
|
@@ -6826,6 +6836,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
6826
6836
|
label="{{ 'config.goTo' | translate }}"
|
|
6827
6837
|
routerLink="/applications" />
|
|
6828
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>
|
|
6829
6847
|
</div>
|
|
6830
6848
|
</div>
|
|
6831
6849
|
}
|
|
@@ -6850,12 +6868,12 @@ var config_component = /*#__PURE__*/Object.freeze({
|
|
|
6850
6868
|
ConfigComponent: ConfigComponent
|
|
6851
6869
|
});
|
|
6852
6870
|
|
|
6853
|
-
var en$
|
|
6871
|
+
var en$6 = {
|
|
6854
6872
|
"db-migration": {
|
|
6855
6873
|
migrationManager: "Migration manager",
|
|
6856
6874
|
actions: {
|
|
6857
6875
|
refresh: "Refresh",
|
|
6858
|
-
cleanFilter: "
|
|
6876
|
+
cleanFilter: "Clear filter",
|
|
6859
6877
|
applyMigration: "Apply migration"
|
|
6860
6878
|
},
|
|
6861
6879
|
columns: {
|
|
@@ -6866,16 +6884,20 @@ var en$5 = {
|
|
|
6866
6884
|
},
|
|
6867
6885
|
messages: {
|
|
6868
6886
|
errorRefreshing: "Error refreshing database"
|
|
6869
|
-
}
|
|
6887
|
+
},
|
|
6888
|
+
filterPlaceholder: "Filter by migration name",
|
|
6889
|
+
empty: "No migrations",
|
|
6890
|
+
yes: "Yes",
|
|
6891
|
+
no: "No"
|
|
6870
6892
|
}
|
|
6871
6893
|
};
|
|
6872
6894
|
|
|
6873
|
-
var ru$
|
|
6895
|
+
var ru$6 = {
|
|
6874
6896
|
"db-migration": {
|
|
6875
6897
|
migrationManager: "Менеджер миграций",
|
|
6876
6898
|
actions: {
|
|
6877
6899
|
refresh: "Обновить",
|
|
6878
|
-
cleanFilter: "
|
|
6900
|
+
cleanFilter: "Сбросить фильтр",
|
|
6879
6901
|
applyMigration: "Применить миграцию"
|
|
6880
6902
|
},
|
|
6881
6903
|
columns: {
|
|
@@ -6886,28 +6908,48 @@ var ru$5 = {
|
|
|
6886
6908
|
},
|
|
6887
6909
|
messages: {
|
|
6888
6910
|
errorRefreshing: "Ошибка обновления базы данных"
|
|
6889
|
-
}
|
|
6911
|
+
},
|
|
6912
|
+
filterPlaceholder: "Фильтр по имени миграции",
|
|
6913
|
+
empty: "Нет миграций",
|
|
6914
|
+
yes: "Да",
|
|
6915
|
+
no: "Нет"
|
|
6890
6916
|
}
|
|
6891
6917
|
};
|
|
6892
6918
|
|
|
6893
6919
|
class DbMigrationComponent extends BaseModuleComponent {
|
|
6894
6920
|
constructor() {
|
|
6895
6921
|
super(...arguments);
|
|
6896
|
-
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 = '';
|
|
6897
6926
|
}
|
|
6898
6927
|
async ngOnInit() {
|
|
6899
6928
|
await super.ngOnInit();
|
|
6900
6929
|
await this.refreshAction();
|
|
6901
6930
|
}
|
|
6902
6931
|
async refreshAction() {
|
|
6903
|
-
this.
|
|
6904
|
-
|
|
6905
|
-
this.data =
|
|
6906
|
-
}
|
|
6907
|
-
|
|
6932
|
+
this.loading = true;
|
|
6933
|
+
try {
|
|
6934
|
+
this.data = await this.getData();
|
|
6935
|
+
}
|
|
6936
|
+
catch (error) {
|
|
6908
6937
|
console.log(error);
|
|
6909
6938
|
this.msgService.error(this.l10nService.instant('db-migration.messages.errorRefreshing'));
|
|
6910
|
-
}
|
|
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();
|
|
6911
6953
|
}
|
|
6912
6954
|
async getData() {
|
|
6913
6955
|
return this.getMigrations();
|
|
@@ -6917,85 +6959,125 @@ class DbMigrationComponent extends BaseModuleComponent {
|
|
|
6917
6959
|
return this.applyModuleMigration(request);
|
|
6918
6960
|
}
|
|
6919
6961
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DbMigrationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6920
|
-
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: `
|
|
6921
6963
|
@if (isContent) {
|
|
6922
|
-
<
|
|
6923
|
-
|
|
6924
|
-
<div>
|
|
6925
|
-
<
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
[pTooltip]="'db-migration.actions.refresh' | translate"
|
|
6933
|
-
(click)="refreshAction()" />
|
|
6934
|
-
<p-button
|
|
6935
|
-
icon="pi pi-filter-slash"
|
|
6936
|
-
severity="secondary"
|
|
6937
|
-
tooltipPosition="bottom"
|
|
6938
|
-
[outlined]="true"
|
|
6939
|
-
[pTooltip]="'db-migration.actions.cleanFilter' | translate"
|
|
6940
|
-
(click)="dt.clear()" />
|
|
6941
|
-
</div>
|
|
6942
|
-
<div>
|
|
6943
|
-
<p-table #dt dataKey="name" editMode="row" size="small" [scrollable]="true" [value]="data">
|
|
6944
|
-
<ng-template let-columns pTemplate="header">
|
|
6945
|
-
<tr>
|
|
6946
|
-
<th pSortableColumn="name" scope="col">
|
|
6947
|
-
{{ 'db-migration.columns.name' | translate }}
|
|
6948
|
-
<p-columnFilter display="menu" field="name" type="text" />
|
|
6949
|
-
</th>
|
|
6950
|
-
<th scope="col">{{ 'db-migration.columns.applied' | translate }}</th>
|
|
6951
|
-
<th scope="col">{{ 'db-migration.columns.exist' | translate }}</th>
|
|
6952
|
-
<th scope="col">{{ 'db-migration.columns.pending' | translate }}</th>
|
|
6953
|
-
<th scope="col"></th>
|
|
6954
|
-
</tr>
|
|
6955
|
-
</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>
|
|
6956
6974
|
|
|
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
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
</p-button>
|
|
6988
|
-
</td>
|
|
6989
|
-
</tr>
|
|
6990
|
-
</ng-template>
|
|
6991
|
-
</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>
|
|
6992
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>
|
|
6993
7075
|
</div>
|
|
6994
7076
|
</div>
|
|
6995
7077
|
} @else if (isSecurity) {
|
|
6996
7078
|
<security [controller]="controller" [id]="id" />
|
|
6997
7079
|
}
|
|
6998
|
-
`, 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" }] }); }
|
|
6999
7081
|
}
|
|
7000
7082
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DbMigrationComponent, decorators: [{
|
|
7001
7083
|
type: Component,
|
|
@@ -7005,8 +7087,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7005
7087
|
SharedModule,
|
|
7006
7088
|
TagModule,
|
|
7007
7089
|
InputTextModule,
|
|
7008
|
-
TextareaModule,
|
|
7009
7090
|
ButtonModule,
|
|
7091
|
+
ToolbarModule,
|
|
7010
7092
|
FormsModule,
|
|
7011
7093
|
ConfirmDialog,
|
|
7012
7094
|
SecurityComponent,
|
|
@@ -7016,77 +7098,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7016
7098
|
selector: 'db-migration',
|
|
7017
7099
|
template: `
|
|
7018
7100
|
@if (isContent) {
|
|
7019
|
-
<
|
|
7020
|
-
|
|
7021
|
-
<div>
|
|
7022
|
-
<
|
|
7023
|
-
|
|
7024
|
-
|
|
7025
|
-
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
[pTooltip]="'db-migration.actions.refresh' | translate"
|
|
7030
|
-
(click)="refreshAction()" />
|
|
7031
|
-
<p-button
|
|
7032
|
-
icon="pi pi-filter-slash"
|
|
7033
|
-
severity="secondary"
|
|
7034
|
-
tooltipPosition="bottom"
|
|
7035
|
-
[outlined]="true"
|
|
7036
|
-
[pTooltip]="'db-migration.actions.cleanFilter' | translate"
|
|
7037
|
-
(click)="dt.clear()" />
|
|
7038
|
-
</div>
|
|
7039
|
-
<div>
|
|
7040
|
-
<p-table #dt dataKey="name" editMode="row" size="small" [scrollable]="true" [value]="data">
|
|
7041
|
-
<ng-template let-columns pTemplate="header">
|
|
7042
|
-
<tr>
|
|
7043
|
-
<th pSortableColumn="name" scope="col">
|
|
7044
|
-
{{ 'db-migration.columns.name' | translate }}
|
|
7045
|
-
<p-columnFilter display="menu" field="name" type="text" />
|
|
7046
|
-
</th>
|
|
7047
|
-
<th scope="col">{{ 'db-migration.columns.applied' | translate }}</th>
|
|
7048
|
-
<th scope="col">{{ 'db-migration.columns.exist' | translate }}</th>
|
|
7049
|
-
<th scope="col">{{ 'db-migration.columns.pending' | translate }}</th>
|
|
7050
|
-
<th scope="col"></th>
|
|
7051
|
-
</tr>
|
|
7052
|
-
</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>
|
|
7053
7111
|
|
|
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
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
</p-button>
|
|
7085
|
-
</td>
|
|
7086
|
-
</tr>
|
|
7087
|
-
</ng-template>
|
|
7088
|
-
</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>
|
|
7089
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>
|
|
7090
7212
|
</div>
|
|
7091
7213
|
</div>
|
|
7092
7214
|
} @else if (isSecurity) {
|
|
@@ -7095,7 +7217,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7095
7217
|
`,
|
|
7096
7218
|
providers: [ConfirmationService]
|
|
7097
7219
|
}]
|
|
7098
|
-
}]
|
|
7220
|
+
}], propDecorators: { dt: [{
|
|
7221
|
+
type: ViewChild,
|
|
7222
|
+
args: ['dt']
|
|
7223
|
+
}] } });
|
|
7099
7224
|
|
|
7100
7225
|
var dbMigration_component = /*#__PURE__*/Object.freeze({
|
|
7101
7226
|
__proto__: null,
|
|
@@ -7198,7 +7323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7198
7323
|
type: Injectable
|
|
7199
7324
|
}] });
|
|
7200
7325
|
|
|
7201
|
-
var en$
|
|
7326
|
+
var en$5 = {
|
|
7202
7327
|
"app-modules": {
|
|
7203
7328
|
title: "Modules",
|
|
7204
7329
|
refreshTooltip: "Refresh",
|
|
@@ -7212,7 +7337,8 @@ var en$4 = {
|
|
|
7212
7337
|
currentlyLoaded: "Currently Loaded",
|
|
7213
7338
|
yes: "Yes",
|
|
7214
7339
|
no: "No",
|
|
7215
|
-
deleteTooltip: "Delete"
|
|
7340
|
+
deleteTooltip: "Delete",
|
|
7341
|
+
empty: "No modules"
|
|
7216
7342
|
},
|
|
7217
7343
|
confirm: {
|
|
7218
7344
|
header: "Warning",
|
|
@@ -7224,12 +7350,15 @@ var en$4 = {
|
|
|
7224
7350
|
deleteSuccess: "Module deleted",
|
|
7225
7351
|
deleteError: "Module delete failed",
|
|
7226
7352
|
registerError: "External module registration failed",
|
|
7227
|
-
registerSuccess: "External module registered"
|
|
7228
|
-
|
|
7353
|
+
registerSuccess: "External module registered",
|
|
7354
|
+
loadError: "Failed to load modules"
|
|
7355
|
+
},
|
|
7356
|
+
filterPlaceholder: "Filter by ID or name",
|
|
7357
|
+
clearFilterTooltip: "Clear filter"
|
|
7229
7358
|
}
|
|
7230
7359
|
};
|
|
7231
7360
|
|
|
7232
|
-
var ru$
|
|
7361
|
+
var ru$5 = {
|
|
7233
7362
|
"app-modules": {
|
|
7234
7363
|
title: "Модули",
|
|
7235
7364
|
refreshTooltip: "Обновить",
|
|
@@ -7243,7 +7372,8 @@ var ru$4 = {
|
|
|
7243
7372
|
currentlyLoaded: "Загружен",
|
|
7244
7373
|
yes: "Да",
|
|
7245
7374
|
no: "Нет",
|
|
7246
|
-
deleteTooltip: "Удалить"
|
|
7375
|
+
deleteTooltip: "Удалить",
|
|
7376
|
+
empty: "Нет модулей"
|
|
7247
7377
|
},
|
|
7248
7378
|
confirm: {
|
|
7249
7379
|
header: "Внимание",
|
|
@@ -7255,15 +7385,20 @@ var ru$4 = {
|
|
|
7255
7385
|
deleteSuccess: "Модуль удален",
|
|
7256
7386
|
deleteError: "Не удалось удалить модуль",
|
|
7257
7387
|
registerError: "Не удалось зарегистрировать внешний модуль",
|
|
7258
|
-
registerSuccess: "Внешний модуль зарегистрирован"
|
|
7259
|
-
|
|
7388
|
+
registerSuccess: "Внешний модуль зарегистрирован",
|
|
7389
|
+
loadError: "Не удалось загрузить модули"
|
|
7390
|
+
},
|
|
7391
|
+
filterPlaceholder: "Фильтр по ID или имени",
|
|
7392
|
+
clearFilterTooltip: "Сбросить фильтр"
|
|
7260
7393
|
}
|
|
7261
7394
|
};
|
|
7262
7395
|
|
|
7263
|
-
L10nService.registerTranslations({ en: en$
|
|
7396
|
+
L10nService.registerTranslations({ en: en$5, ru: ru$5 });
|
|
7264
7397
|
class AppModulesComponent {
|
|
7265
7398
|
constructor() {
|
|
7266
7399
|
this.modules = [];
|
|
7400
|
+
this.moduleFilter = '';
|
|
7401
|
+
this.loading = false;
|
|
7267
7402
|
this.msgService = inject(MsgService);
|
|
7268
7403
|
this.confirmationService = inject(ConfirmationService);
|
|
7269
7404
|
this.l10nService = inject(L10nService);
|
|
@@ -7279,8 +7414,24 @@ class AppModulesComponent {
|
|
|
7279
7414
|
this.titleService.setTitle(this.t('app-modules.title'));
|
|
7280
7415
|
await this.refreshAction();
|
|
7281
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
|
+
}
|
|
7282
7424
|
async refreshAction() {
|
|
7283
|
-
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
|
+
}
|
|
7284
7435
|
}
|
|
7285
7436
|
get canRegisterExternalModule() {
|
|
7286
7437
|
return !!this.externalModuleManifestUrl.trim() && !this.registeringExternalModule;
|
|
@@ -7343,46 +7494,91 @@ class AppModulesComponent {
|
|
|
7343
7494
|
<p-confirmDialog></p-confirmDialog>
|
|
7344
7495
|
<div class="flex flex-col md:flex-row gap-4">
|
|
7345
7496
|
<div class="card w-full">
|
|
7346
|
-
<div class="font-semibold text-xl mb-4">
|
|
7347
|
-
{{ 'app-modules.title' | translate }}
|
|
7348
|
-
</div>
|
|
7349
7497
|
<div class="mb-4">
|
|
7350
7498
|
<p-toolbar>
|
|
7351
7499
|
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
7352
|
-
<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">
|
|
7353
7506
|
<input
|
|
7354
7507
|
class="w-full"
|
|
7355
7508
|
pInputText
|
|
7356
7509
|
type="url"
|
|
7510
|
+
id="oip-app-modules-manifest-url"
|
|
7357
7511
|
[disabled]="registeringExternalModule"
|
|
7358
7512
|
[placeholder]="'app-modules.register.manifestUrlPlaceholder' | translate"
|
|
7359
7513
|
[(ngModel)]="externalModuleManifestUrl"
|
|
7360
7514
|
(keydown.enter)="registerExternalModule()" />
|
|
7361
7515
|
<p-button
|
|
7362
7516
|
icon="pi pi-plus"
|
|
7517
|
+
rounded="true"
|
|
7363
7518
|
severity="success"
|
|
7519
|
+
text="true"
|
|
7520
|
+
tooltipPosition="bottom"
|
|
7521
|
+
id="oip-app-modules-register"
|
|
7364
7522
|
[disabled]="!canRegisterExternalModule"
|
|
7365
|
-
[
|
|
7523
|
+
[pTooltip]="'app-modules.register.button' | translate"
|
|
7366
7524
|
[loading]="registeringExternalModule"
|
|
7367
7525
|
(onClick)="registerExternalModule()"></p-button>
|
|
7368
7526
|
</div>
|
|
7369
|
-
|
|
7370
|
-
|
|
7371
|
-
|
|
7372
|
-
|
|
7373
|
-
|
|
7374
|
-
|
|
7375
|
-
|
|
7376
|
-
|
|
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>
|
|
7377
7556
|
</div>
|
|
7378
7557
|
</p-toolbar>
|
|
7379
7558
|
</div>
|
|
7380
|
-
<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">
|
|
7381
7568
|
<ng-template pTemplate="header">
|
|
7382
7569
|
<tr>
|
|
7383
|
-
<th
|
|
7384
|
-
|
|
7385
|
-
|
|
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>
|
|
7386
7582
|
<th style="width: 4rem"></th>
|
|
7387
7583
|
</tr>
|
|
7388
7584
|
</ng-template>
|
|
@@ -7409,10 +7605,15 @@ class AppModulesComponent {
|
|
|
7409
7605
|
</td>
|
|
7410
7606
|
</tr>
|
|
7411
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>
|
|
7412
7613
|
</p-table>
|
|
7413
7614
|
</div>
|
|
7414
7615
|
</div>
|
|
7415
|
-
`, 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" }] }); }
|
|
7416
7617
|
}
|
|
7417
7618
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppModulesComponent, decorators: [{
|
|
7418
7619
|
type: Component,
|
|
@@ -7434,46 +7635,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7434
7635
|
<p-confirmDialog></p-confirmDialog>
|
|
7435
7636
|
<div class="flex flex-col md:flex-row gap-4">
|
|
7436
7637
|
<div class="card w-full">
|
|
7437
|
-
<div class="font-semibold text-xl mb-4">
|
|
7438
|
-
{{ 'app-modules.title' | translate }}
|
|
7439
|
-
</div>
|
|
7440
7638
|
<div class="mb-4">
|
|
7441
7639
|
<p-toolbar>
|
|
7442
7640
|
<div class="flex flex-col md:flex-row md:items-center gap-2 w-full">
|
|
7443
|
-
<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">
|
|
7444
7647
|
<input
|
|
7445
7648
|
class="w-full"
|
|
7446
7649
|
pInputText
|
|
7447
7650
|
type="url"
|
|
7651
|
+
id="oip-app-modules-manifest-url"
|
|
7448
7652
|
[disabled]="registeringExternalModule"
|
|
7449
7653
|
[placeholder]="'app-modules.register.manifestUrlPlaceholder' | translate"
|
|
7450
7654
|
[(ngModel)]="externalModuleManifestUrl"
|
|
7451
7655
|
(keydown.enter)="registerExternalModule()" />
|
|
7452
7656
|
<p-button
|
|
7453
7657
|
icon="pi pi-plus"
|
|
7658
|
+
rounded="true"
|
|
7454
7659
|
severity="success"
|
|
7660
|
+
text="true"
|
|
7661
|
+
tooltipPosition="bottom"
|
|
7662
|
+
id="oip-app-modules-register"
|
|
7455
7663
|
[disabled]="!canRegisterExternalModule"
|
|
7456
|
-
[
|
|
7664
|
+
[pTooltip]="'app-modules.register.button' | translate"
|
|
7457
7665
|
[loading]="registeringExternalModule"
|
|
7458
7666
|
(onClick)="registerExternalModule()"></p-button>
|
|
7459
7667
|
</div>
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
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>
|
|
7468
7697
|
</div>
|
|
7469
7698
|
</p-toolbar>
|
|
7470
7699
|
</div>
|
|
7471
|
-
<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">
|
|
7472
7709
|
<ng-template pTemplate="header">
|
|
7473
7710
|
<tr>
|
|
7474
|
-
<th
|
|
7475
|
-
|
|
7476
|
-
|
|
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>
|
|
7477
7723
|
<th style="width: 4rem"></th>
|
|
7478
7724
|
</tr>
|
|
7479
7725
|
</ng-template>
|
|
@@ -7500,7 +7746,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
7500
7746
|
</td>
|
|
7501
7747
|
</tr>
|
|
7502
7748
|
</ng-template>
|
|
7503
|
-
|
|
7749
|
+
<ng-template pTemplate="emptymessage">
|
|
7750
|
+
<tr>
|
|
7751
|
+
<td colspan="4">{{ 'app-modules.table.empty' | translate }}</td>
|
|
7752
|
+
</tr>
|
|
7753
|
+
</ng-template>
|
|
7754
|
+
</p-table>
|
|
7504
7755
|
</div>
|
|
7505
7756
|
</div>
|
|
7506
7757
|
`
|
|
@@ -7512,6 +7763,580 @@ var appModules_component = /*#__PURE__*/Object.freeze({
|
|
|
7512
7763
|
AppModulesComponent: AppModulesComponent
|
|
7513
7764
|
});
|
|
7514
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
|
+
|
|
7515
8340
|
var ServiceType;
|
|
7516
8341
|
(function (ServiceType) {
|
|
7517
8342
|
ServiceType["Service"] = "Service";
|
|
@@ -7520,10 +8345,8 @@ var ServiceType;
|
|
|
7520
8345
|
|
|
7521
8346
|
var applications$1 = {
|
|
7522
8347
|
title: "Applications",
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
search: "Search",
|
|
7526
|
-
clear: "Clear",
|
|
8348
|
+
searchPlaceholder: "Filter applications",
|
|
8349
|
+
clear: "Clear filter",
|
|
7527
8350
|
add: "Add",
|
|
7528
8351
|
refreshTooltip: "Refresh",
|
|
7529
8352
|
empty: "No applications found",
|
|
@@ -7568,10 +8391,8 @@ var en$3 = {
|
|
|
7568
8391
|
|
|
7569
8392
|
var applications = {
|
|
7570
8393
|
title: "Приложения",
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
search: "Найти",
|
|
7574
|
-
clear: "Очистить",
|
|
8394
|
+
searchPlaceholder: "Фильтр по приложениям",
|
|
8395
|
+
clear: "Сбросить фильтр",
|
|
7575
8396
|
add: "Добавить",
|
|
7576
8397
|
refreshTooltip: "Обновить",
|
|
7577
8398
|
empty: "Приложения не найдены",
|
|
@@ -7839,65 +8660,71 @@ class ApplicationsComponent {
|
|
|
7839
8660
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7840
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: `
|
|
7841
8662
|
<p-confirmDialog></p-confirmDialog>
|
|
7842
|
-
<div class="flex flex-col gap-4">
|
|
8663
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
7843
8664
|
<div class="card w-full">
|
|
7844
|
-
<div class="
|
|
7845
|
-
<div>
|
|
7846
|
-
<div class="font-semibold text-xl mb-1">
|
|
7847
|
-
{{ 'applications.title' | translate }}
|
|
7848
|
-
</div>
|
|
7849
|
-
<p class="m-0 text-surface-500">{{ 'applications.subtitle' | translate }}</p>
|
|
7850
|
-
</div>
|
|
7851
|
-
<div class="flex flex-col gap-2 sm:flex-row">
|
|
7852
|
-
<input
|
|
7853
|
-
class="w-full sm:w-72"
|
|
7854
|
-
pInputText
|
|
7855
|
-
type="text"
|
|
7856
|
-
[placeholder]="'applications.searchPlaceholder' | translate"
|
|
7857
|
-
[(ngModel)]="globalFilter"
|
|
7858
|
-
(keydown.enter)="applyGlobalFilter()" />
|
|
7859
|
-
<p-button
|
|
7860
|
-
icon="pi pi-search"
|
|
7861
|
-
[label]="'applications.search' | translate"
|
|
7862
|
-
(onClick)="applyGlobalFilter()"></p-button>
|
|
7863
|
-
<p-button
|
|
7864
|
-
icon="pi pi-filter-slash"
|
|
7865
|
-
severity="secondary"
|
|
7866
|
-
[label]="'applications.clear' | translate"
|
|
7867
|
-
(onClick)="clearFilters()"></p-button>
|
|
7868
|
-
</div>
|
|
7869
|
-
</div>
|
|
7870
|
-
|
|
7871
|
-
<div class="my-4">
|
|
8665
|
+
<div class="mb-4">
|
|
7872
8666
|
<p-toolbar>
|
|
7873
|
-
<
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
|
|
7877
|
-
|
|
7878
|
-
|
|
7879
|
-
|
|
7880
|
-
|
|
7881
|
-
|
|
7882
|
-
|
|
7883
|
-
|
|
7884
|
-
|
|
7885
|
-
|
|
7886
|
-
|
|
7887
|
-
|
|
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>
|
|
7888
8716
|
</p-toolbar>
|
|
7889
8717
|
</div>
|
|
7890
8718
|
|
|
7891
8719
|
<p-table
|
|
7892
|
-
|
|
8720
|
+
class="mt-4"
|
|
7893
8721
|
dataKey="code"
|
|
7894
|
-
|
|
7895
|
-
[
|
|
7896
|
-
[loading]="loading"
|
|
8722
|
+
sortField="order"
|
|
8723
|
+
[sortOrder]="1"
|
|
7897
8724
|
[paginator]="true"
|
|
7898
|
-
[rows]="
|
|
7899
|
-
[
|
|
7900
|
-
[
|
|
8725
|
+
[rows]="50"
|
|
8726
|
+
[value]="visibleApplications"
|
|
8727
|
+
[loading]="loading">
|
|
7901
8728
|
<ng-template pTemplate="header">
|
|
7902
8729
|
<tr>
|
|
7903
8730
|
<th pSortableColumn="code">
|
|
@@ -8017,10 +8844,11 @@ class ApplicationsComponent {
|
|
|
8017
8844
|
"></p-tag>
|
|
8018
8845
|
</td>
|
|
8019
8846
|
<td>
|
|
8020
|
-
<div class="flex items-center justify-center gap-
|
|
8847
|
+
<div class="flex items-center justify-center gap-1">
|
|
8021
8848
|
@if (application._isEditing) {
|
|
8022
8849
|
<p-button
|
|
8023
8850
|
icon="pi pi-check"
|
|
8851
|
+
rounded="true"
|
|
8024
8852
|
severity="success"
|
|
8025
8853
|
text="true"
|
|
8026
8854
|
tooltipPosition="bottom"
|
|
@@ -8029,6 +8857,7 @@ class ApplicationsComponent {
|
|
|
8029
8857
|
(onClick)="saveApplication(application)"></p-button>
|
|
8030
8858
|
<p-button
|
|
8031
8859
|
icon="pi pi-times"
|
|
8860
|
+
rounded="true"
|
|
8032
8861
|
severity="secondary"
|
|
8033
8862
|
text="true"
|
|
8034
8863
|
tooltipPosition="bottom"
|
|
@@ -8038,6 +8867,7 @@ class ApplicationsComponent {
|
|
|
8038
8867
|
} @else {
|
|
8039
8868
|
<p-button
|
|
8040
8869
|
icon="pi pi-pencil"
|
|
8870
|
+
rounded="true"
|
|
8041
8871
|
text="true"
|
|
8042
8872
|
tooltipPosition="bottom"
|
|
8043
8873
|
[disabled]="activeRowAction"
|
|
@@ -8045,6 +8875,7 @@ class ApplicationsComponent {
|
|
|
8045
8875
|
(onClick)="editApplication(application)"></p-button>
|
|
8046
8876
|
<p-button
|
|
8047
8877
|
icon="pi pi-trash"
|
|
8878
|
+
rounded="true"
|
|
8048
8879
|
severity="danger"
|
|
8049
8880
|
text="true"
|
|
8050
8881
|
tooltipPosition="bottom"
|
|
@@ -8059,15 +8890,13 @@ class ApplicationsComponent {
|
|
|
8059
8890
|
|
|
8060
8891
|
<ng-template pTemplate="emptymessage">
|
|
8061
8892
|
<tr>
|
|
8062
|
-
<td
|
|
8063
|
-
{{ 'applications.empty' | translate }}
|
|
8064
|
-
</td>
|
|
8893
|
+
<td colspan="10">{{ 'applications.empty' | translate }}</td>
|
|
8065
8894
|
</tr>
|
|
8066
8895
|
</ng-template>
|
|
8067
8896
|
</p-table>
|
|
8068
8897
|
</div>
|
|
8069
8898
|
</div>
|
|
8070
|
-
`, 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" }] }); }
|
|
8071
8900
|
}
|
|
8072
8901
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationsComponent, decorators: [{
|
|
8073
8902
|
type: Component,
|
|
@@ -8089,65 +8918,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8089
8918
|
selector: 'app-applications',
|
|
8090
8919
|
template: `
|
|
8091
8920
|
<p-confirmDialog></p-confirmDialog>
|
|
8092
|
-
<div class="flex flex-col gap-4">
|
|
8921
|
+
<div class="flex flex-col md:flex-row gap-4">
|
|
8093
8922
|
<div class="card w-full">
|
|
8094
|
-
<div class="
|
|
8095
|
-
<div>
|
|
8096
|
-
<div class="font-semibold text-xl mb-1">
|
|
8097
|
-
{{ 'applications.title' | translate }}
|
|
8098
|
-
</div>
|
|
8099
|
-
<p class="m-0 text-surface-500">{{ 'applications.subtitle' | translate }}</p>
|
|
8100
|
-
</div>
|
|
8101
|
-
<div class="flex flex-col gap-2 sm:flex-row">
|
|
8102
|
-
<input
|
|
8103
|
-
class="w-full sm:w-72"
|
|
8104
|
-
pInputText
|
|
8105
|
-
type="text"
|
|
8106
|
-
[placeholder]="'applications.searchPlaceholder' | translate"
|
|
8107
|
-
[(ngModel)]="globalFilter"
|
|
8108
|
-
(keydown.enter)="applyGlobalFilter()" />
|
|
8109
|
-
<p-button
|
|
8110
|
-
icon="pi pi-search"
|
|
8111
|
-
[label]="'applications.search' | translate"
|
|
8112
|
-
(onClick)="applyGlobalFilter()"></p-button>
|
|
8113
|
-
<p-button
|
|
8114
|
-
icon="pi pi-filter-slash"
|
|
8115
|
-
severity="secondary"
|
|
8116
|
-
[label]="'applications.clear' | translate"
|
|
8117
|
-
(onClick)="clearFilters()"></p-button>
|
|
8118
|
-
</div>
|
|
8119
|
-
</div>
|
|
8120
|
-
|
|
8121
|
-
<div class="my-4">
|
|
8923
|
+
<div class="mb-4">
|
|
8122
8924
|
<p-toolbar>
|
|
8123
|
-
<
|
|
8124
|
-
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8135
|
-
|
|
8136
|
-
|
|
8137
|
-
|
|
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>
|
|
8138
8974
|
</p-toolbar>
|
|
8139
8975
|
</div>
|
|
8140
8976
|
|
|
8141
8977
|
<p-table
|
|
8142
|
-
|
|
8978
|
+
class="mt-4"
|
|
8143
8979
|
dataKey="code"
|
|
8144
|
-
|
|
8145
|
-
[
|
|
8146
|
-
[loading]="loading"
|
|
8980
|
+
sortField="order"
|
|
8981
|
+
[sortOrder]="1"
|
|
8147
8982
|
[paginator]="true"
|
|
8148
|
-
[rows]="
|
|
8149
|
-
[
|
|
8150
|
-
[
|
|
8983
|
+
[rows]="50"
|
|
8984
|
+
[value]="visibleApplications"
|
|
8985
|
+
[loading]="loading">
|
|
8151
8986
|
<ng-template pTemplate="header">
|
|
8152
8987
|
<tr>
|
|
8153
8988
|
<th pSortableColumn="code">
|
|
@@ -8267,10 +9102,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8267
9102
|
"></p-tag>
|
|
8268
9103
|
</td>
|
|
8269
9104
|
<td>
|
|
8270
|
-
<div class="flex items-center justify-center gap-
|
|
9105
|
+
<div class="flex items-center justify-center gap-1">
|
|
8271
9106
|
@if (application._isEditing) {
|
|
8272
9107
|
<p-button
|
|
8273
9108
|
icon="pi pi-check"
|
|
9109
|
+
rounded="true"
|
|
8274
9110
|
severity="success"
|
|
8275
9111
|
text="true"
|
|
8276
9112
|
tooltipPosition="bottom"
|
|
@@ -8279,6 +9115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8279
9115
|
(onClick)="saveApplication(application)"></p-button>
|
|
8280
9116
|
<p-button
|
|
8281
9117
|
icon="pi pi-times"
|
|
9118
|
+
rounded="true"
|
|
8282
9119
|
severity="secondary"
|
|
8283
9120
|
text="true"
|
|
8284
9121
|
tooltipPosition="bottom"
|
|
@@ -8288,6 +9125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8288
9125
|
} @else {
|
|
8289
9126
|
<p-button
|
|
8290
9127
|
icon="pi pi-pencil"
|
|
9128
|
+
rounded="true"
|
|
8291
9129
|
text="true"
|
|
8292
9130
|
tooltipPosition="bottom"
|
|
8293
9131
|
[disabled]="activeRowAction"
|
|
@@ -8295,6 +9133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8295
9133
|
(onClick)="editApplication(application)"></p-button>
|
|
8296
9134
|
<p-button
|
|
8297
9135
|
icon="pi pi-trash"
|
|
9136
|
+
rounded="true"
|
|
8298
9137
|
severity="danger"
|
|
8299
9138
|
text="true"
|
|
8300
9139
|
tooltipPosition="bottom"
|
|
@@ -8309,9 +9148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
8309
9148
|
|
|
8310
9149
|
<ng-template pTemplate="emptymessage">
|
|
8311
9150
|
<tr>
|
|
8312
|
-
<td
|
|
8313
|
-
{{ 'applications.empty' | translate }}
|
|
8314
|
-
</td>
|
|
9151
|
+
<td colspan="10">{{ 'applications.empty' | translate }}</td>
|
|
8315
9152
|
</tr>
|
|
8316
9153
|
</ng-template>
|
|
8317
9154
|
</p-table>
|
|
@@ -9250,7 +10087,7 @@ class DiscussionComponent {
|
|
|
9250
10087
|
</div>
|
|
9251
10088
|
}
|
|
9252
10089
|
</section>
|
|
9253
|
-
`, 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 }); }
|
|
9254
10091
|
}
|
|
9255
10092
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionComponent, decorators: [{
|
|
9256
10093
|
type: Component,
|
|
@@ -10837,6 +11674,15 @@ function oipModulesRoute(path = 'modules') {
|
|
|
10837
11674
|
data: { requireAdmin: true }
|
|
10838
11675
|
};
|
|
10839
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
|
+
}
|
|
10840
11686
|
/** Discussion module. The path must keep an `:id` segment. */
|
|
10841
11687
|
function oipDiscussionRoute(path = 'discussion/:id') {
|
|
10842
11688
|
return {
|
|
@@ -10904,6 +11750,7 @@ function provideOipRoutes(options = {}) {
|
|
|
10904
11750
|
builtInRoute(features.config, oipConfigRoute, children);
|
|
10905
11751
|
builtInRoute(features.applications, oipApplicationsRoute, children);
|
|
10906
11752
|
builtInRoute(features.modules, oipModulesRoute, children);
|
|
11753
|
+
builtInRoute(features.sessions, oipSessionsRoute, children);
|
|
10907
11754
|
builtInRoute(features.discussion, oipDiscussionRoute, children);
|
|
10908
11755
|
builtInRoute(features.dbMigration, oipDbMigrationRoute, children);
|
|
10909
11756
|
builtInRoute(features.iframeModule, oipIframeModuleRoute, children);
|
|
@@ -10943,5 +11790,5 @@ function provideOipRoutes(options = {}) {
|
|
|
10943
11790
|
* Generated bundle index. Do not edit.
|
|
10944
11791
|
*/
|
|
10945
11792
|
|
|
10946
|
-
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 };
|
|
10947
11794
|
//# sourceMappingURL=oip-common.mjs.map
|