oip-common 0.5.0 → 0.6.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 +1141 -71
- package/fesm2022/oip-common.mjs.map +1 -1
- package/index.d.ts +164 -14
- package/package.json +1 -1
- package/templates/http-client.ejs +34 -8
- package/assets/i18n/app-modules.en.json +0 -30
- package/assets/i18n/app-modules.ru.json +0 -30
- package/assets/i18n/applications.en.json +0 -46
- package/assets/i18n/applications.ru.json +0 -46
- package/assets/i18n/config.en.json +0 -18
- package/assets/i18n/config.ru.json +0 -18
- package/assets/i18n/db-migration.en.json +0 -19
- package/assets/i18n/db-migration.ru.json +0 -19
- package/assets/i18n/en.json +0 -138
- package/assets/i18n/iframe-module.en.json +0 -10
- package/assets/i18n/iframe-module.ru.json +0 -10
- package/assets/i18n/notfound.en.json +0 -8
- package/assets/i18n/notfound.ru.json +0 -8
- package/assets/i18n/ru.json +0 -282
package/fesm2022/oip-common.mjs
CHANGED
|
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, inject, signal, computed, effect, DestroyRef, ChangeDetectorRef, Component, Input, InjectionToken, PLATFORM_ID, ViewChild, HostBinding, EventEmitter, Output, 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 i2$
|
|
5
|
+
import * as i2$3 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
|
-
import * as i2$
|
|
8
|
+
import * as i2$4 from '@ngx-translate/core';
|
|
9
9
|
import { TranslateService, TranslatePipe, TranslateModule, TranslateLoader } from '@ngx-translate/core';
|
|
10
10
|
import * as i1$5 from '@angular/router';
|
|
11
|
-
import {
|
|
11
|
+
import { Router, ActivatedRoute, RouterModule, NavigationEnd, RouterLinkActive, RouterLink } from '@angular/router';
|
|
12
12
|
import { tap as tap$1, catchError, filter, distinctUntilChanged, switchMap, map, take } from 'rxjs/operators';
|
|
13
13
|
import { Title, DomSanitizer } from '@angular/platform-browser';
|
|
14
14
|
import { PrimeNG } from 'primeng/config';
|
|
@@ -49,11 +49,11 @@ import * as i3$2 from 'primeng/menu';
|
|
|
49
49
|
import { MenuModule } from 'primeng/menu';
|
|
50
50
|
import * as i1$6 from 'primeng/contextmenu';
|
|
51
51
|
import { ContextMenuModule, ContextMenu } from 'primeng/contextmenu';
|
|
52
|
-
import * as i3$
|
|
52
|
+
import * as i3$4 from 'primeng/dialog';
|
|
53
53
|
import { DialogModule } from 'primeng/dialog';
|
|
54
54
|
import * as i4$1 from 'primeng/inputtext';
|
|
55
55
|
import { InputTextModule, InputText } from 'primeng/inputtext';
|
|
56
|
-
import * as
|
|
56
|
+
import * as i2$2 from 'primeng/ripple';
|
|
57
57
|
import { RippleModule } from 'primeng/ripple';
|
|
58
58
|
import * as i5 from 'primeng/select';
|
|
59
59
|
import { SelectModule, Select } from 'primeng/select';
|
|
@@ -62,7 +62,7 @@ import { FileUploadModule } from 'primeng/fileupload';
|
|
|
62
62
|
import { ImageModule } from 'primeng/image';
|
|
63
63
|
import * as i1$8 from 'primeng/table';
|
|
64
64
|
import { TableModule } from 'primeng/table';
|
|
65
|
-
import * as i2$
|
|
65
|
+
import * as i2$5 from 'primeng/toggleswitch';
|
|
66
66
|
import { ToggleSwitchModule } from 'primeng/toggleswitch';
|
|
67
67
|
import { TextareaModule, Textarea } from 'primeng/textarea';
|
|
68
68
|
import * as i5$1 from 'primeng/toolbar';
|
|
@@ -538,10 +538,539 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
538
538
|
args: [{ providedIn: 'root' }]
|
|
539
539
|
}], ctorParameters: () => [] });
|
|
540
540
|
|
|
541
|
+
var msgService$1 = {
|
|
542
|
+
success: "Success",
|
|
543
|
+
info: "Info",
|
|
544
|
+
warn: "Warn",
|
|
545
|
+
error: "Error",
|
|
546
|
+
secondary: "Secondary"
|
|
547
|
+
};
|
|
548
|
+
var securityComponent$1 = {
|
|
549
|
+
security: "Security",
|
|
550
|
+
save: "Save",
|
|
551
|
+
savedSecurity: "Security settings saved",
|
|
552
|
+
selectRoles: "Select roles"
|
|
553
|
+
};
|
|
554
|
+
var profileComponent$1 = {
|
|
555
|
+
changePhoto: "Upload Photo",
|
|
556
|
+
successfullyUploaded: "Uploaded successfully",
|
|
557
|
+
failedToLoadPhoto: "Failed to load user photo"
|
|
558
|
+
};
|
|
559
|
+
var configComponent$1 = {
|
|
560
|
+
profile: "Profile",
|
|
561
|
+
photo: "Photo",
|
|
562
|
+
usePhoto256x256Pixel: "Use a 256x256 pixel photo",
|
|
563
|
+
localization: "Language",
|
|
564
|
+
selectLanguage: "Select language"
|
|
565
|
+
};
|
|
566
|
+
var baseComponent$1 = {
|
|
567
|
+
content: "Content",
|
|
568
|
+
settings: "Settings",
|
|
569
|
+
security: "Security",
|
|
570
|
+
success: "Saved successfully"
|
|
571
|
+
};
|
|
572
|
+
var menuComponent$1 = {
|
|
573
|
+
all: "All",
|
|
574
|
+
"new": "Add"
|
|
575
|
+
};
|
|
576
|
+
var menuItemEditDialogComponent$1 = {
|
|
577
|
+
header: "Edit menu item",
|
|
578
|
+
parentLabel: "Parent item",
|
|
579
|
+
label: "Label",
|
|
580
|
+
module: "Module",
|
|
581
|
+
selectModule: "Select module",
|
|
582
|
+
icon: "Icon",
|
|
583
|
+
cancel: "Cancel",
|
|
584
|
+
save: "Save",
|
|
585
|
+
security: "Read access"
|
|
586
|
+
};
|
|
587
|
+
var menuItemCreateDialogComponent$1 = {
|
|
588
|
+
header: "New menu item",
|
|
589
|
+
parentLabel: "Parent item",
|
|
590
|
+
label: "Label",
|
|
591
|
+
module: "Module",
|
|
592
|
+
selectModule: "Select module",
|
|
593
|
+
searchModule: "Search module",
|
|
594
|
+
icon: "Icon",
|
|
595
|
+
cancel: "Cancel",
|
|
596
|
+
save: "Save"
|
|
597
|
+
};
|
|
598
|
+
var unauthorized$1 = {
|
|
599
|
+
welcomeToOip: "Welcome to OIP!",
|
|
600
|
+
signInToContinue: "Sign in to continue",
|
|
601
|
+
signIn: "Sign In"
|
|
602
|
+
};
|
|
603
|
+
var menuItemComponent$1 = {
|
|
604
|
+
"new": "Add",
|
|
605
|
+
edit: "Edit",
|
|
606
|
+
"delete": "Delete",
|
|
607
|
+
deleteItemConfirmHeader: "Delete",
|
|
608
|
+
deleteItemConfirmMessage: "Are you sure you want to delete the item?",
|
|
609
|
+
deleteItemSuccessMessage: "Deleted successfully",
|
|
610
|
+
deleteItemConfirmRejectButtonPropsLabel: "Cancel",
|
|
611
|
+
deleteItemConfirmAcceptButtonPropsLabel: "Delete",
|
|
612
|
+
moveUp: "Move up",
|
|
613
|
+
moveDown: "Move down"
|
|
614
|
+
};
|
|
615
|
+
var topbar$1 = {
|
|
616
|
+
logout: "Logout",
|
|
617
|
+
logoutConfirmHeader: "Logout",
|
|
618
|
+
logoutConfirmMessage: "Are you sure you want to logout?",
|
|
619
|
+
logoutConfirmCancel: "Cancel",
|
|
620
|
+
logoutConfirmAccept: "Logout",
|
|
621
|
+
profile: "Profile",
|
|
622
|
+
applications: "Applications"
|
|
623
|
+
};
|
|
624
|
+
var userNotifications$1 = {
|
|
625
|
+
title: "Notifications",
|
|
626
|
+
empty: "No unread notifications",
|
|
627
|
+
refresh: "Refresh",
|
|
628
|
+
markAsRead: "Read",
|
|
629
|
+
markedAsRead: "Notification marked as read"
|
|
630
|
+
};
|
|
631
|
+
var discussionComponent$1 = {
|
|
632
|
+
writeCommentPlaceholder: "Write a comment. Use @email or @first.last for mentions.",
|
|
633
|
+
mentionSuggestions: "Mention suggestions",
|
|
634
|
+
edit: "Edit",
|
|
635
|
+
preview: "Preview",
|
|
636
|
+
attachFiles: "Attach files",
|
|
637
|
+
send: "Send",
|
|
638
|
+
loadingComments: "Loading comments...",
|
|
639
|
+
noCommentsYet: "No comments yet.",
|
|
640
|
+
edited: "Edited",
|
|
641
|
+
editCommentPlaceholder: "Edit comment",
|
|
642
|
+
addAttachment: "Add attachment",
|
|
643
|
+
save: "Save",
|
|
644
|
+
cancel: "Cancel",
|
|
645
|
+
editHistory: "Edit history",
|
|
646
|
+
loadingHistory: "Loading history...",
|
|
647
|
+
before: "Before",
|
|
648
|
+
after: "After",
|
|
649
|
+
warning: "Warning",
|
|
650
|
+
"delete": "Delete",
|
|
651
|
+
confirmDeleteComment: "Are you sure you want to delete this comment?",
|
|
652
|
+
confirmDeleteFile: "Are you sure you want to delete the file \"{{fileName}}\"?",
|
|
653
|
+
units: {
|
|
654
|
+
bytes: "B",
|
|
655
|
+
kilobytes: "KB",
|
|
656
|
+
megabytes: "MB"
|
|
657
|
+
},
|
|
658
|
+
errors: {
|
|
659
|
+
loadComments: "Failed to load comments.",
|
|
660
|
+
createComment: "Failed to create comment.",
|
|
661
|
+
updateComment: "Failed to update comment.",
|
|
662
|
+
loadEditHistory: "Failed to load edit history.",
|
|
663
|
+
uploadAttachment: "Failed to upload attachment.",
|
|
664
|
+
deleteComment: "Failed to delete comment.",
|
|
665
|
+
deleteAttachment: "Failed to delete attachment.",
|
|
666
|
+
downloadAttachment: "Failed to download attachment.",
|
|
667
|
+
updateReaction: "Failed to update reaction.",
|
|
668
|
+
addReaction: "Failed to add reaction."
|
|
669
|
+
}
|
|
670
|
+
};
|
|
671
|
+
var primeng$1 = "";
|
|
672
|
+
var en$6 = {
|
|
673
|
+
"app-configurator": {
|
|
674
|
+
primary: "Primary",
|
|
675
|
+
surface: "Surface",
|
|
676
|
+
presets: "Presets",
|
|
677
|
+
menuMode: "Menu Mode"
|
|
678
|
+
},
|
|
679
|
+
msgService: msgService$1,
|
|
680
|
+
securityComponent: securityComponent$1,
|
|
681
|
+
profileComponent: profileComponent$1,
|
|
682
|
+
configComponent: configComponent$1,
|
|
683
|
+
baseComponent: baseComponent$1,
|
|
684
|
+
menuComponent: menuComponent$1,
|
|
685
|
+
menuItemEditDialogComponent: menuItemEditDialogComponent$1,
|
|
686
|
+
menuItemCreateDialogComponent: menuItemCreateDialogComponent$1,
|
|
687
|
+
unauthorized: unauthorized$1,
|
|
688
|
+
menuItemComponent: menuItemComponent$1,
|
|
689
|
+
topbar: topbar$1,
|
|
690
|
+
userNotifications: userNotifications$1,
|
|
691
|
+
discussionComponent: discussionComponent$1,
|
|
692
|
+
primeng: primeng$1
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
var msgService = {
|
|
696
|
+
success: "Успешно",
|
|
697
|
+
info: "Информация",
|
|
698
|
+
warn: "Внимание",
|
|
699
|
+
error: "Ошибка",
|
|
700
|
+
secondary: "Вспомогательный"
|
|
701
|
+
};
|
|
702
|
+
var securityComponent = {
|
|
703
|
+
security: "Безопасность",
|
|
704
|
+
save: "Сохранить",
|
|
705
|
+
savedSecurity: "Настройки сохранены",
|
|
706
|
+
selectRoles: "Выберите роли"
|
|
707
|
+
};
|
|
708
|
+
var profileComponent = {
|
|
709
|
+
changePhoto: "Загрузить фото",
|
|
710
|
+
successfullyUploaded: "Загружено",
|
|
711
|
+
failedToLoadPhoto: "Не удалось загрузить фото пользователя"
|
|
712
|
+
};
|
|
713
|
+
var configComponent = {
|
|
714
|
+
profile: "Профиль",
|
|
715
|
+
photo: "Фото",
|
|
716
|
+
usePhoto256x256Pixel: "Используйте фото 256х256 пикселей",
|
|
717
|
+
localization: "Язык",
|
|
718
|
+
selectLanguage: "Выберите язык"
|
|
719
|
+
};
|
|
720
|
+
var baseComponent = {
|
|
721
|
+
content: "Содержимое",
|
|
722
|
+
settings: "Настройки",
|
|
723
|
+
security: "Безопасность",
|
|
724
|
+
success: "Сохранено"
|
|
725
|
+
};
|
|
726
|
+
var menuComponent = {
|
|
727
|
+
all: "Все",
|
|
728
|
+
"new": "Добавить"
|
|
729
|
+
};
|
|
730
|
+
var menuItemEditDialogComponent = {
|
|
731
|
+
header: "Редактировать элемент меню",
|
|
732
|
+
parentLabel: "Родительский узел",
|
|
733
|
+
label: "Имя",
|
|
734
|
+
module: "Модуль",
|
|
735
|
+
selectModule: "Выберите модуль",
|
|
736
|
+
icon: "Иконка",
|
|
737
|
+
cancel: "Отмена",
|
|
738
|
+
save: "Сохранить",
|
|
739
|
+
security: "Доступ на чтение"
|
|
740
|
+
};
|
|
741
|
+
var menuItemCreateDialogComponent = {
|
|
742
|
+
header: "Новый элемент меню",
|
|
743
|
+
parentLabel: "Родительский узел",
|
|
744
|
+
label: "Имя",
|
|
745
|
+
module: "Модуль",
|
|
746
|
+
selectModule: "Выберите модуль",
|
|
747
|
+
searchModule: "Поиск модуля",
|
|
748
|
+
icon: "Иконка",
|
|
749
|
+
cancel: "Отмена",
|
|
750
|
+
save: "Сохранить"
|
|
751
|
+
};
|
|
752
|
+
var unauthorized = {
|
|
753
|
+
welcomeToOip: "Добро пожаловать в OIP!",
|
|
754
|
+
signInToContinue: "Войдите чтобы продолжить",
|
|
755
|
+
signIn: "Войти"
|
|
756
|
+
};
|
|
757
|
+
var menuItemComponent = {
|
|
758
|
+
"new": "Добавить",
|
|
759
|
+
edit: "Редактировать",
|
|
760
|
+
"delete": "Удалить",
|
|
761
|
+
deleteItemConfirmHeader: "Удаление",
|
|
762
|
+
deleteItemConfirmMessage: "Вы уверены что хотите удалить элемент?",
|
|
763
|
+
deleteItemSuccessMessage: "Успешно удалено",
|
|
764
|
+
deleteItemConfirmRejectButtonPropsLabel: "Отмена",
|
|
765
|
+
deleteItemConfirmAcceptButtonPropsLabel: "Удалить",
|
|
766
|
+
moveUp: "Вверх",
|
|
767
|
+
moveDown: "Вниз"
|
|
768
|
+
};
|
|
769
|
+
var topbar = {
|
|
770
|
+
logout: "Выход",
|
|
771
|
+
logoutConfirmHeader: "Выход",
|
|
772
|
+
logoutConfirmMessage: "Вы уверены, что хотите выйти?",
|
|
773
|
+
logoutConfirmCancel: "Отмена",
|
|
774
|
+
logoutConfirmAccept: "Выйти",
|
|
775
|
+
profile: "Профиль",
|
|
776
|
+
applications: "Приложения"
|
|
777
|
+
};
|
|
778
|
+
var userNotifications = {
|
|
779
|
+
title: "Оповещения",
|
|
780
|
+
empty: "Непрочитанных оповещений нет",
|
|
781
|
+
refresh: "Обновить",
|
|
782
|
+
markAsRead: "Прочитано",
|
|
783
|
+
markedAsRead: "Оповещение отмечено прочитанным"
|
|
784
|
+
};
|
|
785
|
+
var discussionComponent = {
|
|
786
|
+
writeCommentPlaceholder: "Напишите комментарий. Используйте @email или @first.last для упоминаний.",
|
|
787
|
+
mentionSuggestions: "Варианты упоминаний",
|
|
788
|
+
edit: "Редактировать",
|
|
789
|
+
preview: "Предпросмотр",
|
|
790
|
+
attachFiles: "Прикрепить файлы",
|
|
791
|
+
send: "Отправить",
|
|
792
|
+
loadingComments: "Загрузка комментариев...",
|
|
793
|
+
noCommentsYet: "Комментариев пока нет.",
|
|
794
|
+
edited: "Изменено",
|
|
795
|
+
editCommentPlaceholder: "Изменить комментарий",
|
|
796
|
+
addAttachment: "Добавить вложение",
|
|
797
|
+
save: "Сохранить",
|
|
798
|
+
cancel: "Отмена",
|
|
799
|
+
editHistory: "История изменений",
|
|
800
|
+
loadingHistory: "Загрузка истории...",
|
|
801
|
+
before: "До",
|
|
802
|
+
after: "После",
|
|
803
|
+
warning: "Предупреждение",
|
|
804
|
+
"delete": "Удалить",
|
|
805
|
+
confirmDeleteComment: "Вы уверены, что хотите удалить этот комментарий?",
|
|
806
|
+
confirmDeleteFile: "Вы уверены, что хотите удалить файл \"{{fileName}}\"?",
|
|
807
|
+
units: {
|
|
808
|
+
bytes: "Б",
|
|
809
|
+
kilobytes: "КБ",
|
|
810
|
+
megabytes: "МБ"
|
|
811
|
+
},
|
|
812
|
+
errors: {
|
|
813
|
+
loadComments: "Не удалось загрузить комментарии.",
|
|
814
|
+
createComment: "Не удалось создать комментарий.",
|
|
815
|
+
updateComment: "Не удалось обновить комментарий.",
|
|
816
|
+
loadEditHistory: "Не удалось загрузить историю изменений.",
|
|
817
|
+
uploadAttachment: "Не удалось загрузить вложение.",
|
|
818
|
+
deleteComment: "Не удалось удалить комментарий.",
|
|
819
|
+
deleteAttachment: "Не удалось удалить вложение.",
|
|
820
|
+
downloadAttachment: "Не удалось скачать вложение.",
|
|
821
|
+
updateReaction: "Не удалось обновить реакцию.",
|
|
822
|
+
addReaction: "Не удалось добавить реакцию."
|
|
823
|
+
}
|
|
824
|
+
};
|
|
825
|
+
var primeng = {
|
|
826
|
+
accept: "Да",
|
|
827
|
+
addRule: "Добавить правило",
|
|
828
|
+
am: "до полудня",
|
|
829
|
+
apply: "Принять",
|
|
830
|
+
cancel: "Отмена",
|
|
831
|
+
choose: "Выбрать",
|
|
832
|
+
chooseDate: "Выбрать дату",
|
|
833
|
+
chooseMonth: "Выбрать месяц",
|
|
834
|
+
chooseYear: "Выбрать год",
|
|
835
|
+
clear: "Очистить",
|
|
836
|
+
completed: "Завершено",
|
|
837
|
+
contains: "Содержит",
|
|
838
|
+
custom: "Пользовательский",
|
|
839
|
+
dateAfter: "Дата после",
|
|
840
|
+
dateBefore: "Дата до",
|
|
841
|
+
dateFormat: "dd.mm.yy",
|
|
842
|
+
dateIs: "Дата равна",
|
|
843
|
+
dateIsNot: "Дата не равна",
|
|
844
|
+
dayNames: [
|
|
845
|
+
"Воскресенье",
|
|
846
|
+
"Понедельник",
|
|
847
|
+
"Вторник",
|
|
848
|
+
"Среда",
|
|
849
|
+
"Четверг",
|
|
850
|
+
"Пятница",
|
|
851
|
+
"Суббота"
|
|
852
|
+
],
|
|
853
|
+
dayNamesMin: [
|
|
854
|
+
"Вс",
|
|
855
|
+
"Пн",
|
|
856
|
+
"Вт",
|
|
857
|
+
"Ср",
|
|
858
|
+
"Чт",
|
|
859
|
+
"Пт",
|
|
860
|
+
"Сб"
|
|
861
|
+
],
|
|
862
|
+
dayNamesShort: [
|
|
863
|
+
"Вск",
|
|
864
|
+
"Пнд",
|
|
865
|
+
"Втр",
|
|
866
|
+
"Срд",
|
|
867
|
+
"Чтв",
|
|
868
|
+
"Птн",
|
|
869
|
+
"Сбт"
|
|
870
|
+
],
|
|
871
|
+
emptyFilterMessage: "Результатов не найдено",
|
|
872
|
+
emptyMessage: "Нет доступных вариантов",
|
|
873
|
+
emptySearchMessage: "Результатов не найдено",
|
|
874
|
+
emptySelectionMessage: "Нет выбранного элемента",
|
|
875
|
+
endsWith: "Заканчивается",
|
|
876
|
+
equals: "Равно",
|
|
877
|
+
fileChosenMessage: "{0} файлов",
|
|
878
|
+
fileSizeTypes: [
|
|
879
|
+
"Б",
|
|
880
|
+
"Кб",
|
|
881
|
+
"Мб",
|
|
882
|
+
"Гб",
|
|
883
|
+
"Тб",
|
|
884
|
+
"Пб",
|
|
885
|
+
"Эб",
|
|
886
|
+
"Зб",
|
|
887
|
+
"Йб"
|
|
888
|
+
],
|
|
889
|
+
filter: "Фильтр",
|
|
890
|
+
firstDayOfWeek: 1,
|
|
891
|
+
gt: "Более чем",
|
|
892
|
+
gte: "Более чем или равно",
|
|
893
|
+
lt: "Меньше чем",
|
|
894
|
+
lte: "Меньше чем или равно",
|
|
895
|
+
matchAll: "Сопоставить все",
|
|
896
|
+
matchAny: "Совпадение с любым",
|
|
897
|
+
medium: "Нормальный",
|
|
898
|
+
monthNames: [
|
|
899
|
+
"Январь",
|
|
900
|
+
"Февраль",
|
|
901
|
+
"Март",
|
|
902
|
+
"Апрель",
|
|
903
|
+
"Май",
|
|
904
|
+
"Июнь",
|
|
905
|
+
"Июль",
|
|
906
|
+
"Август",
|
|
907
|
+
"Сентябрь",
|
|
908
|
+
"Октябрь",
|
|
909
|
+
"Ноябрь",
|
|
910
|
+
"Декабрь"
|
|
911
|
+
],
|
|
912
|
+
monthNamesShort: [
|
|
913
|
+
"Янв",
|
|
914
|
+
"Фев",
|
|
915
|
+
"Мар",
|
|
916
|
+
"Апр",
|
|
917
|
+
"Май",
|
|
918
|
+
"Июн",
|
|
919
|
+
"Июл",
|
|
920
|
+
"Авг",
|
|
921
|
+
"Сен",
|
|
922
|
+
"Окт",
|
|
923
|
+
"Ноя",
|
|
924
|
+
"Дек"
|
|
925
|
+
],
|
|
926
|
+
nextDecade: "Следующее десятилетие",
|
|
927
|
+
nextHour: "Следующий час",
|
|
928
|
+
nextMinute: "Следующая минута",
|
|
929
|
+
nextMonth: "Следующий месяц",
|
|
930
|
+
nextSecond: "Следующая секунда",
|
|
931
|
+
nextYear: "Следующий год",
|
|
932
|
+
noFileChosenMessage: "Файл не выбран",
|
|
933
|
+
noFilter: "Нет фильтра",
|
|
934
|
+
notContains: "Не содержит",
|
|
935
|
+
notEquals: "Не равно",
|
|
936
|
+
now: "Сейчас",
|
|
937
|
+
passwordPrompt: "Введите пароль",
|
|
938
|
+
pending: "В ожидании",
|
|
939
|
+
pm: "после полудня",
|
|
940
|
+
prevDecade: "Предыдущее десятилетие",
|
|
941
|
+
prevHour: "Предыдущий час",
|
|
942
|
+
prevMinute: "Предыдущая минута",
|
|
943
|
+
prevMonth: "Предыдущий месяц",
|
|
944
|
+
prevSecond: "Предыдущая секунда",
|
|
945
|
+
prevYear: "Предыдущий год",
|
|
946
|
+
reject: "Нет",
|
|
947
|
+
removeRule: "Удалить правило",
|
|
948
|
+
searchMessage: "{0} результатов доступно",
|
|
949
|
+
selectionMessage: "{0} элементов выбрано",
|
|
950
|
+
showMonthAfterYear: false,
|
|
951
|
+
startsWith: "Начинается с",
|
|
952
|
+
strong: "Хороший",
|
|
953
|
+
today: "Сегодня",
|
|
954
|
+
upload: "Загрузить",
|
|
955
|
+
weak: "Простой",
|
|
956
|
+
weekHeader: "Нед.",
|
|
957
|
+
aria: {
|
|
958
|
+
cancelEdit: "Отменить правку",
|
|
959
|
+
close: "Закрыть",
|
|
960
|
+
collapseLabel: "Свернуть",
|
|
961
|
+
collapseRow: "Свернуть строку",
|
|
962
|
+
editRow: "Редактировать строку",
|
|
963
|
+
expandLabel: "Развернуть",
|
|
964
|
+
expandRow: "Развернуть строку",
|
|
965
|
+
falseLabel: "Неверно",
|
|
966
|
+
filterConstraint: "Ограничение фильтра",
|
|
967
|
+
filterOperator: "Оператор фильтра",
|
|
968
|
+
firstPageLabel: "Первая страница",
|
|
969
|
+
gridView: "В виде сетки",
|
|
970
|
+
hideFilterMenu: "Скрыть меню фильтра",
|
|
971
|
+
jumpToPageDropdownLabel: "Перейти к раскрывающемуся списку страниц",
|
|
972
|
+
jumpToPageInputLabel: "Перейти к вводу страницы",
|
|
973
|
+
lastPageLabel: "Последняя страница",
|
|
974
|
+
listLabel: "Список опций",
|
|
975
|
+
listView: "В виде списка",
|
|
976
|
+
moveAllToSource: "Переместить всё в источник",
|
|
977
|
+
moveAllToTarget: "Переместить всё в приёмник",
|
|
978
|
+
moveBottom: "Переместить в конец",
|
|
979
|
+
moveDown: "Переместить вниз",
|
|
980
|
+
moveTop: "Переместить в начало",
|
|
981
|
+
moveToSource: "Переместить в источник",
|
|
982
|
+
moveToTarget: "Переместить в приёмник",
|
|
983
|
+
moveUp: "Переместить вверх",
|
|
984
|
+
navigation: "Навигация",
|
|
985
|
+
next: "Следующий",
|
|
986
|
+
nextPageLabel: "Следующая страница",
|
|
987
|
+
nullLabel: "Не выбран",
|
|
988
|
+
otpLabel: "Введите символ одноразового пароля {0}",
|
|
989
|
+
pageLabel: "{page}",
|
|
990
|
+
passwordHide: "Скрыть пароль",
|
|
991
|
+
passwordShow: "Показать пароль",
|
|
992
|
+
previous: "Предыдущий",
|
|
993
|
+
prevPageLabel: "Предыдущая страница",
|
|
994
|
+
removeLabel: "Удалить",
|
|
995
|
+
rotateLeft: "Повернуть влево",
|
|
996
|
+
rotateRight: "Повернуть вправо",
|
|
997
|
+
rowsPerPageLabel: "Строк на странице",
|
|
998
|
+
saveEdit: "Сохранить правку",
|
|
999
|
+
scrollTop: "Прокрутить в начало",
|
|
1000
|
+
selectAll: "Выбрать все строки",
|
|
1001
|
+
selectLabel: "Выбрать",
|
|
1002
|
+
selectRow: "Выбрать строку",
|
|
1003
|
+
showFilterMenu: "Показать меню фильтра",
|
|
1004
|
+
slide: "Слайд",
|
|
1005
|
+
slideNumber: "{slideNumber}",
|
|
1006
|
+
star: "1 звезда",
|
|
1007
|
+
stars: "{star} звёзд",
|
|
1008
|
+
trueLabel: "Верно",
|
|
1009
|
+
unselectAll: "Отменить выбор всех строк",
|
|
1010
|
+
unselectLabel: "Отменить выбор",
|
|
1011
|
+
unselectRow: "Отменить выбор строки",
|
|
1012
|
+
zoomImage: "Увеличить изображение",
|
|
1013
|
+
zoomIn: "Увеличить",
|
|
1014
|
+
zoomOut: "Уменьшить"
|
|
1015
|
+
}
|
|
1016
|
+
};
|
|
1017
|
+
var ru$6 = {
|
|
1018
|
+
"app-configurator": {
|
|
1019
|
+
primary: "Основной",
|
|
1020
|
+
surface: "Фон",
|
|
1021
|
+
presets: "Стиль",
|
|
1022
|
+
menuMode: "Режим меню"
|
|
1023
|
+
},
|
|
1024
|
+
msgService: msgService,
|
|
1025
|
+
securityComponent: securityComponent,
|
|
1026
|
+
profileComponent: profileComponent,
|
|
1027
|
+
configComponent: configComponent,
|
|
1028
|
+
baseComponent: baseComponent,
|
|
1029
|
+
menuComponent: menuComponent,
|
|
1030
|
+
menuItemEditDialogComponent: menuItemEditDialogComponent,
|
|
1031
|
+
menuItemCreateDialogComponent: menuItemCreateDialogComponent,
|
|
1032
|
+
unauthorized: unauthorized,
|
|
1033
|
+
menuItemComponent: menuItemComponent,
|
|
1034
|
+
topbar: topbar,
|
|
1035
|
+
userNotifications: userNotifications,
|
|
1036
|
+
discussionComponent: discussionComponent,
|
|
1037
|
+
primeng: primeng
|
|
1038
|
+
};
|
|
1039
|
+
|
|
1040
|
+
/**
|
|
1041
|
+
* Global dictionaries shared by all components. They are bundled with the library,
|
|
1042
|
+
* so the application never requests `assets/i18n/{lang}.json`.
|
|
1043
|
+
*/
|
|
1044
|
+
const globalTranslations = { en: en$6, ru: ru$6 };
|
|
541
1045
|
/**
|
|
542
1046
|
* Service for managing translation loading in the application
|
|
543
1047
|
*/
|
|
544
1048
|
class L10nService {
|
|
1049
|
+
/**
|
|
1050
|
+
* Translations bundled with components, registered at module load time.
|
|
1051
|
+
*/
|
|
1052
|
+
static { this.staticTranslations = new Map(); }
|
|
1053
|
+
/**
|
|
1054
|
+
* Registers translations bundled with a component instead of loading them over HTTP.
|
|
1055
|
+
* Namespaces are taken from the root keys of the passed dictionaries.
|
|
1056
|
+
* Components derived from <c>BaseModuleComponent</c> don't call it directly - it is enough
|
|
1057
|
+
* to declare the static <c>translations</c> field.
|
|
1058
|
+
* @param byLang - Translations grouped by language code
|
|
1059
|
+
* @param namespace - Explicit namespace, needed when the dictionaries are still empty
|
|
1060
|
+
*/
|
|
1061
|
+
static registerTranslations(byLang, namespace) {
|
|
1062
|
+
if (!byLang) {
|
|
1063
|
+
return;
|
|
1064
|
+
}
|
|
1065
|
+
if (namespace) {
|
|
1066
|
+
L10nService.staticTranslations.set(namespace, byLang);
|
|
1067
|
+
}
|
|
1068
|
+
for (const translations of Object.values(byLang)) {
|
|
1069
|
+
for (const namespace of Object.keys(translations)) {
|
|
1070
|
+
L10nService.staticTranslations.set(namespace, byLang);
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
545
1074
|
constructor() {
|
|
546
1075
|
this.loadedTranslations = new Set();
|
|
547
1076
|
this.loadingTranslations = new Map();
|
|
@@ -549,6 +1078,18 @@ class L10nService {
|
|
|
549
1078
|
this.translateService = inject(TranslateService);
|
|
550
1079
|
this.primeNg = inject(PrimeNG);
|
|
551
1080
|
this.layoutService = inject(LayoutService);
|
|
1081
|
+
// Global dictionaries are available before the first `use()` call, so TranslateHttpLoader is never asked for them.
|
|
1082
|
+
L10nService.registerTranslations(globalTranslations);
|
|
1083
|
+
Object.entries(globalTranslations).forEach(([lang, translations]) => this.mergeTranslation(lang, translations));
|
|
1084
|
+
// Static translations are merged once per language, so they have to be re-merged on every language change.
|
|
1085
|
+
this.translateService.onLangChange.subscribe((event) => {
|
|
1086
|
+
L10nService.staticTranslations.forEach((byLang) => {
|
|
1087
|
+
const translations = byLang[event.lang];
|
|
1088
|
+
if (translations) {
|
|
1089
|
+
this.mergeTranslation(event.lang, translations);
|
|
1090
|
+
}
|
|
1091
|
+
});
|
|
1092
|
+
});
|
|
552
1093
|
}
|
|
553
1094
|
/**
|
|
554
1095
|
* Loads translations for a specific component
|
|
@@ -573,8 +1114,7 @@ class L10nService {
|
|
|
573
1114
|
return loading;
|
|
574
1115
|
}
|
|
575
1116
|
const request = this.httpClient.get(url).pipe(tap((translations) => {
|
|
576
|
-
|
|
577
|
-
this.translateService.setTranslation(selectedLang, { ...current, ...translations }, true);
|
|
1117
|
+
this.mergeTranslation(selectedLang, translations);
|
|
578
1118
|
this.loadedTranslations.add(key);
|
|
579
1119
|
this.loadingTranslations.delete(key);
|
|
580
1120
|
}), shareReplay(1));
|
|
@@ -606,13 +1146,21 @@ class L10nService {
|
|
|
606
1146
|
if (this.loadedTranslations.has(key)) {
|
|
607
1147
|
return of(null);
|
|
608
1148
|
}
|
|
1149
|
+
// Translations bundled with the component - no HTTP request needed.
|
|
1150
|
+
const staticTranslations = L10nService.staticTranslations.get(component);
|
|
1151
|
+
if (staticTranslations) {
|
|
1152
|
+
const translations = staticTranslations[lang];
|
|
1153
|
+
if (translations) {
|
|
1154
|
+
this.mergeTranslation(lang, translations);
|
|
1155
|
+
}
|
|
1156
|
+
return of(null);
|
|
1157
|
+
}
|
|
609
1158
|
const loading = this.loadingTranslations.get(key);
|
|
610
1159
|
if (loading) {
|
|
611
1160
|
return loading;
|
|
612
1161
|
}
|
|
613
1162
|
const request = this.httpClient.get(`./assets/i18n/${component}.${lang}.json`).pipe(tap((translations) => {
|
|
614
|
-
|
|
615
|
-
this.translateService.setTranslation(lang, { ...current, ...translations }, true);
|
|
1163
|
+
this.mergeTranslation(lang, translations);
|
|
616
1164
|
this.loadedTranslations.add(key);
|
|
617
1165
|
this.loadingTranslations.delete(key);
|
|
618
1166
|
}), shareReplay(1));
|
|
@@ -626,6 +1174,15 @@ class L10nService {
|
|
|
626
1174
|
});
|
|
627
1175
|
return request;
|
|
628
1176
|
}
|
|
1177
|
+
/**
|
|
1178
|
+
* Merges a translation dictionary into the dictionary of the given language
|
|
1179
|
+
* @param lang - Language code
|
|
1180
|
+
* @param translations - Translations to merge
|
|
1181
|
+
*/
|
|
1182
|
+
mergeTranslation(lang, translations) {
|
|
1183
|
+
const current = this.translateService.translations[lang] || {};
|
|
1184
|
+
this.translateService.setTranslation(lang, { ...current, ...translations }, true);
|
|
1185
|
+
}
|
|
629
1186
|
/**
|
|
630
1187
|
* Changes the lang currently used
|
|
631
1188
|
*/
|
|
@@ -654,7 +1211,7 @@ class L10nService {
|
|
|
654
1211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: L10nService, decorators: [{
|
|
655
1212
|
type: Injectable,
|
|
656
1213
|
args: [{ providedIn: 'root' }]
|
|
657
|
-
}] });
|
|
1214
|
+
}], ctorParameters: () => [] });
|
|
658
1215
|
|
|
659
1216
|
class SecurityService {
|
|
660
1217
|
}
|
|
@@ -837,15 +1394,22 @@ class HttpClient {
|
|
|
837
1394
|
constructor() {
|
|
838
1395
|
this.securityService = inject(SecurityService);
|
|
839
1396
|
this.layoutService = inject(LayoutService);
|
|
1397
|
+
this.router = inject(Router);
|
|
840
1398
|
this.baseUrl = "";
|
|
841
|
-
this.securityWorker = () =>
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
:
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
1399
|
+
this.securityWorker = () => {
|
|
1400
|
+
const moduleInstanceId = this.getCurrentModuleInstanceId();
|
|
1401
|
+
return {
|
|
1402
|
+
headers: {
|
|
1403
|
+
"Accept-language": this.layoutService.language()
|
|
1404
|
+
? this.layoutService.language()
|
|
1405
|
+
: "en",
|
|
1406
|
+
"X-Timezone": this.layoutService.timeZone(),
|
|
1407
|
+
...(moduleInstanceId != null
|
|
1408
|
+
? { "X-Module-Instance-Id": String(moduleInstanceId) }
|
|
1409
|
+
: {}),
|
|
1410
|
+
},
|
|
1411
|
+
};
|
|
1412
|
+
};
|
|
849
1413
|
this.abortControllers = new Map();
|
|
850
1414
|
this.customFetch = (...fetchParams) => fetch(...fetchParams);
|
|
851
1415
|
this.baseApiParams = {
|
|
@@ -950,12 +1514,29 @@ class HttpClient {
|
|
|
950
1514
|
if (cancelToken) {
|
|
951
1515
|
this.abortControllers.delete(cancelToken);
|
|
952
1516
|
}
|
|
953
|
-
if (!response.ok)
|
|
1517
|
+
if (!response.ok) {
|
|
1518
|
+
this.authorizeOnUnauthorized(response, path);
|
|
954
1519
|
throw data;
|
|
1520
|
+
}
|
|
955
1521
|
return data.data;
|
|
956
1522
|
});
|
|
957
1523
|
};
|
|
958
1524
|
}
|
|
1525
|
+
/**
|
|
1526
|
+
* Reads the module instance id of the deepest activated route.
|
|
1527
|
+
* The backend uses it to check module instance rights on endpoints that do not carry the id in their contract.
|
|
1528
|
+
*/
|
|
1529
|
+
getCurrentModuleInstanceId() {
|
|
1530
|
+
// May run before the first navigation completes, when route snapshots are not available yet.
|
|
1531
|
+
let route = this.router.routerState?.root;
|
|
1532
|
+
let id = null;
|
|
1533
|
+
while (route) {
|
|
1534
|
+
id = route.snapshot?.paramMap?.get("id") ?? id;
|
|
1535
|
+
route = route.firstChild;
|
|
1536
|
+
}
|
|
1537
|
+
const parsed = id != null ? Number(id) : Number.NaN;
|
|
1538
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
1539
|
+
}
|
|
959
1540
|
encodeQueryParam(key, value) {
|
|
960
1541
|
const encodedKey = encodeURIComponent(key);
|
|
961
1542
|
return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`;
|
|
@@ -992,6 +1573,13 @@ class HttpClient {
|
|
|
992
1573
|
},
|
|
993
1574
|
};
|
|
994
1575
|
}
|
|
1576
|
+
authorizeOnUnauthorized(response, path) {
|
|
1577
|
+
if (response.status !== 401 ||
|
|
1578
|
+
path.includes("/api/security/create-auth-session")) {
|
|
1579
|
+
return;
|
|
1580
|
+
}
|
|
1581
|
+
this.securityService.authorize(`${window.location.pathname}${window.location.search}${window.location.hash}`);
|
|
1582
|
+
}
|
|
995
1583
|
async getCsrfRequestParams(method, path) {
|
|
996
1584
|
if (!method ||
|
|
997
1585
|
!["POST", "PUT", "PATCH", "DELETE"].includes(method.toUpperCase())) {
|
|
@@ -1163,6 +1751,8 @@ class BaseModuleComponent {
|
|
|
1163
1751
|
{ id: 'settings', icon: 'pi-cog', caption: '' },
|
|
1164
1752
|
{ id: 'security', icon: 'pi-lock', caption: '' }
|
|
1165
1753
|
];
|
|
1754
|
+
// Must run before the route subscription below asks L10nService for the translations.
|
|
1755
|
+
L10nService.registerTranslations(this.constructor.translations);
|
|
1166
1756
|
effect(() => {
|
|
1167
1757
|
const config = this.localSettings();
|
|
1168
1758
|
if (config) {
|
|
@@ -1171,6 +1761,8 @@ class BaseModuleComponent {
|
|
|
1171
1761
|
});
|
|
1172
1762
|
this.subscriptions.push(this.route.url.subscribe((url) => {
|
|
1173
1763
|
this.controller = url[0].path;
|
|
1764
|
+
// The route path is the translation namespace, register it before asking for translations.
|
|
1765
|
+
L10nService.registerTranslations(this.constructor.translations, this.controller);
|
|
1174
1766
|
this.l10n$ = this.l10nService.get(this.controller);
|
|
1175
1767
|
}));
|
|
1176
1768
|
this.subscriptions.push(this.route.paramMap.subscribe((params) => {
|
|
@@ -1257,11 +1849,13 @@ class BaseModuleComponent {
|
|
|
1257
1849
|
* Called whenever the module instance changes, including the first load.
|
|
1258
1850
|
* Derived components can override this to refresh module-specific data.
|
|
1259
1851
|
*/
|
|
1260
|
-
async onModuleInstanceChange() {
|
|
1852
|
+
async onModuleInstanceChange() {
|
|
1853
|
+
}
|
|
1261
1854
|
/**
|
|
1262
1855
|
* Called whenever current user rights for the active module instance are recalculated.
|
|
1263
1856
|
*/
|
|
1264
|
-
onSecurityRightsChange() {
|
|
1857
|
+
onSecurityRightsChange() {
|
|
1858
|
+
}
|
|
1265
1859
|
/**
|
|
1266
1860
|
* Starts watching current token roles and maps them to module instance security settings.
|
|
1267
1861
|
*/
|
|
@@ -1269,20 +1863,31 @@ class BaseModuleComponent {
|
|
|
1269
1863
|
this.rightsSubscription?.unsubscribe();
|
|
1270
1864
|
this.resetRightsState();
|
|
1271
1865
|
if (!controller || id == null) {
|
|
1272
|
-
return;
|
|
1273
|
-
}
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1866
|
+
return Promise.resolve();
|
|
1867
|
+
}
|
|
1868
|
+
return new Promise((resolve) => {
|
|
1869
|
+
let settled = false;
|
|
1870
|
+
const settle = () => {
|
|
1871
|
+
if (!settled) {
|
|
1872
|
+
settled = true;
|
|
1873
|
+
resolve();
|
|
1874
|
+
}
|
|
1875
|
+
};
|
|
1876
|
+
this.rightsSubscription = this.securityService.payload
|
|
1877
|
+
.pipe(switchMap((payload) => from(this.getSecurity(controller, id)).pipe(map((securitySettings) => ({ payload, securitySettings })))), takeUntilDestroyed(this.destroyRef))
|
|
1878
|
+
.subscribe({
|
|
1879
|
+
next: ({ payload, securitySettings }) => {
|
|
1880
|
+
const roles = payload?.realm_access?.roles ?? [];
|
|
1881
|
+
this.updateRightsState(roles, securitySettings);
|
|
1882
|
+
settle();
|
|
1883
|
+
},
|
|
1884
|
+
error: (error) => {
|
|
1885
|
+
this.securityRightsLoaded = true;
|
|
1886
|
+
console.error('Не удалось загрузить права', error);
|
|
1887
|
+
this.onSecurityRightsChange();
|
|
1888
|
+
settle();
|
|
1889
|
+
}
|
|
1890
|
+
});
|
|
1286
1891
|
});
|
|
1287
1892
|
}
|
|
1288
1893
|
resetRightsState() {
|
|
@@ -1312,7 +1917,6 @@ class BaseModuleComponent {
|
|
|
1312
1917
|
return this.httpClient.request({
|
|
1313
1918
|
path: `/api/${controller}/get-security`,
|
|
1314
1919
|
method: 'GET',
|
|
1315
|
-
query: { id },
|
|
1316
1920
|
secure: true,
|
|
1317
1921
|
format: 'json'
|
|
1318
1922
|
});
|
|
@@ -1326,11 +1930,10 @@ class BaseModuleComponent {
|
|
|
1326
1930
|
type: ContentType.Json
|
|
1327
1931
|
});
|
|
1328
1932
|
}
|
|
1329
|
-
getModuleInstanceSettings(controller = this.controller
|
|
1933
|
+
getModuleInstanceSettings(controller = this.controller) {
|
|
1330
1934
|
return this.httpClient.request({
|
|
1331
1935
|
path: `/api/${controller}/get-module-instance-settings`,
|
|
1332
1936
|
method: 'GET',
|
|
1333
|
-
query: { id },
|
|
1334
1937
|
secure: true,
|
|
1335
1938
|
format: 'json'
|
|
1336
1939
|
});
|
|
@@ -1363,8 +1966,12 @@ class BaseModuleComponent {
|
|
|
1363
1966
|
}
|
|
1364
1967
|
async reloadModuleInstance() {
|
|
1365
1968
|
this.moduleInstanceReloadPromise = this.moduleInstanceReloadPromise.then(async () => {
|
|
1969
|
+
// Rights first: the backend rejects settings and data requests without the read right.
|
|
1970
|
+
await this.watchSecurityRights();
|
|
1971
|
+
if (!this.canRead) {
|
|
1972
|
+
return;
|
|
1973
|
+
}
|
|
1366
1974
|
await this.getSettings();
|
|
1367
|
-
this.watchSecurityRights();
|
|
1368
1975
|
await this.onModuleInstanceChange();
|
|
1369
1976
|
});
|
|
1370
1977
|
await this.moduleInstanceReloadPromise;
|
|
@@ -1478,7 +2085,7 @@ class SecurityComponent {
|
|
|
1478
2085
|
return;
|
|
1479
2086
|
}
|
|
1480
2087
|
try {
|
|
1481
|
-
const result = await this.getSecurity(controller
|
|
2088
|
+
const result = await this.getSecurity(controller);
|
|
1482
2089
|
if (loadToken === this.securityLoadToken) {
|
|
1483
2090
|
this.securityData = result;
|
|
1484
2091
|
}
|
|
@@ -1489,11 +2096,10 @@ class SecurityComponent {
|
|
|
1489
2096
|
}
|
|
1490
2097
|
}
|
|
1491
2098
|
}
|
|
1492
|
-
getSecurity(controller
|
|
2099
|
+
getSecurity(controller) {
|
|
1493
2100
|
return this.httpClient.request({
|
|
1494
2101
|
path: `/api/${controller}/get-security`,
|
|
1495
2102
|
method: 'GET',
|
|
1496
|
-
query: { id },
|
|
1497
2103
|
secure: true,
|
|
1498
2104
|
format: 'json'
|
|
1499
2105
|
});
|
|
@@ -2676,7 +3282,7 @@ class UserNotificationsComponent {
|
|
|
2676
3282
|
</div>
|
|
2677
3283
|
|
|
2678
3284
|
<p-paginator
|
|
2679
|
-
|
|
3285
|
+
class="mt-3"
|
|
2680
3286
|
[first]="skip"
|
|
2681
3287
|
[rows]="take"
|
|
2682
3288
|
[rowsPerPageOptions]="[5, 10, 20]"
|
|
@@ -2781,7 +3387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
2781
3387
|
</div>
|
|
2782
3388
|
|
|
2783
3389
|
<p-paginator
|
|
2784
|
-
|
|
3390
|
+
class="mt-3"
|
|
2785
3391
|
[first]="skip"
|
|
2786
3392
|
[rows]="take"
|
|
2787
3393
|
[rowsPerPageOptions]="[5, 10, 20]"
|
|
@@ -3266,6 +3872,14 @@ class MenuApi extends HttpClient {
|
|
|
3266
3872
|
format: "json",
|
|
3267
3873
|
...params,
|
|
3268
3874
|
});
|
|
3875
|
+
this.getModuleInstanceRights = (query, params = {}) => this.request({
|
|
3876
|
+
path: `/api/menu/get-module-instance-rights`,
|
|
3877
|
+
method: "GET",
|
|
3878
|
+
query: query,
|
|
3879
|
+
secure: true,
|
|
3880
|
+
format: "json",
|
|
3881
|
+
...params,
|
|
3882
|
+
});
|
|
3269
3883
|
this.getAdminMenu = (params = {}) => this.request({
|
|
3270
3884
|
path: `/api/menu/get-admin-menu`,
|
|
3271
3885
|
method: "GET",
|
|
@@ -3684,7 +4298,7 @@ class MenuItemComponent {
|
|
|
3684
4298
|
</ul>
|
|
3685
4299
|
}
|
|
3686
4300
|
</ng-container>
|
|
3687
|
-
`, 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:
|
|
4301
|
+
`, 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"] }] }); }
|
|
3688
4302
|
}
|
|
3689
4303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemComponent, decorators: [{
|
|
3690
4304
|
type: Component,
|
|
@@ -3886,10 +4500,14 @@ class MenuItemCreateDialogComponent {
|
|
|
3886
4500
|
<p-select
|
|
3887
4501
|
appendTo="body"
|
|
3888
4502
|
class="flex-auto"
|
|
4503
|
+
filterBy="value"
|
|
4504
|
+
filterPlaceholder="{{ 'menuItemCreateDialogComponent.searchModule' | translate }}"
|
|
3889
4505
|
id="oip-menu-item-create-module"
|
|
3890
4506
|
optionLabel="value"
|
|
3891
4507
|
optionValue="key"
|
|
3892
4508
|
placeholder="{{ 'menuItemCreateDialogComponent.selectModule' | translate }}"
|
|
4509
|
+
scrollHeight="18rem"
|
|
4510
|
+
[filter]="true"
|
|
3893
4511
|
[options]="modules"
|
|
3894
4512
|
[(ngModel)]="selectModule" />
|
|
3895
4513
|
</div>
|
|
@@ -3937,7 +4555,7 @@ class MenuItemCreateDialogComponent {
|
|
|
3937
4555
|
(click)="save()" />
|
|
3938
4556
|
</div>
|
|
3939
4557
|
</p-dialog>
|
|
3940
|
-
`, 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: i2$
|
|
4558
|
+
`, 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: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$4.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" }] }); }
|
|
3941
4559
|
}
|
|
3942
4560
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemCreateDialogComponent, decorators: [{
|
|
3943
4561
|
type: Component,
|
|
@@ -3979,10 +4597,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
3979
4597
|
<p-select
|
|
3980
4598
|
appendTo="body"
|
|
3981
4599
|
class="flex-auto"
|
|
4600
|
+
filterBy="value"
|
|
4601
|
+
filterPlaceholder="{{ 'menuItemCreateDialogComponent.searchModule' | translate }}"
|
|
3982
4602
|
id="oip-menu-item-create-module"
|
|
3983
4603
|
optionLabel="value"
|
|
3984
4604
|
optionValue="key"
|
|
3985
4605
|
placeholder="{{ 'menuItemCreateDialogComponent.selectModule' | translate }}"
|
|
4606
|
+
scrollHeight="18rem"
|
|
4607
|
+
[filter]="true"
|
|
3986
4608
|
[options]="modules"
|
|
3987
4609
|
[(ngModel)]="selectModule" />
|
|
3988
4610
|
</div>
|
|
@@ -4044,7 +4666,6 @@ class MenuItemEditDialogComponent {
|
|
|
4044
4666
|
this.securityApi = inject(SecurityApi);
|
|
4045
4667
|
this.msgService = inject(MsgService);
|
|
4046
4668
|
this.visibleChange = new EventEmitter();
|
|
4047
|
-
this.modules = [];
|
|
4048
4669
|
this.roles = [];
|
|
4049
4670
|
this.iconOptions = Object.values(PrimeIcons)
|
|
4050
4671
|
.filter((icon) => typeof icon === 'string')
|
|
@@ -4098,9 +4719,6 @@ class MenuItemEditDialogComponent {
|
|
|
4098
4719
|
viewRoles: this.menuService.contextMenuItem?.securities
|
|
4099
4720
|
};
|
|
4100
4721
|
this.roles = await this.securityApi.getRealmRoles();
|
|
4101
|
-
this.menuService.getModules().then((data) => {
|
|
4102
|
-
this.modules = data;
|
|
4103
|
-
});
|
|
4104
4722
|
this.visible = true;
|
|
4105
4723
|
this.visibleChange.emit(this.visible);
|
|
4106
4724
|
}
|
|
@@ -4183,7 +4801,7 @@ class MenuItemEditDialogComponent {
|
|
|
4183
4801
|
(click)="save()" />
|
|
4184
4802
|
</div>
|
|
4185
4803
|
</p-dialog>
|
|
4186
|
-
`, 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: i2$
|
|
4804
|
+
`, 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: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$4.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" }] }); }
|
|
4187
4805
|
}
|
|
4188
4806
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemEditDialogComponent, decorators: [{
|
|
4189
4807
|
type: Component,
|
|
@@ -4589,6 +5207,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
4589
5207
|
}]
|
|
4590
5208
|
}] });
|
|
4591
5209
|
|
|
5210
|
+
var notfound$1 = {
|
|
5211
|
+
title: "Not Found",
|
|
5212
|
+
errorCode: "404",
|
|
5213
|
+
description: "Requested resource is not available.",
|
|
5214
|
+
button: "Go to home"
|
|
5215
|
+
};
|
|
5216
|
+
var en$5 = {
|
|
5217
|
+
notfound: notfound$1
|
|
5218
|
+
};
|
|
5219
|
+
|
|
5220
|
+
var notfound = {
|
|
5221
|
+
title: "Не найдено",
|
|
5222
|
+
errorCode: "404",
|
|
5223
|
+
description: "Запрашиваемый ресурс недоступен.",
|
|
5224
|
+
button: "На главную"
|
|
5225
|
+
};
|
|
5226
|
+
var ru$5 = {
|
|
5227
|
+
notfound: notfound
|
|
5228
|
+
};
|
|
5229
|
+
|
|
5230
|
+
L10nService.registerTranslations({ en: en$5, ru: ru$5 });
|
|
4592
5231
|
class NotfoundComponent {
|
|
4593
5232
|
constructor(l10nService) {
|
|
4594
5233
|
l10nService.get('notfound');
|
|
@@ -4614,7 +5253,7 @@ class NotfoundComponent {
|
|
|
4614
5253
|
</div>
|
|
4615
5254
|
</div>
|
|
4616
5255
|
</div>
|
|
4617
|
-
</div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { 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: "component", type: AppFloatingConfiguratorComponent, selector: "app-floating-configurator" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$
|
|
5256
|
+
</div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { 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: "component", type: AppFloatingConfiguratorComponent, selector: "app-floating-configurator" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$4.TranslatePipe, name: "translate" }] }); }
|
|
4618
5257
|
}
|
|
4619
5258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotfoundComponent, decorators: [{
|
|
4620
5259
|
type: Component,
|
|
@@ -4737,6 +5376,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
4737
5376
|
}]
|
|
4738
5377
|
}] });
|
|
4739
5378
|
|
|
5379
|
+
class AccessComponent {
|
|
5380
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AccessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5381
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: AccessComponent, isStandalone: true, selector: "app-access", ngImport: i0, template: `<div
|
|
5382
|
+
class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
|
|
5383
|
+
<div class="flex flex-column align-items-center justify-content-center">
|
|
5384
|
+
<img alt="Sakai logo" class="mb-5 w-6rem flex-shrink-0" src="assets/demo/images/access/logo-orange.svg" />
|
|
5385
|
+
<div
|
|
5386
|
+
style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(247, 149, 48, 0.4) 10%, rgba(247, 149, 48, 0) 30%);">
|
|
5387
|
+
<div
|
|
5388
|
+
class="w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center"
|
|
5389
|
+
style="border-radius:53px">
|
|
5390
|
+
<div class="grid flex-column align-items-center">
|
|
5391
|
+
<div
|
|
5392
|
+
class="flex justify-content-center align-items-center bg-orange-500 border-circle"
|
|
5393
|
+
style="width:3.2rem; height:3.2rem;">
|
|
5394
|
+
<i class="text-50 pi pi-fw pi-lock text-2xl"></i>
|
|
5395
|
+
</div>
|
|
5396
|
+
<h1 class="text-900 font-bold text-4xl lg:text-5xl mb-2">Access Denied</h1>
|
|
5397
|
+
<span class="text-600 mb-5">You do not have the necessary permisions. Please contact admins.</span>
|
|
5398
|
+
<img alt="Access denied" class="mb-5" src="assets/demo/images/access/asset-access.svg" width="80%" />
|
|
5399
|
+
<p-button
|
|
5400
|
+
class="p-button-text"
|
|
5401
|
+
icon="pi pi-arrow-left"
|
|
5402
|
+
id="oip-app-access-go-to-dashboard-button"
|
|
5403
|
+
label="Go to Dashboard"
|
|
5404
|
+
pButton
|
|
5405
|
+
pRipple
|
|
5406
|
+
[routerLink]="['/']"></p-button>
|
|
5407
|
+
</div>
|
|
5408
|
+
</div>
|
|
5409
|
+
</div>
|
|
5410
|
+
</div>
|
|
5411
|
+
</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]" }] }); }
|
|
5412
|
+
}
|
|
5413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AccessComponent, decorators: [{
|
|
5414
|
+
type: Component,
|
|
5415
|
+
args: [{
|
|
5416
|
+
selector: 'app-access',
|
|
5417
|
+
template: `<div
|
|
5418
|
+
class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
|
|
5419
|
+
<div class="flex flex-column align-items-center justify-content-center">
|
|
5420
|
+
<img alt="Sakai logo" class="mb-5 w-6rem flex-shrink-0" src="assets/demo/images/access/logo-orange.svg" />
|
|
5421
|
+
<div
|
|
5422
|
+
style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(247, 149, 48, 0.4) 10%, rgba(247, 149, 48, 0) 30%);">
|
|
5423
|
+
<div
|
|
5424
|
+
class="w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center"
|
|
5425
|
+
style="border-radius:53px">
|
|
5426
|
+
<div class="grid flex-column align-items-center">
|
|
5427
|
+
<div
|
|
5428
|
+
class="flex justify-content-center align-items-center bg-orange-500 border-circle"
|
|
5429
|
+
style="width:3.2rem; height:3.2rem;">
|
|
5430
|
+
<i class="text-50 pi pi-fw pi-lock text-2xl"></i>
|
|
5431
|
+
</div>
|
|
5432
|
+
<h1 class="text-900 font-bold text-4xl lg:text-5xl mb-2">Access Denied</h1>
|
|
5433
|
+
<span class="text-600 mb-5">You do not have the necessary permisions. Please contact admins.</span>
|
|
5434
|
+
<img alt="Access denied" class="mb-5" src="assets/demo/images/access/asset-access.svg" width="80%" />
|
|
5435
|
+
<p-button
|
|
5436
|
+
class="p-button-text"
|
|
5437
|
+
icon="pi pi-arrow-left"
|
|
5438
|
+
id="oip-app-access-go-to-dashboard-button"
|
|
5439
|
+
label="Go to Dashboard"
|
|
5440
|
+
pButton
|
|
5441
|
+
pRipple
|
|
5442
|
+
[routerLink]="['/']"></p-button>
|
|
5443
|
+
</div>
|
|
5444
|
+
</div>
|
|
5445
|
+
</div>
|
|
5446
|
+
</div>
|
|
5447
|
+
</div>`,
|
|
5448
|
+
imports: [RouterLink, ButtonModule, RippleModule],
|
|
5449
|
+
standalone: true
|
|
5450
|
+
}]
|
|
5451
|
+
}] });
|
|
5452
|
+
|
|
4740
5453
|
class ErrorComponent {
|
|
4741
5454
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4742
5455
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: ErrorComponent, isStandalone: true, selector: "app-error", ngImport: i0, template: `<div
|
|
@@ -4769,7 +5482,7 @@ class ErrorComponent {
|
|
|
4769
5482
|
</div>
|
|
4770
5483
|
</div>
|
|
4771
5484
|
</div>
|
|
4772
|
-
</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:
|
|
5485
|
+
</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"] }] }); }
|
|
4773
5486
|
}
|
|
4774
5487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
4775
5488
|
type: Component,
|
|
@@ -4885,6 +5598,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
4885
5598
|
}]
|
|
4886
5599
|
}] });
|
|
4887
5600
|
|
|
5601
|
+
var config$1 = {
|
|
5602
|
+
all: "All",
|
|
5603
|
+
applicationManagement: "Application management",
|
|
5604
|
+
dateFormat: "Date format",
|
|
5605
|
+
dateTimeFormat: "Date and time format:",
|
|
5606
|
+
goTo: "Go to",
|
|
5607
|
+
localization: "Localization",
|
|
5608
|
+
menu: "Menu",
|
|
5609
|
+
moduleManagement: "Module management",
|
|
5610
|
+
photo: "Photo",
|
|
5611
|
+
profile: "Profile",
|
|
5612
|
+
selectLanguage: "Select language",
|
|
5613
|
+
timeFormat: "Time format",
|
|
5614
|
+
timeZone: "Time zone",
|
|
5615
|
+
usePhoto256x256Pixel: "Use photo 256x256 pixel"
|
|
5616
|
+
};
|
|
5617
|
+
var en$4 = {
|
|
5618
|
+
config: config$1
|
|
5619
|
+
};
|
|
5620
|
+
|
|
5621
|
+
var config = {
|
|
5622
|
+
all: "Все",
|
|
5623
|
+
applicationManagement: "Управление приложениями",
|
|
5624
|
+
dateFormat: "Формат даты",
|
|
5625
|
+
dateTimeFormat: "Формат даты и времени:",
|
|
5626
|
+
goTo: "Перейти",
|
|
5627
|
+
localization: "Локализация",
|
|
5628
|
+
menu: "Меню",
|
|
5629
|
+
moduleManagement: "Управление модулями",
|
|
5630
|
+
photo: "Фото",
|
|
5631
|
+
profile: "Профиль",
|
|
5632
|
+
selectLanguage: "Выберите язык",
|
|
5633
|
+
timeFormat: "Формат времени",
|
|
5634
|
+
timeZone: "Часовой пояс",
|
|
5635
|
+
usePhoto256x256Pixel: "Используйте фото 256x256 пикселей"
|
|
5636
|
+
};
|
|
5637
|
+
var ru$4 = {
|
|
5638
|
+
config: config
|
|
5639
|
+
};
|
|
5640
|
+
|
|
5641
|
+
L10nService.registerTranslations({ en: en$4, ru: ru$4 });
|
|
4888
5642
|
class ConfigComponent {
|
|
4889
5643
|
constructor() {
|
|
4890
5644
|
this.layoutService = inject(LayoutService);
|
|
@@ -5026,7 +5780,7 @@ class ConfigComponent {
|
|
|
5026
5780
|
</div>
|
|
5027
5781
|
}
|
|
5028
5782
|
</div>
|
|
5029
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ProfileComponent, 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$
|
|
5783
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ProfileComponent, 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$5.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" }] }); }
|
|
5030
5784
|
}
|
|
5031
5785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ConfigComponent, decorators: [{
|
|
5032
5786
|
type: Component,
|
|
@@ -5151,11 +5905,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
5151
5905
|
}]
|
|
5152
5906
|
}], ctorParameters: () => [] });
|
|
5153
5907
|
|
|
5908
|
+
var en$3 = {
|
|
5909
|
+
"db-migration": {
|
|
5910
|
+
migrationManager: "Migration manager",
|
|
5911
|
+
actions: {
|
|
5912
|
+
refresh: "Refresh",
|
|
5913
|
+
cleanFilter: "Clean filter",
|
|
5914
|
+
applyMigration: "Apply migration"
|
|
5915
|
+
},
|
|
5916
|
+
columns: {
|
|
5917
|
+
name: "Migration name",
|
|
5918
|
+
applied: "Applied",
|
|
5919
|
+
exist: "Exist",
|
|
5920
|
+
pending: "Pending"
|
|
5921
|
+
},
|
|
5922
|
+
messages: {
|
|
5923
|
+
errorRefreshing: "Error refreshing database"
|
|
5924
|
+
}
|
|
5925
|
+
}
|
|
5926
|
+
};
|
|
5927
|
+
|
|
5928
|
+
var ru$3 = {
|
|
5929
|
+
"db-migration": {
|
|
5930
|
+
migrationManager: "Менеджер миграций",
|
|
5931
|
+
actions: {
|
|
5932
|
+
refresh: "Обновить",
|
|
5933
|
+
cleanFilter: "Очистить фильтр",
|
|
5934
|
+
applyMigration: "Применить миграцию"
|
|
5935
|
+
},
|
|
5936
|
+
columns: {
|
|
5937
|
+
name: "Название миграции",
|
|
5938
|
+
applied: "Применена",
|
|
5939
|
+
exist: "Существует",
|
|
5940
|
+
pending: "Ожидает"
|
|
5941
|
+
},
|
|
5942
|
+
messages: {
|
|
5943
|
+
errorRefreshing: "Ошибка обновления базы данных"
|
|
5944
|
+
}
|
|
5945
|
+
}
|
|
5946
|
+
};
|
|
5947
|
+
|
|
5154
5948
|
class DbMigrationComponent extends BaseModuleComponent {
|
|
5155
|
-
|
|
5156
|
-
super();
|
|
5157
|
-
this.l10nService.loadComponentTranslations('db-migration');
|
|
5158
|
-
}
|
|
5949
|
+
static { this.translations = { en: en$3, ru: ru$3 }; }
|
|
5159
5950
|
async ngOnInit() {
|
|
5160
5951
|
await super.ngOnInit();
|
|
5161
5952
|
await this.refreshAction();
|
|
@@ -5177,7 +5968,7 @@ class DbMigrationComponent extends BaseModuleComponent {
|
|
|
5177
5968
|
const request = { name: rowData.name };
|
|
5178
5969
|
return this.applyModuleMigration(request);
|
|
5179
5970
|
}
|
|
5180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DbMigrationComponent, deps:
|
|
5971
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DbMigrationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5181
5972
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: DbMigrationComponent, isStandalone: true, selector: "db-migration", providers: [ConfirmationService], usesInheritance: true, ngImport: i0, template: `
|
|
5182
5973
|
@if (isContent) {
|
|
5183
5974
|
<div class="card" style="height: 100%">
|
|
@@ -5256,7 +6047,7 @@ class DbMigrationComponent extends BaseModuleComponent {
|
|
|
5256
6047
|
} @else if (isSecurity) {
|
|
5257
6048
|
<security [controller]="controller" [id]="id" />
|
|
5258
6049
|
}
|
|
5259
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$8.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: i2$
|
|
6050
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$8.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: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$8.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i1$8.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i1$8.CancelEditableRow, selector: "[pCancelEditableRow]" }, { kind: "component", type: i1$8.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: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: TextareaModule }, { 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: FormsModule }, { 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" }] }); }
|
|
5260
6051
|
}
|
|
5261
6052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DbMigrationComponent, decorators: [{
|
|
5262
6053
|
type: Component,
|
|
@@ -5356,7 +6147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
5356
6147
|
`,
|
|
5357
6148
|
providers: [ConfirmationService]
|
|
5358
6149
|
}]
|
|
5359
|
-
}]
|
|
6150
|
+
}] });
|
|
5360
6151
|
|
|
5361
6152
|
/* eslint-disable */
|
|
5362
6153
|
/* tslint:disable */
|
|
@@ -5454,6 +6245,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
5454
6245
|
type: Injectable
|
|
5455
6246
|
}] });
|
|
5456
6247
|
|
|
6248
|
+
var en$2 = {
|
|
6249
|
+
"app-modules": {
|
|
6250
|
+
title: "Modules",
|
|
6251
|
+
refreshTooltip: "Refresh",
|
|
6252
|
+
register: {
|
|
6253
|
+
manifestUrlPlaceholder: "External module manifest URL",
|
|
6254
|
+
button: "Register"
|
|
6255
|
+
},
|
|
6256
|
+
table: {
|
|
6257
|
+
moduleId: "Module ID",
|
|
6258
|
+
name: "Name",
|
|
6259
|
+
currentlyLoaded: "Currently Loaded",
|
|
6260
|
+
yes: "Yes",
|
|
6261
|
+
no: "No",
|
|
6262
|
+
deleteTooltip: "Delete"
|
|
6263
|
+
},
|
|
6264
|
+
confirm: {
|
|
6265
|
+
header: "Warning",
|
|
6266
|
+
message: "Are you sure you want to delete the module?",
|
|
6267
|
+
cancel: "Cancel",
|
|
6268
|
+
"delete": "Delete"
|
|
6269
|
+
},
|
|
6270
|
+
messages: {
|
|
6271
|
+
deleteSuccess: "Module deleted",
|
|
6272
|
+
deleteError: "Module delete failed",
|
|
6273
|
+
registerError: "External module registration failed",
|
|
6274
|
+
registerSuccess: "External module registered"
|
|
6275
|
+
}
|
|
6276
|
+
}
|
|
6277
|
+
};
|
|
6278
|
+
|
|
6279
|
+
var ru$2 = {
|
|
6280
|
+
"app-modules": {
|
|
6281
|
+
title: "Модули",
|
|
6282
|
+
refreshTooltip: "Обновить",
|
|
6283
|
+
register: {
|
|
6284
|
+
manifestUrlPlaceholder: "URL манифеста внешнего модуля",
|
|
6285
|
+
button: "Зарегистрировать"
|
|
6286
|
+
},
|
|
6287
|
+
table: {
|
|
6288
|
+
moduleId: "ID модуля",
|
|
6289
|
+
name: "Название",
|
|
6290
|
+
currentlyLoaded: "Загружен",
|
|
6291
|
+
yes: "Да",
|
|
6292
|
+
no: "Нет",
|
|
6293
|
+
deleteTooltip: "Удалить"
|
|
6294
|
+
},
|
|
6295
|
+
confirm: {
|
|
6296
|
+
header: "Внимание",
|
|
6297
|
+
message: "Вы уверены, что хотите удалить модуль?",
|
|
6298
|
+
cancel: "Отмена",
|
|
6299
|
+
"delete": "Удалить"
|
|
6300
|
+
},
|
|
6301
|
+
messages: {
|
|
6302
|
+
deleteSuccess: "Модуль удален",
|
|
6303
|
+
deleteError: "Не удалось удалить модуль",
|
|
6304
|
+
registerError: "Не удалось зарегистрировать внешний модуль",
|
|
6305
|
+
registerSuccess: "Внешний модуль зарегистрирован"
|
|
6306
|
+
}
|
|
6307
|
+
}
|
|
6308
|
+
};
|
|
6309
|
+
|
|
6310
|
+
L10nService.registerTranslations({ en: en$2, ru: ru$2 });
|
|
5457
6311
|
class AppModulesComponent {
|
|
5458
6312
|
constructor() {
|
|
5459
6313
|
this.modules = [];
|
|
@@ -5605,7 +6459,7 @@ class AppModulesComponent {
|
|
|
5605
6459
|
</p-table>
|
|
5606
6460
|
</div>
|
|
5607
6461
|
</div>
|
|
5608
|
-
`, 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: i1$8.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: i2$
|
|
6462
|
+
`, 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: i1$8.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: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { 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" }] }); }
|
|
5609
6463
|
}
|
|
5610
6464
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppModulesComponent, decorators: [{
|
|
5611
6465
|
type: Component,
|
|
@@ -5706,6 +6560,103 @@ var ServiceType;
|
|
|
5706
6560
|
ServiceType["Application"] = "Application";
|
|
5707
6561
|
})(ServiceType || (ServiceType = {}));
|
|
5708
6562
|
|
|
6563
|
+
var applications$1 = {
|
|
6564
|
+
title: "Applications",
|
|
6565
|
+
subtitle: "Manage the frontend application registry",
|
|
6566
|
+
searchPlaceholder: "Search applications",
|
|
6567
|
+
search: "Search",
|
|
6568
|
+
clear: "Clear",
|
|
6569
|
+
add: "Add",
|
|
6570
|
+
refreshTooltip: "Refresh",
|
|
6571
|
+
empty: "No applications found",
|
|
6572
|
+
table: {
|
|
6573
|
+
code: "Code",
|
|
6574
|
+
displayName: "Name",
|
|
6575
|
+
baseUrl: "Base URL",
|
|
6576
|
+
internalBaseUrl: "Internal Base URL",
|
|
6577
|
+
icon: "Icon",
|
|
6578
|
+
order: "Order",
|
|
6579
|
+
enabled: "Enabled",
|
|
6580
|
+
serviceType: "Service type",
|
|
6581
|
+
current: "Current",
|
|
6582
|
+
actions: "Actions",
|
|
6583
|
+
yes: "Yes",
|
|
6584
|
+
no: "No",
|
|
6585
|
+
editTooltip: "Edit",
|
|
6586
|
+
deleteTooltip: "Delete",
|
|
6587
|
+
saveTooltip: "Save",
|
|
6588
|
+
cancelTooltip: "Cancel"
|
|
6589
|
+
},
|
|
6590
|
+
serviceTypes: {
|
|
6591
|
+
service: "Service",
|
|
6592
|
+
application: "Application"
|
|
6593
|
+
},
|
|
6594
|
+
confirm: {
|
|
6595
|
+
header: "Warning",
|
|
6596
|
+
message: "Are you sure you want to delete application {{displayName}}?",
|
|
6597
|
+
cancel: "Cancel",
|
|
6598
|
+
"delete": "Delete"
|
|
6599
|
+
},
|
|
6600
|
+
messages: {
|
|
6601
|
+
requiredFields: "Fill code, name and Base URL",
|
|
6602
|
+
createSuccess: "Application created",
|
|
6603
|
+
updateSuccess: "Application updated",
|
|
6604
|
+
deleteSuccess: "Application deleted"
|
|
6605
|
+
}
|
|
6606
|
+
};
|
|
6607
|
+
var en$1 = {
|
|
6608
|
+
applications: applications$1
|
|
6609
|
+
};
|
|
6610
|
+
|
|
6611
|
+
var applications = {
|
|
6612
|
+
title: "Приложения",
|
|
6613
|
+
subtitle: "Управление реестром фронтенд-приложений",
|
|
6614
|
+
searchPlaceholder: "Поиск по приложениям",
|
|
6615
|
+
search: "Найти",
|
|
6616
|
+
clear: "Очистить",
|
|
6617
|
+
add: "Добавить",
|
|
6618
|
+
refreshTooltip: "Обновить",
|
|
6619
|
+
empty: "Приложения не найдены",
|
|
6620
|
+
table: {
|
|
6621
|
+
code: "Код",
|
|
6622
|
+
displayName: "Название",
|
|
6623
|
+
baseUrl: "Base URL",
|
|
6624
|
+
internalBaseUrl: "Internal Base URL",
|
|
6625
|
+
icon: "Иконка",
|
|
6626
|
+
order: "Порядок",
|
|
6627
|
+
enabled: "Включено",
|
|
6628
|
+
serviceType: "Тип сервиса",
|
|
6629
|
+
current: "Текущее",
|
|
6630
|
+
actions: "Действия",
|
|
6631
|
+
yes: "Да",
|
|
6632
|
+
no: "Нет",
|
|
6633
|
+
editTooltip: "Редактировать",
|
|
6634
|
+
deleteTooltip: "Удалить",
|
|
6635
|
+
saveTooltip: "Сохранить",
|
|
6636
|
+
cancelTooltip: "Отменить"
|
|
6637
|
+
},
|
|
6638
|
+
serviceTypes: {
|
|
6639
|
+
service: "Сервис",
|
|
6640
|
+
application: "Приложение"
|
|
6641
|
+
},
|
|
6642
|
+
confirm: {
|
|
6643
|
+
header: "Внимание",
|
|
6644
|
+
message: "Вы уверены, что хотите удалить приложение {{displayName}}?",
|
|
6645
|
+
cancel: "Отмена",
|
|
6646
|
+
"delete": "Удалить"
|
|
6647
|
+
},
|
|
6648
|
+
messages: {
|
|
6649
|
+
requiredFields: "Заполните код, название и Base URL",
|
|
6650
|
+
createSuccess: "Приложение создано",
|
|
6651
|
+
updateSuccess: "Приложение обновлено",
|
|
6652
|
+
deleteSuccess: "Приложение удалено"
|
|
6653
|
+
}
|
|
6654
|
+
};
|
|
6655
|
+
var ru$1 = {
|
|
6656
|
+
applications: applications
|
|
6657
|
+
};
|
|
6658
|
+
|
|
6659
|
+
L10nService.registerTranslations({ en: en$1, ru: ru$1 });
|
|
5709
6660
|
class ApplicationsComponent {
|
|
5710
6661
|
get serviceTypeOptions() {
|
|
5711
6662
|
return [
|
|
@@ -6158,7 +7109,7 @@ class ApplicationsComponent {
|
|
|
6158
7109
|
</p-table>
|
|
6159
7110
|
</div>
|
|
6160
7111
|
</div>
|
|
6161
|
-
`, 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: i1$8.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: i2$
|
|
7112
|
+
`, 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: i1$8.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: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$8.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i1$8.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$5.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" }] }); }
|
|
6162
7113
|
}
|
|
6163
7114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationsComponent, decorators: [{
|
|
6164
7115
|
type: Component,
|
|
@@ -7247,7 +8198,7 @@ class DiscussionComponent {
|
|
|
7247
8198
|
</div>
|
|
7248
8199
|
}
|
|
7249
8200
|
</section>
|
|
7250
|
-
`, 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: i2$
|
|
8201
|
+
`, 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: i2$3.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: i9.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 }); }
|
|
7251
8202
|
}
|
|
7252
8203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DiscussionComponent, decorators: [{
|
|
7253
8204
|
type: Component,
|
|
@@ -7589,13 +8540,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
7589
8540
|
args: [{ required: true }]
|
|
7590
8541
|
}] } });
|
|
7591
8542
|
|
|
8543
|
+
var en = {
|
|
8544
|
+
"iframe-module": {
|
|
8545
|
+
iframeModule: {
|
|
8546
|
+
urlPlaceholder: "Site URL",
|
|
8547
|
+
settingSaveButtonLabel: "Save",
|
|
8548
|
+
emptyUrlMessage: "Site URL is not specified.",
|
|
8549
|
+
siteLoadingMessage: "Failed to load the site."
|
|
8550
|
+
}
|
|
8551
|
+
}
|
|
8552
|
+
};
|
|
8553
|
+
|
|
8554
|
+
var ru = {
|
|
8555
|
+
"iframe-module": {
|
|
8556
|
+
iframeModule: {
|
|
8557
|
+
urlPlaceholder: "URL сайта",
|
|
8558
|
+
settingSaveButtonLabel: "Сохранить",
|
|
8559
|
+
emptyUrlMessage: "URL сайта не указан.",
|
|
8560
|
+
siteLoadingMessage: "Не удалось загрузить сайт."
|
|
8561
|
+
}
|
|
8562
|
+
}
|
|
8563
|
+
};
|
|
8564
|
+
|
|
7592
8565
|
class IframeModuleComponent extends BaseModuleComponent {
|
|
8566
|
+
static { this.translations = { en, ru }; }
|
|
7593
8567
|
constructor() {
|
|
7594
8568
|
super();
|
|
7595
8569
|
this.renderer = inject(Renderer2);
|
|
7596
8570
|
this.translate = inject(TranslateService);
|
|
7597
8571
|
this.iframeUrl = null;
|
|
7598
|
-
this.l10nService.loadComponentTranslations('iframe-module');
|
|
7599
8572
|
}
|
|
7600
8573
|
set iframeElement(element) {
|
|
7601
8574
|
this.iframe = element;
|
|
@@ -8326,6 +9299,103 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
8326
9299
|
type: Injectable
|
|
8327
9300
|
}] });
|
|
8328
9301
|
|
|
9302
|
+
/**
|
|
9303
|
+
* Reads the rights the current user has on a module instance.
|
|
9304
|
+
*
|
|
9305
|
+
* Results are cached per instance and dropped whenever the authenticated user changes.
|
|
9306
|
+
*/
|
|
9307
|
+
class ModuleInstanceRightsService {
|
|
9308
|
+
static { this.readRight = 'read'; }
|
|
9309
|
+
constructor() {
|
|
9310
|
+
this.menuApi = inject(MenuApi);
|
|
9311
|
+
this.securityService = inject(SecurityService);
|
|
9312
|
+
this.cache = new Map();
|
|
9313
|
+
this.cachedIdentity = undefined;
|
|
9314
|
+
this.securityService.payload.subscribe((payload) => {
|
|
9315
|
+
// Rights depend on both the user and the roles of the current session.
|
|
9316
|
+
const roles = payload?.realm_access?.roles ?? [];
|
|
9317
|
+
const identity = `${payload?.preferred_username ?? ''}|${[...roles].sort().join(',')}`;
|
|
9318
|
+
if (identity !== this.cachedIdentity) {
|
|
9319
|
+
this.cachedIdentity = identity;
|
|
9320
|
+
this.clearCache();
|
|
9321
|
+
}
|
|
9322
|
+
});
|
|
9323
|
+
}
|
|
9324
|
+
/**
|
|
9325
|
+
* Gets the rights of the current user on the given module instance.
|
|
9326
|
+
*/
|
|
9327
|
+
getRights(moduleInstanceId) {
|
|
9328
|
+
const cached = this.cache.get(moduleInstanceId);
|
|
9329
|
+
if (cached) {
|
|
9330
|
+
return cached;
|
|
9331
|
+
}
|
|
9332
|
+
const request = this.menuApi
|
|
9333
|
+
.getModuleInstanceRights({ id: moduleInstanceId })
|
|
9334
|
+
.then((rights) => rights ?? [])
|
|
9335
|
+
.catch((error) => {
|
|
9336
|
+
this.cache.delete(moduleInstanceId);
|
|
9337
|
+
throw error;
|
|
9338
|
+
});
|
|
9339
|
+
this.cache.set(moduleInstanceId, request);
|
|
9340
|
+
return request;
|
|
9341
|
+
}
|
|
9342
|
+
/**
|
|
9343
|
+
* Checks whether the current user has the `read` right on the given module instance.
|
|
9344
|
+
*/
|
|
9345
|
+
async canRead(moduleInstanceId) {
|
|
9346
|
+
const rights = await this.getRights(moduleInstanceId);
|
|
9347
|
+
return rights.includes(ModuleInstanceRightsService.readRight);
|
|
9348
|
+
}
|
|
9349
|
+
/**
|
|
9350
|
+
* Drops every cached result, for example after module security was changed.
|
|
9351
|
+
*/
|
|
9352
|
+
clearCache() {
|
|
9353
|
+
this.cache.clear();
|
|
9354
|
+
}
|
|
9355
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModuleInstanceRightsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9356
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModuleInstanceRightsService }); }
|
|
9357
|
+
}
|
|
9358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModuleInstanceRightsService, decorators: [{
|
|
9359
|
+
type: Injectable
|
|
9360
|
+
}], ctorParameters: () => [] });
|
|
9361
|
+
|
|
9362
|
+
/**
|
|
9363
|
+
* Guards module routes against direct navigation without the required rights.
|
|
9364
|
+
*
|
|
9365
|
+
* - Routes flagged with `data: { requireAdmin: true }` require the `admin` role.
|
|
9366
|
+
* - Routes carrying an `:id` segment require the `read` right on that module instance.
|
|
9367
|
+
* - Everything else is left to {@link AuthGuardService}.
|
|
9368
|
+
*
|
|
9369
|
+
* Denied navigation is redirected to the access denied page. This is a UX guard only:
|
|
9370
|
+
* the backend checks the same rights on every module endpoint.
|
|
9371
|
+
*/
|
|
9372
|
+
const moduleAccessGuard = async (route) => {
|
|
9373
|
+
const router = inject(Router);
|
|
9374
|
+
const securityService = inject(SecurityService);
|
|
9375
|
+
const rightsService = inject(ModuleInstanceRightsService);
|
|
9376
|
+
const accessDenied = router.parseUrl('/access');
|
|
9377
|
+
if (route.data?.requireAdmin) {
|
|
9378
|
+
// Wait for the session payload so a direct URL entry does not read roles before they are loaded.
|
|
9379
|
+
await firstValueFrom(securityService.payload.pipe(filter((payload) => payload != null), take(1)));
|
|
9380
|
+
return securityService.isAdmin() ? true : accessDenied;
|
|
9381
|
+
}
|
|
9382
|
+
const routeId = route.paramMap.get('id');
|
|
9383
|
+
if (routeId == null) {
|
|
9384
|
+
return true;
|
|
9385
|
+
}
|
|
9386
|
+
const moduleInstanceId = Number(routeId);
|
|
9387
|
+
if (!Number.isFinite(moduleInstanceId)) {
|
|
9388
|
+
return accessDenied;
|
|
9389
|
+
}
|
|
9390
|
+
try {
|
|
9391
|
+
return (await rightsService.canRead(moduleInstanceId)) ? true : accessDenied;
|
|
9392
|
+
}
|
|
9393
|
+
catch (error) {
|
|
9394
|
+
console.error('Failed to load module instance rights', error);
|
|
9395
|
+
return accessDenied;
|
|
9396
|
+
}
|
|
9397
|
+
};
|
|
9398
|
+
|
|
8329
9399
|
/**
|
|
8330
9400
|
* Prime-ng table filter service
|
|
8331
9401
|
*/
|
|
@@ -8471,12 +9541,14 @@ function provideOip() {
|
|
|
8471
9541
|
{ provide: LocationStrategy, useClass: PathLocationStrategy },
|
|
8472
9542
|
{ provide: SecurityService, useClass: BffSecurityService },
|
|
8473
9543
|
AuthGuardService,
|
|
9544
|
+
ModuleInstanceRightsService,
|
|
8474
9545
|
MessageService,
|
|
8475
9546
|
UserService,
|
|
8476
9547
|
NotificationService,
|
|
8477
9548
|
UserProfileApi,
|
|
8478
9549
|
SecurityApi,
|
|
8479
9550
|
NotificationApi,
|
|
9551
|
+
MenuApi,
|
|
8480
9552
|
importProvidersFrom([
|
|
8481
9553
|
TranslateModule.forRoot({
|
|
8482
9554
|
loader: {
|
|
@@ -8495,10 +9567,9 @@ function provideOip() {
|
|
|
8495
9567
|
class FolderModuleApi extends HttpClient {
|
|
8496
9568
|
constructor() {
|
|
8497
9569
|
super(...arguments);
|
|
8498
|
-
this.getModuleInstanceSettings = (
|
|
9570
|
+
this.getModuleInstanceSettings = (params = {}) => this.request({
|
|
8499
9571
|
path: `/api/folder-module/get-module-instance-settings`,
|
|
8500
9572
|
method: "GET",
|
|
8501
|
-
query: query,
|
|
8502
9573
|
secure: true,
|
|
8503
9574
|
format: "json",
|
|
8504
9575
|
...params,
|
|
@@ -8517,10 +9588,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
8517
9588
|
class IframeModuleApi extends HttpClient {
|
|
8518
9589
|
constructor() {
|
|
8519
9590
|
super(...arguments);
|
|
8520
|
-
this.getModuleInstanceSettings = (
|
|
9591
|
+
this.getModuleInstanceSettings = (params = {}) => this.request({
|
|
8521
9592
|
path: `/api/iframe-module/get-module-instance-settings`,
|
|
8522
9593
|
method: "GET",
|
|
8523
|
-
query: query,
|
|
8524
9594
|
secure: true,
|
|
8525
9595
|
format: "json",
|
|
8526
9596
|
...params,
|
|
@@ -8539,5 +9609,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
|
|
|
8539
9609
|
* Generated bundle index. Do not edit.
|
|
8540
9610
|
*/
|
|
8541
9611
|
|
|
8542
|
-
export { APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AppTopbarApplicationSwitcherComponent, ApplicationRegistryService, ApplicationsApi, ApplicationsComponent, AuthGuardService, BaseModuleComponent, BffSecurityService, ConfigComponent, ContentType, CustomElementExtensionModuleHostComponent, DbMigrationComponent, DiscussionComponent, ErrorComponent, ExtensionLoaderService, ExtensionModuleHostComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, MsgService, NotfoundComponent, NotificationApi, NotificationService, OIP_EXTENSION_EVENTS, ProfileComponent, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserService, convertToPrimeNgDateFormat, defaultTheme, emitOipContextChange, emitOipError, emitOipNavigate, emitOipNotify, emitOipSettingsChange, emitOipTitleChange, langIntercept, mergeWithDefaults, provideAppThemes, provideLogoComponent, provideOip, replaceDefaults };
|
|
9612
|
+
export { APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AccessComponent, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AppTopbarApplicationSwitcherComponent, ApplicationRegistryService, ApplicationsApi, ApplicationsComponent, AuthGuardService, BaseModuleComponent, BffSecurityService, ConfigComponent, ContentType, CustomElementExtensionModuleHostComponent, DbMigrationComponent, DiscussionComponent, ErrorComponent, ExtensionLoaderService, ExtensionModuleHostComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, ModuleInstanceRightsService, MsgService, NotfoundComponent, NotificationApi, NotificationService, OIP_EXTENSION_EVENTS, ProfileComponent, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserService, convertToPrimeNgDateFormat, defaultTheme, emitOipContextChange, emitOipError, emitOipNavigate, emitOipNotify, emitOipSettingsChange, emitOipTitleChange, langIntercept, mergeWithDefaults, moduleAccessGuard, provideAppThemes, provideLogoComponent, provideOip, replaceDefaults };
|
|
8543
9613
|
//# sourceMappingURL=oip-common.mjs.map
|