Body message for the confirmation dialog
Title text for the confirmation dialog
Label shown in the create dialog to indicate context (e.g., "under AI Agent")
The current pipeline run ID (from GraphQL subscription)
The process run ID (server-side ContentProcessRun) for pause/cancel/resume
Protecteddestroy$Branch config filtered to only vendors that have at least one embedding model
ReadonlyFeedSort order for the feed: 'newest' (default) or 'oldest'
Stores source-type-specific config values keyed by RequiredFields[].Key
Selected new parent tag ID for the move operation
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.
Cron expression for the schedule form
Whether the schedule should be active immediately
Whether a schedule save operation is in progress
Source card currently being scheduled
MJTagEntity backing the currently-selected TaxTreeNode. Exposed for the
governance / scope / synonyms detail panel that lives below the existing
Tree right-side detail. Populated by syncSelectedTagFull whenever the
tree selection changes.
Whether a generic confirmation overlay is visible
Whether the move-tag dialog is visible
Whether the schedule creation dialog is visible
Whether the split-tag dialog is visible
Whether the treemap drill-in panel is visible
Current page index (0-based) for source detail content list
ReadonlySourceNumber of content items per page in source detail
Filter content items in source detail by pipeline status
ReadonlySourceAvailable status options for the filter dropdown
Comma-separated new child tag names for the split operation
Available MJ Storage provider keys for the storage-provider-picker widget
Public so the template's Health tab can read tag count for the runbar.
The node currently being dragged over (drop target highlight)
True while a drag-reparent operation is saving
Tag node currently displayed in treemap drill-in
StaticɵdirStaticɵfacSubtitle rendered in the per-section <mj-page-header-interior>.
Title rendered in the per-section <mj-page-header-interior>.
Entities that have at least one EntityDocument configured
Entity documents for the selected entity
Total pages for the feed
Feed items filtered by search query and sorted
Returns source detail content items filtered by SourceDetailStatusFilter, then sliced to the current page.
Total number of filtered items (before pagination)
Whether the selected source type is the Entity type (name-based check)
Wraps NavItems for <mj-left-nav>.
Paginated feed items for the current page
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
The RequiredFields array from the selected source type's ConfigurationObject. Drives dynamic form rendering — each field becomes a widget.
Whether the selected source type requires Content Type / File Type selection
Total pages for source detail pagination
Count of high-confidence duplicate pairs (>85% similarity)
Count of moderate-confidence duplicate pairs (70-85% similarity)
Taxonomy sub-tabs as TabConfig[] for <mj-tab-nav>. Counts on
Duplicates and Orphans surface as warning/error-variant badges.
Inline synonym add. Server-side TagSynonymEntity Save handles uniqueness.
Cancel a running or paused pipeline. Uses pause mechanism and resets UI state.
Close create tag dialog
Closes the move-tag dialog without action
D3/D8: Close the run detail slide-in
Closes the schedule dialog without saving
Closes the split-tag dialog without action
Closes treemap drill-in panel
Confirm a content duplicate pair
User confirmed the dialog action
User cancelled the confirmation dialog
Delete all orphan tags at once with a styled confirmation dialog
Dismiss a content duplicate pair
Server-driven: routes through TagGovernanceResolver mutations.
Drill down into content items matching a specific tag
Navigate from treemap drill-in to the tag in the tree view
Executes the move operation
Executes the split operation, creating child tags from comma-separated names
Navigate to next feed page
Navigate to previous feed page
Format weight as percentage for display in tag chip
Extract the ID string from a CompositeKey (from tree-dropdown ValueChange)
Returns a human-readable preview of a cron expression for the schedule dialog.
The cron expression to preview
Get dependent options for a field (e.g., entity-doc-picker depends on entity-picker). Returns entity documents for the entity selected in the dependent field.
Get the index in the original FeedItems array for a paginated item
Returns flat list of tags eligible as merge targets (excludes the source tag)
Returns flat list of tags eligible as move targets (excludes the node being moved and its descendants)
ProtectedGetRead current query params from tab configuration. Use in initDashboard() / ngOnInit() to get initial URL state.
Returns the human-readable schedule description for a source card. Used in the template to display schedule indicators.
Returns the CSS class for a pipeline status badge color
Get this component's tab ID. Checks ParentTabId input first (set by resource wrappers for child dashboards), then falls back to Data.Configuration.tabId.
Returns the Font Awesome icon class for an audit event action type.
Check if a node is selected in multi-select mode
Load pending content item duplicates for review
D2: Load live per-source progress for the currently running pipeline. Called when the pipeline is actively running.
Load all pending suggestions and refresh the filtered view + nav badge.
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 drop on the "Root" drop zone (make root-level)
Handle feed search input change
Coerce the min-score number-input event into either a number or null,
then re-apply filters. Inline arrow expressions in the template can't
disambiguate Event vs number so we route through this helper.
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 change of the source detail status filter dropdown
Handle a source-specific field value change. For entity-picker: auto-select the first entity doc if only one exists.
Adapter for <mj-tab-nav>'s string-typed (TabChange) output.
Handle drag leave
Handle drag over a tree node (drop target)
Handle drag start on a tree node
Handle drop — reparent dragged node(s) under the drop target
Opens a styled confirmation dialog, replacing browser confirm().
Open create tag dialog as child of the selected node
Open create tag dialog as child of a specific node
Open create tag dialog for a root-level tag
Open content item detail slide-in by content item ID (used from tag drill-down)
Opens the move-tag dialog for a given tree node
D3/D8: Open the detail view for a specific run, loading ContentProcessRunDetail records.
Opens the schedule dialog pre-filled for the given source card. Defaults to a daily 2 AM cron expression.
The source card to create a schedule for
Open the scope dialog. Implementation note: a full dual-pane scope editor is on the roadmap; for the first pass we surface a simple "remove all scope rows + flip to global" button so admins can promote a scoped tag to global, plus a notification pointing them to the Suggestions/admin path for finer-grained scope assignments.
Opens the split-tag dialog for a given tree node
Opens treemap drill-in panel for the given cell
Pause a running classification pipeline. The server sets CancellationRequested on the process run so the engine pauses gracefully after the current batch.
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.
Removes the schedule from a source card by unlinking the ScheduledActionID.
The source card to remove the schedule from
ProtectedResourceResume a paused classification pipeline from its last completed offset.
D4: Placeholder handler for retrying failed items in source detail. Re-runs the pipeline for the current source. In the future this could target only Failed items.
OptionalcontentSourceIDs: string[]Run the pipeline for a specific content source only.
Save the new tag
Saves a new ScheduledAction for the current source, links it via ContentSource.ScheduledActionID, and creates the default action params for the Autotag and Vectorize action.
Navigate to the next page in source detail content list
Navigate to the previous page in source detail content list
Returns font size in rem for a tag based on its weight (0.0-1.0). Range: 0.7rem to 1.0rem
Convert a string ID to a CompositeKey for tree-dropdown binding
Toggle feed sort order
Toggle a per-tag governance flag. Persists via a fresh MJTagEntity load
MJTagEntityServer Save() override can run
the IsGlobal⊕TagScope invariant check.Toggle multi-select mode on/off
Toggle a node's selection in multi-select mode
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