@memberjunction/ng-core-entity-forms 6.2.0-edge.2 → 6.2.0-edge.4
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/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +9 -5
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +4 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +67 -36
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +13 -9
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +1 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.js +9 -5
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.d.ts +4 -0
- package/dist/lib/custom/Companies/company-overview.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.js +68 -37
- package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.js +9 -5
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +25 -4
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +212 -90
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.js +9 -5
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts +4 -0
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.js +68 -37
- package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +19 -4
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +5 -5
- package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Files/file-form.component.js +227 -157
- package/dist/lib/custom/Files/file-form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.logic.d.ts +24 -0
- package/dist/lib/custom/Files/file-form.logic.d.ts.map +1 -0
- package/dist/lib/custom/Files/file-form.logic.js +57 -0
- package/dist/lib/custom/Files/file-form.logic.js.map +1 -0
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts.map +1 -1
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js +60 -45
- package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +4 -2
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +3 -2
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Rubrics/rubric-form.component.js +1 -1
- package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js +1 -0
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +3 -2
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +1 -0
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +1 -0
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +1 -0
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +1 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.js +9 -5
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.d.ts +4 -0
- package/dist/lib/custom/Users/user-overview.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js +64 -33
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +34 -0
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +33 -0
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +3 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +261 -242
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +35 -34
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +6 -2
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +98 -44
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js +15 -18
- package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +27 -9
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +17 -15
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +25 -7
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js +12 -14
- package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.js +4 -7
- package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.js +4 -7
- package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +49 -13
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js +111 -0
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -75
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +34 -16
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +169 -97
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.js +8 -11
- package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js +15 -18
- package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.js +148 -0
- package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +53 -56
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.js +161 -0
- package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.js +68 -0
- package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.js +100 -0
- package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.js +119 -0
- package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.js +92 -0
- package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.js +129 -0
- package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.js +8 -11
- package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +36 -40
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +39 -21
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +45 -48
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js +106 -0
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js +15 -18
- package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +822 -676
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.js +5 -9
- package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.js +94 -0
- package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.js +91 -0
- package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.js +105 -0
- package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.js +129 -0
- package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.js +85 -0
- package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +17 -20
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +448 -431
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +63 -12
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +7 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +89 -43
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +3 -3
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +5 -5
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +4 -4
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
- package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js +3 -3
- package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +4 -4
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/package.json +48 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Queries/query-form.component.ts","../../../../src/lib/custom/Queries/query-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ViewChild, ChangeDetectorRef, AfterViewInit, inject } from '@angular/core';\nimport { MJQueryEntityExtended, MJQueryParameterEntity, MJQueryCategoryEntity, MJQueryFieldEntity, MJQueryEntityEntity, MJQueryPermissionEntity, MJQueryDependencyEntity, QueryEngine } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent, FormToolbarConfig, CUSTOM_LAYOUT_TOOLBAR_CONFIG, MJFormPresenterService } from '@memberjunction/ng-base-forms';\nimport { MJQueryFormComponent } from '../../generated/Entities/MJQuery/mjquery.form.component';\nimport { RUN_QUERY_SQL_FILTERS, CompositeKey, BaseEntity } from '@memberjunction/core';\nimport { TreeBranchConfig } from '@memberjunction/ng-trees';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { CodeEditorComponent, CompositionTokenClickEvent } from '@memberjunction/ng-code-editor';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { Subject } from 'rxjs';\n\ninterface CategoryTreeNode {\n id: string;\n name: string;\n items?: CategoryTreeNode[];\n}\n\n@RegisterClass(BaseFormComponent, 'MJ: Queries')\n@Component({\n standalone: false,\n selector: 'mj-query-form',\n templateUrl: './query-form.component.html',\n styleUrls: ['../../../shared/form-styles.css', './query-form.component.css']\n})\nexport class MJQueryFormComponentExtended extends MJQueryFormComponent implements OnInit, OnDestroy, AfterViewInit {\n public record!: MJQueryEntityExtended;\n public QueryParameters: MJQueryParameterEntity[] = [];\n\n /** @deprecated Use {@link QueryParameters}. */\n public get queryParameters(): MJQueryParameterEntity[] {\n return this.QueryParameters;\n }\n /** @deprecated Use {@link QueryParameters}. */\n public set queryParameters(value: MJQueryParameterEntity[]) {\n this.QueryParameters = value;\n }\n public QueryFields: MJQueryFieldEntity[] = [];\n\n /** @deprecated Use {@link QueryFields}. */\n public get queryFields(): MJQueryFieldEntity[] {\n return this.QueryFields;\n }\n /** @deprecated Use {@link QueryFields}. */\n public set queryFields(value: MJQueryFieldEntity[]) {\n this.QueryFields = value;\n }\n public QueryEntities: MJQueryEntityEntity[] = [];\n\n /** @deprecated Use {@link QueryEntities}. */\n public get queryEntities(): MJQueryEntityEntity[] {\n return this.QueryEntities;\n }\n /** @deprecated Use {@link QueryEntities}. */\n public set queryEntities(value: MJQueryEntityEntity[]) {\n this.QueryEntities = value;\n }\n public QueryPermissions: MJQueryPermissionEntity[] = [];\n\n /** @deprecated Use {@link QueryPermissions}. */\n public get queryPermissions(): MJQueryPermissionEntity[] {\n return this.QueryPermissions;\n }\n /** @deprecated Use {@link QueryPermissions}. */\n public set queryPermissions(value: MJQueryPermissionEntity[]) {\n this.QueryPermissions = value;\n }\n public IsLoadingParameters = false;\n\n /** @deprecated Use {@link IsLoadingParameters}. */\n public get isLoadingParameters() {\n return this.IsLoadingParameters;\n }\n /** @deprecated Use {@link IsLoadingParameters}. */\n public set isLoadingParameters(value) {\n this.IsLoadingParameters = value;\n }\n public IsLoadingFields = false;\n\n /** @deprecated Use {@link IsLoadingFields}. */\n public get isLoadingFields() {\n return this.IsLoadingFields;\n }\n /** @deprecated Use {@link IsLoadingFields}. */\n public set isLoadingFields(value) {\n this.IsLoadingFields = value;\n }\n public IsLoadingEntities = false;\n\n /** @deprecated Use {@link IsLoadingEntities}. */\n public get isLoadingEntities() {\n return this.IsLoadingEntities;\n }\n /** @deprecated Use {@link IsLoadingEntities}. */\n public set isLoadingEntities(value) {\n this.IsLoadingEntities = value;\n }\n public IsLoadingPermissions = false;\n\n /** @deprecated Use {@link IsLoadingPermissions}. */\n public get isLoadingPermissions() {\n return this.IsLoadingPermissions;\n }\n /** @deprecated Use {@link IsLoadingPermissions}. */\n public set isLoadingPermissions(value) {\n this.IsLoadingPermissions = value;\n }\n public HasUnsavedChanges = false;\n\n /** @deprecated Use {@link HasUnsavedChanges}. */\n public get hasUnsavedChanges() {\n return this.HasUnsavedChanges;\n }\n /** @deprecated Use {@link HasUnsavedChanges}. */\n public set hasUnsavedChanges(value) {\n this.HasUnsavedChanges = value;\n }\n public ShowFiltersHelp = false;\n\n /** @deprecated Use {@link ShowFiltersHelp}. */\n public get showFiltersHelp() {\n return this.ShowFiltersHelp;\n }\n /** @deprecated Use {@link ShowFiltersHelp}. */\n public set showFiltersHelp(value) {\n this.ShowFiltersHelp = value;\n }\n public ShowRunDialog = false;\n\n /** @deprecated Use {@link ShowRunDialog}. */\n public get showRunDialog() {\n return this.ShowRunDialog;\n }\n /** @deprecated Use {@link ShowRunDialog}. */\n public set showRunDialog(value) {\n this.ShowRunDialog = value;\n }\n public CategoryPathDisplay = '';\n\n /** @deprecated Use {@link CategoryPathDisplay}. */\n public get categoryPathDisplay() {\n return this.CategoryPathDisplay;\n }\n /** @deprecated Use {@link CategoryPathDisplay}. */\n public set categoryPathDisplay(value) {\n this.CategoryPathDisplay = value;\n }\n public IsSaving = false;\n\n // Expansion panel states\n public SqlPanelExpanded = true;\n\n /** @deprecated Use {@link SqlPanelExpanded}. */\n public get sqlPanelExpanded() {\n return this.SqlPanelExpanded;\n }\n /** @deprecated Use {@link SqlPanelExpanded}. */\n public set sqlPanelExpanded(value) {\n this.SqlPanelExpanded = value;\n }\n public ParametersPanelExpanded = false;\n\n /** @deprecated Use {@link ParametersPanelExpanded}. */\n public get parametersPanelExpanded() {\n return this.ParametersPanelExpanded;\n }\n /** @deprecated Use {@link ParametersPanelExpanded}. */\n public set parametersPanelExpanded(value) {\n this.ParametersPanelExpanded = value;\n }\n public FieldsPanelExpanded = false;\n\n /** @deprecated Use {@link FieldsPanelExpanded}. */\n public get fieldsPanelExpanded() {\n return this.FieldsPanelExpanded;\n }\n /** @deprecated Use {@link FieldsPanelExpanded}. */\n public set fieldsPanelExpanded(value) {\n this.FieldsPanelExpanded = value;\n }\n public EntitiesPanelExpanded = false;\n\n /** @deprecated Use {@link EntitiesPanelExpanded}. */\n public get entitiesPanelExpanded() {\n return this.EntitiesPanelExpanded;\n }\n /** @deprecated Use {@link EntitiesPanelExpanded}. */\n public set entitiesPanelExpanded(value) {\n this.EntitiesPanelExpanded = value;\n }\n public TechnicalDescriptionPanelExpanded = false;\n\n /** @deprecated Use {@link TechnicalDescriptionPanelExpanded}. */\n public get technicalDescriptionPanelExpanded() {\n return this.TechnicalDescriptionPanelExpanded;\n }\n /** @deprecated Use {@link TechnicalDescriptionPanelExpanded}. */\n public set technicalDescriptionPanelExpanded(value) {\n this.TechnicalDescriptionPanelExpanded = value;\n }\n public DetailsPanelExpanded = false;\n\n /** @deprecated Use {@link DetailsPanelExpanded}. */\n public get detailsPanelExpanded() {\n return this.DetailsPanelExpanded;\n }\n /** @deprecated Use {@link DetailsPanelExpanded}. */\n public set detailsPanelExpanded(value) {\n this.DetailsPanelExpanded = value;\n }\n public PermissionsPanelExpanded = false;\n\n /** @deprecated Use {@link PermissionsPanelExpanded}. */\n public get permissionsPanelExpanded() {\n return this.PermissionsPanelExpanded;\n }\n /** @deprecated Use {@link PermissionsPanelExpanded}. */\n public set permissionsPanelExpanded(value) {\n this.PermissionsPanelExpanded = value;\n }\n public DependentsPanelExpanded = false;\n\n /** @deprecated Use {@link DependentsPanelExpanded}. */\n public get dependentsPanelExpanded() {\n return this.DependentsPanelExpanded;\n }\n /** @deprecated Use {@link DependentsPanelExpanded}. */\n public set dependentsPanelExpanded(value) {\n this.DependentsPanelExpanded = value;\n }\n \n // Category data\n public CategoryOptions: Array<{text: string, value: string}> = [\n { text: 'Select Category...', value: '' }\n ];\n\n /** @deprecated Use {@link CategoryOptions}. */\n public get categoryOptions(): Array<{text: string, value: string}> {\n return this.CategoryOptions;\n }\n /** @deprecated Use {@link CategoryOptions}. */\n public set categoryOptions(value: Array<{text: string, value: string}>) {\n this.CategoryOptions = value;\n }\n public Categories: MJQueryCategoryEntity[] = [];\n\n /** @deprecated Use {@link Categories}. */\n public get categories(): MJQueryCategoryEntity[] {\n return this.Categories;\n }\n /** @deprecated Use {@link Categories}. */\n public set categories(value: MJQueryCategoryEntity[]) {\n this.Categories = value;\n }\n public CategoryTreeData: CategoryTreeNode[] = [];\n\n /** @deprecated Use {@link CategoryTreeData}. */\n public get categoryTreeData(): CategoryTreeNode[] {\n return this.CategoryTreeData;\n }\n /** @deprecated Use {@link CategoryTreeData}. */\n public set categoryTreeData(value: CategoryTreeNode[]) {\n this.CategoryTreeData = value;\n }\n\n /** Tree dropdown config for Query Categories */\n public CategoryBranchConfig: TreeBranchConfig = {\n EntityName: 'MJ: Query Categories',\n DisplayField: 'Name',\n IDField: 'ID',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n DescriptionField: 'Description',\n OrderBy: 'Name ASC'\n };\n\n /** CategoryID as CompositeKey for tree dropdown binding */\n public get CategoryIDAsKey(): CompositeKey | null {\n return this.record?.CategoryID ? CompositeKey.FromID(this.record.CategoryID) : null; // first-pk-ok: FK target — Query CategoryID references the single-column ID key of Query Categories\n }\n\n /** Handle tree dropdown category selection */\n public OnCategoryTreeChange(value: CompositeKey | CompositeKey[] | null): void {\n if (!this.record) return;\n if (value instanceof CompositeKey && value.HasValue) {\n this.record.CategoryID = value.KeyValuePairs[0]?.Value ?? null;\n } else {\n this.record.CategoryID = null;\n }\n this.updateCategoryPathDisplay();\n }\n\n // Status options — matches MJQueryEntity.Status type from database CHECK constraint\n public StatusOptions = [\n { text: 'Pending', value: 'Pending' },\n { text: 'Approved', value: 'Approved' },\n { text: 'Rejected', value: 'Rejected' },\n { text: 'Expired', value: 'Expired' }\n ];\n\n /** @deprecated Use {@link StatusOptions}. */\n public get statusOptions() {\n return this.StatusOptions;\n }\n /** @deprecated Use {@link StatusOptions}. */\n public set statusOptions(value) {\n this.StatusOptions = value;\n }\n\n // Toolbar config: custom layout — hides the right-hand section-controls\n // group, keeps all left-side action buttons (delete/favorite/history/list)\n // since they're now wired through `<mj-record-form-container>`.\n public readonly ToolbarConfig: FormToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;\n\n /** Custom-layout Query form looks best full-width on first open. */\n public override getDefaultFormWidthMode(): 'centered' | 'full-width' { return 'full-width'; }\n\n @ViewChild('sqlEditor') SqlEditor: CodeEditorComponent | null = null;\n\n /** @deprecated Use {@link SqlEditor}. */\n get sqlEditor(): CodeEditorComponent | null {\n return this.SqlEditor;\n }\n /** @deprecated Use {@link SqlEditor}. */\n set sqlEditor(value: CodeEditorComponent | null) {\n this.SqlEditor = value;\n }\n \n // SQL Filters for help display\n public SqlFilters = RUN_QUERY_SQL_FILTERS;\n\n /** @deprecated Use {@link SqlFilters}. */\n public get sqlFilters() {\n return this.SqlFilters;\n }\n /** @deprecated Use {@link SqlFilters}. */\n public set sqlFilters(value) {\n this.SqlFilters = value;\n }\n \n private navigationService = inject(NavigationService);\n private formPresenter = inject(MJFormPresenterService);\n private confirmService = inject(MJConfirmService);\n private destroy$ = new Subject<void>();\n\n /**\n * Gets queries that depend on (reference) this query via composition.\n */\n public get DependentQueries(): MJQueryDependencyEntity[] {\n return this.record?.QueryDependents ?? [];\n }\n private isUpdatingEditorValue = false;\n private isInitialLoad = true;\n\n async ngOnInit() {\n await super.ngOnInit();\n\n // During init, suppress per-method detectChanges to avoid NG0100.\n // We do one unified detectChanges after everything completes.\n this.isInitialLoad = true;\n\n // Load all data synchronously from QueryEngine cache\n this.LoadCategories();\n this.LoadQueryParameters();\n this.LoadQueryFields();\n this.LoadQueryEntities();\n this.LoadQueryPermissions();\n\n this.isInitialLoad = false;\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.SqlEditor?.setEditable(this.EditMode);\n\n // Set initial SQL value in the editor\n this.updateEditorValue();\n }\n \n override EndEditMode(): void {\n super.EndEditMode();\n this.SqlEditor?.setEditable(false);\n }\n\n override StartEditMode(): void {\n super.StartEditMode();\n this.SqlEditor?.setEditable(true);\n \n // Force change detection after a brief delay to ensure form controls are initialized\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 50);\n }\n\n override CancelEdit(): void {\n super.CancelEdit();\n this.updateEditorValue(); // Reset editor value to record SQL\n this.SqlEditor?.setEditable(false);\n this.updateUnsavedChangesFlag(); // Reset unsaved changes flag\n }\n\n private updateEditorValue() {\n if (!this.SqlEditor || this.isUpdatingEditorValue) {\n return;\n }\n \n // Use setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n if (!this.SqlEditor) {\n return;\n }\n \n this.isUpdatingEditorValue = true;\n const sqlValue = this.record?.SQL || '';\n \n // Use the setValue method from mj-code-editor component\n this.SqlEditor.setValue(sqlValue);\n this.isUpdatingEditorValue = false;\n }, 0);\n }\n\n public IsFormReadOnly(): boolean {\n return !this.EditMode;\n }\n\n /** @deprecated Use {@link IsFormReadOnly}. */\n public isFormReadOnly(): boolean {\n return this.IsFormReadOnly();\n }\n\n LoadQueryParameters() {\n if (this.record && this.record.ID) {\n this.QueryParameters = this.record.QueryParameters;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryParameters}. */\n loadQueryParameters() {\n return this.LoadQueryParameters();\n }\n\n LoadQueryFields() {\n if (this.record && this.record.ID) {\n this.QueryFields = this.record.QueryFields;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryFields}. */\n loadQueryFields() {\n return this.LoadQueryFields();\n }\n\n LoadQueryEntities() {\n if (this.record && this.record.ID) {\n this.QueryEntities = this.record.QueryEntities;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryEntities}. */\n loadQueryEntities() {\n return this.LoadQueryEntities();\n }\n\n LoadQueryPermissions() {\n if (this.record && this.record.ID) {\n this.QueryPermissions = this.record.QueryPermissions;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryPermissions}. */\n loadQueryPermissions() {\n return this.LoadQueryPermissions();\n }\n\n LoadCategories() {\n this.Categories = QueryEngine.Instance.Categories;\n\n // Build flat options for legacy compatibility\n this.CategoryOptions = [\n { text: 'Select Category...', value: '' },\n ...this.Categories.map(cat => ({\n text: cat.Name,\n value: cat.ID\n }))\n ];\n\n // Build tree data after options are set\n this.CategoryTreeData = this.buildCategoryTree(this.Categories);\n\n // Update cached category path display\n this.updateCategoryPathDisplay();\n\n // Trigger change detection to update the view (skip during init)\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link LoadCategories}. */\n loadCategories() {\n return this.LoadCategories();\n }\n \n private buildCategoryTree(categories: MJQueryCategoryEntity[]): CategoryTreeNode[] {\n const categoryMap = new Map<string, CategoryTreeNode>();\n const rootCategories: CategoryTreeNode[] = [];\n \n // Create nodes for all categories\n categories.forEach(cat => {\n categoryMap.set(cat.ID, {\n id: cat.ID,\n name: cat.Name,\n items: []\n });\n });\n \n // Build the tree structure\n categories.forEach(cat => {\n const node = categoryMap.get(cat.ID)!;\n if (cat.ParentID && categoryMap.has(cat.ParentID)) {\n const parent = categoryMap.get(cat.ParentID)!;\n if (!parent.items) parent.items = [];\n parent.items.push(node);\n } else {\n rootCategories.push(node);\n }\n });\n \n // Sort children alphabetically\n const sortNodes = (nodes: CategoryTreeNode[]) => {\n nodes.sort((a, b) => a.name.localeCompare(b.name));\n nodes.forEach(node => {\n if (node.items && node.items.length > 0) {\n sortNodes(node.items);\n }\n });\n };\n sortNodes(rootCategories);\n \n return rootCategories;\n }\n \n GetCategoryPath(): string {\n if (!this.record?.CategoryID) return '';\n\n const findPath = (categoryId: string): string[] => {\n const category = this.Categories.find(c => UUIDsEqual(c.ID, categoryId));\n if (!category) return [];\n\n if (category.ParentID) {\n return [...findPath(category.ParentID), category.Name];\n }\n return [category.Name];\n };\n\n return findPath(this.record.CategoryID).join(' / ');\n }\n\n /** @deprecated Use {@link GetCategoryPath}. */\n getCategoryPath(): string {\n return this.GetCategoryPath();\n }\n\n private updateCategoryPathDisplay(): void {\n this.CategoryPathDisplay = this.GetCategoryPath();\n }\n\n async OnCategoryChange(value: string) {\n // If it's a new category (string but not in existing options)\n if (value && !this.CategoryOptions.find(opt => opt.value === value)) {\n // Check for duplicate category names (case-insensitive, trimmed)\n if (this.isDuplicateCategory(value)) {\n const existingCategory = this.CategoryOptions.find(option => \n option.text && option.text.trim().toLowerCase() === value.trim().toLowerCase()\n );\n if (existingCategory) {\n // Use the existing category instead\n this.record.CategoryID = existingCategory.value;\n MJNotificationService.Instance.CreateSimpleNotification(\n `Category \"${existingCategory.text}\" already exists. Using existing category.`, \n 'warning',\n 3000\n );\n }\n return;\n }\n\n try {\n // Create new category with trimmed name\n const md = this.ProviderToUse;\n const newCategory = await md.GetEntityObject<MJQueryCategoryEntity>('MJ: Query Categories');\n newCategory.Name = value.trim();\n const saved = await newCategory.Save();\n \n if (saved) {\n // Add to options and set the ID\n this.CategoryOptions.push({\n text: newCategory.Name,\n value: newCategory.ID\n });\n this.record.CategoryID = newCategory.ID;\n MJNotificationService.Instance.CreateSimpleNotification(\n `New category \"${newCategory.Name}\" created successfully.`, \n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to create new category. ${newCategory.LatestResult?.Message || ''}`, \n 'error',\n 3000\n );\n }\n } catch (error) {\n console.error('Error creating new category:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error creating new category. Please try again.', \n 'error',\n 3000\n );\n }\n }\n }\n\n /** @deprecated Use {@link OnCategoryChange}. */\n async onCategoryChange(value: string) {\n return this.OnCategoryChange(value);\n }\n\n private isDuplicateCategory(categoryName: string): boolean {\n const normalizedName = categoryName?.trim().toLowerCase();\n return this.CategoryOptions.some(option => \n option.text && option.text.trim().toLowerCase() === normalizedName\n );\n }\n\n /**\n * Updates the hasUnsavedChanges flag based on entity dirty states\n */\n private updateUnsavedChangesFlag() {\n this.HasUnsavedChanges = this.QueryParameters.some(param => param.Dirty) || \n this.record?.Dirty || false;\n }\n\n ToggleFiltersHelp() {\n this.ShowFiltersHelp = !this.ShowFiltersHelp;\n }\n\n /** @deprecated Use {@link ToggleFiltersHelp}. */\n toggleFiltersHelp() {\n return this.ToggleFiltersHelp();\n }\n\n /**\n * Run the query with parameter dialog\n */\n async RunQuery() {\n if (!this.record?.IsSaved) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Please save the query before running it.', \n 'warning',\n 3000\n );\n return;\n }\n\n // Save any unsaved changes first\n if (this.HasUnsavedChanges) {\n const saveResult = await this.SaveRecord(false); // Don't exit edit mode\n if (!saveResult) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to save query changes.', \n 'error',\n 3000\n );\n return;\n }\n }\n\n // Warn if query is not approved\n if (this.record.Status !== 'Approved') {\n console.warn(`Executing query '${this.record.Name}' with status '${this.record.Status}'. Query has not been approved.`);\n }\n\n // Reload parameters in case they were updated\n this.LoadQueryParameters();\n\n // Show the run dialog — set before detectChanges to avoid NG0100\n this.ShowRunDialog = true;\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link RunQuery}. */\n async runQuery() {\n return this.RunQuery();\n }\n\n /**\n * Handle run dialog close\n */\n OnRunDialogClose() {\n this.ShowRunDialog = false;\n }\n\n /** @deprecated Use {@link OnRunDialogClose}. */\n onRunDialogClose() {\n return this.OnRunDialogClose();\n }\n \n /**\n * Add a new parameter\n */\n async AddParameter() {\n try {\n const md = this.ProviderToUse;\n const newParam = await md.GetEntityObject<MJQueryParameterEntity>('MJ: Query Parameters');\n newParam.QueryID = this.record.ID;\n newParam.Name = `param${this.QueryParameters.length + 1}`;\n newParam.Type = 'string';\n newParam.IsRequired = false;\n \n const saved = await newParam.Save();\n if (saved) {\n this.QueryParameters.push(newParam);\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Parameter added successfully',\n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to add parameter',\n 'error',\n 3000\n );\n }\n } catch (error) {\n console.error('Error adding parameter:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error adding parameter',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link AddParameter}. */\n async addParameter() {\n return this.AddParameter();\n }\n \n /**\n * Edit a parameter\n */\n async EditParameter(param: MJQueryParameterEntity) {\n // TODO: Show parameter edit dialog\n console.log('Edit parameter:', param);\n }\n\n /** @deprecated Use {@link EditParameter}. */\n async editParameter(param: MJQueryParameterEntity) {\n return this.EditParameter(param);\n }\n \n /**\n * Delete a parameter\n */\n async DeleteParameter(param: MJQueryParameterEntity) {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Parameter', message: `Delete parameter \"${param.Name}\"?` }))) {\n return;\n }\n\n try {\n // Reload the parameter entity fresh to ensure we have a clean copy\n // not tied to any form transaction state\n const md = this.ProviderToUse;\n const freshParam = await md.GetEntityObject<MJQueryParameterEntity>('MJ: Query Parameters');\n const loaded = await freshParam.Load(param.ID);\n if (!loaded) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Could not load parameter record. It may have already been deleted.',\n 'warning',\n 3000\n );\n // Remove from local list anyway since it doesn't exist\n this.removeParameterFromList(param);\n return;\n }\n\n const deleted = await freshParam.Delete();\n if (deleted) {\n this.removeParameterFromList(param);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Parameter deleted successfully',\n 'success',\n 3000\n );\n } else {\n const errorDetail = freshParam.LatestResult?.CompleteMessage ?? 'Unknown reason';\n console.error('Failed to delete parameter:', errorDetail);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to delete parameter: ${errorDetail}`,\n 'error',\n 5000\n );\n }\n } catch (error) {\n console.error('Error deleting parameter:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error deleting parameter',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteParameter}. */\n async deleteParameter(param: MJQueryParameterEntity) {\n return this.DeleteParameter(param);\n }\n\n private removeParameterFromList(param: MJQueryParameterEntity): void {\n const index = this.QueryParameters.indexOf(param);\n if (index > -1) {\n this.QueryParameters.splice(index, 1);\n }\n this.cdr.detectChanges();\n }\n \n /**\n * Create a new Query Category in a slide-in via the generic\n * MJFormPresenterService. A new record opens in edit mode automatically.\n * On save, refresh the category tree and select the new category.\n */\n async CreateCategory(): Promise<void> {\n const ref = this.formPresenter.Open({\n EntityName: 'MJ: Query Categories',\n Presentation: 'slide-in',\n // Quick-create: drop the system-metadata (timestamps) section — empty\n // for a new record. Merges over the slide-in preset (toolbar still off).\n Config: { HiddenSectionKeys: ['systemMetadata'] },\n Provider: this.ProviderToUse,\n });\n const saved = await ref.AfterSaved();\n if (saved) {\n this.OnCategoryCreated(saved);\n }\n }\n\n /** @deprecated Use {@link CreateCategory}. */\n async createCategory(): Promise<void> {\n return this.CreateCategory();\n }\n\n /**\n * Edit the currently-selected category in a slide-in via the generic\n * MJFormPresenterService. `StartInEditMode` opens the existing record\n * editable. On save, refresh the category tree.\n */\n async EditSelectedCategory(): Promise<void> {\n if (!this.record.CategoryID) return;\n const ref = this.formPresenter.Open({\n EntityName: 'MJ: Query Categories',\n RecordId: this.record.CategoryID,\n Presentation: 'slide-in',\n // Open editable + drop the system-metadata section. Partial config\n // merges over the slide-in preset, so the toolbar stays suppressed.\n Config: { StartInEditMode: true, HiddenSectionKeys: ['systemMetadata'] },\n Provider: this.ProviderToUse,\n });\n const saved = await ref.AfterSaved();\n if (saved) {\n this.LoadCategories();\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link EditSelectedCategory}. */\n async editSelectedCategory(): Promise<void> {\n return this.EditSelectedCategory();\n }\n\n OnCategoryCreated(newCategory: BaseEntity) {\n // Reload categories to include the new one\n this.LoadCategories();\n\n // Set the new category as selected\n this.record.CategoryID = (newCategory as MJQueryCategoryEntity).ID;\n\n // Trigger change detection\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link OnCategoryCreated}. */\n onCategoryCreated(newCategory: BaseEntity) {\n return this.OnCategoryCreated(newCategory);\n }\n \n /**\n * Format date for display\n */\n formatDate(date: Date | string | null): string {\n if (!date) return '-';\n const d = typeof date === 'string' ? new Date(date) : date;\n return d.toLocaleDateString() + ' ' + d.toLocaleTimeString();\n }\n\n async SaveRecord(StopEditModeAfterSave: boolean = true): Promise<boolean> {\n this.IsSaving = true;\n this.cdr.markForCheck();\n try {\n return await this.internalSaveRecord(StopEditModeAfterSave);\n } finally {\n await Promise.resolve(); // microtask to avoid ExpressionChangedAfterItHasBeenCheckedError\n this.IsSaving = false;\n this.cdr.markForCheck();\n }\n }\n\n private async internalSaveRecord(StopEditModeAfterSave: boolean): Promise<boolean> {\n // Handle category creation before saving query\n if (this.record.CategoryID && !this.CategoryOptions.find(opt => opt.value === this.record.CategoryID)) {\n if (this.isDuplicateCategory(this.record.CategoryID)) {\n const existingCategory = this.CategoryOptions.find(option => \n option.text && option.text.trim().toLowerCase() === this.record.CategoryID?.trim().toLowerCase()\n );\n if (existingCategory) {\n this.record.CategoryID = existingCategory.value;\n MJNotificationService.Instance.CreateSimpleNotification(\n `Category \"${existingCategory.text}\" already exists. Using existing category.`, \n 'warning',\n 3000\n );\n }\n } else {\n try {\n const md = this.ProviderToUse;\n const newCategory = await md.GetEntityObject<MJQueryCategoryEntity>('MJ: Query Categories');\n newCategory.Name = this.record.CategoryID.trim();\n const saved = await newCategory.Save();\n \n if (saved) {\n this.CategoryOptions.push({\n text: newCategory.Name,\n value: newCategory.ID\n });\n this.record.CategoryID = newCategory.ID;\n } else {\n console.error('Failed to create new category');\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to create new category. ${newCategory.LatestResult?.Message || ''}`, \n 'error'\n );\n return false;\n }\n } catch (error) {\n console.error('Error creating new category during save:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error creating new category during save. Please try again.', \n 'error'\n );\n return false;\n }\n }\n }\n\n // Save any unsaved query entities first\n if (this.EditMode) {\n for (const entity of this.QueryEntities) {\n if (!entity.IsSaved && entity.EntityID) {\n try {\n await entity.Save();\n } catch (error) {\n console.error('Error saving query entity:', error);\n }\n }\n }\n }\n\n // Call the parent save method\n const result = await super.SaveRecord(StopEditModeAfterSave);\n \n if (result) {\n this.updateUnsavedChangesFlag();\n\n // Reload related data after successful save as server-side processes may have updated them\n if (this.record && this.record.ID) {\n this.LoadQueryParameters();\n this.LoadQueryFields();\n this.LoadQueryEntities();\n this.updateCategoryPathDisplay();\n this.cdr.detectChanges();\n }\n }\n \n return result;\n }\n\n GetStatusBadgeColor(): string {\n switch (this.record?.Status) {\n case 'Approved': return '#28a745';\n case 'Pending': return '#f59e0b';\n case 'Rejected': return '#dc3545';\n case 'Expired': return '#6c757d';\n default: return '#6c757d';\n }\n }\n\n /** @deprecated Use {@link GetStatusBadgeColor}. */\n getStatusBadgeColor(): string {\n return this.GetStatusBadgeColor();\n }\n\n GetStatusBannerIcon(): string {\n switch (this.record?.Status) {\n case 'Pending': return 'fa-clock';\n case 'Rejected': return 'fa-times-circle';\n case 'Expired': return 'fa-archive';\n default: return 'fa-info-circle';\n }\n }\n\n /** @deprecated Use {@link GetStatusBannerIcon}. */\n getStatusBannerIcon(): string {\n return this.GetStatusBannerIcon();\n }\n\n GetStatusBannerMessage(): string {\n switch (this.record?.Status) {\n case 'Pending': return 'It can be executed for testing but has not yet been approved.';\n case 'Rejected': return 'It was rejected and may need revision before approval.';\n case 'Expired': return 'It has expired and is no longer in active use.';\n default: return '';\n }\n }\n\n /** @deprecated Use {@link GetStatusBannerMessage}. */\n getStatusBannerMessage(): string {\n return this.GetStatusBannerMessage();\n }\n\n /**\n * Handle composition token click — navigate to the referenced query\n */\n OnCompositionTokenClick(event: CompositionTokenClickEvent): void {\n const allQueries = QueryEngine.Instance.Queries;\n const segments = event.FullPath.split('/').map(s => s.trim()).filter(s => s.length > 0);\n if (segments.length === 0) return;\n\n const queryName = segments[segments.length - 1];\n const categorySegments = segments.slice(0, -1);\n\n // First try: exact match on Name + CategoryPath\n let targetQuery = allQueries.find(q => {\n if (q.Name !== queryName) return false;\n if (categorySegments.length === 0) return true;\n const expectedPath = categorySegments.join('/');\n return q.CategoryPath === expectedPath;\n });\n\n // Fallback: match on Name alone\n if (!targetQuery) {\n targetQuery = allQueries.find(q => q.Name === queryName);\n }\n\n if (targetQuery) {\n this.navigationService.OpenEntityRecord('MJ: Queries', CompositeKey.FromID(targetQuery.ID));\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Referenced query \"${event.FullPath}\" not found.`,\n 'warning',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link OnCompositionTokenClick}. */\n onCompositionTokenClick(event: CompositionTokenClickEvent): void {\n return this.OnCompositionTokenClick(event);\n }\n\n /**\n * Navigate to a dependent query's record\n */\n OnDependentQueryClick(dep: MJQueryDependencyEntity): void {\n this.navigationService.OpenEntityRecord('MJ: Queries', CompositeKey.FromID(dep.QueryID));\n }\n\n /** @deprecated Use {@link OnDependentQueryClick}. */\n onDependentQueryClick(dep: MJQueryDependencyEntity): void {\n return this.OnDependentQueryClick(dep);\n }\n\n /**\n * Handle SQL value changes from the code editor\n */\n OnSQLChange(value: string) {\n if (this.isUpdatingEditorValue || !this.record) {\n return;\n }\n \n // Update the record SQL value\n this.record.SQL = value;\n this.updateUnsavedChangesFlag();\n }\n\n /** @deprecated Use {@link OnSQLChange}. */\n onSQLChange(value: string) {\n return this.OnSQLChange(value);\n }\n\n /**\n * Add a new field\n */\n async AddField() {\n try {\n const md = this.ProviderToUse;\n const newField = await md.GetEntityObject<MJQueryFieldEntity>('MJ: Query Fields');\n newField.QueryID = this.record.ID;\n newField.Name = `field${this.QueryFields.length + 1}`;\n newField.Description = '';\n newField.Sequence = (this.QueryFields.length + 1) * 10;\n newField.SQLBaseType = 'nvarchar';\n newField.SQLFullType = 'nvarchar(255)';\n \n const saved = await newField.Save();\n if (saved) {\n this.QueryFields.push(newField);\n this.QueryFields.sort((a, b) => (a.Sequence || 0) - (b.Sequence || 0));\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Field added successfully',\n 'success',\n 3000\n );\n }\n } catch (error) {\n console.error('Error adding field:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to add field',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link AddField}. */\n async addField() {\n return this.AddField();\n }\n\n /**\n * Delete a field\n */\n async DeleteField(field: MJQueryFieldEntity) {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Field', message: `Delete field \"${field.Name}\"?` }))) {\n return;\n }\n\n try {\n const md = this.ProviderToUse;\n const freshField = await md.GetEntityObject<MJQueryFieldEntity>('MJ: Query Fields');\n const loaded = await freshField.Load(field.ID);\n if (!loaded) {\n this.QueryFields = this.QueryFields.filter(f => !UUIDsEqual(f.ID, field.ID));\n this.cdr.detectChanges();\n return;\n }\n\n const deleted = await freshField.Delete();\n if (deleted) {\n this.QueryFields = this.QueryFields.filter(f => !UUIDsEqual(f.ID, field.ID));\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Field deleted successfully',\n 'success',\n 3000\n );\n } else {\n const errorDetail = freshField.LatestResult?.CompleteMessage ?? 'Unknown reason';\n console.error('Failed to delete field:', errorDetail);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to delete field: ${errorDetail}`,\n 'error',\n 5000\n );\n }\n } catch (error) {\n console.error('Error deleting field:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete field',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteField}. */\n async deleteField(field: MJQueryFieldEntity) {\n return this.DeleteField(field);\n }\n\n /**\n * Add a new entity\n */\n async AddEntity() {\n try {\n const md = this.ProviderToUse;\n const newEntity = await md.GetEntityObject<MJQueryEntityEntity>('MJ: Query Entities');\n newEntity.QueryID = this.record.ID;\n \n // Add to the list immediately for UI responsiveness\n this.QueryEntities.push(newEntity);\n this.updateUnsavedChangesFlag();\n } catch (error) {\n console.error('Error adding entity:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to add entity',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link AddEntity}. */\n async addEntity() {\n return this.AddEntity();\n }\n\n /**\n * Delete an entity\n */\n async DeleteEntity(entity: MJQueryEntityEntity) {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Entity', message: `Delete entity \"${entity.Entity}\"?` }))) {\n return;\n }\n\n try {\n const md = this.ProviderToUse;\n const freshEntity = await md.GetEntityObject<MJQueryEntityEntity>('MJ: Query Entities');\n const loaded = await freshEntity.Load(entity.ID);\n if (!loaded) {\n this.QueryEntities = this.QueryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));\n this.cdr.detectChanges();\n return;\n }\n\n const deleted = await freshEntity.Delete();\n if (deleted) {\n this.QueryEntities = this.QueryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Entity deleted successfully',\n 'success',\n 3000\n );\n } else {\n const errorDetail = freshEntity.LatestResult?.CompleteMessage ?? 'Unknown reason';\n console.error('Failed to delete entity:', errorDetail);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to delete entity: ${errorDetail}`,\n 'error',\n 5000\n );\n }\n } catch (error) {\n console.error('Error deleting entity:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete entity',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteEntity}. */\n async deleteEntity(entity: MJQueryEntityEntity) {\n return this.DeleteEntity(entity);\n }\n\n /**\n * Get entity options for dropdown\n */\n GetEntityOptions(): Array<{text: string, id: string}> {\n return this.ProviderToUse.Entities.map(e => ({\n text: e.Name,\n id: e.ID\n })).sort((a, b) => a.text.localeCompare(b.text));\n }\n\n /** @deprecated Use {@link GetEntityOptions}. */\n getEntityOptions(): Array<{text: string, id: string}> {\n return this.GetEntityOptions();\n }\n\n /**\n * Get the grid edit mode based on component edit mode\n */\n override GridEditMode(): \"None\" | \"Save\" | \"Queue\" {\n return this.EditMode ? \"Queue\" : \"None\";\n }\n\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [IsSaving]=\"IsSaving\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Saving Overlay -->\n @if (IsSaving) {\n <div class=\"saving-overlay\">\n <i class=\"fa-solid fa-spinner fa-spin saving-spinner\"></i>\n <span>Saving...</span>\n </div>\n }\n\n <!-- Header Section -->\n <div class=\"query-header\" [class.content-saving]=\"IsSaving\">\n <div class=\"query-header-content\">\n <!-- Top Row: Name and Run Button -->\n <div class=\"query-header-top\">\n <!-- Left: Query Name -->\n <div class=\"query-name-section\">\n <i class=\"fa-solid fa-database query-title-icon\"></i>\n @if (EditMode) {\n <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\n } @else {\n <h4 class=\"query-name-display\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"query-header-actions\">\n @if (record.ID) {\n <button mjButton\n variant=\"primary\"\n [disabled]=\"EditMode || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\"\n class=\"run-query-btn\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div class=\"query-meta-row\">\n <!-- Category -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Category</label>\n @if (EditMode) {\n <div class=\"meta-dropdown-row\">\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"CategoryIDAsKey\"\n [SelectableTypes]=\"'branch'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Select category...'\"\n [EnableSearch]=\"true\"\n [Clearable]=\"true\"\n (ValueChange)=\"OnCategoryTreeChange($event)\"\n class=\"meta-dropdown\">\n </mj-tree-dropdown>\n <button mjButton variant=\"icon\" title=\"New category\" (click)=\"createCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n @if (record.CategoryID) {\n <button mjButton variant=\"icon\" title=\"Edit category\" (click)=\"editSelectedCategory()\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Status</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"meta-dropdown status-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"status-pill\"\n [style.background]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"></i>\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div class=\"query-description-row\">\n @if (EditMode) {\n <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </textarea>\n } @else {\n <p class=\"query-description-text\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Status Warning Banner for Non-Approved Queries -->\n @if (record.Status && record.Status !== 'Approved' && !EditMode) {\n <mj-alert Variant=\"warning\">\n <span>\n This query has status <strong>{{ record.Status }}</strong>. {{ getStatusBannerMessage() }}\n </span>\n </mj-alert>\n }\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\" [class.content-saving]=\"IsSaving\">\n\n <!-- SQL Query Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title-row\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code panel-icon sql-icon\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"panel-badge defined\">— Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\n title=\"Show/hide SQL filters help\"\n class=\"filters-help-btn\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span>Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($event)\"\n [language]=\"'sql'\"\n class=\"sql-editor\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\">\n <h6 class=\"filters-help-title\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n <div class=\"filters-grid\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\">\n <div class=\"filter-name\">{{ filter.name }}</div>\n <div class=\"filter-description\">{{ filter.description }}</div>\n <div class=\"filter-syntax\">{{ filter.exampleSyntax }}</div>\n @if (filter.notes) {\n <div class=\"filter-notes\">{{ filter.notes }}</div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-book panel-icon\"></i>\n Technical Description\n @if (record.TechnicalDescription) {\n <span class=\"panel-badge defined\">— Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(ngModel)]=\"record.TechnicalDescription\"\n name=\"technicalDescription\"\n rows=\"8\"\n placeholder=\"Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.\">\n </textarea>\n @if (record.TechnicalDescription) {\n <div class=\"technical-description-preview\">\n <div class=\"preview-label\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n } @else {\n <div class=\"technical-description-view\">\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n Parameters\n @if (queryParameters.length > 0) {\n <span class=\"panel-badge count\">{{ queryParameters.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingParameters) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading parameters...\"></mj-loading>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-sliders\"\n Title=\"No Parameters Defined\"\n Message=\"Add parameters to make your query dynamic and reusable.\"\n [ActionText]=\"EditMode ? 'Add First Parameter' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addParameter()\" />\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"item-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-at item-name-icon param-icon\"></i>\n {{ param.Name }}\n </div>\n <div class=\"item-badges\">\n @if (param.IsRequired) {\n <span class=\"item-badge required\">Required</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (param.Description) {\n <div class=\"item-description\">{{ param.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </span>\n @if (param.DefaultValue) {\n <span class=\"meta-tag\">\n <strong>Default:</strong>\n <code class=\"meta-code\">{{ param.DefaultValue }}</code>\n </span>\n }\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"item-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n Fields\n @if (queryFields.length > 0) {\n <span class=\"panel-badge count\">{{ queryFields.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingFields) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading fields...\"></mj-loading>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-table\"\n Title=\"No Fields Defined\"\n Message=\"Define output fields for your query results.\"\n [ActionText]=\"EditMode ? 'Add First Field' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addField()\" />\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-columns item-name-icon field-icon\"></i>\n {{ field.Name }}\n </div>\n <div class=\"item-badges\">\n <span class=\"item-badge type\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"item-badge sequence\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (field.Description) {\n <div class=\"item-description\">{{ field.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n Entities\n @if (queryEntities.length > 0) {\n <span class=\"panel-badge count\">{{ queryEntities.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingEntities) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading entities...\"></mj-loading>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-database\"\n Title=\"No Entities Tracked\"\n Message=\"Track which entities this query uses for documentation.\"\n [ActionText]=\"EditMode ? 'Add First Entity' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addEntity()\" />\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-table item-name-icon entity-icon\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div class=\"entity-dropdown-wrapper\">\n <mj-dropdown\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [Data]=\"getEntityOptions()\"\n TextField=\"text\"\n ValueField=\"id\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select entity...\"\n class=\"entity-dropdown\">\n </mj-dropdown>\n </div>\n }\n </div>\n @if (!EditMode && entity.Entity) {\n <div class=\"item-card-body\">\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Reusable -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-puzzle-piece\"></i> Reusable\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.Reusable\" name=\"reusable\"></mj-switch>\n <div class=\"detail-hint\">Allow other queries to reference this query using composition syntax</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.Reusable) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Reusable</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Not Reusable</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache Enabled -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-bolt\"></i> Cache Enabled\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.CacheEnabled\" name=\"cacheEnabled\"></mj-switch>\n <div class=\"detail-hint\">Cache query results in memory to reduce database load on repeated runs</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.CacheEnabled) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Caching On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Caching Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache TTL -->\n @if (record.CacheEnabled) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clock\"></i> Cache TTL (Minutes)\n </label>\n @if (EditMode) {\n <input class=\"mj-input detail-input-narrow\"\n type=\"number\"\n [(ngModel)]=\"record.CacheTTLMinutes\"\n name=\"cacheTTLMinutes\"\n min=\"1\"\n placeholder=\"Default\" />\n <div class=\"detail-hint\">How long cached results remain valid. Leave blank for default TTL.</div>\n } @else {\n <div class=\"detail-value\">{{ record.CacheTTLMinutes != null ? record.CacheTTLMinutes + ' min' : 'Default' }}</div>\n }\n </div>\n }\n\n <!-- Audit Query Runs -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clipboard-list\"></i> Audit Runs\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.AuditQueryRuns\" name=\"auditQueryRuns\"></mj-switch>\n <div class=\"detail-hint\">Log all executions of this query to the Audit Log for tracking and compliance</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.AuditQueryRuns) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Auditing On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Auditing Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n Permissions\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingPermissions) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading permissions...\"></mj-loading>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <mj-empty-state Icon=\"fa-solid fa-shield-halved\"\n Title=\"No Permissions Set\"\n Message=\"This query uses default permissions.\" />\n } @else {\n @if (EditMode) {\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\">\n <i class=\"fa-solid fa-users permission-icon\"></i>\n <div class=\"permission-info\">\n <div class=\"permission-role\">{{ permission.Role }}</div>\n <div class=\"permission-type\">Role Permission</div>\n </div>\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n </div>\n </form>\n</mj-record-form-container>\n\n<!-- Query Run Dialog -->\n<mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n</mj-query-run-dialog>\n}\n"]}
|
|
1
|
+
{"version":3,"file":"query-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Queries/query-form.component.ts","../../../../src/lib/custom/Queries/query-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ViewChild, ChangeDetectorRef, AfterViewInit, inject } from '@angular/core';\nimport { MJQueryEntityExtended, MJQueryParameterEntity, MJQueryCategoryEntity, MJQueryFieldEntity, MJQueryEntityEntity, MJQueryPermissionEntity, MJQueryDependencyEntity, QueryEngine } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent, FormToolbarConfig, CUSTOM_LAYOUT_TOOLBAR_CONFIG, MJFormPresenterService } from '@memberjunction/ng-base-forms';\nimport { MJQueryFormComponent } from '../../generated/Entities/MJQuery/mjquery.form.component';\nimport { RUN_QUERY_SQL_FILTERS, CompositeKey, BaseEntity } from '@memberjunction/core';\nimport { TreeBranchConfig } from '@memberjunction/ng-trees';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { CodeEditorComponent, CompositionTokenClickEvent } from '@memberjunction/ng-code-editor';\nimport { NavigationService } from '@memberjunction/ng-shared';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { Subject } from 'rxjs';\n\ninterface CategoryTreeNode {\n id: string;\n name: string;\n items?: CategoryTreeNode[];\n}\n\n@RegisterClass(BaseFormComponent, 'MJ: Queries')\n@Component({\n standalone: false,\n selector: 'mj-query-form',\n templateUrl: './query-form.component.html',\n styleUrls: ['../../../shared/form-styles.css', './query-form.component.css']\n})\nexport class MJQueryFormComponentExtended extends MJQueryFormComponent implements OnInit, OnDestroy, AfterViewInit {\n public record!: MJQueryEntityExtended;\n public QueryParameters: MJQueryParameterEntity[] = [];\n\n /** @deprecated Use {@link QueryParameters}. */\n public get queryParameters(): MJQueryParameterEntity[] {\n return this.QueryParameters;\n }\n /** @deprecated Use {@link QueryParameters}. */\n public set queryParameters(value: MJQueryParameterEntity[]) {\n this.QueryParameters = value;\n }\n public QueryFields: MJQueryFieldEntity[] = [];\n\n /** @deprecated Use {@link QueryFields}. */\n public get queryFields(): MJQueryFieldEntity[] {\n return this.QueryFields;\n }\n /** @deprecated Use {@link QueryFields}. */\n public set queryFields(value: MJQueryFieldEntity[]) {\n this.QueryFields = value;\n }\n public QueryEntities: MJQueryEntityEntity[] = [];\n\n /** @deprecated Use {@link QueryEntities}. */\n public get queryEntities(): MJQueryEntityEntity[] {\n return this.QueryEntities;\n }\n /** @deprecated Use {@link QueryEntities}. */\n public set queryEntities(value: MJQueryEntityEntity[]) {\n this.QueryEntities = value;\n }\n public QueryPermissions: MJQueryPermissionEntity[] = [];\n\n /** @deprecated Use {@link QueryPermissions}. */\n public get queryPermissions(): MJQueryPermissionEntity[] {\n return this.QueryPermissions;\n }\n /** @deprecated Use {@link QueryPermissions}. */\n public set queryPermissions(value: MJQueryPermissionEntity[]) {\n this.QueryPermissions = value;\n }\n public IsLoadingParameters = false;\n\n /** @deprecated Use {@link IsLoadingParameters}. */\n public get isLoadingParameters() {\n return this.IsLoadingParameters;\n }\n /** @deprecated Use {@link IsLoadingParameters}. */\n public set isLoadingParameters(value) {\n this.IsLoadingParameters = value;\n }\n public IsLoadingFields = false;\n\n /** @deprecated Use {@link IsLoadingFields}. */\n public get isLoadingFields() {\n return this.IsLoadingFields;\n }\n /** @deprecated Use {@link IsLoadingFields}. */\n public set isLoadingFields(value) {\n this.IsLoadingFields = value;\n }\n public IsLoadingEntities = false;\n\n /** @deprecated Use {@link IsLoadingEntities}. */\n public get isLoadingEntities() {\n return this.IsLoadingEntities;\n }\n /** @deprecated Use {@link IsLoadingEntities}. */\n public set isLoadingEntities(value) {\n this.IsLoadingEntities = value;\n }\n public IsLoadingPermissions = false;\n\n /** @deprecated Use {@link IsLoadingPermissions}. */\n public get isLoadingPermissions() {\n return this.IsLoadingPermissions;\n }\n /** @deprecated Use {@link IsLoadingPermissions}. */\n public set isLoadingPermissions(value) {\n this.IsLoadingPermissions = value;\n }\n public HasUnsavedChanges = false;\n\n /** @deprecated Use {@link HasUnsavedChanges}. */\n public get hasUnsavedChanges() {\n return this.HasUnsavedChanges;\n }\n /** @deprecated Use {@link HasUnsavedChanges}. */\n public set hasUnsavedChanges(value) {\n this.HasUnsavedChanges = value;\n }\n public ShowFiltersHelp = false;\n\n /** @deprecated Use {@link ShowFiltersHelp}. */\n public get showFiltersHelp() {\n return this.ShowFiltersHelp;\n }\n /** @deprecated Use {@link ShowFiltersHelp}. */\n public set showFiltersHelp(value) {\n this.ShowFiltersHelp = value;\n }\n public ShowRunDialog = false;\n\n /** @deprecated Use {@link ShowRunDialog}. */\n public get showRunDialog() {\n return this.ShowRunDialog;\n }\n /** @deprecated Use {@link ShowRunDialog}. */\n public set showRunDialog(value) {\n this.ShowRunDialog = value;\n }\n public CategoryPathDisplay = '';\n\n /** @deprecated Use {@link CategoryPathDisplay}. */\n public get categoryPathDisplay() {\n return this.CategoryPathDisplay;\n }\n /** @deprecated Use {@link CategoryPathDisplay}. */\n public set categoryPathDisplay(value) {\n this.CategoryPathDisplay = value;\n }\n public IsSaving = false;\n\n // Expansion panel states\n public SqlPanelExpanded = true;\n\n /** @deprecated Use {@link SqlPanelExpanded}. */\n public get sqlPanelExpanded() {\n return this.SqlPanelExpanded;\n }\n /** @deprecated Use {@link SqlPanelExpanded}. */\n public set sqlPanelExpanded(value) {\n this.SqlPanelExpanded = value;\n }\n public ParametersPanelExpanded = false;\n\n /** @deprecated Use {@link ParametersPanelExpanded}. */\n public get parametersPanelExpanded() {\n return this.ParametersPanelExpanded;\n }\n /** @deprecated Use {@link ParametersPanelExpanded}. */\n public set parametersPanelExpanded(value) {\n this.ParametersPanelExpanded = value;\n }\n public FieldsPanelExpanded = false;\n\n /** @deprecated Use {@link FieldsPanelExpanded}. */\n public get fieldsPanelExpanded() {\n return this.FieldsPanelExpanded;\n }\n /** @deprecated Use {@link FieldsPanelExpanded}. */\n public set fieldsPanelExpanded(value) {\n this.FieldsPanelExpanded = value;\n }\n public EntitiesPanelExpanded = false;\n\n /** @deprecated Use {@link EntitiesPanelExpanded}. */\n public get entitiesPanelExpanded() {\n return this.EntitiesPanelExpanded;\n }\n /** @deprecated Use {@link EntitiesPanelExpanded}. */\n public set entitiesPanelExpanded(value) {\n this.EntitiesPanelExpanded = value;\n }\n public TechnicalDescriptionPanelExpanded = false;\n\n /** @deprecated Use {@link TechnicalDescriptionPanelExpanded}. */\n public get technicalDescriptionPanelExpanded() {\n return this.TechnicalDescriptionPanelExpanded;\n }\n /** @deprecated Use {@link TechnicalDescriptionPanelExpanded}. */\n public set technicalDescriptionPanelExpanded(value) {\n this.TechnicalDescriptionPanelExpanded = value;\n }\n public DetailsPanelExpanded = false;\n\n /** @deprecated Use {@link DetailsPanelExpanded}. */\n public get detailsPanelExpanded() {\n return this.DetailsPanelExpanded;\n }\n /** @deprecated Use {@link DetailsPanelExpanded}. */\n public set detailsPanelExpanded(value) {\n this.DetailsPanelExpanded = value;\n }\n public PermissionsPanelExpanded = false;\n\n /** @deprecated Use {@link PermissionsPanelExpanded}. */\n public get permissionsPanelExpanded() {\n return this.PermissionsPanelExpanded;\n }\n /** @deprecated Use {@link PermissionsPanelExpanded}. */\n public set permissionsPanelExpanded(value) {\n this.PermissionsPanelExpanded = value;\n }\n public DependentsPanelExpanded = false;\n\n /** @deprecated Use {@link DependentsPanelExpanded}. */\n public get dependentsPanelExpanded() {\n return this.DependentsPanelExpanded;\n }\n /** @deprecated Use {@link DependentsPanelExpanded}. */\n public set dependentsPanelExpanded(value) {\n this.DependentsPanelExpanded = value;\n }\n \n // Category data\n public CategoryOptions: Array<{text: string, value: string}> = [\n { text: 'Select Category...', value: '' }\n ];\n\n /** @deprecated Use {@link CategoryOptions}. */\n public get categoryOptions(): Array<{text: string, value: string}> {\n return this.CategoryOptions;\n }\n /** @deprecated Use {@link CategoryOptions}. */\n public set categoryOptions(value: Array<{text: string, value: string}>) {\n this.CategoryOptions = value;\n }\n public Categories: MJQueryCategoryEntity[] = [];\n\n /** @deprecated Use {@link Categories}. */\n public get categories(): MJQueryCategoryEntity[] {\n return this.Categories;\n }\n /** @deprecated Use {@link Categories}. */\n public set categories(value: MJQueryCategoryEntity[]) {\n this.Categories = value;\n }\n public CategoryTreeData: CategoryTreeNode[] = [];\n\n /** @deprecated Use {@link CategoryTreeData}. */\n public get categoryTreeData(): CategoryTreeNode[] {\n return this.CategoryTreeData;\n }\n /** @deprecated Use {@link CategoryTreeData}. */\n public set categoryTreeData(value: CategoryTreeNode[]) {\n this.CategoryTreeData = value;\n }\n\n /** Tree dropdown config for Query Categories */\n public CategoryBranchConfig: TreeBranchConfig = {\n EntityName: 'MJ: Query Categories',\n DisplayField: 'Name',\n IDField: 'ID',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n DescriptionField: 'Description',\n OrderBy: 'Name ASC'\n };\n\n /** CategoryID as CompositeKey for tree dropdown binding */\n public get CategoryIDAsKey(): CompositeKey | null {\n return this.record?.CategoryID ? CompositeKey.FromID(this.record.CategoryID) : null; // first-pk-ok: FK target — Query CategoryID references the single-column ID key of Query Categories\n }\n\n /** Handle tree dropdown category selection */\n public OnCategoryTreeChange(value: CompositeKey | CompositeKey[] | null): void {\n if (!this.record) return;\n if (value instanceof CompositeKey && value.HasValue) {\n this.record.CategoryID = value.KeyValuePairs[0]?.Value ?? null;\n } else {\n this.record.CategoryID = null;\n }\n this.updateCategoryPathDisplay();\n }\n\n // Status options — matches MJQueryEntity.Status type from database CHECK constraint\n public StatusOptions = [\n { text: 'Pending', value: 'Pending' },\n { text: 'Approved', value: 'Approved' },\n { text: 'Rejected', value: 'Rejected' },\n { text: 'Expired', value: 'Expired' }\n ];\n\n /** @deprecated Use {@link StatusOptions}. */\n public get statusOptions() {\n return this.StatusOptions;\n }\n /** @deprecated Use {@link StatusOptions}. */\n public set statusOptions(value) {\n this.StatusOptions = value;\n }\n\n // Toolbar config: custom layout — hides the right-hand section-controls\n // group, keeps all left-side action buttons (delete/favorite/history/list)\n // since they're now wired through `<mj-record-form-container>`.\n public readonly ToolbarConfig: FormToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;\n\n /** Custom-layout Query form looks best full-width on first open. */\n public override getDefaultFormWidthMode(): 'centered' | 'full-width' { return 'full-width'; }\n\n @ViewChild('sqlEditor') SqlEditor: CodeEditorComponent | null = null;\n\n /** @deprecated Use {@link SqlEditor}. */\n get sqlEditor(): CodeEditorComponent | null {\n return this.SqlEditor;\n }\n /** @deprecated Use {@link SqlEditor}. */\n set sqlEditor(value: CodeEditorComponent | null) {\n this.SqlEditor = value;\n }\n \n // SQL Filters for help display\n public SqlFilters = RUN_QUERY_SQL_FILTERS;\n\n /** @deprecated Use {@link SqlFilters}. */\n public get sqlFilters() {\n return this.SqlFilters;\n }\n /** @deprecated Use {@link SqlFilters}. */\n public set sqlFilters(value) {\n this.SqlFilters = value;\n }\n \n private navigationService = inject(NavigationService);\n private formPresenter = inject(MJFormPresenterService);\n private confirmService = inject(MJConfirmService);\n private destroy$ = new Subject<void>();\n\n /**\n * Gets queries that depend on (reference) this query via composition.\n */\n public get DependentQueries(): MJQueryDependencyEntity[] {\n return this.record?.QueryDependents ?? [];\n }\n private isUpdatingEditorValue = false;\n private isInitialLoad = true;\n\n async ngOnInit() {\n await super.ngOnInit();\n\n // During init, suppress per-method detectChanges to avoid NG0100.\n // We do one unified detectChanges after everything completes.\n this.isInitialLoad = true;\n\n // Load all data synchronously from QueryEngine cache\n this.LoadCategories();\n this.LoadQueryParameters();\n this.LoadQueryFields();\n this.LoadQueryEntities();\n this.LoadQueryPermissions();\n\n this.isInitialLoad = false;\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.SqlEditor?.setEditable(this.EditMode);\n\n // Set initial SQL value in the editor\n this.updateEditorValue();\n }\n \n override EndEditMode(): void {\n super.EndEditMode();\n this.SqlEditor?.setEditable(false);\n }\n\n override StartEditMode(): void {\n super.StartEditMode();\n this.SqlEditor?.setEditable(true);\n \n // Force change detection after a brief delay to ensure form controls are initialized\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 50);\n }\n\n override CancelEdit(): void {\n super.CancelEdit();\n this.updateEditorValue(); // Reset editor value to record SQL\n this.SqlEditor?.setEditable(false);\n this.updateUnsavedChangesFlag(); // Reset unsaved changes flag\n }\n\n private updateEditorValue() {\n if (!this.SqlEditor || this.isUpdatingEditorValue) {\n return;\n }\n \n // Use setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n if (!this.SqlEditor) {\n return;\n }\n \n this.isUpdatingEditorValue = true;\n const sqlValue = this.record?.SQL || '';\n \n // Use the setValue method from mj-code-editor component\n this.SqlEditor.setValue(sqlValue);\n this.isUpdatingEditorValue = false;\n }, 0);\n }\n\n public IsFormReadOnly(): boolean {\n return !this.EditMode;\n }\n\n /** @deprecated Use {@link IsFormReadOnly}. */\n public isFormReadOnly(): boolean {\n return this.IsFormReadOnly();\n }\n\n LoadQueryParameters() {\n if (this.record && this.record.ID) {\n this.QueryParameters = this.record.QueryParameters;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryParameters}. */\n loadQueryParameters() {\n return this.LoadQueryParameters();\n }\n\n LoadQueryFields() {\n if (this.record && this.record.ID) {\n this.QueryFields = this.record.QueryFields;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryFields}. */\n loadQueryFields() {\n return this.LoadQueryFields();\n }\n\n LoadQueryEntities() {\n if (this.record && this.record.ID) {\n this.QueryEntities = this.record.QueryEntities;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryEntities}. */\n loadQueryEntities() {\n return this.LoadQueryEntities();\n }\n\n LoadQueryPermissions() {\n if (this.record && this.record.ID) {\n this.QueryPermissions = this.record.QueryPermissions;\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link LoadQueryPermissions}. */\n loadQueryPermissions() {\n return this.LoadQueryPermissions();\n }\n\n LoadCategories() {\n this.Categories = QueryEngine.Instance.Categories;\n\n // Build flat options for legacy compatibility\n this.CategoryOptions = [\n { text: 'Select Category...', value: '' },\n ...this.Categories.map(cat => ({\n text: cat.Name,\n value: cat.ID\n }))\n ];\n\n // Build tree data after options are set\n this.CategoryTreeData = this.buildCategoryTree(this.Categories);\n\n // Update cached category path display\n this.updateCategoryPathDisplay();\n\n // Trigger change detection to update the view (skip during init)\n if (!this.isInitialLoad) this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link LoadCategories}. */\n loadCategories() {\n return this.LoadCategories();\n }\n \n private buildCategoryTree(categories: MJQueryCategoryEntity[]): CategoryTreeNode[] {\n const categoryMap = new Map<string, CategoryTreeNode>();\n const rootCategories: CategoryTreeNode[] = [];\n \n // Create nodes for all categories\n categories.forEach(cat => {\n categoryMap.set(cat.ID, {\n id: cat.ID,\n name: cat.Name,\n items: []\n });\n });\n \n // Build the tree structure\n categories.forEach(cat => {\n const node = categoryMap.get(cat.ID)!;\n if (cat.ParentID && categoryMap.has(cat.ParentID)) {\n const parent = categoryMap.get(cat.ParentID)!;\n if (!parent.items) parent.items = [];\n parent.items.push(node);\n } else {\n rootCategories.push(node);\n }\n });\n \n // Sort children alphabetically\n const sortNodes = (nodes: CategoryTreeNode[]) => {\n nodes.sort((a, b) => a.name.localeCompare(b.name));\n nodes.forEach(node => {\n if (node.items && node.items.length > 0) {\n sortNodes(node.items);\n }\n });\n };\n sortNodes(rootCategories);\n \n return rootCategories;\n }\n \n GetCategoryPath(): string {\n if (!this.record?.CategoryID) return '';\n\n const findPath = (categoryId: string): string[] => {\n const category = this.Categories.find(c => UUIDsEqual(c.ID, categoryId));\n if (!category) return [];\n\n if (category.ParentID) {\n return [...findPath(category.ParentID), category.Name];\n }\n return [category.Name];\n };\n\n return findPath(this.record.CategoryID).join(' / ');\n }\n\n /** @deprecated Use {@link GetCategoryPath}. */\n getCategoryPath(): string {\n return this.GetCategoryPath();\n }\n\n private updateCategoryPathDisplay(): void {\n this.CategoryPathDisplay = this.GetCategoryPath();\n }\n\n async OnCategoryChange(value: string) {\n // If it's a new category (string but not in existing options)\n if (value && !this.CategoryOptions.find(opt => opt.value === value)) {\n // Check for duplicate category names (case-insensitive, trimmed)\n if (this.isDuplicateCategory(value)) {\n const existingCategory = this.CategoryOptions.find(option => \n option.text && option.text.trim().toLowerCase() === value.trim().toLowerCase()\n );\n if (existingCategory) {\n // Use the existing category instead\n this.record.CategoryID = existingCategory.value;\n MJNotificationService.Instance.CreateSimpleNotification(\n `Category \"${existingCategory.text}\" already exists. Using existing category.`, \n 'warning',\n 3000\n );\n }\n return;\n }\n\n try {\n // Create new category with trimmed name\n const md = this.ProviderToUse;\n const newCategory = await md.GetEntityObject<MJQueryCategoryEntity>('MJ: Query Categories');\n newCategory.Name = value.trim();\n const saved = await newCategory.Save();\n \n if (saved) {\n // Add to options and set the ID\n this.CategoryOptions.push({\n text: newCategory.Name,\n value: newCategory.ID\n });\n this.record.CategoryID = newCategory.ID;\n MJNotificationService.Instance.CreateSimpleNotification(\n `New category \"${newCategory.Name}\" created successfully.`, \n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to create new category. ${newCategory.LatestResult?.Message || ''}`, \n 'error',\n 3000\n );\n }\n } catch (error) {\n console.error('Error creating new category:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error creating new category. Please try again.', \n 'error',\n 3000\n );\n }\n }\n }\n\n /** @deprecated Use {@link OnCategoryChange}. */\n async onCategoryChange(value: string) {\n return this.OnCategoryChange(value);\n }\n\n private isDuplicateCategory(categoryName: string): boolean {\n const normalizedName = categoryName?.trim().toLowerCase();\n return this.CategoryOptions.some(option => \n option.text && option.text.trim().toLowerCase() === normalizedName\n );\n }\n\n /**\n * Updates the hasUnsavedChanges flag based on entity dirty states\n */\n private updateUnsavedChangesFlag() {\n this.HasUnsavedChanges = this.QueryParameters.some(param => param.Dirty) || \n this.record?.Dirty || false;\n }\n\n ToggleFiltersHelp() {\n this.ShowFiltersHelp = !this.ShowFiltersHelp;\n }\n\n /** @deprecated Use {@link ToggleFiltersHelp}. */\n toggleFiltersHelp() {\n return this.ToggleFiltersHelp();\n }\n\n /**\n * Run the query with parameter dialog\n */\n async RunQuery() {\n if (!this.record?.IsSaved) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Please save the query before running it.', \n 'warning',\n 3000\n );\n return;\n }\n\n // Save any unsaved changes first\n if (this.HasUnsavedChanges) {\n const saveResult = await this.SaveRecord(false); // Don't exit edit mode\n if (!saveResult) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to save query changes.', \n 'error',\n 3000\n );\n return;\n }\n }\n\n // Warn if query is not approved\n if (this.record.Status !== 'Approved') {\n console.warn(`Executing query '${this.record.Name}' with status '${this.record.Status}'. Query has not been approved.`);\n }\n\n // Reload parameters in case they were updated\n this.LoadQueryParameters();\n\n // Show the run dialog — set before detectChanges to avoid NG0100\n this.ShowRunDialog = true;\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link RunQuery}. */\n async runQuery() {\n return this.RunQuery();\n }\n\n /**\n * Handle run dialog close\n */\n OnRunDialogClose() {\n this.ShowRunDialog = false;\n }\n\n /** @deprecated Use {@link OnRunDialogClose}. */\n onRunDialogClose() {\n return this.OnRunDialogClose();\n }\n \n /**\n * Add a new parameter\n */\n async AddParameter() {\n try {\n const md = this.ProviderToUse;\n const newParam = await md.GetEntityObject<MJQueryParameterEntity>('MJ: Query Parameters');\n newParam.QueryID = this.record.ID;\n newParam.Name = `param${this.QueryParameters.length + 1}`;\n newParam.Type = 'string';\n newParam.IsRequired = false;\n \n const saved = await newParam.Save();\n if (saved) {\n this.QueryParameters.push(newParam);\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Parameter added successfully',\n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to add parameter',\n 'error',\n 3000\n );\n }\n } catch (error) {\n console.error('Error adding parameter:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error adding parameter',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link AddParameter}. */\n async addParameter() {\n return this.AddParameter();\n }\n \n /**\n * Edit a parameter\n */\n async EditParameter(param: MJQueryParameterEntity) {\n // TODO: Show parameter edit dialog\n console.log('Edit parameter:', param);\n }\n\n /** @deprecated Use {@link EditParameter}. */\n async editParameter(param: MJQueryParameterEntity) {\n return this.EditParameter(param);\n }\n \n /**\n * Delete a parameter\n */\n async DeleteParameter(param: MJQueryParameterEntity) {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Parameter', message: `Delete parameter \"${param.Name}\"?` }))) {\n return;\n }\n\n try {\n // Reload the parameter entity fresh to ensure we have a clean copy\n // not tied to any form transaction state\n const md = this.ProviderToUse;\n const freshParam = await md.GetEntityObject<MJQueryParameterEntity>('MJ: Query Parameters');\n const loaded = await freshParam.Load(param.ID);\n if (!loaded) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Could not load parameter record. It may have already been deleted.',\n 'warning',\n 3000\n );\n // Remove from local list anyway since it doesn't exist\n this.removeParameterFromList(param);\n return;\n }\n\n const deleted = await freshParam.Delete();\n if (deleted) {\n this.removeParameterFromList(param);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Parameter deleted successfully',\n 'success',\n 3000\n );\n } else {\n const errorDetail = freshParam.LatestResult?.CompleteMessage ?? 'Unknown reason';\n console.error('Failed to delete parameter:', errorDetail);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to delete parameter: ${errorDetail}`,\n 'error',\n 5000\n );\n }\n } catch (error) {\n console.error('Error deleting parameter:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error deleting parameter',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteParameter}. */\n async deleteParameter(param: MJQueryParameterEntity) {\n return this.DeleteParameter(param);\n }\n\n private removeParameterFromList(param: MJQueryParameterEntity): void {\n const index = this.QueryParameters.indexOf(param);\n if (index > -1) {\n this.QueryParameters.splice(index, 1);\n }\n this.cdr.detectChanges();\n }\n \n /**\n * Create a new Query Category in a slide-in via the generic\n * MJFormPresenterService. A new record opens in edit mode automatically.\n * On save, refresh the category tree and select the new category.\n */\n async CreateCategory(): Promise<void> {\n const ref = this.formPresenter.Open({\n EntityName: 'MJ: Query Categories',\n Presentation: 'slide-in',\n // Quick-create: drop the system-metadata (timestamps) section — empty\n // for a new record. Merges over the slide-in preset (toolbar still off).\n Config: { HiddenSectionKeys: ['systemMetadata'] },\n Provider: this.ProviderToUse,\n });\n const saved = await ref.AfterSaved();\n if (saved) {\n this.OnCategoryCreated(saved);\n }\n }\n\n /** @deprecated Use {@link CreateCategory}. */\n async createCategory(): Promise<void> {\n return this.CreateCategory();\n }\n\n /**\n * Edit the currently-selected category in a slide-in via the generic\n * MJFormPresenterService. `StartInEditMode` opens the existing record\n * editable. On save, refresh the category tree.\n */\n async EditSelectedCategory(): Promise<void> {\n if (!this.record.CategoryID) return;\n const ref = this.formPresenter.Open({\n EntityName: 'MJ: Query Categories',\n RecordId: this.record.CategoryID,\n Presentation: 'slide-in',\n // Open editable + drop the system-metadata section. Partial config\n // merges over the slide-in preset, so the toolbar stays suppressed.\n Config: { StartInEditMode: true, HiddenSectionKeys: ['systemMetadata'] },\n Provider: this.ProviderToUse,\n });\n const saved = await ref.AfterSaved();\n if (saved) {\n this.LoadCategories();\n this.cdr.detectChanges();\n }\n }\n\n /** @deprecated Use {@link EditSelectedCategory}. */\n async editSelectedCategory(): Promise<void> {\n return this.EditSelectedCategory();\n }\n\n OnCategoryCreated(newCategory: BaseEntity) {\n // Reload categories to include the new one\n this.LoadCategories();\n\n // Set the new category as selected\n this.record.CategoryID = (newCategory as MJQueryCategoryEntity).ID;\n\n // Trigger change detection\n this.cdr.detectChanges();\n }\n\n /** @deprecated Use {@link OnCategoryCreated}. */\n onCategoryCreated(newCategory: BaseEntity) {\n return this.OnCategoryCreated(newCategory);\n }\n \n /**\n * Format date for display\n */\n formatDate(date: Date | string | null): string {\n if (!date) return '-';\n const d = typeof date === 'string' ? new Date(date) : date;\n return d.toLocaleDateString() + ' ' + d.toLocaleTimeString();\n }\n\n async SaveRecord(StopEditModeAfterSave: boolean = true): Promise<boolean> {\n this.IsSaving = true;\n this.cdr.markForCheck();\n try {\n return await this.internalSaveRecord(StopEditModeAfterSave);\n } finally {\n await Promise.resolve(); // microtask to avoid ExpressionChangedAfterItHasBeenCheckedError\n this.IsSaving = false;\n this.cdr.markForCheck();\n }\n }\n\n private async internalSaveRecord(StopEditModeAfterSave: boolean): Promise<boolean> {\n // Handle category creation before saving query\n if (this.record.CategoryID && !this.CategoryOptions.find(opt => opt.value === this.record.CategoryID)) {\n if (this.isDuplicateCategory(this.record.CategoryID)) {\n const existingCategory = this.CategoryOptions.find(option => \n option.text && option.text.trim().toLowerCase() === this.record.CategoryID?.trim().toLowerCase()\n );\n if (existingCategory) {\n this.record.CategoryID = existingCategory.value;\n MJNotificationService.Instance.CreateSimpleNotification(\n `Category \"${existingCategory.text}\" already exists. Using existing category.`, \n 'warning',\n 3000\n );\n }\n } else {\n try {\n const md = this.ProviderToUse;\n const newCategory = await md.GetEntityObject<MJQueryCategoryEntity>('MJ: Query Categories');\n newCategory.Name = this.record.CategoryID.trim();\n const saved = await newCategory.Save();\n \n if (saved) {\n this.CategoryOptions.push({\n text: newCategory.Name,\n value: newCategory.ID\n });\n this.record.CategoryID = newCategory.ID;\n } else {\n console.error('Failed to create new category');\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to create new category. ${newCategory.LatestResult?.Message || ''}`, \n 'error'\n );\n return false;\n }\n } catch (error) {\n console.error('Error creating new category during save:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error creating new category during save. Please try again.', \n 'error'\n );\n return false;\n }\n }\n }\n\n // Save any unsaved query entities first\n if (this.EditMode) {\n for (const entity of this.QueryEntities) {\n if (!entity.IsSaved && entity.EntityID) {\n try {\n await entity.Save();\n } catch (error) {\n console.error('Error saving query entity:', error);\n }\n }\n }\n }\n\n // Call the parent save method\n const result = await super.SaveRecord(StopEditModeAfterSave);\n \n if (result) {\n this.updateUnsavedChangesFlag();\n\n // Reload related data after successful save as server-side processes may have updated them\n if (this.record && this.record.ID) {\n this.LoadQueryParameters();\n this.LoadQueryFields();\n this.LoadQueryEntities();\n this.updateCategoryPathDisplay();\n this.cdr.detectChanges();\n }\n }\n \n return result;\n }\n\n GetStatusBadgeColor(): string {\n switch (this.record?.Status) {\n case 'Approved': return '#28a745';\n case 'Pending': return '#f59e0b';\n case 'Rejected': return '#dc3545';\n case 'Expired': return '#6c757d';\n default: return '#6c757d';\n }\n }\n\n /** @deprecated Use {@link GetStatusBadgeColor}. */\n getStatusBadgeColor(): string {\n return this.GetStatusBadgeColor();\n }\n\n GetStatusBannerIcon(): string {\n switch (this.record?.Status) {\n case 'Pending': return 'fa-clock';\n case 'Rejected': return 'fa-times-circle';\n case 'Expired': return 'fa-archive';\n default: return 'fa-info-circle';\n }\n }\n\n /** @deprecated Use {@link GetStatusBannerIcon}. */\n getStatusBannerIcon(): string {\n return this.GetStatusBannerIcon();\n }\n\n GetStatusBannerMessage(): string {\n switch (this.record?.Status) {\n case 'Pending': return 'It can be executed for testing but has not yet been approved.';\n case 'Rejected': return 'It was rejected and may need revision before approval.';\n case 'Expired': return 'It has expired and is no longer in active use.';\n default: return '';\n }\n }\n\n /** @deprecated Use {@link GetStatusBannerMessage}. */\n getStatusBannerMessage(): string {\n return this.GetStatusBannerMessage();\n }\n\n /**\n * Handle composition token click — navigate to the referenced query\n */\n OnCompositionTokenClick(event: CompositionTokenClickEvent): void {\n const allQueries = QueryEngine.Instance.Queries;\n const segments = event.FullPath.split('/').map(s => s.trim()).filter(s => s.length > 0);\n if (segments.length === 0) return;\n\n const queryName = segments[segments.length - 1];\n const categorySegments = segments.slice(0, -1);\n\n // First try: exact match on Name + CategoryPath\n let targetQuery = allQueries.find(q => {\n if (q.Name !== queryName) return false;\n if (categorySegments.length === 0) return true;\n const expectedPath = categorySegments.join('/');\n return q.CategoryPath === expectedPath;\n });\n\n // Fallback: match on Name alone\n if (!targetQuery) {\n targetQuery = allQueries.find(q => q.Name === queryName);\n }\n\n if (targetQuery) {\n this.navigationService.OpenEntityRecord('MJ: Queries', CompositeKey.FromID(targetQuery.ID));\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Referenced query \"${event.FullPath}\" not found.`,\n 'warning',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link OnCompositionTokenClick}. */\n onCompositionTokenClick(event: CompositionTokenClickEvent): void {\n return this.OnCompositionTokenClick(event);\n }\n\n /**\n * Navigate to a dependent query's record\n */\n OnDependentQueryClick(dep: MJQueryDependencyEntity): void {\n this.navigationService.OpenEntityRecord('MJ: Queries', CompositeKey.FromID(dep.QueryID));\n }\n\n /** @deprecated Use {@link OnDependentQueryClick}. */\n onDependentQueryClick(dep: MJQueryDependencyEntity): void {\n return this.OnDependentQueryClick(dep);\n }\n\n /**\n * Handle SQL value changes from the code editor\n */\n OnSQLChange(value: string) {\n if (this.isUpdatingEditorValue || !this.record) {\n return;\n }\n \n // Update the record SQL value\n this.record.SQL = value;\n this.updateUnsavedChangesFlag();\n }\n\n /** @deprecated Use {@link OnSQLChange}. */\n onSQLChange(value: string) {\n return this.OnSQLChange(value);\n }\n\n /**\n * Add a new field\n */\n async AddField() {\n try {\n const md = this.ProviderToUse;\n const newField = await md.GetEntityObject<MJQueryFieldEntity>('MJ: Query Fields');\n newField.QueryID = this.record.ID;\n newField.Name = `field${this.QueryFields.length + 1}`;\n newField.Description = '';\n newField.Sequence = (this.QueryFields.length + 1) * 10;\n newField.SQLBaseType = 'nvarchar';\n newField.SQLFullType = 'nvarchar(255)';\n \n const saved = await newField.Save();\n if (saved) {\n this.QueryFields.push(newField);\n this.QueryFields.sort((a, b) => (a.Sequence || 0) - (b.Sequence || 0));\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Field added successfully',\n 'success',\n 3000\n );\n }\n } catch (error) {\n console.error('Error adding field:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to add field',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link AddField}. */\n async addField() {\n return this.AddField();\n }\n\n /**\n * Delete a field\n */\n async DeleteField(field: MJQueryFieldEntity) {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Field', message: `Delete field \"${field.Name}\"?` }))) {\n return;\n }\n\n try {\n const md = this.ProviderToUse;\n const freshField = await md.GetEntityObject<MJQueryFieldEntity>('MJ: Query Fields');\n const loaded = await freshField.Load(field.ID);\n if (!loaded) {\n this.QueryFields = this.QueryFields.filter(f => !UUIDsEqual(f.ID, field.ID));\n this.cdr.detectChanges();\n return;\n }\n\n const deleted = await freshField.Delete();\n if (deleted) {\n this.QueryFields = this.QueryFields.filter(f => !UUIDsEqual(f.ID, field.ID));\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Field deleted successfully',\n 'success',\n 3000\n );\n } else {\n const errorDetail = freshField.LatestResult?.CompleteMessage ?? 'Unknown reason';\n console.error('Failed to delete field:', errorDetail);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to delete field: ${errorDetail}`,\n 'error',\n 5000\n );\n }\n } catch (error) {\n console.error('Error deleting field:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete field',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteField}. */\n async deleteField(field: MJQueryFieldEntity) {\n return this.DeleteField(field);\n }\n\n /**\n * Add a new entity\n */\n async AddEntity() {\n try {\n const md = this.ProviderToUse;\n const newEntity = await md.GetEntityObject<MJQueryEntityEntity>('MJ: Query Entities');\n newEntity.QueryID = this.record.ID;\n \n // Add to the list immediately for UI responsiveness\n this.QueryEntities.push(newEntity);\n this.updateUnsavedChangesFlag();\n } catch (error) {\n console.error('Error adding entity:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to add entity',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link AddEntity}. */\n async addEntity() {\n return this.AddEntity();\n }\n\n /**\n * Delete an entity\n */\n async DeleteEntity(entity: MJQueryEntityEntity) {\n if (!(await this.confirmService.ConfirmDelete({ title: 'Delete Entity', message: `Delete entity \"${entity.Entity}\"?` }))) {\n return;\n }\n\n try {\n const md = this.ProviderToUse;\n const freshEntity = await md.GetEntityObject<MJQueryEntityEntity>('MJ: Query Entities');\n const loaded = await freshEntity.Load(entity.ID);\n if (!loaded) {\n this.QueryEntities = this.QueryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));\n this.cdr.detectChanges();\n return;\n }\n\n const deleted = await freshEntity.Delete();\n if (deleted) {\n this.QueryEntities = this.QueryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));\n this.updateUnsavedChangesFlag();\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Entity deleted successfully',\n 'success',\n 3000\n );\n } else {\n const errorDetail = freshEntity.LatestResult?.CompleteMessage ?? 'Unknown reason';\n console.error('Failed to delete entity:', errorDetail);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to delete entity: ${errorDetail}`,\n 'error',\n 5000\n );\n }\n } catch (error) {\n console.error('Error deleting entity:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete entity',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteEntity}. */\n async deleteEntity(entity: MJQueryEntityEntity) {\n return this.DeleteEntity(entity);\n }\n\n /**\n * Get entity options for dropdown\n */\n GetEntityOptions(): Array<{text: string, id: string}> {\n return this.ProviderToUse.Entities.map(e => ({\n text: e.Name,\n id: e.ID\n })).sort((a, b) => a.text.localeCompare(b.text));\n }\n\n /** @deprecated Use {@link GetEntityOptions}. */\n getEntityOptions(): Array<{text: string, id: string}> {\n return this.GetEntityOptions();\n }\n\n /**\n * Get the grid edit mode based on component edit mode\n */\n override GridEditMode(): \"None\" | \"Save\" | \"Queue\" {\n return this.EditMode ? \"Queue\" : \"None\";\n }\n\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [IsSaving]=\"IsSaving\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Saving Overlay -->\n @if (IsSaving) {\n <div class=\"saving-overlay\">\n <i class=\"fa-solid fa-spinner fa-spin saving-spinner\"></i>\n <span>Saving...</span>\n </div>\n }\n\n <!-- Header Section -->\n <div class=\"query-header\" [class.content-saving]=\"IsSaving\">\n <div class=\"query-header-content\">\n <!-- Top Row: Name and Run Button -->\n <div class=\"query-header-top\">\n <!-- Left: Query Name -->\n <div class=\"query-name-section\">\n <i class=\"fa-solid fa-database query-title-icon\"></i>\n @if (EditMode) {\n <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\n } @else {\n <h4 class=\"query-name-display\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"query-header-actions\">\n @if (record.ID) {\n <button mjButton\n variant=\"primary\"\n [disabled]=\"EditMode || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\"\n class=\"run-query-btn\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div class=\"query-meta-row\">\n <!-- Category -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Category</label>\n @if (EditMode) {\n <div class=\"meta-dropdown-row\">\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"CategoryIDAsKey\"\n [SelectableTypes]=\"'branch'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Select category...'\"\n [EnableSearch]=\"true\"\n [Clearable]=\"true\"\n (ValueChange)=\"OnCategoryTreeChange($event)\"\n class=\"meta-dropdown\">\n </mj-tree-dropdown>\n <button mjButton variant=\"icon\" title=\"New category\" (click)=\"createCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n @if (record.CategoryID) {\n <button mjButton variant=\"icon\" title=\"Edit category\" (click)=\"editSelectedCategory()\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Status</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"meta-dropdown status-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"status-pill\"\n [style.background]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"></i>\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div class=\"query-description-row\">\n @if (EditMode) {\n <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </textarea>\n } @else {\n <p class=\"query-description-text\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Status Warning Banner for Non-Approved Queries -->\n @if (record.Status && record.Status !== 'Approved' && !EditMode) {\n <mj-alert Variant=\"warning\">\n <span>\n This query has status <strong>{{ record.Status }}</strong>. {{ getStatusBannerMessage() }}\n </span>\n </mj-alert>\n }\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\" [class.content-saving]=\"IsSaving\">\n\n <!-- SQL Query Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title-row\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code panel-icon sql-icon\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"panel-badge defined\">— Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\n title=\"Show/hide SQL filters help\"\n class=\"filters-help-btn\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span>Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($event)\"\n [language]=\"'sql'\"\n class=\"sql-editor\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\">\n <h6 class=\"filters-help-title\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n <div class=\"filters-grid\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\">\n <div class=\"filter-name\">{{ filter.name }}</div>\n <div class=\"filter-description\">{{ filter.description }}</div>\n <div class=\"filter-syntax\">{{ filter.exampleSyntax }}</div>\n @if (filter.notes) {\n <div class=\"filter-notes\">{{ filter.notes }}</div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-book panel-icon\"></i>\n Technical Description\n @if (record.TechnicalDescription) {\n <span class=\"panel-badge defined\">— Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(ngModel)]=\"record.TechnicalDescription\"\n name=\"technicalDescription\"\n rows=\"8\"\n placeholder=\"Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.\">\n </textarea>\n @if (record.TechnicalDescription) {\n <div class=\"technical-description-preview\">\n <div class=\"preview-label\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n } @else {\n <div class=\"technical-description-view\">\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n Parameters\n @if (queryParameters.length > 0) {\n <span class=\"panel-badge count\">{{ queryParameters.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingParameters) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading parameters...\"></mj-loading>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-sliders\"\n Title=\"No Parameters Defined\"\n Message=\"Add parameters to make your query dynamic and reusable.\"\n [ActionText]=\"EditMode ? 'Add First Parameter' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addParameter()\" />\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"item-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-at item-name-icon param-icon\"></i>\n {{ param.Name }}\n </div>\n <div class=\"item-badges\">\n @if (param.IsRequired) {\n <span class=\"item-badge required\">Required</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (param.Description) {\n <div class=\"item-description\">{{ param.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </span>\n @if (param.DefaultValue) {\n <span class=\"meta-tag\">\n <strong>Default:</strong>\n <code class=\"meta-code\">{{ param.DefaultValue }}</code>\n </span>\n }\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"item-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n Fields\n @if (queryFields.length > 0) {\n <span class=\"panel-badge count\">{{ queryFields.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingFields) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading fields...\"></mj-loading>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-table\"\n Title=\"No Fields Defined\"\n Message=\"Define output fields for your query results.\"\n [ActionText]=\"EditMode ? 'Add First Field' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addField()\" />\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-columns item-name-icon field-icon\"></i>\n {{ field.Name }}\n </div>\n <div class=\"item-badges\">\n <span class=\"item-badge type\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"item-badge sequence\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (field.Description) {\n <div class=\"item-description\">{{ field.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n Entities\n @if (queryEntities.length > 0) {\n <span class=\"panel-badge count\">{{ queryEntities.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingEntities) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading entities...\"></mj-loading>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <mj-empty-state Icon=\"fa-solid fa-database\"\n Title=\"No Entities Tracked\"\n Message=\"Track which entities this query uses for documentation.\"\n [ActionText]=\"EditMode ? 'Add First Entity' : ''\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"addEntity()\" />\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-table item-name-icon entity-icon\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div class=\"entity-dropdown-wrapper\">\n <mj-dropdown\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [Data]=\"getEntityOptions()\"\n TextField=\"text\"\n ValueField=\"id\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select entity...\"\n class=\"entity-dropdown\">\n </mj-dropdown>\n </div>\n }\n </div>\n @if (!EditMode && entity.Entity) {\n <div class=\"item-card-body\">\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Reusable -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-puzzle-piece\"></i> Reusable\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.Reusable\" name=\"reusable\"></mj-switch>\n <div class=\"detail-hint\">Allow other queries to reference this query using composition syntax</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.Reusable) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Reusable</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Not Reusable</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache Enabled -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-bolt\"></i> Cache Enabled\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.CacheEnabled\" name=\"cacheEnabled\"></mj-switch>\n <div class=\"detail-hint\">Cache query results in memory to reduce database load on repeated runs</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.CacheEnabled) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Caching On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Caching Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache TTL -->\n @if (record.CacheEnabled) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clock\"></i> Cache TTL (Minutes)\n </label>\n @if (EditMode) {\n <input class=\"mj-input detail-input-narrow\"\n type=\"number\"\n [(ngModel)]=\"record.CacheTTLMinutes\"\n name=\"cacheTTLMinutes\"\n min=\"1\"\n placeholder=\"Default\" />\n <div class=\"detail-hint\">How long cached results remain valid. Leave blank for default TTL.</div>\n } @else {\n <div class=\"detail-value\">{{ record.CacheTTLMinutes != null ? record.CacheTTLMinutes + ' min' : 'Default' }}</div>\n }\n </div>\n }\n\n <!-- Audit Query Runs -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clipboard-list\"></i> Audit Runs\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.AuditQueryRuns\" name=\"auditQueryRuns\"></mj-switch>\n <div class=\"detail-hint\">Log all executions of this query to the Audit Log for tracking and compliance</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.AuditQueryRuns) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Auditing On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Auditing Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n Permissions\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingPermissions) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading permissions...\"></mj-loading>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <mj-empty-state Icon=\"fa-solid fa-shield-halved\"\n Title=\"No Permissions Set\"\n Message=\"This query uses default permissions.\" />\n } @else {\n @if (EditMode) {\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\">\n <i class=\"fa-solid fa-users permission-icon\"></i>\n <div class=\"permission-info\">\n <div class=\"permission-role\">{{ permission.Role }}</div>\n <div class=\"permission-type\">Role Permission</div>\n </div>\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n </div>\n </form>\n</mj-record-form-container>\n\n<!-- Query Run Dialog -->\n<mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n</mj-query-run-dialog>\n}\n"]}
|