Available embedding models for selection in save form
Available vector indexes for selection
Protecteddestroy$Grouped entity list for the suggestion panel — schemas as groups, entities as items
OptionalentityReference to the entity search input for programmatic focus
Search text for filtering entities
Filtered entity groups based on search input
Prerequisites check — are vector DB and embedding model configured?
When true, renders only the body content (no chrome). Set by parent shells that embed this resource. See plans/explorer-chrome-conventions.md Section 5.
ProtectednavigationTab 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.
Selected embedding model ID for the new entity document
Selected vector database ID for the new entity document
Selected vector index ID — if user picks an existing one
Whether the entity picker dropdown is open
ProtectedvectorHuman-readable explanation of the current health status (shown as helper text / tooltip).
ReadonlyVectorView mode: 'index' = Option A (shared index as hero, entity docs as children), 'operations' = Option C (operations monitoring with real-time sync status)
StaticɵdirStaticɵfacCSS class for the DB health indicator dot
Parse {{ FieldName }} patterns from the edit panel's template
Indexes filtered by the edit panel's selected vector DB
Indexes filtered by the currently selected vector DB (for create/edit forms)
Get a flat list of all entities across groups (for keyboard navigation indexing)
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
Format the storage gauge label
Clears the current suggestion to try again
Close the no-index warning dialog
Closes the schedule sync dialog
Closes the suggestion dialog
Filter entities by search text
Format a Date value for display
ProtectedGetRead current query params from tab configuration. Use in initDashboard() / ngOnInit() to get initial URL state.
Returns a human-readable description of a cron expression
Returns the CSS class for a given sync status badge
Returns the icon class for a given sync status
Get this component's tab ID. Checks ParentTabId input first (set by resource wrappers for child dashboards), then falls back to Data.Configuration.tabId.
Navigate to the Configuration section from the no-index warning
Reload all dashboard data
A callback method that is invoked immediately after Angular has completed initialization of a component's view. It is invoked only once when the view is instantiated.
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.
ProtectedNotifyProtectedNotifyHandle template edits from the edit panel's code editor
Handle keyboard events in the entity picker search input
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
Handle template edits from code editor
Open the edit panel for an entity document
Opens the schedule sync dialog for a specific entity document
Opens the AI suggestion dialog, or shows a warning if no vector indexes exist
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.
Regenerate the template using AI for the current edit panel entity
ProtectedResourceRuns the AI suggestion by calling the server-side "Entity Document Suggestion" AI prompt via GraphQL. The LLM analyzes the entity schema and generates natural language Nunjucks templates optimized for embedding quality.
Saves the current suggestion as an Entity Document record
Saves a new ScheduledAction for vectorizing the selected entity document
Select an entity from the grouped picker
Trigger vectorization for a specific entity document via GraphQL (fire-and-forget with progress subscription)
Toggle entity picker visibility
Toggle between view modes
ProtectedUpdatePush query param changes to the URL. Creates a browser history entry. Safe to call during OnQueryParamsChanged — auto-suppressed to prevent loops.
Base class for all MJ Explorer navigation components - a navigation component is any component that can be displayed from a route