Protected_List of currently active SQL logging sessions
Whether to automatically refresh session data
Whether SQL logging is enabled in the server configuration
Protecteddestroy$Current error message to display to the user, if any
Subclasses can emit anytime an error occurs.
Options for Regex filter
Subclasses can emit this event anytime they want to communicate with the container to let it know that something has happened of significance.
Whether the log viewer is in expanded (fullscreen) mode
Whether the current user has Owner privileges to access SQL logging
Whether the start session dialog is in fullscreen mode
Whether stopping all sessions (vs single session)
Whether the component is currently performing an async operation
Content of the currently viewed log file
ProtectednavigationOptions for creating a new SQL logging session
Custom filename for the log file
Regex filter options
Whether to filter SQL statements to current user only
Whether to format output as migration file
Whether to format SQL with proper indentation
Human-readable name for the session
Types of SQL statements to capture
Subclasses can emit this event anytime they want to open a record within a particular entity. The container should handle this event and open the record.
Tab ID for query param notification scoping. Set by resource wrappers that render child dashboards, so the child knows which tab it belongs to. If not set, falls back to Data.Configuration.tabId.
If specified, this provider will be used for communication and for all metadata purposes. By default, if not provided, the Metadata and RunView classes are used for this and the default GraphQLDataProvider is used which is connected to the same back-end MJAPI instance as the Metadata and RunView classes. If you want to have this component connect to a different MJAPI back-end, create an instance of a ProviderBase sub-class like GraphQLDataProvider/etc, and configure it as appropriate to connect to the MJAPI back-end you want to use, and then pass it in here.
Interval in milliseconds for auto-refresh functionality
Currently selected session for viewing logs
Session pending stop confirmation (single session or null for all)
Whether the start session dialog is currently visible
Whether to show the statistics cards section
Whether the stop session confirmation dialog is visible
Current SQL logging configuration from the server
Available options for SQL statement type filtering
Subclasses should emit this event anytime their internal state changes in a way that they'd like to persist.
StaticɵdirStaticɵfacSet or change the dashboard configuration. Changing this property will NOT cause the dashboard to reload. Call Refresh() to do that.
Returns either the default Metadata provider or the one specified in the Provider property, if it was specified
Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified
Returns either the default RunReport provider or the one specified in the Provider property, if it was specified
Returns either the default RunView provider or the one specified in the Provider property, if it was specified
Closes the stop confirmation dialog without taking action.
Confirms and executes the stop action (single session or all sessions).
Debug method to test contextUser flow for SQL filtering. This shows how the new architecture handles user context without storing email in provider.
Extracts the filename from a full file path for security purposes. Only shows the filename, not the full server path.
Full file path from server
Just the filename portion
ProtectedGetRead current query params from tab configuration. Use in initDashboard() / ngOnInit() to get initial URL state.
Sub-classes can override this to provide a custom icon class
Calculates and formats the duration of a logging session.
ISO string of when the session started
Formatted duration string (e.g., "2h 30m", "45m 23s", "12s")
Get this component's tab ID. Checks ParentTabId input first (set by resource wrappers for child dashboards), then falls back to Data.Configuration.tabId.
Calculates the total number of SQL statements across all active sessions.
Total statement count
ProtectedinitSubclasses can override this method to perform any initialization they need. This method only runs once when the dashboard is created.
ProtectedloadSubclasses should override this method to load their data. This method is called when the dashboard is created and when Refresh() is called.
Loads the log file content for a specific session using real-time GraphQL query. Reads actual SQL statements from the log file on the server.
The session whose log to load
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
ProtectedNotifyAsk the host shell to close/dismiss this resource (typically: close the tab). Called by subclasses that hosted a form that emitted a 'dismiss' navigation event — most often, a brand-new record where the user clicked Discard. The record was never saved, the form is empty, and leaving it open serves no purpose. The tab-container listens for this and closes the workspace tab.
ProtectedNotifyCall this to notify the tab system that the resource's display name has changed. The tab container will update the tab title and browser title accordingly.
ProtectedNotifyProtectedNotifyHandles keyboard events for the component. Closes expanded log viewer or confirmation dialog when Escape is pressed.
ProtectedOnCalled by the framework when query params change from an external source (browser back/forward, deep link navigation). Override in subclasses to react to query param changes.
The new query params from the URL
'popstate' for back/forward, 'deeplink' for external URL entry
Opens the dialog for creating a new SQL logging session. Sets default values for session name and filename.
Opens the confirmation dialog for stopping all sessions.
Opens the confirmation dialog for stopping a single session.
The session to stop
Optionalevent: EventOptional event to stop propagation
This method will result in the dashboard being reloaded.
Refreshes user data and re-checks permissions. Useful when user privileges have been updated.
ProtectedRefreshMarks this component's view (and its ancestors) as needing change detection and schedules a tick — the reliable way for a resource component to re-render after updating state from async work (RunView/RunQuery continuations, timers, websocket pushes, RxJS subscriptions).
WHY THIS EXISTS: the Explorer shell hosts resource components dynamically — createComponent()
ApplicationRef.attachView() — because tab content mounts into Golden Layout / cached DOM
containers, not into an Angular template. Since Angular 18's change-detection scheduler
rework (Explorer is on Angular 21), ApplicationRef.tick() only refreshes attached views
that are FLAGGED dirty; a root-level attached view whose component mutates plain fields from
an async continuation is never flagged, so the view silently never re-renders — even though
the component uses default (non-OnPush) change detection (issue #3106).The framework calls this automatically from NotifyLoadStarted() / NotifyLoadComplete(), so the standard load lifecycle re-renders without any subclass action. Call it yourself after any LATER async state change that must reach the DOM outside those signals.
ProtectedResourceSelects a session for viewing and loads its log content.
The session to select
This method can be used by a container to let the dashboard know that it is being opened/closed. Base class just sets a flag.
Creates and starts a new SQL logging session with the configured options. Shows success/error notifications and refreshes the sessions list.
Toggles the log viewer between normal and expanded (fullscreen) mode.
Toggles the start session dialog between normal and fullscreen mode.
ProtectedUpdatePush query param changes to the URL. Creates a browser history entry. Safe to call during OnQueryParamsChanged — auto-suppressed to prevent loops.
Angular component for managing SQL logging sessions in MemberJunction.
This component provides a user interface for:
Security: Only users with 'Owner' type can access SQL logging features.
Example
Requires
Owner-level user privileges
Requires
SQL logging enabled in server configuration