Member Junction
    Preparing search index...

    Base class for all MJ Explorer navigation components - a navigation component is any component that can be displayed from a route

    Hierarchy (View Summary)

    Implements

    • AfterViewInit
    • OnDestroy
    Index

    Constructors

    Properties

    ActiveTab AIModelOptions AIModelVendorBranch AllModelsLeaf ConfirmDialogMessage ConfirmDialogTitle ContentDuplicates ContentTypeCards ContentTypeOptions CreateTagDescription CreateTagName CreateTagParentID CreateTagParentLabel CurrentPipelineRunID CurrentProcessRunID destroy$ EditingSourceID EditingTypeID EmbeddingModelOptions EmbeddingModelsLeaf EmbeddingVendorBranch FeedItems FeedPage FeedPageSize FeedSearchQuery FeedSortOrder FileTypeOptions FilteredRunRows FilteredTagRows FormContentTypeID FormFileTypeID FormMode FormSaving FormSourceEmbeddingModelID FormSourceEntityDocID FormSourceEntityID FormSourceName FormSourceSpecificConfig FormSourceTypeID FormSourceURL FormSourceVectorIndexID FormTypeAIModelID FormTypeDescription FormTypeEmbeddingModelID FormTypeMaxTags FormTypeMinTags FormTypeName FormTypeVectorIndexID HealthRunHistory HealthRunning HealthThresholds HistorySourceFilter HistorySourceOptions HistoryStatusFilter IsLoading IsLoadingDuplicates IsLoadingLiveDetails IsLoadingRunDetail IsMerging IsPaused IsRunning KPIMetrics LastHealthSummary LiveRunDetailRows MergeSourceTag MergeTargetData MergeTargetID MoveNewParentID navigationService NavItems NewSynonymName NewSynonymSource ParentTabId PendingSuggestionCount PipelineConfig PipelineStages Provider ReasonOptions RebuildEmbeddingsRunning RunCurrentItem RunDetailRows RunHistoryRows RunProgress RunStage ScheduleCron ScheduleEnabled ScheduleSaving SchedulingSourceCard SelectedDrillDownTag SelectedFeedItem SelectedRunID SelectedSource SelectedTagFull SelectedTagSavingField SelectedTagScopes SelectedTagSynonyms ShowConfirmDialog ShowCreateTagDialog ShowItemDetail ShowMergeIntoDialog ShowMoveDialog ShowNoContentTypeWarning ShowPipelineConfig ShowScheduleDialog ShowSourceDetail ShowSplitDialog ShowTreemapDrillIn SourceCards SourceDetailLoading SourceDetailPage SourceDetailPageSize SourceDetailStatusFilter SourceDetailStatusOptions SourceMinis SourceTypeOptions SplitChildNames StorageProviderOptions SuggestionBulkInProgress SuggestionFilterMinScore SuggestionFilterReason SuggestionRows SuggestionRowsFiltered SuggestionSearch SuggestionSelected TagCloud TagCloudWordItems TagDrillDownItems TagRows TagsBySource TagSearchQuery tagsRaw TaxAllOrphansSelected TaxAuditEvents TaxAuditFilterTypes TaxDragOverNodeID TaxDuplicates TaxEditDescription TaxEditName TaxFilteredNodes TaxFlatNodes TaxHealth TaxIsEditing TaxMultiSelectMode TaxOrphans TaxRecentItems TaxSelectedIDs TaxSelectedNode TaxSubTab TaxTreemapCells TaxTreemapKPIs TaxTreeNodes TaxTreeSaving TaxTreeSearch TreemapDrillInNode TrendingTags VectorIndexOptions ɵdir ɵfac

    Accessors

    Methods

    AddSynonym applySuggestionFilters BulkApprove BulkDeleteOrphans BulkReject CancelEditTag CancelPipeline CloseCreateTagDialog CloseDrawer CloseDrillDownTag CloseForm CloseItemDetail CloseMergeIntoDialog CloseMoveDialog CloseRunDetail CloseScheduleDialog CloseSourceDetail CloseSplitDialog CloseTreemapDrillIn ConfirmContentDuplicate ConfirmDialogAccept ConfirmDialogCancel DeleteAllOrphans DeleteOrphan DeleteSource DeleteSourceFromDetail DeleteTag DismissContentDuplicate DismissDuplicate DispositionSuggestion DrillDownTag DrillInToTreeView ExecuteMergeInto ExecuteMove ExecuteSplit FeedNextPage FeedPrevPage FilterRunHistory FilterTags FilterTaxTree formatNumber formatRelativeTime FormatTokenCount FormatWeight FromCompositeKey GetCronPreview GetDependentOptions GetFeedItemOriginalIndex GetFilteredAuditEvents GetMergeTargetOptions GetMoveTargetOptions GetQueryParams GetResourceDisplayName GetResourceIconClass GetScheduleLabel GetSourceTypeIcon GetStatusBadgeClass getTabId GetTaxAuditIcon GetTaxBreadcrumb IsGlobalLocked IsNodeMultiSelected LoadContentDuplicates LoadLiveRunDetails LoadPipelineData loadSuggestions MakeChildTag MergeTags MoveTag NavigateToBreadcrumb ngAfterViewInit ngOnDestroy ngOnInit NotifyCloseRequested NotifyDisplayNameChanged NotifyLoadComplete NotifyLoadStarted OnDropToRoot OnFeedSearchChange OnMergeTargetSelected OnMinScoreChange onNavItemClicked OnQueryParamsChanged OnSourceDetailStatusFilterChange OnSourceFieldChanged onTaxSubTabChange OnTreeNodeDragLeave OnTreeNodeDragOver OnTreeNodeDragStart OnTreeNodeDrop OpenAddSourceForm OpenAddTypeForm OpenConfirmDialog OpenContentItemDetail OpenCreateChildTag OpenCreateChildTagFor OpenCreateRootTag OpenEditSourceForm OpenEditSourceFromDetail OpenEditTypeForm OpenFeedItemDetail OpenItemDetailByID OpenMergeIntoDialog OpenMoveDialog OpenRecordFromItem OpenRecordFromSource OpenRunDetail OpenScheduleDialog OpenScopeDialog OpenSourceDetail OpenSplitDialog OpenTreemapDrillIn PausePipeline ReasonClass RebuildEmbeddings RefreshTaxonomyData RefreshView RemoveSchedule RemoveSynonym ResourceRecordSaved ResumePipeline RetryFailedItems RunHealthNow RunPipeline RunPipelineForSource RunSourceFromDetail SaveContentType SaveEditTag SaveNewTag SaveSchedule SaveSelectedTagNumber SaveSource SelectedSuggestionCount SelectSuggestion SelectTaxNode SourceDetailNextPage SourceDetailPrevPage StartEditTag SwitchTab SwitchTaxSubTab TagFontSize ToCompositeKey ToggleAllOrphans ToggleAllSuggestions ToggleFeedSort ToggleGovernanceFlag ToggleMultiSelectMode ToggleNodeSelection ToggleOrphanSelection TogglePipelineConfig ToggleSuggestionSelected ToggleTaxAuditFilter ToggleTaxNode UpdateQueryParams

    Constructors

    Properties

    ActiveTab: TabName = 'tags'
    AIModelOptions: DropdownOption[] = []
    AIModelVendorBranch: TreeBranchConfig = ...
    AllModelsLeaf: TreeLeafConfig = ...
    ConfirmDialogMessage: string = ''

    Body message for the confirmation dialog

    ConfirmDialogTitle: string = ''

    Title text for the confirmation dialog

    ContentDuplicates: ContentDuplicateRow[] = []
    ContentTypeCards: ContentTypeCard[] = []
    ContentTypeOptions: DropdownOption[] = []
    CreateTagDescription: string = ''
    CreateTagName: string = ''
    CreateTagParentID: string | null = null
    CreateTagParentLabel: string = ''

    Label shown in the create dialog to indicate context (e.g., "under AI Agent")

    CurrentPipelineRunID: string | null = null

    The current pipeline run ID (from GraphQL subscription)

    CurrentProcessRunID: string | null = null

    The process run ID (server-side ContentProcessRun) for pause/cancel/resume

    destroy$: Subject<void> = ...
    EditingSourceID: string = ''
    EditingTypeID: string = ''
    EmbeddingModelOptions: DropdownOption[] = []
    EmbeddingModelsLeaf: TreeLeafConfig = ...
    EmbeddingVendorBranch: TreeBranchConfig = ...

    Branch config filtered to only vendors that have at least one embedding model

    FeedItems: FeedItem[] = []
    FeedPage: number = 0
    FeedPageSize: 20
    FeedSearchQuery: string = ''
    FeedSortOrder: "newest" | "oldest" = 'newest'

    Sort order for the feed: 'newest' (default) or 'oldest'

    FileTypeOptions: DropdownOption[] = []
    FilteredRunRows: RunHistoryRow[] = []
    FilteredTagRows: TagRow[] = []
    FormContentTypeID: string = ''
    FormFileTypeID: string = ''
    FormMode: FormMode = 'none'
    FormSaving: boolean = false
    FormSourceEmbeddingModelID: string = ''
    FormSourceEntityDocID: string = ''
    FormSourceEntityID: string = ''
    FormSourceName: string = ''
    FormSourceSpecificConfig: Record<string, string> = {}

    Stores source-type-specific config values keyed by RequiredFields[].Key

    FormSourceTypeID: string = ''
    FormSourceURL: string = ''
    FormSourceVectorIndexID: string = ''
    FormTypeAIModelID: string = ''
    FormTypeDescription: string = ''
    FormTypeEmbeddingModelID: string = ''
    FormTypeMaxTags: number = 10
    FormTypeMinTags: number = 1
    FormTypeName: string = ''
    FormTypeVectorIndexID: string = ''
    HealthRunHistory: HealthRunHistoryRow[] = []
    HealthRunning: boolean = false
    HealthThresholds: {
        maxImplicitChildren: number;
        maxUsage: number;
        minCoOccurrence: number;
        minEmbeddingSimilarity: number;
        minNameSimilarity: number;
    } = ...
    HistorySourceFilter: string = ''
    HistorySourceOptions: string[] = []
    HistoryStatusFilter: string = ''
    IsLoading: boolean = true
    IsLoadingDuplicates: boolean = false
    IsLoadingLiveDetails: boolean = false
    IsLoadingRunDetail: boolean = false
    IsMerging: boolean = false
    IsPaused: boolean = false
    IsRunning: boolean = false
    KPIMetrics: KPIMetric[] = []
    LastHealthSummary: {
        durationMs: number;
        lowUsageCount: number;
        mergeCount: number;
        runAt: Date | null;
        wideNodeCount: number;
    } = ...
    LiveRunDetailRows: RunDetailRow[] = []
    MergeSourceTag: TaxTreeNode | null = null
    MergeTargetData: { ID: string; Label: string }[] = []
    MergeTargetID: string | null = null
    MoveNewParentID: string | null = null

    Selected new parent tag ID for the move operation

    navigationService: NavigationService = ...
    NavItems: NavItem[] = []
    NewSynonymName: string = ''
    NewSynonymSource: "Merged" | "Manual" | "LLM" | "Imported" = 'Manual'
    ParentTabId: string | null

    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.

    PendingSuggestionCount: number = 0
    PipelineConfig: {
        Pipeline?: {
            BatchSize?: number;
            DelayBetweenBatchesMs?: number;
            ErrorThresholdPercent?: number;
            MaxConcurrentBatches?: number;
            ResumeFromLastBatch?: boolean;
        };
        RateLimits?: {
            Embedding?: { RequestsPerMinute?: number; TokensPerMinute?: number };
            LLM?: { RequestsPerMinute?: number; TokensPerMinute?: number };
            VectorDB?: { RequestsPerMinute?: number };
        };
    } = ...
    PipelineStages: PipelineStageInfo[] = []
    Provider: IMetadataProvider | null

    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.

    ReasonOptions: TagSuggestionReason[] = ...
    RebuildEmbeddingsRunning: boolean = false
    RunCurrentItem: string = ''
    RunDetailRows: RunDetailRow[] = []
    RunHistoryRows: RunHistoryRow[] = []
    RunProgress: number = 0
    RunStage: string = ''
    ScheduleCron: string = '0 2 * * *'

    Cron expression for the schedule form

    ScheduleEnabled: boolean = true

    Whether the schedule should be active immediately

    ScheduleSaving: boolean = false

    Whether a schedule save operation is in progress

    SchedulingSourceCard: SourceCard | null = null

    Source card currently being scheduled

    SelectedDrillDownTag: string | null = null
    SelectedFeedItem: ContentItemDetail | null = null
    SelectedRunID: string | null = null
    SelectedSource: SourceDetailInfo | null = null
    SelectedTagFull: MJTagEntity | null = null

    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.

    SelectedTagSavingField: Record<string, boolean> = {}
    SelectedTagScopes: TagScopeRowView[] = []
    SelectedTagSynonyms: SynonymRow[] = []
    ShowConfirmDialog: boolean = false

    Whether a generic confirmation overlay is visible

    ShowCreateTagDialog: boolean = false
    ShowItemDetail: boolean = false
    ShowMergeIntoDialog: boolean = false
    ShowMoveDialog: boolean = false

    Whether the move-tag dialog is visible

    ShowNoContentTypeWarning: boolean = false
    ShowPipelineConfig: boolean = false
    ShowScheduleDialog: boolean = false

    Whether the schedule creation dialog is visible

    ShowSourceDetail: boolean = false
    ShowSplitDialog: boolean = false

    Whether the split-tag dialog is visible

    ShowTreemapDrillIn: boolean = false

    Whether the treemap drill-in panel is visible

    SourceCards: SourceCard[] = []
    SourceDetailLoading: boolean = false
    SourceDetailPage: number = 0

    Current page index (0-based) for source detail content list

    SourceDetailPageSize: 10

    Number of content items per page in source detail

    SourceDetailStatusFilter: "All" | ItemPipelineStatus = 'All'

    Filter content items in source detail by pipeline status

    SourceDetailStatusOptions: ("All" | ItemPipelineStatus)[] = ...

    Available status options for the filter dropdown

    SourceMinis: SourceMini[] = []
    SourceTypeOptions: DropdownOption[] = []
    SplitChildNames: string = ''

    Comma-separated new child tag names for the split operation

    StorageProviderOptions: string[] = ...

    Available MJ Storage provider keys for the storage-provider-picker widget

    SuggestionBulkInProgress: boolean = false
    SuggestionFilterMinScore: number | null = null
    SuggestionFilterReason: string = ''
    SuggestionRows: SuggestionRow[] = []
    SuggestionRowsFiltered: SuggestionRow[] = []
    SuggestionSearch: string = ''
    SuggestionSelected: SuggestionRow | null = null
    TagCloud: TagCloudItem[] = []
    TagCloudWordItems: WordCloudItem[] = []
    TagDrillDownItems: {
        FeedIndex: number;
        ID: string;
        Name: string;
        SourceName: string;
        UpdatedAt: string;
        Weight: number;
    }[] = []
    TagRows: TagRow[] = []
    TagsBySource: TagBySource[] = []
    TagSearchQuery: string = ''
    tagsRaw: Record<string, unknown>[] = []

    Public so the template's Health tab can read tag count for the runbar.

    TaxAllOrphansSelected: boolean = false
    TaxAuditEvents: TaxAuditEvent[] = []
    TaxAuditFilterTypes: Set<string> = ...
    TaxDragOverNodeID: string | null = null

    The node currently being dragged over (drop target highlight)

    TaxDuplicates: TaxDuplicatePair[] = []
    TaxEditDescription: string = ''
    TaxEditName: string = ''
    TaxFilteredNodes: TaxTreeNode[] = []
    TaxFlatNodes: TaxTreeNode[] = []
    TaxHealth: TaxHealthStat = ...
    TaxIsEditing: boolean = false
    TaxMultiSelectMode: boolean = false
    TaxOrphans: TaxOrphanCard[] = []
    TaxRecentItems: { Date: string; Icon: string; Name: string; Weight: number }[] = []
    TaxSelectedIDs: Set<string> = ...
    TaxSelectedNode: TaxTreeNode | null = null
    TaxSubTab: TaxonomySubTab = 'tree'
    TaxTreemapCells: TaxTreemapCell[] = []
    TaxTreemapKPIs: { Label: string; Value: string }[] = []
    TaxTreeNodes: TaxTreeNode[] = []
    TaxTreeSaving: boolean = false

    True while a drag-reparent operation is saving

    TaxTreeSearch: string = ''
    TreemapDrillInNode: TaxTreeNode | null = null

    Tag node currently displayed in treemap drill-in

    TrendingTags: TagCloudItem[] = []
    VectorIndexOptions: DropdownOption[] = []
    "ɵdir": unknown
    "ɵfac": unknown

    Accessors

    • get DisplayNameChangedEvent(): ((newName: string) => void) | null

      Returns ((newName: string) => void) | null

    • set DisplayNameChangedEvent(value: ((newName: string) => void) | null): void

      Parameters

      • value: ((newName: string) => void) | null

      Returns void

    • get LoadComplete(): boolean

      Returns boolean

    • get LoadStarted(): boolean

      Returns boolean

    • get LoadStartedEvent(): any

      Returns any

    • set LoadStartedEvent(value: any): void

      Parameters

      • value: any

      Returns void

    • get ProviderToUse(): IMetadataProvider

      Returns either the default Metadata provider or the one specified in the Provider property, if it was specified

      Returns IMetadataProvider

    • get ResourceCloseRequestedEvent(): (() => void) | null

      Returns (() => void) | null

    • set ResourceCloseRequestedEvent(value: (() => void) | null): void

      Parameters

      • value: (() => void) | null

      Returns void

    • get ResourceRecordSavedEvent(): any

      Returns any

    • set ResourceRecordSavedEvent(value: any): void

      Parameters

      • value: any

      Returns void

    • get RunQueryToUse(): IRunQueryProvider

      Returns either the default RunQuery provider or the one specified in the Provider property, if it was specified

      Returns IRunQueryProvider

    • get RunReportToUse(): IRunReportProvider

      Returns either the default RunReport provider or the one specified in the Provider property, if it was specified

      Returns IRunReportProvider

    • get RunViewToUse(): IRunViewProvider

      Returns either the default RunView provider or the one specified in the Provider property, if it was specified

      Returns IRunViewProvider

    Methods

    • Read current query params from tab configuration. Use in initDashboard() / ngOnInit() to get initial URL state.

      Returns Record<string, string>

    • 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 string

    • 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.

      Returns void

    • Ask 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.

      Returns void

    • Call 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.

      Parameters

      • newName: string

      Returns void

    • 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.

      Parameters

      • value: string | number | null | undefined

      Returns void

    • Called 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.

      Parameters

      • params: Record<string, string>

        The new query params from the URL

      • source: "popstate" | "deeplink"

        'popstate' for back/forward, 'deeplink' for external URL entry

      Returns void

    • 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.

      Returns Promise<void>

    • Marks 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.

      Returns void

    • Toggle a per-tag governance flag. Persists via a fresh MJTagEntity load

      • Save so the server-side MJTagEntityServer Save() override can run the IsGlobal⊕TagScope invariant check.

      Parameters

      • field: "RequiresReview" | "AllowAutoGrow" | "IsFrozen" | "IsGlobal"

      Returns Promise<void>

    • Push query param changes to the URL. Creates a browser history entry. Safe to call during OnQueryParamsChanged — auto-suppressed to prevent loops.

      Parameters

      • params: Record<string, string | null>

      Returns void