@memberjunction/ng-explorer-settings 6.1.4 → 6.2.0-edge.1
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/dist/lib/account-info/account-info.component.d.ts +1 -1
- package/dist/lib/account-info/account-info.component.js +2 -2
- package/dist/lib/account-info/account-info.component.js.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts +93 -10
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.js +232 -80
- package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
- package/dist/lib/application-management/application-management.component.d.ts +94 -11
- package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-management.component.js +231 -67
- package/dist/lib/application-management/application-management.component.js.map +1 -1
- package/dist/lib/application-settings/application-settings.component.d.ts +4 -4
- package/dist/lib/application-settings/application-settings.component.js +10 -10
- package/dist/lib/application-settings/application-settings.component.js.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts +88 -10
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.js +219 -63
- package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +44 -6
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +117 -43
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts +25 -3
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.js +62 -18
- package/dist/lib/notification-preferences/notification-preferences.component.js.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +32 -4
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.js +84 -30
- package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
- package/dist/lib/role-management/role-management-agent-context.d.ts +12 -4
- package/dist/lib/role-management/role-management-agent-context.d.ts.map +1 -1
- package/dist/lib/role-management/role-management-agent-context.js +26 -10
- package/dist/lib/role-management/role-management-agent-context.js.map +1 -1
- package/dist/lib/role-management/role-management.component.d.ts +95 -11
- package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-management.component.js +259 -91
- package/dist/lib/role-management/role-management.component.js.map +1 -1
- package/dist/lib/settings/settings.component.d.ts +87 -11
- package/dist/lib/settings/settings.component.d.ts.map +1 -1
- package/dist/lib/settings/settings.component.js +211 -65
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/shared/settings-card.component.d.ts +24 -4
- package/dist/lib/shared/settings-card.component.d.ts.map +1 -1
- package/dist/lib/shared/settings-card.component.js +46 -6
- package/dist/lib/shared/settings-card.component.js.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.d.ts +172 -18
- package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.js +320 -108
- package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config-content.component.js +3 -3
- package/dist/lib/user-app-config/user-app-config-content.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config-reorder.d.ts +4 -0
- package/dist/lib/user-app-config/user-app-config-reorder.d.ts.map +1 -1
- package/dist/lib/user-app-config/user-app-config-reorder.js +11 -3
- package/dist/lib/user-app-config/user-app-config-reorder.js.map +1 -1
- package/dist/lib/user-management/transaction-group-refusals.d.ts +45 -0
- package/dist/lib/user-management/transaction-group-refusals.d.ts.map +1 -0
- package/dist/lib/user-management/transaction-group-refusals.js +49 -0
- package/dist/lib/user-management/transaction-group-refusals.js.map +1 -0
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +44 -6
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.js +134 -45
- package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
- package/dist/lib/user-management/user-management-agent-context.d.ts +10 -0
- package/dist/lib/user-management/user-management-agent-context.d.ts.map +1 -1
- package/dist/lib/user-management/user-management-agent-context.js +26 -6
- package/dist/lib/user-management/user-management-agent-context.js.map +1 -1
- package/dist/lib/user-management/user-management.component.d.ts +174 -16
- package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-management.component.js +501 -177
- package/dist/lib/user-management/user-management.component.js.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts +97 -15
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.js +280 -116
- package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
- package/package.json +20 -20
|
@@ -580,41 +580,161 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
580
580
|
cdr;
|
|
581
581
|
destroy$ = new Subject();
|
|
582
582
|
/** Whether the component is currently performing an async operation */
|
|
583
|
-
|
|
583
|
+
Loading = false;
|
|
584
|
+
/** @deprecated Use {@link Loading}. */
|
|
585
|
+
get loading() {
|
|
586
|
+
return this.Loading;
|
|
587
|
+
}
|
|
588
|
+
/** @deprecated Use {@link Loading}. */
|
|
589
|
+
set loading(value) {
|
|
590
|
+
this.Loading = value;
|
|
591
|
+
}
|
|
584
592
|
/** Current error message to display to the user, if any */
|
|
585
593
|
error = null;
|
|
586
594
|
/** Whether the current user has Owner privileges to access SQL logging */
|
|
587
595
|
isOwner = false;
|
|
588
596
|
/** Whether SQL logging is enabled in the server configuration */
|
|
589
|
-
|
|
597
|
+
ConfigEnabled = false;
|
|
598
|
+
/** @deprecated Use {@link ConfigEnabled}. */
|
|
599
|
+
get configEnabled() {
|
|
600
|
+
return this.ConfigEnabled;
|
|
601
|
+
}
|
|
602
|
+
/** @deprecated Use {@link ConfigEnabled}. */
|
|
603
|
+
set configEnabled(value) {
|
|
604
|
+
this.ConfigEnabled = value;
|
|
605
|
+
}
|
|
590
606
|
/** Current SQL logging configuration from the server */
|
|
591
|
-
|
|
607
|
+
SqlLoggingConfig = null;
|
|
608
|
+
/** @deprecated Use {@link SqlLoggingConfig}. */
|
|
609
|
+
get sqlLoggingConfig() {
|
|
610
|
+
return this.SqlLoggingConfig;
|
|
611
|
+
}
|
|
612
|
+
/** @deprecated Use {@link SqlLoggingConfig}. */
|
|
613
|
+
set sqlLoggingConfig(value) {
|
|
614
|
+
this.SqlLoggingConfig = value;
|
|
615
|
+
}
|
|
592
616
|
/** List of currently active SQL logging sessions */
|
|
593
|
-
|
|
617
|
+
ActiveSessions = [];
|
|
618
|
+
/** @deprecated Use {@link ActiveSessions}. */
|
|
619
|
+
get activeSessions() {
|
|
620
|
+
return this.ActiveSessions;
|
|
621
|
+
}
|
|
622
|
+
/** @deprecated Use {@link ActiveSessions}. */
|
|
623
|
+
set activeSessions(value) {
|
|
624
|
+
this.ActiveSessions = value;
|
|
625
|
+
}
|
|
594
626
|
/** Currently selected session for viewing logs */
|
|
595
|
-
|
|
627
|
+
SelectedSession = null;
|
|
628
|
+
/** @deprecated Use {@link SelectedSession}. */
|
|
629
|
+
get selectedSession() {
|
|
630
|
+
return this.SelectedSession;
|
|
631
|
+
}
|
|
632
|
+
/** @deprecated Use {@link SelectedSession}. */
|
|
633
|
+
set selectedSession(value) {
|
|
634
|
+
this.SelectedSession = value;
|
|
635
|
+
}
|
|
596
636
|
/** Content of the currently viewed log file */
|
|
597
|
-
|
|
637
|
+
LogContent = '';
|
|
638
|
+
/** @deprecated Use {@link LogContent}. */
|
|
639
|
+
get logContent() {
|
|
640
|
+
return this.LogContent;
|
|
641
|
+
}
|
|
642
|
+
/** @deprecated Use {@link LogContent}. */
|
|
643
|
+
set logContent(value) {
|
|
644
|
+
this.LogContent = value;
|
|
645
|
+
}
|
|
598
646
|
/** Whether to automatically refresh session data */
|
|
599
|
-
|
|
647
|
+
AutoRefresh = false;
|
|
648
|
+
/** @deprecated Use {@link AutoRefresh}. */
|
|
649
|
+
get autoRefresh() {
|
|
650
|
+
return this.AutoRefresh;
|
|
651
|
+
}
|
|
652
|
+
/** @deprecated Use {@link AutoRefresh}. */
|
|
653
|
+
set autoRefresh(value) {
|
|
654
|
+
this.AutoRefresh = value;
|
|
655
|
+
}
|
|
600
656
|
/** Interval in milliseconds for auto-refresh functionality */
|
|
601
|
-
|
|
657
|
+
RefreshInterval = 5000;
|
|
658
|
+
/** @deprecated Use {@link RefreshInterval}. */
|
|
659
|
+
get refreshInterval() {
|
|
660
|
+
return this.RefreshInterval;
|
|
661
|
+
}
|
|
662
|
+
/** @deprecated Use {@link RefreshInterval}. */
|
|
663
|
+
set refreshInterval(value) {
|
|
664
|
+
this.RefreshInterval = value;
|
|
665
|
+
} // 5 seconds
|
|
602
666
|
/** Whether the start session dialog is currently visible */
|
|
603
|
-
|
|
667
|
+
ShowStartSessionDialog = false;
|
|
668
|
+
/** @deprecated Use {@link ShowStartSessionDialog}. */
|
|
669
|
+
get showStartSessionDialog() {
|
|
670
|
+
return this.ShowStartSessionDialog;
|
|
671
|
+
}
|
|
672
|
+
/** @deprecated Use {@link ShowStartSessionDialog}. */
|
|
673
|
+
set showStartSessionDialog(value) {
|
|
674
|
+
this.ShowStartSessionDialog = value;
|
|
675
|
+
}
|
|
604
676
|
/** Whether to show the statistics cards section */
|
|
605
|
-
|
|
677
|
+
ShowStats = false;
|
|
678
|
+
/** @deprecated Use {@link ShowStats}. */
|
|
679
|
+
get showStats() {
|
|
680
|
+
return this.ShowStats;
|
|
681
|
+
}
|
|
682
|
+
/** @deprecated Use {@link ShowStats}. */
|
|
683
|
+
set showStats(value) {
|
|
684
|
+
this.ShowStats = value;
|
|
685
|
+
}
|
|
606
686
|
/** Whether the log viewer is in expanded (fullscreen) mode */
|
|
607
|
-
|
|
687
|
+
IsLogViewerExpanded = false;
|
|
688
|
+
/** @deprecated Use {@link IsLogViewerExpanded}. */
|
|
689
|
+
get isLogViewerExpanded() {
|
|
690
|
+
return this.IsLogViewerExpanded;
|
|
691
|
+
}
|
|
692
|
+
/** @deprecated Use {@link IsLogViewerExpanded}. */
|
|
693
|
+
set isLogViewerExpanded(value) {
|
|
694
|
+
this.IsLogViewerExpanded = value;
|
|
695
|
+
}
|
|
608
696
|
/** Whether the start session dialog is in fullscreen mode */
|
|
609
|
-
|
|
697
|
+
IsStartDialogFullscreen = false;
|
|
698
|
+
/** @deprecated Use {@link IsStartDialogFullscreen}. */
|
|
699
|
+
get isStartDialogFullscreen() {
|
|
700
|
+
return this.IsStartDialogFullscreen;
|
|
701
|
+
}
|
|
702
|
+
/** @deprecated Use {@link IsStartDialogFullscreen}. */
|
|
703
|
+
set isStartDialogFullscreen(value) {
|
|
704
|
+
this.IsStartDialogFullscreen = value;
|
|
705
|
+
}
|
|
610
706
|
/** Whether the stop session confirmation dialog is visible */
|
|
611
|
-
|
|
707
|
+
ShowStopConfirmDialog = false;
|
|
708
|
+
/** @deprecated Use {@link ShowStopConfirmDialog}. */
|
|
709
|
+
get showStopConfirmDialog() {
|
|
710
|
+
return this.ShowStopConfirmDialog;
|
|
711
|
+
}
|
|
712
|
+
/** @deprecated Use {@link ShowStopConfirmDialog}. */
|
|
713
|
+
set showStopConfirmDialog(value) {
|
|
714
|
+
this.ShowStopConfirmDialog = value;
|
|
715
|
+
}
|
|
612
716
|
/** Session pending stop confirmation (single session or null for all) */
|
|
613
|
-
|
|
717
|
+
SessionToStop = null;
|
|
718
|
+
/** @deprecated Use {@link SessionToStop}. */
|
|
719
|
+
get sessionToStop() {
|
|
720
|
+
return this.SessionToStop;
|
|
721
|
+
}
|
|
722
|
+
/** @deprecated Use {@link SessionToStop}. */
|
|
723
|
+
set sessionToStop(value) {
|
|
724
|
+
this.SessionToStop = value;
|
|
725
|
+
}
|
|
614
726
|
/** Whether stopping all sessions (vs single session) */
|
|
615
|
-
|
|
727
|
+
IsStoppingAll = false;
|
|
728
|
+
/** @deprecated Use {@link IsStoppingAll}. */
|
|
729
|
+
get isStoppingAll() {
|
|
730
|
+
return this.IsStoppingAll;
|
|
731
|
+
}
|
|
732
|
+
/** @deprecated Use {@link IsStoppingAll}. */
|
|
733
|
+
set isStoppingAll(value) {
|
|
734
|
+
this.IsStoppingAll = value;
|
|
735
|
+
}
|
|
616
736
|
/** Options for creating a new SQL logging session */
|
|
617
|
-
|
|
737
|
+
NewSessionOptions = {
|
|
618
738
|
/** Custom filename for the log file */
|
|
619
739
|
fileName: '',
|
|
620
740
|
/** Whether to filter SQL statements to current user only */
|
|
@@ -633,17 +753,41 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
633
753
|
verboseOutput: false,
|
|
634
754
|
defaultSchemaName: '__mj', // Default MJ schema
|
|
635
755
|
};
|
|
756
|
+
/** @deprecated Use {@link NewSessionOptions}. */
|
|
757
|
+
get newSessionOptions() {
|
|
758
|
+
return this.NewSessionOptions;
|
|
759
|
+
}
|
|
760
|
+
/** @deprecated Use {@link NewSessionOptions}. */
|
|
761
|
+
set newSessionOptions(value) {
|
|
762
|
+
this.NewSessionOptions = value;
|
|
763
|
+
}
|
|
636
764
|
/** Available options for SQL statement type filtering */
|
|
637
|
-
|
|
765
|
+
StatementTypeOptions = [
|
|
638
766
|
{ text: 'Both Queries and Mutations', value: 'both' },
|
|
639
767
|
{ text: 'Queries Only', value: 'queries' },
|
|
640
768
|
{ text: 'Mutations Only', value: 'mutations' },
|
|
641
769
|
];
|
|
770
|
+
/** @deprecated Use {@link StatementTypeOptions}. */
|
|
771
|
+
get statementTypeOptions() {
|
|
772
|
+
return this.StatementTypeOptions;
|
|
773
|
+
}
|
|
774
|
+
/** @deprecated Use {@link StatementTypeOptions}. */
|
|
775
|
+
set statementTypeOptions(value) {
|
|
776
|
+
this.StatementTypeOptions = value;
|
|
777
|
+
}
|
|
642
778
|
/** Options for Regex filter */
|
|
643
|
-
|
|
779
|
+
FilterTypeOptions = [
|
|
644
780
|
{ text: 'Exclude Matching (default)', value: 'exclude' },
|
|
645
781
|
{ text: 'Include Matching Only', value: 'include' },
|
|
646
782
|
];
|
|
783
|
+
/** @deprecated Use {@link FilterTypeOptions}. */
|
|
784
|
+
get filterTypeOptions() {
|
|
785
|
+
return this.FilterTypeOptions;
|
|
786
|
+
}
|
|
787
|
+
/** @deprecated Use {@link FilterTypeOptions}. */
|
|
788
|
+
set filterTypeOptions(value) {
|
|
789
|
+
this.FilterTypeOptions = value;
|
|
790
|
+
}
|
|
647
791
|
constructor(sharedService, cdr) {
|
|
648
792
|
super();
|
|
649
793
|
this.sharedService = sharedService;
|
|
@@ -658,8 +802,8 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
658
802
|
async loadData() {
|
|
659
803
|
await this.checkUserPermissions();
|
|
660
804
|
if (this.isOwner) {
|
|
661
|
-
await this.
|
|
662
|
-
await this.
|
|
805
|
+
await this.LoadSqlLoggingConfig();
|
|
806
|
+
await this.LoadActiveSessions();
|
|
663
807
|
}
|
|
664
808
|
}
|
|
665
809
|
ngOnDestroy() {
|
|
@@ -674,13 +818,13 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
674
818
|
* @private
|
|
675
819
|
*/
|
|
676
820
|
startAutoRefresh() {
|
|
677
|
-
interval(this.
|
|
821
|
+
interval(this.RefreshInterval)
|
|
678
822
|
.pipe(takeUntil(this.destroy$))
|
|
679
823
|
.subscribe(() => {
|
|
680
|
-
if (this.
|
|
681
|
-
this.
|
|
682
|
-
if (this.
|
|
683
|
-
this.
|
|
824
|
+
if (this.AutoRefresh && this.isOwner) {
|
|
825
|
+
this.LoadActiveSessions();
|
|
826
|
+
if (this.SelectedSession) {
|
|
827
|
+
this.LoadSessionLog(this.SelectedSession);
|
|
684
828
|
}
|
|
685
829
|
}
|
|
686
830
|
});
|
|
@@ -730,20 +874,24 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
730
874
|
* Opens the dialog for creating a new SQL logging session.
|
|
731
875
|
* Sets default values for session name and filename.
|
|
732
876
|
*/
|
|
733
|
-
|
|
877
|
+
OpenStartSessionDialog() {
|
|
734
878
|
// Set default session name
|
|
735
879
|
const currentUser = this.ProviderToUse.CurrentUser;
|
|
736
|
-
this.
|
|
737
|
-
this.
|
|
738
|
-
this.
|
|
880
|
+
this.NewSessionOptions.sessionName = `SQL Logging - ${currentUser?.Name || currentUser?.Email || 'Unknown'} - ${new Date().toLocaleString()}`;
|
|
881
|
+
this.NewSessionOptions.fileName = `sql-log-${new Date().toISOString().replace(/[:.]/g, '-')}.sql`;
|
|
882
|
+
this.ShowStartSessionDialog = true;
|
|
883
|
+
}
|
|
884
|
+
/** @deprecated Use {@link OpenStartSessionDialog}. */
|
|
885
|
+
openStartSessionDialog() {
|
|
886
|
+
return this.OpenStartSessionDialog();
|
|
739
887
|
}
|
|
740
888
|
/**
|
|
741
889
|
* Creates and starts a new SQL logging session with the configured options.
|
|
742
890
|
* Shows success/error notifications and refreshes the sessions list.
|
|
743
891
|
*/
|
|
744
|
-
async
|
|
892
|
+
async StartNewSession() {
|
|
745
893
|
try {
|
|
746
|
-
this.
|
|
894
|
+
this.Loading = true;
|
|
747
895
|
const dataProvider = this.ProviderToUse;
|
|
748
896
|
const mutation = `
|
|
749
897
|
mutation StartSqlLogging($input: StartSqlLoggingInput!) {
|
|
@@ -764,18 +912,18 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
764
912
|
`;
|
|
765
913
|
const variables = {
|
|
766
914
|
input: {
|
|
767
|
-
fileName: this.
|
|
768
|
-
filterToCurrentUser: this.
|
|
915
|
+
fileName: this.NewSessionOptions.fileName,
|
|
916
|
+
filterToCurrentUser: this.NewSessionOptions.filterToCurrentUser,
|
|
769
917
|
options: {
|
|
770
|
-
formatAsMigration: this.
|
|
771
|
-
statementTypes: this.
|
|
772
|
-
prettyPrint: this.
|
|
773
|
-
sessionName: this.
|
|
918
|
+
formatAsMigration: this.NewSessionOptions.formatAsMigration,
|
|
919
|
+
statementTypes: this.NewSessionOptions.statementTypes,
|
|
920
|
+
prettyPrint: this.NewSessionOptions.prettyPrint,
|
|
921
|
+
sessionName: this.NewSessionOptions.sessionName,
|
|
774
922
|
// Regex Filter Option
|
|
775
|
-
filterPatterns: this.parseFilterPatterns(this.
|
|
776
|
-
filterType: this.
|
|
777
|
-
verboseOutput: this.
|
|
778
|
-
defaultSchemaName: this.
|
|
923
|
+
filterPatterns: this.parseFilterPatterns(this.NewSessionOptions.filterPatterns),
|
|
924
|
+
filterType: this.NewSessionOptions.filterType,
|
|
925
|
+
verboseOutput: this.NewSessionOptions.verboseOutput,
|
|
926
|
+
defaultSchemaName: this.NewSessionOptions.defaultSchemaName,
|
|
779
927
|
},
|
|
780
928
|
},
|
|
781
929
|
};
|
|
@@ -788,18 +936,22 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
788
936
|
throw new Error('Failed to start SQL logging session - no session data returned');
|
|
789
937
|
}
|
|
790
938
|
MJNotificationService.Instance.CreateSimpleNotification(`SQL logging session started: ${newSession.sessionName}`, 'success', 5000);
|
|
791
|
-
this.
|
|
792
|
-
await this.
|
|
793
|
-
this.
|
|
939
|
+
this.ShowStartSessionDialog = false;
|
|
940
|
+
await this.LoadActiveSessions();
|
|
941
|
+
this.SelectSession(newSession);
|
|
794
942
|
}
|
|
795
943
|
catch (error) {
|
|
796
944
|
console.error('Error starting SQL logging session:', error);
|
|
797
945
|
MJNotificationService.Instance.CreateSimpleNotification(`Error: ${error.message || 'Failed to start SQL logging session'}`, 'error', 5000);
|
|
798
946
|
}
|
|
799
947
|
finally {
|
|
800
|
-
this.
|
|
948
|
+
this.Loading = false;
|
|
801
949
|
}
|
|
802
950
|
}
|
|
951
|
+
/** @deprecated Use {@link StartNewSession}. */
|
|
952
|
+
async startNewSession() {
|
|
953
|
+
return this.StartNewSession();
|
|
954
|
+
}
|
|
803
955
|
/**
|
|
804
956
|
* Executes the stop operation for a specific SQL logging session.
|
|
805
957
|
* Called after user confirms via the confirmation dialog.
|
|
@@ -808,7 +960,7 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
808
960
|
*/
|
|
809
961
|
async executeStopSession(session) {
|
|
810
962
|
try {
|
|
811
|
-
this.
|
|
963
|
+
this.Loading = true;
|
|
812
964
|
const dataProvider = this.ProviderToUse;
|
|
813
965
|
const mutation = `
|
|
814
966
|
mutation StopSqlLogging($sessionId: String!) {
|
|
@@ -820,11 +972,11 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
820
972
|
throw new Error(result.errors[0].message);
|
|
821
973
|
}
|
|
822
974
|
MJNotificationService.Instance.CreateSimpleNotification('SQL logging session stopped', 'success', 3000);
|
|
823
|
-
if (this.
|
|
824
|
-
this.
|
|
825
|
-
this.
|
|
975
|
+
if (this.SelectedSession?.id === session.id) {
|
|
976
|
+
this.SelectedSession = null;
|
|
977
|
+
this.LogContent = '';
|
|
826
978
|
}
|
|
827
|
-
await this.
|
|
979
|
+
await this.LoadActiveSessions();
|
|
828
980
|
}
|
|
829
981
|
catch (error) {
|
|
830
982
|
const errorMessage = error instanceof Error ? error.message : 'Failed to stop SQL logging session';
|
|
@@ -832,7 +984,7 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
832
984
|
MJNotificationService.Instance.CreateSimpleNotification(`Error: ${errorMessage}`, 'error', 5000);
|
|
833
985
|
}
|
|
834
986
|
finally {
|
|
835
|
-
this.
|
|
987
|
+
this.Loading = false;
|
|
836
988
|
}
|
|
837
989
|
}
|
|
838
990
|
/**
|
|
@@ -841,7 +993,7 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
841
993
|
*/
|
|
842
994
|
async executeStopAllSessions() {
|
|
843
995
|
try {
|
|
844
|
-
this.
|
|
996
|
+
this.Loading = true;
|
|
845
997
|
const dataProvider = this.ProviderToUse;
|
|
846
998
|
const mutation = `
|
|
847
999
|
mutation StopAllSqlLogging {
|
|
@@ -853,9 +1005,9 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
853
1005
|
throw new Error(result.errors[0].message);
|
|
854
1006
|
}
|
|
855
1007
|
MJNotificationService.Instance.CreateSimpleNotification('All SQL logging sessions stopped', 'success', 3000);
|
|
856
|
-
this.
|
|
857
|
-
this.
|
|
858
|
-
await this.
|
|
1008
|
+
this.SelectedSession = null;
|
|
1009
|
+
this.LogContent = '';
|
|
1010
|
+
await this.LoadActiveSessions();
|
|
859
1011
|
}
|
|
860
1012
|
catch (error) {
|
|
861
1013
|
const errorMessage = error instanceof Error ? error.message : 'Failed to stop all SQL logging sessions';
|
|
@@ -863,7 +1015,7 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
863
1015
|
MJNotificationService.Instance.CreateSimpleNotification(`Error: ${errorMessage}`, 'error', 5000);
|
|
864
1016
|
}
|
|
865
1017
|
finally {
|
|
866
|
-
this.
|
|
1018
|
+
this.Loading = false;
|
|
867
1019
|
}
|
|
868
1020
|
}
|
|
869
1021
|
/**
|
|
@@ -871,9 +1023,13 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
871
1023
|
*
|
|
872
1024
|
* @param session - The session to select
|
|
873
1025
|
*/
|
|
1026
|
+
SelectSession(session) {
|
|
1027
|
+
this.SelectedSession = session;
|
|
1028
|
+
this.LoadSessionLog(session);
|
|
1029
|
+
}
|
|
1030
|
+
/** @deprecated Use {@link SelectSession}. */
|
|
874
1031
|
selectSession(session) {
|
|
875
|
-
this.
|
|
876
|
-
this.loadSessionLog(session);
|
|
1032
|
+
return this.SelectSession(session);
|
|
877
1033
|
}
|
|
878
1034
|
/**
|
|
879
1035
|
* Loads the log file content for a specific session using real-time GraphQL query.
|
|
@@ -881,7 +1037,7 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
881
1037
|
*
|
|
882
1038
|
* @param session - The session whose log to load
|
|
883
1039
|
*/
|
|
884
|
-
async
|
|
1040
|
+
async LoadSessionLog(session) {
|
|
885
1041
|
try {
|
|
886
1042
|
const dataProvider = this.ProviderToUse;
|
|
887
1043
|
const query = `
|
|
@@ -910,11 +1066,11 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
910
1066
|
`-- Pretty Print: ${session.options?.prettyPrint ? 'Yes' : 'No'}\n` +
|
|
911
1067
|
`-- Migration Format: ${session.options?.formatAsMigration ? 'Yes' : 'No'}\n` +
|
|
912
1068
|
`-- =====================================================\n\n`;
|
|
913
|
-
this.
|
|
1069
|
+
this.LogContent = header + (logContent || '-- No SQL statements captured yet --');
|
|
914
1070
|
}
|
|
915
1071
|
catch (error) {
|
|
916
1072
|
console.error('Error loading session log:', error);
|
|
917
|
-
this.
|
|
1073
|
+
this.LogContent =
|
|
918
1074
|
`-- Error loading log file --\n-- ${error.message || 'Unknown error occurred'} --\n\n` +
|
|
919
1075
|
`-- Session Info --\n` +
|
|
920
1076
|
`-- File: ${session.filePath}\n` +
|
|
@@ -922,13 +1078,17 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
922
1078
|
`-- Started: ${new Date(session.startTime).toLocaleString()}\n`;
|
|
923
1079
|
}
|
|
924
1080
|
}
|
|
1081
|
+
/** @deprecated Use {@link LoadSessionLog}. */
|
|
1082
|
+
async loadSessionLog(session) {
|
|
1083
|
+
return this.LoadSessionLog(session);
|
|
1084
|
+
}
|
|
925
1085
|
/**
|
|
926
1086
|
* Loads the SQL logging configuration from the server.
|
|
927
1087
|
* Updates component state with current settings and capabilities.
|
|
928
1088
|
*
|
|
929
1089
|
* @private
|
|
930
1090
|
*/
|
|
931
|
-
async
|
|
1091
|
+
async LoadSqlLoggingConfig() {
|
|
932
1092
|
try {
|
|
933
1093
|
const dataProvider = this.ProviderToUse;
|
|
934
1094
|
const query = `
|
|
@@ -962,12 +1122,12 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
962
1122
|
// Access the data directly from the result, matching AI prompt pattern
|
|
963
1123
|
const configData = result?.sqlLoggingConfig;
|
|
964
1124
|
console.log('Extracted config data:', configData);
|
|
965
|
-
this.
|
|
966
|
-
this.
|
|
1125
|
+
this.SqlLoggingConfig = configData || null;
|
|
1126
|
+
this.ConfigEnabled = this.SqlLoggingConfig?.enabled || false;
|
|
967
1127
|
this.cdr.detectChanges();
|
|
968
1128
|
console.log('Component state after update:');
|
|
969
|
-
console.log(' this.sqlLoggingConfig:', this.
|
|
970
|
-
console.log(' this.configEnabled:', this.
|
|
1129
|
+
console.log(' this.sqlLoggingConfig:', this.SqlLoggingConfig);
|
|
1130
|
+
console.log(' this.configEnabled:', this.ConfigEnabled);
|
|
971
1131
|
console.log(' this.isOwner:', this.isOwner);
|
|
972
1132
|
}
|
|
973
1133
|
catch (error) {
|
|
@@ -975,13 +1135,17 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
975
1135
|
this.error = error.message || 'Failed to load SQL logging configuration';
|
|
976
1136
|
}
|
|
977
1137
|
}
|
|
1138
|
+
/** @deprecated Use {@link LoadSqlLoggingConfig}. */
|
|
1139
|
+
async loadSqlLoggingConfig() {
|
|
1140
|
+
return this.LoadSqlLoggingConfig();
|
|
1141
|
+
}
|
|
978
1142
|
/**
|
|
979
1143
|
* Loads the list of currently active SQL logging sessions.
|
|
980
1144
|
* Updates the activeSessions array and handles session selection state.
|
|
981
1145
|
*
|
|
982
1146
|
* @private
|
|
983
1147
|
*/
|
|
984
|
-
async
|
|
1148
|
+
async LoadActiveSessions() {
|
|
985
1149
|
try {
|
|
986
1150
|
const dataProvider = this.ProviderToUse;
|
|
987
1151
|
const query = `
|
|
@@ -1011,18 +1175,18 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1011
1175
|
// Access the data directly from the result, matching AI prompt pattern
|
|
1012
1176
|
const sessionsData = result?.activeSqlLoggingSessions;
|
|
1013
1177
|
console.log('Extracted sessions data:', sessionsData);
|
|
1014
|
-
this.
|
|
1178
|
+
this.ActiveSessions = sessionsData || [];
|
|
1015
1179
|
this.cdr.detectChanges();
|
|
1016
1180
|
// Update selected session if it still exists
|
|
1017
|
-
if (this.
|
|
1018
|
-
const selectedId = this.
|
|
1019
|
-
const stillExists = this.
|
|
1181
|
+
if (this.SelectedSession) {
|
|
1182
|
+
const selectedId = this.SelectedSession.id;
|
|
1183
|
+
const stillExists = this.ActiveSessions.find((s) => s.id === selectedId);
|
|
1020
1184
|
if (stillExists) {
|
|
1021
|
-
this.
|
|
1185
|
+
this.SelectedSession = stillExists;
|
|
1022
1186
|
}
|
|
1023
1187
|
else {
|
|
1024
|
-
this.
|
|
1025
|
-
this.
|
|
1188
|
+
this.SelectedSession = null;
|
|
1189
|
+
this.LogContent = '';
|
|
1026
1190
|
}
|
|
1027
1191
|
}
|
|
1028
1192
|
}
|
|
@@ -1030,13 +1194,17 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1030
1194
|
console.error('Error loading active sessions:', error);
|
|
1031
1195
|
}
|
|
1032
1196
|
}
|
|
1197
|
+
/** @deprecated Use {@link LoadActiveSessions}. */
|
|
1198
|
+
async loadActiveSessions() {
|
|
1199
|
+
return this.LoadActiveSessions();
|
|
1200
|
+
}
|
|
1033
1201
|
/**
|
|
1034
1202
|
* Calculates and formats the duration of a logging session.
|
|
1035
1203
|
*
|
|
1036
1204
|
* @param startTime - ISO string of when the session started
|
|
1037
1205
|
* @returns Formatted duration string (e.g., "2h 30m", "45m 23s", "12s")
|
|
1038
1206
|
*/
|
|
1039
|
-
|
|
1207
|
+
GetSessionDuration(startTime) {
|
|
1040
1208
|
const start = new Date(startTime);
|
|
1041
1209
|
const now = new Date();
|
|
1042
1210
|
const diff = now.getTime() - start.getTime();
|
|
@@ -1053,13 +1221,17 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1053
1221
|
return `${seconds}s`;
|
|
1054
1222
|
}
|
|
1055
1223
|
}
|
|
1224
|
+
/** @deprecated Use {@link GetSessionDuration}. */
|
|
1225
|
+
getSessionDuration(startTime) {
|
|
1226
|
+
return this.GetSessionDuration(startTime);
|
|
1227
|
+
}
|
|
1056
1228
|
/**
|
|
1057
1229
|
* Refreshes user data and re-checks permissions.
|
|
1058
1230
|
* Useful when user privileges have been updated.
|
|
1059
1231
|
*/
|
|
1060
|
-
async
|
|
1232
|
+
async RefreshUserPermissions() {
|
|
1061
1233
|
console.log('Refreshing user permissions...');
|
|
1062
|
-
this.
|
|
1234
|
+
this.Loading = true;
|
|
1063
1235
|
try {
|
|
1064
1236
|
// Try to refresh SharedService data
|
|
1065
1237
|
await SharedService.RefreshData(false);
|
|
@@ -1073,9 +1245,13 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1073
1245
|
console.error('Error refreshing permissions:', error);
|
|
1074
1246
|
}
|
|
1075
1247
|
finally {
|
|
1076
|
-
this.
|
|
1248
|
+
this.Loading = false;
|
|
1077
1249
|
}
|
|
1078
1250
|
}
|
|
1251
|
+
/** @deprecated Use {@link RefreshUserPermissions}. */
|
|
1252
|
+
async refreshUserPermissions() {
|
|
1253
|
+
return this.RefreshUserPermissions();
|
|
1254
|
+
}
|
|
1079
1255
|
/**
|
|
1080
1256
|
* Extracts the filename from a full file path for security purposes.
|
|
1081
1257
|
* Only shows the filename, not the full server path.
|
|
@@ -1083,17 +1259,25 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1083
1259
|
* @param filePath - Full file path from server
|
|
1084
1260
|
* @returns Just the filename portion
|
|
1085
1261
|
*/
|
|
1086
|
-
|
|
1262
|
+
GetFileName(filePath) {
|
|
1087
1263
|
if (!filePath)
|
|
1088
1264
|
return 'unknown';
|
|
1089
1265
|
return filePath.split(/[\\\/]/).pop() || 'unknown';
|
|
1090
1266
|
}
|
|
1267
|
+
/** @deprecated Use {@link GetFileName}. */
|
|
1268
|
+
getFileName(filePath) {
|
|
1269
|
+
return this.GetFileName(filePath);
|
|
1270
|
+
}
|
|
1091
1271
|
/**
|
|
1092
1272
|
* Calculates the total number of SQL statements across all active sessions.
|
|
1093
1273
|
* @returns Total statement count
|
|
1094
1274
|
*/
|
|
1275
|
+
GetTotalStatementCount() {
|
|
1276
|
+
return this.ActiveSessions.reduce((sum, session) => sum + (session.statementCount || 0), 0);
|
|
1277
|
+
}
|
|
1278
|
+
/** @deprecated Use {@link GetTotalStatementCount}. */
|
|
1095
1279
|
getTotalStatementCount() {
|
|
1096
|
-
return this.
|
|
1280
|
+
return this.GetTotalStatementCount();
|
|
1097
1281
|
}
|
|
1098
1282
|
/**
|
|
1099
1283
|
* Parses a string of filter patterns (comma or newline separated) into an array
|
|
@@ -1113,31 +1297,39 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1113
1297
|
/**
|
|
1114
1298
|
* Toggles the log viewer between normal and expanded (fullscreen) mode.
|
|
1115
1299
|
*/
|
|
1300
|
+
ToggleLogViewerExpand() {
|
|
1301
|
+
this.IsLogViewerExpanded = !this.IsLogViewerExpanded;
|
|
1302
|
+
}
|
|
1303
|
+
/** @deprecated Use {@link ToggleLogViewerExpand}. */
|
|
1116
1304
|
toggleLogViewerExpand() {
|
|
1117
|
-
|
|
1305
|
+
return this.ToggleLogViewerExpand();
|
|
1118
1306
|
}
|
|
1119
1307
|
/**
|
|
1120
1308
|
* Toggles the start session dialog between normal and fullscreen mode.
|
|
1121
1309
|
*/
|
|
1310
|
+
ToggleStartDialogFullscreen() {
|
|
1311
|
+
this.IsStartDialogFullscreen = !this.IsStartDialogFullscreen;
|
|
1312
|
+
}
|
|
1313
|
+
/** @deprecated Use {@link ToggleStartDialogFullscreen}. */
|
|
1122
1314
|
toggleStartDialogFullscreen() {
|
|
1123
|
-
|
|
1315
|
+
return this.ToggleStartDialogFullscreen();
|
|
1124
1316
|
}
|
|
1125
1317
|
/**
|
|
1126
1318
|
* Handles keyboard events for the component.
|
|
1127
1319
|
* Closes expanded log viewer or confirmation dialog when Escape is pressed.
|
|
1128
1320
|
*/
|
|
1129
1321
|
onEscapeKey() {
|
|
1130
|
-
if (this.
|
|
1131
|
-
this.
|
|
1322
|
+
if (this.ShowStopConfirmDialog) {
|
|
1323
|
+
this.CancelStopConfirm();
|
|
1132
1324
|
}
|
|
1133
|
-
else if (this.
|
|
1134
|
-
this.
|
|
1325
|
+
else if (this.IsLogViewerExpanded) {
|
|
1326
|
+
this.IsLogViewerExpanded = false;
|
|
1135
1327
|
}
|
|
1136
|
-
else if (this.
|
|
1137
|
-
this.
|
|
1328
|
+
else if (this.IsStartDialogFullscreen) {
|
|
1329
|
+
this.IsStartDialogFullscreen = false;
|
|
1138
1330
|
}
|
|
1139
|
-
else if (this.
|
|
1140
|
-
this.
|
|
1331
|
+
else if (this.ShowStartSessionDialog) {
|
|
1332
|
+
this.ShowStartSessionDialog = false;
|
|
1141
1333
|
}
|
|
1142
1334
|
}
|
|
1143
1335
|
/**
|
|
@@ -1146,49 +1338,65 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1146
1338
|
* @param session - The session to stop
|
|
1147
1339
|
* @param event - Optional event to stop propagation
|
|
1148
1340
|
*/
|
|
1149
|
-
|
|
1341
|
+
OpenStopSessionConfirm(session, event) {
|
|
1150
1342
|
if (event) {
|
|
1151
1343
|
event.stopPropagation();
|
|
1152
1344
|
}
|
|
1153
|
-
this.
|
|
1154
|
-
this.
|
|
1155
|
-
this.
|
|
1345
|
+
this.SessionToStop = session;
|
|
1346
|
+
this.IsStoppingAll = false;
|
|
1347
|
+
this.ShowStopConfirmDialog = true;
|
|
1348
|
+
}
|
|
1349
|
+
/** @deprecated Use {@link OpenStopSessionConfirm}. */
|
|
1350
|
+
openStopSessionConfirm(session, event) {
|
|
1351
|
+
return this.OpenStopSessionConfirm(session, event);
|
|
1156
1352
|
}
|
|
1157
1353
|
/**
|
|
1158
1354
|
* Opens the confirmation dialog for stopping all sessions.
|
|
1159
1355
|
*/
|
|
1356
|
+
OpenStopAllSessionsConfirm() {
|
|
1357
|
+
this.SessionToStop = null;
|
|
1358
|
+
this.IsStoppingAll = true;
|
|
1359
|
+
this.ShowStopConfirmDialog = true;
|
|
1360
|
+
}
|
|
1361
|
+
/** @deprecated Use {@link OpenStopAllSessionsConfirm}. */
|
|
1160
1362
|
openStopAllSessionsConfirm() {
|
|
1161
|
-
this.
|
|
1162
|
-
this.isStoppingAll = true;
|
|
1163
|
-
this.showStopConfirmDialog = true;
|
|
1363
|
+
return this.OpenStopAllSessionsConfirm();
|
|
1164
1364
|
}
|
|
1165
1365
|
/**
|
|
1166
1366
|
* Closes the stop confirmation dialog without taking action.
|
|
1167
1367
|
*/
|
|
1368
|
+
CancelStopConfirm() {
|
|
1369
|
+
this.ShowStopConfirmDialog = false;
|
|
1370
|
+
this.SessionToStop = null;
|
|
1371
|
+
this.IsStoppingAll = false;
|
|
1372
|
+
}
|
|
1373
|
+
/** @deprecated Use {@link CancelStopConfirm}. */
|
|
1168
1374
|
cancelStopConfirm() {
|
|
1169
|
-
this.
|
|
1170
|
-
this.sessionToStop = null;
|
|
1171
|
-
this.isStoppingAll = false;
|
|
1375
|
+
return this.CancelStopConfirm();
|
|
1172
1376
|
}
|
|
1173
1377
|
/**
|
|
1174
1378
|
* Confirms and executes the stop action (single session or all sessions).
|
|
1175
1379
|
*/
|
|
1176
|
-
async
|
|
1177
|
-
if (this.
|
|
1380
|
+
async ConfirmStopSession() {
|
|
1381
|
+
if (this.IsStoppingAll) {
|
|
1178
1382
|
await this.executeStopAllSessions();
|
|
1179
1383
|
}
|
|
1180
|
-
else if (this.
|
|
1181
|
-
await this.executeStopSession(this.
|
|
1384
|
+
else if (this.SessionToStop) {
|
|
1385
|
+
await this.executeStopSession(this.SessionToStop);
|
|
1182
1386
|
}
|
|
1183
|
-
this.
|
|
1387
|
+
this.CancelStopConfirm();
|
|
1388
|
+
}
|
|
1389
|
+
/** @deprecated Use {@link ConfirmStopSession}. */
|
|
1390
|
+
async confirmStopSession() {
|
|
1391
|
+
return this.ConfirmStopSession();
|
|
1184
1392
|
}
|
|
1185
1393
|
/**
|
|
1186
1394
|
* Debug method to test contextUser flow for SQL filtering.
|
|
1187
1395
|
* This shows how the new architecture handles user context without storing email in provider.
|
|
1188
1396
|
*/
|
|
1189
|
-
async
|
|
1397
|
+
async DebugUserEmail() {
|
|
1190
1398
|
try {
|
|
1191
|
-
this.
|
|
1399
|
+
this.Loading = true;
|
|
1192
1400
|
const dataProvider = this.ProviderToUse;
|
|
1193
1401
|
const query = `
|
|
1194
1402
|
query DebugCurrentUserEmail {
|
|
@@ -1207,9 +1415,13 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
|
1207
1415
|
alert(`Error: ${error.message || 'Failed to get debug info'}`);
|
|
1208
1416
|
}
|
|
1209
1417
|
finally {
|
|
1210
|
-
this.
|
|
1418
|
+
this.Loading = false;
|
|
1211
1419
|
}
|
|
1212
1420
|
}
|
|
1421
|
+
/** @deprecated Use {@link DebugUserEmail}. */
|
|
1422
|
+
async debugUserEmail() {
|
|
1423
|
+
return this.DebugUserEmail();
|
|
1424
|
+
}
|
|
1213
1425
|
static ɵfac = function SqlLoggingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SqlLoggingComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
1214
1426
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SqlLoggingComponent, selectors: [["mj-sql-logging"]], hostBindings: function SqlLoggingComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1215
1427
|
i0.ɵɵlistener("keydown.escape", function SqlLoggingComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, i0.ɵɵresolveDocument);
|