@memberjunction/ng-explorer-settings 2.121.0 → 2.122.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/application-management/application-dialog/application-dialog.component.d.ts +1 -1
- 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 +5 -7
- package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
- package/dist/lib/application-management/application-management.component.d.ts +6 -4
- package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-management.component.js +28 -21
- package/dist/lib/application-management/application-management.component.js.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts +6 -4
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.js +27 -20
- package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +1 -1
- 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 +5 -7
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
- package/dist/lib/module.d.ts +33 -19
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +97 -17
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +1 -1
- 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 +5 -7
- package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
- package/dist/lib/role-management/role-management.component.d.ts +6 -4
- package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-management.component.js +28 -24
- package/dist/lib/role-management/role-management.component.js.map +1 -1
- package/dist/lib/settings/settings.component.d.ts +2 -2
- package/dist/lib/settings/settings.component.d.ts.map +1 -1
- package/dist/lib/settings/settings.component.js +11 -28
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/shared/components/settings-card/settings-card.component.js +2 -2
- package/dist/lib/sql-logging/sql-logging.component.d.ts +36 -16
- package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.js +26 -29
- package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config.component.d.ts +102 -0
- package/dist/lib/user-app-config/user-app-config.component.d.ts.map +1 -0
- package/dist/lib/user-app-config/user-app-config.component.js +552 -0
- package/dist/lib/user-app-config/user-app-config.component.js.map +1 -0
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +1 -1
- 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 +5 -7
- package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
- package/dist/lib/user-management/user-management.component.d.ts +6 -4
- package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-management.component.js +29 -24
- package/dist/lib/user-management/user-management.component.js.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts +1 -1
- 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 +4 -6
- package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
- package/dist/public-api.d.ts +23 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +52 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +20 -14
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
1
7
|
import { Component } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
8
|
import { Subject, interval } from 'rxjs';
|
|
5
9
|
import { takeUntil } from 'rxjs/operators';
|
|
6
10
|
import { Metadata } from '@memberjunction/core';
|
|
7
|
-
import { SharedService } from '@memberjunction/ng-shared';
|
|
11
|
+
import { SharedService, BaseDashboard } from '@memberjunction/ng-shared';
|
|
8
12
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
9
|
-
import {
|
|
10
|
-
import { CodeEditorModule } from '@memberjunction/ng-code-editor';
|
|
13
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
11
14
|
import * as i0 from "@angular/core";
|
|
12
15
|
import * as i1 from "@memberjunction/ng-shared";
|
|
13
16
|
import * as i2 from "@angular/forms";
|
|
@@ -379,7 +382,7 @@ function SqlLoggingComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
379
382
|
* @requires Owner-level user privileges
|
|
380
383
|
* @requires SQL logging enabled in server configuration
|
|
381
384
|
*/
|
|
382
|
-
|
|
385
|
+
let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
|
|
383
386
|
sharedService;
|
|
384
387
|
destroy$ = new Subject();
|
|
385
388
|
/** Whether the component is currently performing an async operation */
|
|
@@ -426,27 +429,23 @@ export class SqlLoggingComponent {
|
|
|
426
429
|
{ text: 'Mutations Only', value: 'mutations' }
|
|
427
430
|
];
|
|
428
431
|
constructor(sharedService) {
|
|
432
|
+
super();
|
|
429
433
|
this.sharedService = sharedService;
|
|
430
434
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
async ngOnInit() {
|
|
435
|
+
initDashboard() {
|
|
436
|
+
this.startAutoRefresh();
|
|
437
|
+
}
|
|
438
|
+
async loadData() {
|
|
436
439
|
await this.checkUserPermissions();
|
|
437
440
|
if (this.isOwner) {
|
|
438
441
|
await this.loadSqlLoggingConfig();
|
|
439
442
|
await this.loadActiveSessions();
|
|
440
|
-
this.startAutoRefresh();
|
|
441
443
|
}
|
|
442
444
|
}
|
|
443
|
-
/**
|
|
444
|
-
* Component cleanup.
|
|
445
|
-
* Stops auto-refresh and cleans up subscriptions.
|
|
446
|
-
*/
|
|
447
445
|
ngOnDestroy() {
|
|
448
446
|
this.destroy$.next();
|
|
449
447
|
this.destroy$.complete();
|
|
448
|
+
super.ngOnDestroy();
|
|
450
449
|
}
|
|
451
450
|
/**
|
|
452
451
|
* Starts the auto-refresh timer for session data.
|
|
@@ -795,7 +794,8 @@ export class SqlLoggingComponent {
|
|
|
795
794
|
this.activeSessions = sessionsData || [];
|
|
796
795
|
// Update selected session if it still exists
|
|
797
796
|
if (this.selectedSession) {
|
|
798
|
-
const
|
|
797
|
+
const selectedId = this.selectedSession.id;
|
|
798
|
+
const stillExists = this.activeSessions.find(s => s.id === selectedId);
|
|
799
799
|
if (stillExists) {
|
|
800
800
|
this.selectedSession = stillExists;
|
|
801
801
|
}
|
|
@@ -904,7 +904,7 @@ export class SqlLoggingComponent {
|
|
|
904
904
|
}
|
|
905
905
|
}
|
|
906
906
|
static ɵfac = function SqlLoggingComponent_Factory(t) { return new (t || SqlLoggingComponent)(i0.ɵɵdirectiveInject(i1.SharedService)); };
|
|
907
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SqlLoggingComponent, selectors: [["mj-sql-logging"]],
|
|
907
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SqlLoggingComponent, selectors: [["mj-sql-logging"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 8, consts: [[1, "sql-logging-container"], [1, "action-buttons"], [1, "btn-secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], ["title", "Start SQL logging session", 1, "btn-primary", 3, "disabled"], [1, "stats-grid", 2, "display", "flex"], [1, "loading-container"], [1, "content-area"], [1, "modal-backdrop"], ["title", "Start SQL logging session", 1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "stat-card"], [1, "stat-icon", "stat-icon-status"], [1, "fa-solid", "fa-power-off"], [1, "stat-content"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "stat-icon-active"], [1, "fa-solid", "fa-play-circle"], [1, "stat-icon", "stat-icon-limit"], [1, "fa-solid", "fa-gauge-high"], [1, "stat-icon", "stat-icon-total"], [1, "fa-solid", "fa-database"], [1, "loading-spinner"], [1, "spinner-ring"], [1, "loading-text"], [1, "empty-state"], [1, "sessions-layout"], [1, "fa-solid", "fa-lock", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], [1, "btn-secondary", 2, "margin-top", "1rem", 3, "click"], [1, "fa-solid", "fa-sync"], [1, "fa-solid", "fa-exclamation-triangle", "empty-icon", "warning"], [1, "info-box"], [1, "fa-solid", "fa-file-code", "empty-icon"], [1, "btn-primary", 2, "margin-top", "1rem", 3, "click"], [1, "sessions-panel"], [1, "panel-header"], [1, "panel-title"], ["title", "Stop all sessions", 1, "btn-danger", "btn-small", 3, "disabled"], [1, "sessions-list"], [1, "session-card", 3, "selected"], [1, "log-viewer-panel"], ["title", "Stop all sessions", 1, "btn-danger", "btn-small", 3, "click", "disabled"], [1, "fa-solid", "fa-stop"], [1, "session-card", 3, "click"], [1, "session-header"], [1, "session-info"], [1, "session-title"], [1, "session-meta"], [1, "meta-item"], [1, "fa-solid", "fa-clock"], ["title", "Stop session", 1, "action-btn", "action-btn-danger", 3, "click"], [1, "session-badges"], [1, "badge", "badge-user"], [1, "badge", "badge-migration"], [1, "badge", "badge-type"], [1, "fa-solid", "fa-user"], [1, "fa-solid", "fa-code-branch"], [1, "panel-actions"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["title", "Refresh log", 1, "action-btn", 3, "click"], [1, "log-content"], [2, "height", "100%", 3, "value", "readonly", "disabled", "language", "setup", "lineWrapping", "highlightWhitespace"], [1, "fa-solid", "fa-arrow-left", "empty-icon"], [1, "modal-backdrop", 3, "click"], [1, "modal-dialog", "modal-large", 3, "click"], [1, "modal-header"], [1, "modal-title"], [1, "modal-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "modal-body"], [1, "form-group"], [1, "form-label"], ["type", "text", "placeholder", "Enter a descriptive name for this session", 1, "form-input", 3, "ngModelChange", "ngModel"], ["type", "text", "placeholder", "sql-log-2024-01-01.sql", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "form-hint"], [1, "form-select", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "form-checkboxes"], [1, "modal-footer"], [1, "btn-secondary", 3, "click"], [1, "btn-primary", 3, "click", "disabled"]], template: function SqlLoggingComponent_Template(rf, ctx) { if (rf & 1) {
|
|
908
908
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "button", 2);
|
|
909
909
|
i0.ɵɵlistener("click", function SqlLoggingComponent_Template_button_click_2_listener() { return ctx.loadActiveSessions(); });
|
|
910
910
|
i0.ɵɵelement(3, "i", 3);
|
|
@@ -929,18 +929,15 @@ export class SqlLoggingComponent {
|
|
|
929
929
|
i0.ɵɵconditional(!ctx.loading || ctx.activeSessions.length > 0 ? 8 : -1);
|
|
930
930
|
i0.ɵɵadvance();
|
|
931
931
|
i0.ɵɵconditional(ctx.showStartSessionDialog ? 9 : -1);
|
|
932
|
-
} }, dependencies: [CommonModule,
|
|
933
|
-
|
|
934
|
-
CodeEditorModule, i3.CodeEditorComponent], styles: ["@import '../shared/styles/variables';\n@import '../shared/styles/mixins';\n\n.sql-logging-container[_ngcontent-%COMP%] {\n @include scrollable-container;\n max-width: 1400px;\n margin: 0 auto;\n padding: 2rem;\n}\n\n//[_ngcontent-%COMP%] Action[_ngcontent-%COMP%] Buttons\n.action-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-bottom: 1.5rem;\n\n @media (max-width: 768px) {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n//[_ngcontent-%COMP%] Buttons\n.btn-primary[_ngcontent-%COMP%] {\n @include button-base;\n background-color: #2196f3;\n color: white;\n \n &:hover {\n background-color: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);\n }\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n @include button-base;\n background-color: #ffffff;\n color: #374151;\n border: 1px solid #e5e7eb;\n \n &:hover {\n background-color: #f9fafb;\n border-color: #2196f3;\n color: #2196f3;\n }\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n @include button-base;\n background-color: #f44336;\n color: white;\n \n &:hover {\n background-color: #d32f2f;\n }\n \n &.btn-small {\n padding: 0.375rem 0.75rem;\n font-size: 0.875rem;\n }\n}\n\n//[_ngcontent-%COMP%] Stats[_ngcontent-%COMP%] Grid\n.stats-grid[_ngcontent-%COMP%] {\n display: grid !important;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1.5rem;\n margin-bottom: 2rem;\n width: 100%;\n\n @media (max-width: 768px) {\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n }\n}\n\n.stat-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 1.5rem;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n display: flex;\n margin-right: 10px;\n align-items: center;\n gap: 1rem;\n transition: all 0.3s ease;\n min-width: 0; // Prevent grid blowout\n\n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n }\n}\n\n.stat-icon[_ngcontent-%COMP%] {\n width: 60px;\n height: 60px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n\n &-status {\n background: rgba(76, 175, 80, 0.1);\n color: #4caf50;\n }\n\n &-active {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n }\n\n &-limit {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n }\n\n &-total {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n }\n}\n\n.stat-content[_ngcontent-%COMP%] {\n flex: 1;\n\n .stat-value {\n font-size: 2rem;\n font-weight: 700;\n color: #1f2937;\n line-height: 1;\n }\n\n .stat-label {\n color: #6b7280;\n font-size: 0.875rem;\n margin-top: 0.25rem;\n }\n}\n\n//[_ngcontent-%COMP%] Content[_ngcontent-%COMP%] Area\n.content-area[_ngcontent-%COMP%] {\n @include scrollable-content;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n padding: 1.5rem;\n min-height: 400px;\n}\n\n//[_ngcontent-%COMP%] Sessions[_ngcontent-%COMP%] Layout\n.sessions-layout[_ngcontent-%COMP%] {\n display: flex;\n gap: 1.5rem;\n height: calc(100vh - 450px); // Dynamic height based on viewport\n min-height: 400px;\n max-height: 600px;\n\n @media (max-width: 1024px) {\n flex-direction: column;\n height: auto;\n max-height: none;\n }\n}\n\n.sessions-panel[_ngcontent-%COMP%] {\n flex: 0 0 400px;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n\n @media (max-width: 1024px) {\n flex: 1;\n max-height: 400px;\n }\n}\n\n.panel-header[_ngcontent-%COMP%] {\n padding: 1rem;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n .panel-title {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: #1f2937;\n }\n}\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.sessions-list[_ngcontent-%COMP%] {\n @include scrollable-content;\n padding: 0.75rem;\n}\n\n.session-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 1rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n\n &.selected {\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n}\n\n.session-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.75rem;\n}\n\n.session-info[_ngcontent-%COMP%] {\n flex: 1;\n \n .session-title {\n margin: 0 0 0.5rem 0;\n font-size: 0.95rem;\n font-weight: 600;\n color: #1f2937;\n }\n}\n\n.session-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: #6b7280;\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n}\n\n.session-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n &-user {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n }\n\n &-migration {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n }\n\n &-type {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n }\n}\n\n.action-btn[_ngcontent-%COMP%] {\n padding: 0.375rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 0.875rem;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n background: #f3f4f6;\n color: #374151;\n }\n\n &-danger:hover {\n color: #f44336;\n }\n}\n\n//[_ngcontent-%COMP%] Log[_ngcontent-%COMP%] Viewer[_ngcontent-%COMP%] Panel\n.log-viewer-panel[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.log-content[_ngcontent-%COMP%] {\n @include scrollable-content;\n background: #1e1e1e;\n color: #d4d4d4;\n padding: 0; // Remove padding for code editor\n min-height: 300px;\n height: 100%;\n position: relative;\n \n // Code editor styles\n ::ng-deep {\n .cm-editor {\n height: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 0.875rem;\n }\n \n .cm-scroller {\n font-family: inherit;\n }\n \n // Dark theme adjustments to match previous style\n .cm-content {\n background: #1e1e1e;\n color: #d4d4d4;\n }\n \n .cm-gutters {\n background: #252526;\n color: #858585;\n border-right: 1px solid #464647;\n }\n \n .cm-activeLineGutter {\n background: #2a2a2a;\n }\n \n .cm-activeLine {\n background: rgba(255, 255, 255, 0.04);\n }\n }\n}\n\n\n//[_ngcontent-%COMP%] Empty[_ngcontent-%COMP%] State\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 4rem 2rem;\n\n .empty-icon {\n font-size: 4rem;\n color: #e5e7eb;\n margin-bottom: 1rem;\n\n &.warning {\n color: #ffc107;\n }\n }\n\n .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: #374151;\n margin: 0 0 0.5rem 0;\n }\n\n .empty-subtext {\n color: #6b7280;\n margin: 0;\n }\n}\n\n.info-box[_ngcontent-%COMP%] {\n background: #f3f4f6;\n border-radius: 8px;\n padding: 1.5rem;\n margin-top: 2rem;\n text-align: left;\n max-width: 500px;\n margin-left: auto;\n margin-right: auto;\n\n h4 {\n margin: 0 0 1rem 0;\n color: #1f2937;\n }\n\n ol {\n margin: 0;\n padding-left: 1.25rem;\n color: #374151;\n \n li {\n margin-bottom: 0.5rem;\n }\n }\n\n code {\n background: #e5e7eb;\n padding: 0.125rem 0.375rem;\n border-radius: 4px;\n font-size: 0.875rem;\n }\n}\n\n//[_ngcontent-%COMP%] Loading[_ngcontent-%COMP%] State\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n min-height: 400px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n margin-bottom: 1rem;\n\n .spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n\n &:nth-child(1) {\n border-color: #2196f3 transparent transparent transparent;\n animation-delay: -0.45s;\n }\n\n &:nth-child(2) {\n border-color: transparent #9c27b0 transparent transparent;\n animation-delay: -0.3s;\n }\n\n &:nth-child(3) {\n border-color: transparent transparent #4caf50 transparent;\n animation-delay: -0.15s;\n }\n }\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.loading-text[_ngcontent-%COMP%] {\n color: #6b7280;\n font-size: 0.95rem;\n}\n\n//[_ngcontent-%COMP%] Modal[_ngcontent-%COMP%] Styles\n.modal-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.2s ease;\n}\n\n.modal-dialog[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 500px;\n width: 90%;\n max-height: 90vh;\n overflow: hidden;\n animation: _ngcontent-%COMP%_slideUp 0.3s ease;\n\n &.modal-large {\n max-width: 700px;\n }\n}\n\n.modal-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid #e5e7eb;\n\n .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.25rem;\n font-weight: 600;\n color: #1f2937;\n margin: 0;\n }\n\n .modal-close {\n padding: 0.5rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n\n &:hover {\n background: #f3f4f6;\n color: #374151;\n }\n }\n}\n\n.modal-body[_ngcontent-%COMP%] {\n padding: 1.5rem;\n max-height: 60vh;\n overflow-y: auto;\n}\n\n.modal-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n\n//[_ngcontent-%COMP%] Form[_ngcontent-%COMP%] Styles\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 1.5rem;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: #374151;\n margin-bottom: 0.5rem;\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n transition: all 0.2s;\n\n &:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n}\n\n.form-select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n background: white;\n cursor: pointer;\n transition: all 0.2s;\n\n &:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: #6b7280;\n margin-top: 0.25rem;\n}\n\n.form-checkboxes[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #374151;\n font-size: 0.95rem;\n cursor: pointer;\n\n input[type=\"checkbox\"] {\n cursor: pointer;\n }\n}\n\n//[_ngcontent-%COMP%] Animations\n@keyframes[_ngcontent-%COMP%] fadeIn[_ngcontent-%COMP%] {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes _ngcontent-%COMP%_slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}"] });
|
|
935
|
-
|
|
932
|
+
} }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent], styles: ["@keyframes _ngcontent-%COMP%_shimmer {\n 0% {\n background-position: -200% 0;\n }\n 100% {\n background-position: 200% 0;\n }\n}\n.sql-logging-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 100%;\n overflow: hidden;\n position: relative;\n max-width: 1400px;\n margin: 0 auto;\n padding: 2rem;\n}\n\n.action-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-bottom: 1.5rem;\n}\n@media (max-width: 768px) {\n .action-buttons[_ngcontent-%COMP%] {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n padding: 0.625rem 1.25rem;\n font-size: 0.95rem;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n background-color: #2196f3;\n color: white;\n}\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.btn-primary[_ngcontent-%COMP%]:hover {\n background-color: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n padding: 0.625rem 1.25rem;\n font-size: 0.95rem;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n background-color: #ffffff;\n color: #374151;\n border: 1px solid #e5e7eb;\n}\n.btn-secondary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-secondary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background-color: #f9fafb;\n border-color: #2196f3;\n color: #2196f3;\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n padding: 0.625rem 1.25rem;\n font-size: 0.95rem;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n background-color: #f44336;\n color: white;\n}\n.btn-danger[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.btn-danger[_ngcontent-%COMP%]:hover {\n background-color: #d32f2f;\n}\n.btn-danger.btn-small[_ngcontent-%COMP%] {\n padding: 0.375rem 0.75rem;\n font-size: 0.875rem;\n}\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid !important;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1.5rem;\n margin-bottom: 2rem;\n width: 100%;\n}\n@media (max-width: 768px) {\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n }\n}\n\n.stat-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 1.5rem;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n display: flex;\n margin-right: 10px;\n align-items: center;\n gap: 1rem;\n transition: all 0.3s ease;\n min-width: 0;\n}\n.stat-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n}\n\n.stat-icon[_ngcontent-%COMP%] {\n width: 60px;\n height: 60px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n}\n.stat-icon-status[_ngcontent-%COMP%] {\n background: rgba(76, 175, 80, 0.1);\n color: #4caf50;\n}\n.stat-icon-active[_ngcontent-%COMP%] {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n}\n.stat-icon-limit[_ngcontent-%COMP%] {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n}\n.stat-icon-total[_ngcontent-%COMP%] {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n}\n\n.stat-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n.stat-content[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 2rem;\n font-weight: 700;\n color: #1f2937;\n line-height: 1;\n}\n.stat-content[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n color: #6b7280;\n font-size: 0.875rem;\n margin-top: 0.25rem;\n}\n\n.content-area[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n position: relative;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n padding: 1.5rem;\n min-height: 400px;\n}\n\n.sessions-layout[_ngcontent-%COMP%] {\n display: flex;\n gap: 1.5rem;\n height: calc(100vh - 450px);\n min-height: 400px;\n max-height: 600px;\n}\n@media (max-width: 1024px) {\n .sessions-layout[_ngcontent-%COMP%] {\n flex-direction: column;\n height: auto;\n max-height: none;\n }\n}\n\n.sessions-panel[_ngcontent-%COMP%] {\n flex: 0 0 400px;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n}\n@media (max-width: 1024px) {\n .sessions-panel[_ngcontent-%COMP%] {\n flex: 1;\n max-height: 400px;\n }\n}\n\n.panel-header[_ngcontent-%COMP%] {\n padding: 1rem;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.panel-header[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: #1f2937;\n}\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.sessions-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n position: relative;\n padding: 0.75rem;\n}\n\n.session-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 1rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s;\n}\n.session-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.session-card.selected[_ngcontent-%COMP%] {\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n.session-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.75rem;\n}\n\n.session-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n.session-info[_ngcontent-%COMP%] .session-title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n font-size: 0.95rem;\n font-weight: 600;\n color: #1f2937;\n}\n\n.session-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: #6b7280;\n}\n.session-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.session-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.badge-user[_ngcontent-%COMP%] {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n}\n.badge-migration[_ngcontent-%COMP%] {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n}\n.badge-type[_ngcontent-%COMP%] {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n padding: 0.375rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 0.875rem;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.action-btn[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.action-btn-danger[_ngcontent-%COMP%]:hover {\n color: #f44336;\n}\n\n.log-viewer-panel[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.log-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n position: relative;\n background: #1e1e1e;\n color: #d4d4d4;\n padding: 0;\n min-height: 300px;\n height: 100%;\n position: relative;\n}\n.log-content[_ngcontent-%COMP%] .cm-editor {\n height: 100%;\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n font-size: 0.875rem;\n}\n.log-content[_ngcontent-%COMP%] .cm-scroller {\n font-family: inherit;\n}\n.log-content[_ngcontent-%COMP%] .cm-content {\n background: #1e1e1e;\n color: #d4d4d4;\n}\n.log-content[_ngcontent-%COMP%] .cm-gutters {\n background: #252526;\n color: #858585;\n border-right: 1px solid #464647;\n}\n.log-content[_ngcontent-%COMP%] .cm-activeLineGutter {\n background: #2a2a2a;\n}\n.log-content[_ngcontent-%COMP%] .cm-activeLine {\n background: rgba(255, 255, 255, 0.04);\n}\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 4rem 2rem;\n}\n.empty-state[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n font-size: 4rem;\n color: #e5e7eb;\n margin-bottom: 1rem;\n}\n.empty-state[_ngcontent-%COMP%] .empty-icon.warning[_ngcontent-%COMP%] {\n color: #ffc107;\n}\n.empty-state[_ngcontent-%COMP%] .empty-text[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n font-weight: 600;\n color: #374151;\n margin: 0 0 0.5rem 0;\n}\n.empty-state[_ngcontent-%COMP%] .empty-subtext[_ngcontent-%COMP%] {\n color: #6b7280;\n margin: 0;\n}\n\n.info-box[_ngcontent-%COMP%] {\n background: #f3f4f6;\n border-radius: 8px;\n padding: 1.5rem;\n margin-top: 2rem;\n text-align: left;\n max-width: 500px;\n margin-left: auto;\n margin-right: auto;\n}\n.info-box[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n color: #1f2937;\n}\n.info-box[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] {\n margin: 0;\n padding-left: 1.25rem;\n color: #374151;\n}\n.info-box[_ngcontent-%COMP%] ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%] {\n margin-bottom: 0.5rem;\n}\n.info-box[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #e5e7eb;\n padding: 0.125rem 0.375rem;\n border-radius: 4px;\n font-size: 0.875rem;\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n min-height: 400px;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n position: relative;\n width: 60px;\n height: 60px;\n margin-bottom: 1rem;\n}\n.loading-spinner[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%] {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: _ngcontent-%COMP%_spin 1.5s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n}\n.loading-spinner[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(1) {\n border-color: #2196f3 transparent transparent transparent;\n animation-delay: -0.45s;\n}\n.loading-spinner[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(2) {\n border-color: transparent #9c27b0 transparent transparent;\n animation-delay: -0.3s;\n}\n.loading-spinner[_ngcontent-%COMP%] .spinner-ring[_ngcontent-%COMP%]:nth-child(3) {\n border-color: transparent transparent #4caf50 transparent;\n animation-delay: -0.15s;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.loading-text[_ngcontent-%COMP%] {\n color: #6b7280;\n font-size: 0.95rem;\n}\n\n.modal-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n.modal-dialog[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 500px;\n width: 90%;\n max-height: 90vh;\n overflow: hidden;\n animation: _ngcontent-%COMP%_slideUp 0.3s ease;\n}\n.modal-dialog.modal-large[_ngcontent-%COMP%] {\n max-width: 700px;\n}\n\n.modal-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid #e5e7eb;\n}\n.modal-header[_ngcontent-%COMP%] .modal-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.25rem;\n font-weight: 600;\n color: #1f2937;\n margin: 0;\n}\n.modal-header[_ngcontent-%COMP%] .modal-close[_ngcontent-%COMP%] {\n padding: 0.5rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n}\n.modal-header[_ngcontent-%COMP%] .modal-close[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n color: #374151;\n}\n\n.modal-body[_ngcontent-%COMP%] {\n padding: 1.5rem;\n max-height: 60vh;\n overflow-y: auto;\n}\n\n.modal-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 1.5rem;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: #374151;\n margin-bottom: 0.5rem;\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n transition: all 0.2s;\n}\n.form-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n.form-select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n background: white;\n cursor: pointer;\n transition: all 0.2s;\n}\n.form-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n color: #6b7280;\n margin-top: 0.25rem;\n}\n\n.form-checkboxes[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #374151;\n font-size: 0.95rem;\n cursor: pointer;\n}\n.checkbox-label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes _ngcontent-%COMP%_slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}"] });
|
|
933
|
+
};
|
|
934
|
+
SqlLoggingComponent = __decorate([
|
|
935
|
+
RegisterClass(BaseDashboard, 'SqlLogging')
|
|
936
|
+
], SqlLoggingComponent);
|
|
937
|
+
export { SqlLoggingComponent };
|
|
936
938
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SqlLoggingComponent, [{
|
|
937
939
|
type: Component,
|
|
938
|
-
args: [{ selector: 'mj-sql-logging', standalone: true, imports: [
|
|
939
|
-
CommonModule,
|
|
940
|
-
FormsModule,
|
|
941
|
-
SharedSettingsModule,
|
|
942
|
-
CodeEditorModule
|
|
943
|
-
], template: "<div class=\"sql-logging-container\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\">\n <button class=\"btn-secondary\" (click)=\"loadActiveSessions()\" [disabled]=\"loading\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"loading\"></i>\n Refresh\n </button>\n @if (isOwner && configEnabled) {\n <button \n class=\"btn-primary\"\n [disabled]=\"loading || activeSessions.length >= (sqlLoggingConfig?.maxActiveSessions || 5)\"\n (click)=\"openStartSessionDialog()\"\n title=\"Start SQL logging session\"\n >\n <i class=\"fa-solid fa-play\"></i>\n Start New Session\n </button>\n }\n </div>\n\n <!-- Stats Cards -->\n @if (isOwner && configEnabled) {\n <div class=\"stats-grid\" style=\"display: flex\">\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-status\">\n <i class=\"fa-solid fa-power-off\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ configEnabled ? 'Enabled' : 'Disabled' }}</div>\n <div class=\"stat-label\">Status</div>\n </div>\n </div>\n \n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-active\">\n <i class=\"fa-solid fa-play-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ activeSessions.length }}</div>\n <div class=\"stat-label\">Active Sessions</div>\n </div>\n </div>\n \n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-limit\">\n <i class=\"fa-solid fa-gauge-high\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ sqlLoggingConfig?.maxActiveSessions || 5 }}</div>\n <div class=\"stat-label\">Max Sessions</div>\n </div>\n </div>\n \n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-total\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getTotalStatementCount() }}</div>\n <div class=\"stat-label\">Total Statements</div>\n </div>\n </div>\n </div>\n }\n\n <!-- Loading State -->\n @if (loading && !activeSessions.length) {\n <div class=\"loading-container\">\n <div class=\"loading-spinner\">\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n </div>\n <div class=\"loading-text\">Loading SQL logging configuration...</div>\n </div>\n }\n\n <!-- Content Area -->\n @if (!loading || activeSessions.length > 0) {\n <div class=\"content-area\">\n @if (!isOwner) {\n <!-- Not authorized -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-lock empty-icon\"></i>\n <p class=\"empty-text\">Access Denied</p>\n <p class=\"empty-subtext\">SQL logging requires Owner privileges. Please contact your system administrator for access.</p>\n <button \n class=\"btn-secondary\"\n (click)=\"refreshUserPermissions()\"\n style=\"margin-top: 1rem\"\n >\n <i class=\"fa-solid fa-sync\"></i>\n Refresh Permissions\n </button>\n </div>\n } @else if (!configEnabled) {\n <!-- Not enabled in config -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-exclamation-triangle empty-icon warning\"></i>\n <p class=\"empty-text\">SQL Logging Disabled</p>\n <p class=\"empty-subtext\">SQL logging is not enabled in the server configuration.</p>\n <div class=\"info-box\">\n <h4>To enable SQL logging:</h4>\n <ol>\n <li>Set <code>sqlLogging.enabled = true</code> in mj.config.cjs</li>\n <li>Restart the MJ API server</li>\n <li>Refresh this page</li>\n </ol>\n </div>\n </div>\n } @else if (activeSessions.length === 0) {\n <!-- No active sessions -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-file-code empty-icon\"></i>\n <p class=\"empty-text\">No Active Sessions</p>\n <p class=\"empty-subtext\">Start a new SQL logging session to begin capturing SQL statements.</p>\n <button \n class=\"btn-primary\"\n (click)=\"openStartSessionDialog()\"\n style=\"margin-top: 1rem\"\n >\n <i class=\"fa-solid fa-play\"></i>\n Start New Session\n </button>\n </div>\n } @else {\n <!-- Sessions layout -->\n <div class=\"sessions-layout\">\n <!-- Sessions panel -->\n <div class=\"sessions-panel\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">Active Sessions</h3>\n @if (activeSessions.length > 0) {\n <button \n class=\"btn-danger btn-small\"\n (click)=\"stopAllSessions()\"\n [disabled]=\"loading\"\n title=\"Stop all sessions\"\n >\n <i class=\"fa-solid fa-stop\"></i>\n Stop All\n </button>\n }\n </div>\n <div class=\"sessions-list\">\n @for (session of activeSessions; track session.id) {\n <div \n class=\"session-card\" \n [class.selected]=\"selectedSession?.id === session.id\"\n (click)=\"selectSession(session)\"\n >\n <div class=\"session-header\">\n <div class=\"session-info\">\n <h4 class=\"session-title\">{{ session.sessionName }}</h4>\n <div class=\"session-meta\">\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ getSessionDuration(session.startTime) }}\n </span>\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-database\"></i>\n {{ session.statementCount }} statements\n </span>\n </div>\n </div>\n <button \n class=\"action-btn action-btn-danger\"\n (click)=\"stopSession(session, $event)\"\n title=\"Stop session\"\n >\n <i class=\"fa-solid fa-stop\"></i>\n </button>\n </div>\n <div class=\"session-badges\">\n @if (session.filterByUserId) {\n <span class=\"badge badge-user\">\n <i class=\"fa-solid fa-user\"></i>\n User Filtered\n </span>\n }\n @if (session.options?.formatAsMigration) {\n <span class=\"badge badge-migration\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Migration\n </span>\n }\n <span class=\"badge badge-type\">\n {{ session.options?.statementTypes || 'both' }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n \n <!-- Log viewer panel -->\n <div class=\"log-viewer-panel\">\n @if (selectedSession) {\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">{{ selectedSession.sessionName }}</h3>\n <div class=\"panel-actions\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"autoRefresh\"\n />\n Auto-refresh\n </label>\n <button \n class=\"action-btn\"\n (click)=\"loadSessionLog(selectedSession)\"\n title=\"Refresh log\"\n >\n <i class=\"fa-solid fa-sync\" [class.fa-spin]=\"loading\"></i>\n </button>\n </div>\n </div>\n <div class=\"log-content\">\n <mj-code-editor\n [value]=\"logContent\"\n [readonly]=\"true\"\n [disabled]=\"true\"\n [language]=\"'sql'\"\n [setup]=\"'basic'\"\n [lineWrapping]=\"true\"\n [highlightWhitespace]=\"false\"\n style=\"height: 100%;\"\n ></mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-arrow-left empty-icon\"></i>\n <p class=\"empty-text\">Select a Session</p>\n <p class=\"empty-subtext\">Choose a session from the list to view its SQL log.</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Start Session Dialog -->\n @if (showStartSessionDialog) {\n <div class=\"modal-backdrop\" (click)=\"showStartSessionDialog = false\">\n <div class=\"modal-dialog modal-large\" (click)=\"$event.stopPropagation()\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\">\n <i class=\"fa-solid fa-play\"></i>\n Start SQL Logging Session\n </h3>\n <button class=\"modal-close\" (click)=\"showStartSessionDialog = false\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group\">\n <label class=\"form-label\">Session Name</label>\n <input \n type=\"text\"\n class=\"form-input\" \n [(ngModel)]=\"newSessionOptions.sessionName\"\n placeholder=\"Enter a descriptive name for this session\"\n />\n </div>\n \n <div class=\"form-group\">\n <label class=\"form-label\">File Name</label>\n <input \n type=\"text\"\n class=\"form-input\" \n [(ngModel)]=\"newSessionOptions.fileName\"\n placeholder=\"sql-log-2024-01-01.sql\"\n />\n <div class=\"form-hint\">The SQL log will be saved to this file</div>\n </div>\n \n <div class=\"form-group\">\n <label class=\"form-label\">Statement Types</label>\n <select\n class=\"form-select\"\n [(ngModel)]=\"newSessionOptions.statementTypes\"\n >\n @for (option of statementTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <div class=\"form-checkboxes\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"newSessionOptions.filterToCurrentUser\"\n />\n Filter to my SQL statements only\n </label>\n \n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"newSessionOptions.formatAsMigration\"\n />\n Format as migration file\n </label>\n \n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"newSessionOptions.prettyPrint\"\n />\n Pretty print SQL statements\n </label>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn-secondary\" (click)=\"showStartSessionDialog = false\">\n Cancel\n </button>\n <button class=\"btn-primary\" (click)=\"startNewSession()\" [disabled]=\"loading\">\n <i class=\"fa-solid fa-play\"></i>\n Start Session\n </button>\n </div>\n </div>\n </div>\n }\n</div>", styles: ["@import '../shared/styles/variables';\n@import '../shared/styles/mixins';\n\n.sql-logging-container {\n @include scrollable-container;\n max-width: 1400px;\n margin: 0 auto;\n padding: 2rem;\n}\n\n// Action Buttons\n.action-buttons {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-bottom: 1.5rem;\n\n @media (max-width: 768px) {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n// Buttons\n.btn-primary {\n @include button-base;\n background-color: #2196f3;\n color: white;\n \n &:hover {\n background-color: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);\n }\n}\n\n.btn-secondary {\n @include button-base;\n background-color: #ffffff;\n color: #374151;\n border: 1px solid #e5e7eb;\n \n &:hover {\n background-color: #f9fafb;\n border-color: #2196f3;\n color: #2196f3;\n }\n}\n\n.btn-danger {\n @include button-base;\n background-color: #f44336;\n color: white;\n \n &:hover {\n background-color: #d32f2f;\n }\n \n &.btn-small {\n padding: 0.375rem 0.75rem;\n font-size: 0.875rem;\n }\n}\n\n// Stats Grid\n.stats-grid {\n display: grid !important;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1.5rem;\n margin-bottom: 2rem;\n width: 100%;\n\n @media (max-width: 768px) {\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n }\n}\n\n.stat-card {\n background: white;\n border-radius: 12px;\n padding: 1.5rem;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n display: flex;\n margin-right: 10px;\n align-items: center;\n gap: 1rem;\n transition: all 0.3s ease;\n min-width: 0; // Prevent grid blowout\n\n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n }\n}\n\n.stat-icon {\n width: 60px;\n height: 60px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n\n &-status {\n background: rgba(76, 175, 80, 0.1);\n color: #4caf50;\n }\n\n &-active {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n }\n\n &-limit {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n }\n\n &-total {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n }\n}\n\n.stat-content {\n flex: 1;\n\n .stat-value {\n font-size: 2rem;\n font-weight: 700;\n color: #1f2937;\n line-height: 1;\n }\n\n .stat-label {\n color: #6b7280;\n font-size: 0.875rem;\n margin-top: 0.25rem;\n }\n}\n\n// Content Area\n.content-area {\n @include scrollable-content;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n padding: 1.5rem;\n min-height: 400px;\n}\n\n// Sessions Layout\n.sessions-layout {\n display: flex;\n gap: 1.5rem;\n height: calc(100vh - 450px); // Dynamic height based on viewport\n min-height: 400px;\n max-height: 600px;\n\n @media (max-width: 1024px) {\n flex-direction: column;\n height: auto;\n max-height: none;\n }\n}\n\n.sessions-panel {\n flex: 0 0 400px;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n\n @media (max-width: 1024px) {\n flex: 1;\n max-height: 400px;\n }\n}\n\n.panel-header {\n padding: 1rem;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n .panel-title {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: #1f2937;\n }\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.sessions-list {\n @include scrollable-content;\n padding: 0.75rem;\n}\n\n.session-card {\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 1rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n }\n\n &.selected {\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n}\n\n.session-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.75rem;\n}\n\n.session-info {\n flex: 1;\n \n .session-title {\n margin: 0 0 0.5rem 0;\n font-size: 0.95rem;\n font-weight: 600;\n color: #1f2937;\n }\n}\n\n.session-meta {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: #6b7280;\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n}\n\n.session-badges {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.badge {\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n &-user {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n }\n\n &-migration {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n }\n\n &-type {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n }\n}\n\n.action-btn {\n padding: 0.375rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 0.875rem;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n background: #f3f4f6;\n color: #374151;\n }\n\n &-danger:hover {\n color: #f44336;\n }\n}\n\n// Log Viewer Panel\n.log-viewer-panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.log-content {\n @include scrollable-content;\n background: #1e1e1e;\n color: #d4d4d4;\n padding: 0; // Remove padding for code editor\n min-height: 300px;\n height: 100%;\n position: relative;\n \n // Code editor styles\n ::ng-deep {\n .cm-editor {\n height: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 0.875rem;\n }\n \n .cm-scroller {\n font-family: inherit;\n }\n \n // Dark theme adjustments to match previous style\n .cm-content {\n background: #1e1e1e;\n color: #d4d4d4;\n }\n \n .cm-gutters {\n background: #252526;\n color: #858585;\n border-right: 1px solid #464647;\n }\n \n .cm-activeLineGutter {\n background: #2a2a2a;\n }\n \n .cm-activeLine {\n background: rgba(255, 255, 255, 0.04);\n }\n }\n}\n\n\n// Empty State\n.empty-state {\n text-align: center;\n padding: 4rem 2rem;\n\n .empty-icon {\n font-size: 4rem;\n color: #e5e7eb;\n margin-bottom: 1rem;\n\n &.warning {\n color: #ffc107;\n }\n }\n\n .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: #374151;\n margin: 0 0 0.5rem 0;\n }\n\n .empty-subtext {\n color: #6b7280;\n margin: 0;\n }\n}\n\n.info-box {\n background: #f3f4f6;\n border-radius: 8px;\n padding: 1.5rem;\n margin-top: 2rem;\n text-align: left;\n max-width: 500px;\n margin-left: auto;\n margin-right: auto;\n\n h4 {\n margin: 0 0 1rem 0;\n color: #1f2937;\n }\n\n ol {\n margin: 0;\n padding-left: 1.25rem;\n color: #374151;\n \n li {\n margin-bottom: 0.5rem;\n }\n }\n\n code {\n background: #e5e7eb;\n padding: 0.125rem 0.375rem;\n border-radius: 4px;\n font-size: 0.875rem;\n }\n}\n\n// Loading State\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n min-height: 400px;\n}\n\n.loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n margin-bottom: 1rem;\n\n .spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n\n &:nth-child(1) {\n border-color: #2196f3 transparent transparent transparent;\n animation-delay: -0.45s;\n }\n\n &:nth-child(2) {\n border-color: transparent #9c27b0 transparent transparent;\n animation-delay: -0.3s;\n }\n\n &:nth-child(3) {\n border-color: transparent transparent #4caf50 transparent;\n animation-delay: -0.15s;\n }\n }\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.loading-text {\n color: #6b7280;\n font-size: 0.95rem;\n}\n\n// Modal Styles\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.2s ease;\n}\n\n.modal-dialog {\n background: white;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 500px;\n width: 90%;\n max-height: 90vh;\n overflow: hidden;\n animation: slideUp 0.3s ease;\n\n &.modal-large {\n max-width: 700px;\n }\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid #e5e7eb;\n\n .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.25rem;\n font-weight: 600;\n color: #1f2937;\n margin: 0;\n }\n\n .modal-close {\n padding: 0.5rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n\n &:hover {\n background: #f3f4f6;\n color: #374151;\n }\n }\n}\n\n.modal-body {\n padding: 1.5rem;\n max-height: 60vh;\n overflow-y: auto;\n}\n\n.modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n\n// Form Styles\n.form-group {\n margin-bottom: 1.5rem;\n}\n\n.form-label {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: #374151;\n margin-bottom: 0.5rem;\n}\n\n.form-input {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n transition: all 0.2s;\n\n &:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n}\n\n.form-select {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n background: white;\n cursor: pointer;\n transition: all 0.2s;\n\n &:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n}\n\n.form-hint {\n font-size: 0.75rem;\n color: #6b7280;\n margin-top: 0.25rem;\n}\n\n.form-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #374151;\n font-size: 0.95rem;\n cursor: pointer;\n\n input[type=\"checkbox\"] {\n cursor: pointer;\n }\n}\n\n// Animations\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}"] }]
|
|
940
|
+
args: [{ selector: 'mj-sql-logging', template: "<div class=\"sql-logging-container\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\">\n <button class=\"btn-secondary\" (click)=\"loadActiveSessions()\" [disabled]=\"loading\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"loading\"></i>\n Refresh\n </button>\n @if (isOwner && configEnabled) {\n <button \n class=\"btn-primary\"\n [disabled]=\"loading || activeSessions.length >= (sqlLoggingConfig?.maxActiveSessions || 5)\"\n (click)=\"openStartSessionDialog()\"\n title=\"Start SQL logging session\"\n >\n <i class=\"fa-solid fa-play\"></i>\n Start New Session\n </button>\n }\n </div>\n\n <!-- Stats Cards -->\n @if (isOwner && configEnabled) {\n <div class=\"stats-grid\" style=\"display: flex\">\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-status\">\n <i class=\"fa-solid fa-power-off\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ configEnabled ? 'Enabled' : 'Disabled' }}</div>\n <div class=\"stat-label\">Status</div>\n </div>\n </div>\n \n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-active\">\n <i class=\"fa-solid fa-play-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ activeSessions.length }}</div>\n <div class=\"stat-label\">Active Sessions</div>\n </div>\n </div>\n \n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-limit\">\n <i class=\"fa-solid fa-gauge-high\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ sqlLoggingConfig?.maxActiveSessions || 5 }}</div>\n <div class=\"stat-label\">Max Sessions</div>\n </div>\n </div>\n \n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-total\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ getTotalStatementCount() }}</div>\n <div class=\"stat-label\">Total Statements</div>\n </div>\n </div>\n </div>\n }\n\n <!-- Loading State -->\n @if (loading && !activeSessions.length) {\n <div class=\"loading-container\">\n <div class=\"loading-spinner\">\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n <div class=\"spinner-ring\"></div>\n </div>\n <div class=\"loading-text\">Loading SQL logging configuration...</div>\n </div>\n }\n\n <!-- Content Area -->\n @if (!loading || activeSessions.length > 0) {\n <div class=\"content-area\">\n @if (!isOwner) {\n <!-- Not authorized -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-lock empty-icon\"></i>\n <p class=\"empty-text\">Access Denied</p>\n <p class=\"empty-subtext\">SQL logging requires Owner privileges. Please contact your system administrator for access.</p>\n <button \n class=\"btn-secondary\"\n (click)=\"refreshUserPermissions()\"\n style=\"margin-top: 1rem\"\n >\n <i class=\"fa-solid fa-sync\"></i>\n Refresh Permissions\n </button>\n </div>\n } @else if (!configEnabled) {\n <!-- Not enabled in config -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-exclamation-triangle empty-icon warning\"></i>\n <p class=\"empty-text\">SQL Logging Disabled</p>\n <p class=\"empty-subtext\">SQL logging is not enabled in the server configuration.</p>\n <div class=\"info-box\">\n <h4>To enable SQL logging:</h4>\n <ol>\n <li>Set <code>sqlLogging.enabled = true</code> in mj.config.cjs</li>\n <li>Restart the MJ API server</li>\n <li>Refresh this page</li>\n </ol>\n </div>\n </div>\n } @else if (activeSessions.length === 0) {\n <!-- No active sessions -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-file-code empty-icon\"></i>\n <p class=\"empty-text\">No Active Sessions</p>\n <p class=\"empty-subtext\">Start a new SQL logging session to begin capturing SQL statements.</p>\n <button \n class=\"btn-primary\"\n (click)=\"openStartSessionDialog()\"\n style=\"margin-top: 1rem\"\n >\n <i class=\"fa-solid fa-play\"></i>\n Start New Session\n </button>\n </div>\n } @else {\n <!-- Sessions layout -->\n <div class=\"sessions-layout\">\n <!-- Sessions panel -->\n <div class=\"sessions-panel\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">Active Sessions</h3>\n @if (activeSessions.length > 0) {\n <button \n class=\"btn-danger btn-small\"\n (click)=\"stopAllSessions()\"\n [disabled]=\"loading\"\n title=\"Stop all sessions\"\n >\n <i class=\"fa-solid fa-stop\"></i>\n Stop All\n </button>\n }\n </div>\n <div class=\"sessions-list\">\n @for (session of activeSessions; track session.id) {\n <div \n class=\"session-card\" \n [class.selected]=\"selectedSession?.id === session.id\"\n (click)=\"selectSession(session)\"\n >\n <div class=\"session-header\">\n <div class=\"session-info\">\n <h4 class=\"session-title\">{{ session.sessionName }}</h4>\n <div class=\"session-meta\">\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ getSessionDuration(session.startTime) }}\n </span>\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-database\"></i>\n {{ session.statementCount }} statements\n </span>\n </div>\n </div>\n <button \n class=\"action-btn action-btn-danger\"\n (click)=\"stopSession(session, $event)\"\n title=\"Stop session\"\n >\n <i class=\"fa-solid fa-stop\"></i>\n </button>\n </div>\n <div class=\"session-badges\">\n @if (session.filterByUserId) {\n <span class=\"badge badge-user\">\n <i class=\"fa-solid fa-user\"></i>\n User Filtered\n </span>\n }\n @if (session.options?.formatAsMigration) {\n <span class=\"badge badge-migration\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Migration\n </span>\n }\n <span class=\"badge badge-type\">\n {{ session.options?.statementTypes || 'both' }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n \n <!-- Log viewer panel -->\n <div class=\"log-viewer-panel\">\n @if (selectedSession) {\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">{{ selectedSession.sessionName }}</h3>\n <div class=\"panel-actions\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"autoRefresh\"\n />\n Auto-refresh\n </label>\n <button \n class=\"action-btn\"\n (click)=\"loadSessionLog(selectedSession)\"\n title=\"Refresh log\"\n >\n <i class=\"fa-solid fa-sync\" [class.fa-spin]=\"loading\"></i>\n </button>\n </div>\n </div>\n <div class=\"log-content\">\n <mj-code-editor\n [value]=\"logContent\"\n [readonly]=\"true\"\n [disabled]=\"true\"\n [language]=\"'sql'\"\n [setup]=\"'basic'\"\n [lineWrapping]=\"true\"\n [highlightWhitespace]=\"false\"\n style=\"height: 100%;\"\n ></mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-arrow-left empty-icon\"></i>\n <p class=\"empty-text\">Select a Session</p>\n <p class=\"empty-subtext\">Choose a session from the list to view its SQL log.</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Start Session Dialog -->\n @if (showStartSessionDialog) {\n <div class=\"modal-backdrop\" (click)=\"showStartSessionDialog = false\">\n <div class=\"modal-dialog modal-large\" (click)=\"$event.stopPropagation()\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\">\n <i class=\"fa-solid fa-play\"></i>\n Start SQL Logging Session\n </h3>\n <button class=\"modal-close\" (click)=\"showStartSessionDialog = false\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group\">\n <label class=\"form-label\">Session Name</label>\n <input \n type=\"text\"\n class=\"form-input\" \n [(ngModel)]=\"newSessionOptions.sessionName\"\n placeholder=\"Enter a descriptive name for this session\"\n />\n </div>\n \n <div class=\"form-group\">\n <label class=\"form-label\">File Name</label>\n <input \n type=\"text\"\n class=\"form-input\" \n [(ngModel)]=\"newSessionOptions.fileName\"\n placeholder=\"sql-log-2024-01-01.sql\"\n />\n <div class=\"form-hint\">The SQL log will be saved to this file</div>\n </div>\n \n <div class=\"form-group\">\n <label class=\"form-label\">Statement Types</label>\n <select\n class=\"form-select\"\n [(ngModel)]=\"newSessionOptions.statementTypes\"\n >\n @for (option of statementTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <div class=\"form-checkboxes\">\n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"newSessionOptions.filterToCurrentUser\"\n />\n Filter to my SQL statements only\n </label>\n \n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"newSessionOptions.formatAsMigration\"\n />\n Format as migration file\n </label>\n \n <label class=\"checkbox-label\">\n <input \n type=\"checkbox\" \n [(ngModel)]=\"newSessionOptions.prettyPrint\"\n />\n Pretty print SQL statements\n </label>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn-secondary\" (click)=\"showStartSessionDialog = false\">\n Cancel\n </button>\n <button class=\"btn-primary\" (click)=\"startNewSession()\" [disabled]=\"loading\">\n <i class=\"fa-solid fa-play\"></i>\n Start Session\n </button>\n </div>\n </div>\n </div>\n }\n</div>", styles: ["@keyframes shimmer {\n 0% {\n background-position: -200% 0;\n }\n 100% {\n background-position: 200% 0;\n }\n}\n.sql-logging-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 100%;\n overflow: hidden;\n position: relative;\n max-width: 1400px;\n margin: 0 auto;\n padding: 2rem;\n}\n\n.action-buttons {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-bottom: 1.5rem;\n}\n@media (max-width: 768px) {\n .action-buttons {\n justify-content: center;\n flex-wrap: wrap;\n }\n}\n\n.btn-primary {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n padding: 0.625rem 1.25rem;\n font-size: 0.95rem;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n background-color: #2196f3;\n color: white;\n}\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-primary i {\n font-size: 0.875rem;\n}\n.btn-primary:hover {\n background-color: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.3);\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n padding: 0.625rem 1.25rem;\n font-size: 0.95rem;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n background-color: #ffffff;\n color: #374151;\n border: 1px solid #e5e7eb;\n}\n.btn-secondary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-secondary i {\n font-size: 0.875rem;\n}\n.btn-secondary:hover {\n background-color: #f9fafb;\n border-color: #2196f3;\n color: #2196f3;\n}\n\n.btn-danger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n padding: 0.625rem 1.25rem;\n font-size: 0.95rem;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n background-color: #f44336;\n color: white;\n}\n.btn-danger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-danger i {\n font-size: 0.875rem;\n}\n.btn-danger:hover {\n background-color: #d32f2f;\n}\n.btn-danger.btn-small {\n padding: 0.375rem 0.75rem;\n font-size: 0.875rem;\n}\n\n.stats-grid {\n display: grid !important;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1.5rem;\n margin-bottom: 2rem;\n width: 100%;\n}\n@media (max-width: 768px) {\n .stats-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n }\n}\n\n.stat-card {\n background: white;\n border-radius: 12px;\n padding: 1.5rem;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n display: flex;\n margin-right: 10px;\n align-items: center;\n gap: 1rem;\n transition: all 0.3s ease;\n min-width: 0;\n}\n.stat-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n}\n\n.stat-icon {\n width: 60px;\n height: 60px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n}\n.stat-icon-status {\n background: rgba(76, 175, 80, 0.1);\n color: #4caf50;\n}\n.stat-icon-active {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n}\n.stat-icon-limit {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n}\n.stat-icon-total {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n}\n\n.stat-content {\n flex: 1;\n}\n.stat-content .stat-value {\n font-size: 2rem;\n font-weight: 700;\n color: #1f2937;\n line-height: 1;\n}\n.stat-content .stat-label {\n color: #6b7280;\n font-size: 0.875rem;\n margin-top: 0.25rem;\n}\n\n.content-area {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n position: relative;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n padding: 1.5rem;\n min-height: 400px;\n}\n\n.sessions-layout {\n display: flex;\n gap: 1.5rem;\n height: calc(100vh - 450px);\n min-height: 400px;\n max-height: 600px;\n}\n@media (max-width: 1024px) {\n .sessions-layout {\n flex-direction: column;\n height: auto;\n max-height: none;\n }\n}\n\n.sessions-panel {\n flex: 0 0 400px;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n}\n@media (max-width: 1024px) {\n .sessions-panel {\n flex: 1;\n max-height: 400px;\n }\n}\n\n.panel-header {\n padding: 1rem;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.panel-header .panel-title {\n margin: 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: #1f2937;\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.sessions-list {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n position: relative;\n padding: 0.75rem;\n}\n\n.session-card {\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 1rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s;\n}\n.session-card:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.session-card.selected {\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n.session-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.75rem;\n}\n\n.session-info {\n flex: 1;\n}\n.session-info .session-title {\n margin: 0 0 0.5rem 0;\n font-size: 0.95rem;\n font-weight: 600;\n color: #1f2937;\n}\n\n.session-meta {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: #6b7280;\n}\n.session-meta .meta-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.session-badges {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n\n.badge {\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.625rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.badge-user {\n background: rgba(33, 150, 243, 0.1);\n color: #2196f3;\n}\n.badge-migration {\n background: rgba(156, 39, 176, 0.1);\n color: #9c27b0;\n}\n.badge-type {\n background: rgba(255, 152, 0, 0.1);\n color: #ff9800;\n}\n\n.action-btn {\n padding: 0.375rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 0.875rem;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.action-btn:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.action-btn-danger:hover {\n color: #f44336;\n}\n\n.log-viewer-panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.log-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 0;\n position: relative;\n background: #1e1e1e;\n color: #d4d4d4;\n padding: 0;\n min-height: 300px;\n height: 100%;\n position: relative;\n}\n.log-content ::ng-deep .cm-editor {\n height: 100%;\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n font-size: 0.875rem;\n}\n.log-content ::ng-deep .cm-scroller {\n font-family: inherit;\n}\n.log-content ::ng-deep .cm-content {\n background: #1e1e1e;\n color: #d4d4d4;\n}\n.log-content ::ng-deep .cm-gutters {\n background: #252526;\n color: #858585;\n border-right: 1px solid #464647;\n}\n.log-content ::ng-deep .cm-activeLineGutter {\n background: #2a2a2a;\n}\n.log-content ::ng-deep .cm-activeLine {\n background: rgba(255, 255, 255, 0.04);\n}\n\n.empty-state {\n text-align: center;\n padding: 4rem 2rem;\n}\n.empty-state .empty-icon {\n font-size: 4rem;\n color: #e5e7eb;\n margin-bottom: 1rem;\n}\n.empty-state .empty-icon.warning {\n color: #ffc107;\n}\n.empty-state .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: #374151;\n margin: 0 0 0.5rem 0;\n}\n.empty-state .empty-subtext {\n color: #6b7280;\n margin: 0;\n}\n\n.info-box {\n background: #f3f4f6;\n border-radius: 8px;\n padding: 1.5rem;\n margin-top: 2rem;\n text-align: left;\n max-width: 500px;\n margin-left: auto;\n margin-right: auto;\n}\n.info-box h4 {\n margin: 0 0 1rem 0;\n color: #1f2937;\n}\n.info-box ol {\n margin: 0;\n padding-left: 1.25rem;\n color: #374151;\n}\n.info-box ol li {\n margin-bottom: 0.5rem;\n}\n.info-box code {\n background: #e5e7eb;\n padding: 0.125rem 0.375rem;\n border-radius: 4px;\n font-size: 0.875rem;\n}\n\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n min-height: 400px;\n}\n\n.loading-spinner {\n position: relative;\n width: 60px;\n height: 60px;\n margin-bottom: 1rem;\n}\n.loading-spinner .spinner-ring {\n position: absolute;\n width: 100%;\n height: 100%;\n border: 3px solid transparent;\n border-radius: 50%;\n animation: spin 1.5s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n}\n.loading-spinner .spinner-ring:nth-child(1) {\n border-color: #2196f3 transparent transparent transparent;\n animation-delay: -0.45s;\n}\n.loading-spinner .spinner-ring:nth-child(2) {\n border-color: transparent #9c27b0 transparent transparent;\n animation-delay: -0.3s;\n}\n.loading-spinner .spinner-ring:nth-child(3) {\n border-color: transparent transparent #4caf50 transparent;\n animation-delay: -0.15s;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.loading-text {\n color: #6b7280;\n font-size: 0.95rem;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.2s ease;\n}\n\n.modal-dialog {\n background: white;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n max-width: 500px;\n width: 90%;\n max-height: 90vh;\n overflow: hidden;\n animation: slideUp 0.3s ease;\n}\n.modal-dialog.modal-large {\n max-width: 700px;\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid #e5e7eb;\n}\n.modal-header .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.25rem;\n font-weight: 600;\n color: #1f2937;\n margin: 0;\n}\n.modal-header .modal-close {\n padding: 0.5rem;\n border: none;\n background: transparent;\n color: #6b7280;\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s;\n}\n.modal-header .modal-close:hover {\n background: #f3f4f6;\n color: #374151;\n}\n\n.modal-body {\n padding: 1.5rem;\n max-height: 60vh;\n overflow-y: auto;\n}\n\n.modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n\n.form-group {\n margin-bottom: 1.5rem;\n}\n\n.form-label {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: #374151;\n margin-bottom: 0.5rem;\n}\n\n.form-input {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n transition: all 0.2s;\n}\n.form-input:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n.form-select {\n width: 100%;\n padding: 0.75rem 1rem;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 0.95rem;\n background: white;\n cursor: pointer;\n transition: all 0.2s;\n}\n.form-select:focus {\n outline: none;\n border-color: #2196f3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n.form-hint {\n font-size: 0.75rem;\n color: #6b7280;\n margin-top: 0.25rem;\n}\n\n.form-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #374151;\n font-size: 0.95rem;\n cursor: pointer;\n}\n.checkbox-label input[type=checkbox] {\n cursor: pointer;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n"] }]
|
|
944
941
|
}], () => [{ type: i1.SharedService }], null); })();
|
|
945
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SqlLoggingComponent, { className: "SqlLoggingComponent", filePath: "src/lib/sql-logging/sql-logging.component.ts", lineNumber:
|
|
942
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SqlLoggingComponent, { className: "SqlLoggingComponent", filePath: "src/lib/sql-logging/sql-logging.component.ts", lineNumber: 64 }); })();
|
|
946
943
|
//# sourceMappingURL=sql-logging.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-logging.component.js","sourceRoot":"","sources":["../../../src/lib/sql-logging/sql-logging.component.ts","../../../src/lib/sql-logging/sql-logging.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql-logging.component.js","sourceRoot":"","sources":["../../../src/lib/sql-logging/sql-logging.component.ts","../../../src/lib/sql-logging/sql-logging.component.html"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { ApplicationManager, BaseApplication } from '@memberjunction/ng-base-application';
|
|
3
|
+
import { SharedService } from '@memberjunction/ng-shared';
|
|
4
|
+
import { DragEndEvent } from '@progress/kendo-angular-sortable';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Represents an app item in the configuration UI
|
|
8
|
+
*/
|
|
9
|
+
interface AppConfigItem {
|
|
10
|
+
app: BaseApplication;
|
|
11
|
+
userAppId: string | null;
|
|
12
|
+
sequence: number;
|
|
13
|
+
isActive: boolean;
|
|
14
|
+
isDirty: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Full-screen modal dialog for configuring user's application visibility and order.
|
|
18
|
+
* Allows users to:
|
|
19
|
+
* - Select which applications to show in the app switcher
|
|
20
|
+
* - Reorder applications via drag-and-drop
|
|
21
|
+
*/
|
|
22
|
+
export declare class UserAppConfigComponent {
|
|
23
|
+
private appManager;
|
|
24
|
+
private sharedService;
|
|
25
|
+
private cdr;
|
|
26
|
+
showDialog: boolean;
|
|
27
|
+
showDialogChange: EventEmitter<boolean>;
|
|
28
|
+
configSaved: EventEmitter<void>;
|
|
29
|
+
allApps: AppConfigItem[];
|
|
30
|
+
activeApps: AppConfigItem[];
|
|
31
|
+
availableApps: AppConfigItem[];
|
|
32
|
+
isLoading: boolean;
|
|
33
|
+
isSaving: boolean;
|
|
34
|
+
errorMessage: string;
|
|
35
|
+
availablePanelCollapsed: boolean;
|
|
36
|
+
selectedPanelCollapsed: boolean;
|
|
37
|
+
constructor(appManager: ApplicationManager, sharedService: SharedService, cdr: ChangeDetectorRef);
|
|
38
|
+
/**
|
|
39
|
+
* Opens the dialog and loads user's app configuration
|
|
40
|
+
*/
|
|
41
|
+
open(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Closes the dialog without saving
|
|
44
|
+
*/
|
|
45
|
+
close(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Loads the user's current app configuration
|
|
48
|
+
*/
|
|
49
|
+
private loadConfiguration;
|
|
50
|
+
/**
|
|
51
|
+
* Builds app config items by matching system apps with user's UserApplication records
|
|
52
|
+
*/
|
|
53
|
+
private buildAppConfigItems;
|
|
54
|
+
/**
|
|
55
|
+
* Separates apps into active and available lists based on isActive state
|
|
56
|
+
*/
|
|
57
|
+
private refreshAppLists;
|
|
58
|
+
/**
|
|
59
|
+
* Handles drag-and-drop reordering of active apps
|
|
60
|
+
*/
|
|
61
|
+
onDragEnd(event: DragEndEvent): void;
|
|
62
|
+
/**
|
|
63
|
+
* Adds an app to the user's active list
|
|
64
|
+
*/
|
|
65
|
+
addApp(item: AppConfigItem): void;
|
|
66
|
+
/**
|
|
67
|
+
* Removes an app from the user's active list
|
|
68
|
+
*/
|
|
69
|
+
removeApp(item: AppConfigItem): void;
|
|
70
|
+
/**
|
|
71
|
+
* Moves an app up in the order
|
|
72
|
+
*/
|
|
73
|
+
moveUp(item: AppConfigItem): void;
|
|
74
|
+
/**
|
|
75
|
+
* Moves an app down in the order
|
|
76
|
+
*/
|
|
77
|
+
moveDown(item: AppConfigItem): void;
|
|
78
|
+
/**
|
|
79
|
+
* Checks if there are any unsaved changes
|
|
80
|
+
*/
|
|
81
|
+
hasChanges(): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Saves the user's app configuration
|
|
84
|
+
*/
|
|
85
|
+
save(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Updates an existing UserApplication record
|
|
88
|
+
*/
|
|
89
|
+
private updateUserApplication;
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new UserApplication record
|
|
92
|
+
*/
|
|
93
|
+
private createUserApplication;
|
|
94
|
+
/**
|
|
95
|
+
* Resets all changes and reloads the configuration
|
|
96
|
+
*/
|
|
97
|
+
reset(): Promise<void>;
|
|
98
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UserAppConfigComponent, never>;
|
|
99
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UserAppConfigComponent, "mj-user-app-config", never, { "showDialog": { "alias": "showDialog"; "required": false; }; }, { "showDialogChange": "showDialogChange"; "configSaved": "configSaved"; }, never, never, false, never>;
|
|
100
|
+
}
|
|
101
|
+
export {};
|
|
102
|
+
//# sourceMappingURL=user-app-config.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-app-config.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-app-config/user-app-config.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;;AAEhE;;GAEG;AACH,UAAU,aAAa;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAKa,sBAAsB;IAuB/B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IAxBJ,UAAU,UAAS;IAClB,gBAAgB,wBAA+B;IAC/C,WAAW,qBAA4B;IAGjD,OAAO,EAAE,aAAa,EAAE,CAAM;IAG9B,UAAU,EAAE,aAAa,EAAE,CAAM;IAGjC,aAAa,EAAE,aAAa,EAAE,CAAM;IAEpC,SAAS,UAAS;IAClB,QAAQ,UAAS;IACjB,YAAY,SAAM;IAGlB,uBAAuB,UAAS;IAChC,sBAAsB,UAAS;gBAGrB,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,iBAAiB;IAGhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAYpC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAOjC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAepC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBnC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,qBAAqB;IAmBnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;yCAhTjB,sBAAsB;2CAAtB,sBAAsB;CAmTlC"}
|