@memberjunction/ng-core-entity-forms 5.42.0 → 5.44.0
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/__tests__/model-prediction.logic.test.d.ts +2 -0
- package/dist/__tests__/model-prediction.logic.test.d.ts.map +1 -0
- package/dist/__tests__/model-prediction.logic.test.js +140 -0
- package/dist/__tests__/model-prediction.logic.test.js.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +79 -105
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -10
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +46 -51
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +2 -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 +300 -378
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +22 -29
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +15 -17
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +27 -34
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +11 -0
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +48 -47
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +438 -454
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +48 -51
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +253 -282
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +24 -33
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +263 -311
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +6 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +475 -493
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +122 -173
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +190 -248
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +19 -23
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +16 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +54 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -0
- package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js +23 -24
- package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +25 -46
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +100 -130
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +187 -205
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +8 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +412 -489
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +100 -126
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +166 -184
- 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-step-detail.component.js +42 -61
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +8 -17
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -2
- 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 +183 -188
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +108 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +665 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +94 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +257 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +38 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +200 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +44 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +180 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +12 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +46 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +64 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +267 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +53 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +111 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +42 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +193 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +58 -49
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +64 -16
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +2 -0
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +25 -25
- package/dist/lib/custom/shared/entity-selector-dialog.component.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 +280 -216
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +25 -21
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +68 -14
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.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 +44 -32
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js +66 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -19
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +167 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +35 -17
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +25 -7
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js +11 -7
- package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.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 +56 -46
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- 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 -59
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +24 -4
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.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 +137 -87
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js +10 -8
- package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +47 -29
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +101 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +115 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +63 -9
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +32 -14
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +161 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +89 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +141 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js +88 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +110 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +56 -24
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +19 -17
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +46 -26
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js +12 -6
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.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 +36 -18
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +145 -109
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +356 -335
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +304 -226
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +44 -44
- 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.d.ts +43 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +240 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +69 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +130 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +83 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +293 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -0
- package/package.json +38 -36
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +0 -82
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +0 -1033
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-execution-log-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Actions/action-execution-log-form.component.ts","../../../../src/lib/custom/Actions/action-execution-log-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { MJActionExecutionLogEntity, MJActionEntity, MJUserEntity } from '@memberjunction/core-entities';\nimport { RegisterClass, ParseJSONRecursive, ParseJSONOptions } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { Metadata, CompositeKey } from '@memberjunction/core';\nimport { MJActionExecutionLogFormComponent } from '../../generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component';\n\ntype ParamType = 'Input' | 'Output' | 'Both';\ntype TypeFilter = 'All' | ParamType;\ntype SortKey = 'name' | 'type';\ntype SortDir = 'asc' | 'desc';\n\ninterface ActionParameter {\n Name: string;\n Value: unknown;\n Type: ParamType;\n}\n\ninterface DisplayParameter extends ActionParameter {\n ValueKind: 'string' | 'number' | 'boolean' | 'null' | 'undefined' | 'array' | 'object';\n Preview: string;\n IsExpandable: boolean;\n Expanded: boolean;\n FormattedValue: string;\n}\n\n@RegisterClass(BaseFormComponent, 'MJ: Action Execution Logs')\n@Component({\n standalone: false,\n selector: 'mj-action-execution-log-form',\n templateUrl: './action-execution-log-form.component.html',\n styleUrls: ['./action-execution-log-form.component.css']\n})\nexport class MJActionExecutionLogFormComponentExtended extends MJActionExecutionLogFormComponent implements OnInit {\n public record!: MJActionExecutionLogEntity;\n\n // Related entities\n public action: MJActionEntity | null = null;\n public user: MJUserEntity | null = null;\n\n // Loading states\n public isLoadingAction = false;\n public isLoadingUser = false;\n\n // Formatted JSON fields\n public formattedParams: string = '';\n public formattedMessage: string = '';\n\n // Unified parameter display\n public allParameters: DisplayParameter[] = [];\n public paramCounts: Record<TypeFilter, number> = { All: 0, Input: 0, Output: 0, Both: 0 };\n public hasAnyParameters = false;\n\n // Filter / sort / view state\n public typeFilter: TypeFilter = 'All';\n public searchText: string = '';\n public sortKey: SortKey = 'type';\n public sortDir: SortDir = 'asc';\n public showRawJson: boolean = false;\n\n async ngOnInit() {\n await super.ngOnInit();\n \n if (this.record?.IsSaved) {\n // Load related data\n await Promise.all([\n this.loadAction(),\n this.loadUser()\n ]);\n \n // Format JSON fields\n this.formatJSONFields();\n this.cdr.detectChanges();\n }\n }\n\n private async loadAction() {\n if (!this.record.ActionID) return;\n \n this.isLoadingAction = true;\n try {\n const md = this.ProviderToUse;\n this.action = await md.GetEntityObject<MJActionEntity>('MJ: Actions');\n if (this.action) {\n await this.action.Load(this.record.ActionID);\n }\n } catch (error) {\n console.error('Error loading action:', error);\n } finally {\n this.isLoadingAction = false;\n }\n }\n\n private async loadUser() {\n if (!this.record.UserID) return;\n \n this.isLoadingUser = true;\n try {\n const md = this.ProviderToUse;\n this.user = await md.GetEntityObject<MJUserEntity>('MJ: Users');\n if (this.user) {\n await this.user.Load(this.record.UserID);\n }\n } catch (error) {\n console.error('Error loading user:', error);\n } finally {\n this.isLoadingUser = false;\n }\n }\n\n private formatJSONFields() {\n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n\n // Format Params with recursive JSON parsing\n if (this.record.Params) {\n try {\n const parsed = JSON.parse(this.record.Params);\n const recursivelyParsed = ParseJSONRecursive(parsed, parseOptions);\n this.formattedParams = JSON.stringify(recursivelyParsed, null, 2);\n\n if (Array.isArray(recursivelyParsed)) {\n this.buildDisplayParameters(recursivelyParsed as ActionParameter[]);\n }\n } catch (e) {\n this.formattedParams = this.record.Params;\n }\n }\n\n // Format Message field with recursive JSON parsing\n if (this.record.Message) {\n try {\n const parsed = JSON.parse(this.record.Message);\n const recursivelyParsed = ParseJSONRecursive(parsed, parseOptions);\n this.formattedMessage = JSON.stringify(recursivelyParsed, null, 2);\n } catch (e) {\n this.formattedMessage = this.record.Message;\n }\n }\n }\n\n /**\n * Build the unified parameter display list once, so filtering/sorting can\n * operate on a cheap, pre-computed structure.\n */\n private buildDisplayParameters(params: ActionParameter[]) {\n this.paramCounts = { All: 0, Input: 0, Output: 0, Both: 0 };\n this.allParameters = params\n .filter((p) => p && typeof p.Name === 'string')\n .map((p) => {\n const valueKind = this.detectValueKind(p.Value);\n const isExpandable = valueKind === 'array' || valueKind === 'object';\n this.paramCounts.All += 1;\n if (p.Type === 'Input' || p.Type === 'Output' || p.Type === 'Both') {\n this.paramCounts[p.Type] += 1;\n }\n return {\n Name: p.Name,\n Value: p.Value,\n Type: p.Type,\n ValueKind: valueKind,\n Preview: this.buildPreview(p.Value, valueKind),\n IsExpandable: isExpandable,\n Expanded: false,\n FormattedValue: isExpandable ? JSON.stringify(p.Value, null, 2) : ''\n };\n });\n this.hasAnyParameters = this.allParameters.length > 0;\n }\n\n private detectValueKind(value: unknown): DisplayParameter['ValueKind'] {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n if (Array.isArray(value)) return 'array';\n const t = typeof value;\n if (t === 'string' || t === 'number' || t === 'boolean') return t;\n if (t === 'object') return 'object';\n return 'string';\n }\n\n /**\n * Short inline preview for the row header. Objects/arrays get a compact\n * one-liner; expansion reveals the full formatted JSON below.\n */\n private buildPreview(value: unknown, kind: DisplayParameter['ValueKind']): string {\n switch (kind) {\n case 'null': return 'null';\n case 'undefined': return 'undefined';\n case 'boolean': return value ? 'true' : 'false';\n case 'number': return String(value);\n case 'string': {\n const s = value as string;\n return s.length > 160 ? `\"${s.slice(0, 157)}…\"` : `\"${s}\"`;\n }\n case 'array': {\n const arr = value as unknown[];\n if (arr.length === 0) return '[]';\n if (arr.length <= 5 && arr.every((v) => v === null || typeof v !== 'object')) {\n return `[${arr.map((v) => this.buildPreview(v, this.detectValueKind(v))).join(', ')}]`;\n }\n return `Array(${arr.length})`;\n }\n case 'object': {\n const obj = value as Record<string, unknown>;\n const keys = Object.keys(obj);\n if (keys.length === 0) return '{}';\n const head = keys.slice(0, 3).join(', ');\n return keys.length <= 3 ? `{ ${head} }` : `{ ${head}, …+${keys.length - 3} }`;\n }\n }\n }\n\n // --- Filter / sort / view helpers (invoked from template) ----------------\n\n public get filteredParameters(): DisplayParameter[] {\n const needle = this.searchText.trim().toLowerCase();\n let list = this.allParameters;\n if (this.typeFilter !== 'All') {\n list = list.filter((p) => p.Type === this.typeFilter);\n }\n if (needle) {\n list = list.filter(\n (p) =>\n p.Name.toLowerCase().includes(needle) ||\n (p.Preview && p.Preview.toLowerCase().includes(needle))\n );\n }\n const typeOrder: Record<ParamType, number> = { Input: 0, Both: 1, Output: 2 };\n const dirMult = this.sortDir === 'asc' ? 1 : -1;\n return [...list].sort((a, b) => {\n if (this.sortKey === 'name') {\n return dirMult * a.Name.localeCompare(b.Name, undefined, { sensitivity: 'base' });\n }\n const typeCmp = typeOrder[a.Type] - typeOrder[b.Type];\n if (typeCmp !== 0) return dirMult * typeCmp;\n return a.Name.localeCompare(b.Name, undefined, { sensitivity: 'base' });\n });\n }\n\n public setTypeFilter(filter: TypeFilter): void {\n this.typeFilter = filter;\n }\n\n public toggleSort(key: SortKey): void {\n if (this.sortKey === key) {\n this.sortDir = this.sortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortKey = key;\n this.sortDir = 'asc';\n }\n }\n\n public toggleExpanded(param: DisplayParameter): void {\n if (!param.IsExpandable) return;\n param.Expanded = !param.Expanded;\n }\n\n public toggleRawJson(): void {\n this.showRawJson = !this.showRawJson;\n }\n\n public clearFilters(): void {\n this.typeFilter = 'All';\n this.searchText = '';\n }\n\n public trackParam(_index: number, p: DisplayParameter): string {\n return `${p.Type}::${p.Name}`;\n }\n\n public copyParamValue(param: DisplayParameter): void {\n const text = param.IsExpandable\n ? param.FormattedValue\n : this.formatScalarForCopy(param.Value);\n void this.copyToClipboard(text);\n }\n\n private formatScalarForCopy(value: unknown): string {\n if (value === null) return 'null';\n if (value === undefined) return '';\n if (typeof value === 'string') return value;\n return String(value);\n }\n\n /**\n * Returns the icon class for a value kind — rendered to the left of each\n * preview so object/array/scalar rows are visually distinct at a glance.\n */\n public getValueKindIcon(kind: DisplayParameter['ValueKind']): string {\n switch (kind) {\n case 'string': return 'fa-quote-right';\n case 'number': return 'fa-hashtag';\n case 'boolean': return 'fa-toggle-on';\n case 'array': return 'fa-list-ol';\n case 'object': return 'fa-code';\n case 'null': return 'fa-circle-minus';\n case 'undefined': return 'fa-ban';\n }\n }\n\n public getTypeLabel(type: ParamType): string {\n return type === 'Both' ? 'In/Out' : type;\n }\n\n // Navigation\n navigateToEntity(entityName: string, recordId: string | null) {\n if (!recordId) return;\n SharedService.Instance.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));\n }\n\n navigateToAction() {\n if (this.record.ActionID) {\n this.navigateToEntity('MJ: Actions', this.record.ActionID);\n }\n }\n\n navigateToUser() {\n if (this.record.UserID) {\n this.navigateToEntity('MJ: Users', this.record.UserID);\n }\n }\n\n // UI Helpers\n getExecutionDuration(): number {\n if (!this.record.StartedAt || !this.record.EndedAt) return 0;\n return new Date(this.record.EndedAt).getTime() - new Date(this.record.StartedAt).getTime();\n }\n\n formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${(ms / 60000).toFixed(1)}m`;\n return `${(ms / 3600000).toFixed(1)}h`;\n }\n\n getResultCodeColor(): string {\n const code = this.record.ResultCode?.toLowerCase();\n if (code === 'success' || code === 'ok' || code === 'completed' || code === '200') {\n return 'var(--mj-status-success)';\n }\n return 'var(--mj-status-error)';\n }\n\n getResultCodeIcon(): string {\n const code = this.record.ResultCode?.toLowerCase();\n if (code === 'success' || code === 'ok' || code === 'completed' || code === '200') {\n return 'fa-check-circle';\n }\n return 'fa-times-circle';\n }\n\n // Save handlers for JSON fields\n async saveParams() {\n if (!this.EditMode) return;\n \n try {\n // Validate JSON\n JSON.parse(this.formattedParams);\n this.record.Params = this.formattedParams;\n await this.record.Save();\n } catch (e) {\n console.error('Invalid JSON in Params field:', e);\n // Could show notification here\n }\n }\n\n async saveMessage() {\n if (!this.EditMode) return;\n \n try {\n // Validate JSON\n JSON.parse(this.formattedMessage);\n this.record.Message = this.formattedMessage;\n await this.record.Save();\n } catch (e) {\n console.error('Invalid JSON in Message field:', e);\n // Could show notification here\n }\n }\n \n async copyToClipboard(text: string) {\n try {\n await navigator.clipboard.writeText(text);\n // Could show a toast notification here\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n }\n}\n","<div class=\"record-form-container action-execution-log-form\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <div class=\"record-form\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-terminal\"></i>\n </div>\n <div class=\"header-info\">\n <h2>Action Execution Log</h2>\n <div class=\"meta-info\">\n @if (action) {\n <span class=\"action-name\">{{ action.Name }}</span>\n }\n <span class=\"log-id\">{{ record.ID }}</span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.ResultCode?.toLowerCase()\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\"></i>\n {{ record.ResultCode || 'UNKNOWN' }}\n </div>\n <div class=\"execution-time\">\n <i class=\"fas fa-clock\"></i>\n {{ formatDuration(getExecutionDuration()) }}\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'short' }}</span>\n </div>\n @if (record.EndedAt) {\n <div class=\"stat\">\n <span class=\"label\">Ended</span>\n <span class=\"value\">{{ record.EndedAt | date:'short' }}</span>\n </div>\n }\n @if (action) {\n <div class=\"stat\">\n <span class=\"label\">Action</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToAction()\">\n {{ action.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n @if (user) {\n <div class=\"stat\">\n <span class=\"label\">User</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToUser()\">\n {{ user.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- Content Area -->\n <div class=\"content-area\">\n <div class=\"accordion-container\">\n <!-- Execution Details -->\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> Execution Details\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Execution ID</label>\n <span class=\"monospace\">{{ record.ID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Action ID</label>\n <span class=\"monospace\">{{ record.ActionID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>User ID</label>\n <span class=\"monospace\">{{ record.UserID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Result Code</label>\n <span class=\"detail-value\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\" [style.color]=\"getResultCodeColor()\"></i>\n <span [style.color]=\"getResultCodeColor()\">{{ record.ResultCode || 'N/A' }}</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Duration</label>\n <span>{{ formatDuration(getExecutionDuration()) }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Retention Period</label>\n <span>{{ record.RetentionPeriod ? record.RetentionPeriod + ' days' : 'Indefinite' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Unified Parameters section -->\n @if (hasAnyParameters) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n <span class=\"param-count-pill\">{{ paramCounts.All }}</span>\n </ng-template>\n <div class=\"params-panel\">\n <!-- Toolbar: filter chips, search, sort, raw toggle -->\n <div class=\"params-toolbar\">\n <div class=\"filter-chips\">\n <button\n type=\"button\"\n class=\"chip\"\n [class.active]=\"typeFilter === 'All'\"\n (click)=\"setTypeFilter('All')\">\n All <span class=\"chip-count\">{{ paramCounts.All }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-input\"\n [class.active]=\"typeFilter === 'Input'\"\n [disabled]=\"paramCounts.Input === 0\"\n (click)=\"setTypeFilter('Input')\">\n <i class=\"fas fa-sign-in-alt\"></i>\n Input <span class=\"chip-count\">{{ paramCounts.Input }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-both\"\n [class.active]=\"typeFilter === 'Both'\"\n [disabled]=\"paramCounts.Both === 0\"\n (click)=\"setTypeFilter('Both')\">\n <i class=\"fas fa-exchange-alt\"></i>\n In/Out <span class=\"chip-count\">{{ paramCounts.Both }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-output\"\n [class.active]=\"typeFilter === 'Output'\"\n [disabled]=\"paramCounts.Output === 0\"\n (click)=\"setTypeFilter('Output')\">\n <i class=\"fas fa-sign-out-alt\"></i>\n Output <span class=\"chip-count\">{{ paramCounts.Output }}</span>\n </button>\n </div>\n\n <div class=\"toolbar-right\">\n <div class=\"search-wrapper\">\n <i class=\"fas fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"mj-input params-search\"\n placeholder=\"Search name or value…\"\n [(ngModel)]=\"searchText\"\n name=\"paramSearch\" />\n @if (searchText) {\n <button type=\"button\" class=\"search-clear\" (click)=\"searchText = ''\" title=\"Clear search\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n\n <div class=\"sort-group\" role=\"group\" aria-label=\"Sort parameters\">\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'type'\"\n (click)=\"toggleSort('type')\"\n title=\"Sort by type\">\n Type\n @if (sortKey === 'type') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-short-wide' : 'fa-arrow-up-wide-short'\"></i>\n }\n </button>\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'name'\"\n (click)=\"toggleSort('name')\"\n title=\"Sort by name\">\n Name\n @if (sortKey === 'name') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-a-z' : 'fa-arrow-up-z-a'\"></i>\n }\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"raw-toggle\"\n [class.active]=\"showRawJson\"\n (click)=\"toggleRawJson()\"\n title=\"Toggle raw JSON view\">\n <i class=\"fas fa-code\"></i>\n Raw\n </button>\n </div>\n </div>\n\n @if (showRawJson) {\n <div class=\"json-viewer raw-json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">Raw JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedParams)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"formattedParams\"\n name=\"formattedParamsRaw\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 360px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <!-- Rich param list -->\n @if (filteredParameters.length === 0) {\n <div class=\"empty-filter\">\n <i class=\"fas fa-filter-circle-xmark\"></i>\n <p>No parameters match the current filter.</p>\n <button type=\"button\" class=\"btn-link\" (click)=\"clearFilters()\">\n Clear filters\n </button>\n </div>\n } @else {\n <ul class=\"params-list\">\n @for (p of filteredParameters; track trackParam($index, p)) {\n <li class=\"param-row\" [attr.data-type]=\"p.Type\">\n <div class=\"param-header\">\n <span class=\"type-badge\" [attr.data-type]=\"p.Type\">\n @if (p.Type === 'Input') {\n <i class=\"fas fa-sign-in-alt\"></i>\n } @else if (p.Type === 'Output') {\n <i class=\"fas fa-sign-out-alt\"></i>\n } @else {\n <i class=\"fas fa-exchange-alt\"></i>\n }\n {{ getTypeLabel(p.Type) }}\n </span>\n <div class=\"param-name-wrap\">\n <span class=\"param-name\">{{ p.Name }}</span>\n <span class=\"value-kind-chip\" [attr.data-kind]=\"p.ValueKind\">\n <i class=\"fas\" [ngClass]=\"getValueKindIcon(p.ValueKind)\"></i>\n {{ p.ValueKind }}\n </span>\n </div>\n <div class=\"param-actions\">\n @if (p.IsExpandable) {\n <button type=\"button\" class=\"btn-icon param-expand\" [class.is-expanded]=\"p.Expanded\" (click)=\"toggleExpanded(p)\" [title]=\"p.Expanded ? 'Collapse' : 'Expand'\">\n <i class=\"fas\" [ngClass]=\"p.Expanded ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n }\n <button type=\"button\" class=\"btn-icon\" (click)=\"copyParamValue(p)\" title=\"Copy value\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n </div>\n <div class=\"param-preview\" [attr.data-kind]=\"p.ValueKind\">{{ p.Preview }}</div>\n @if (p.IsExpandable && p.Expanded) {\n <div class=\"param-expanded\">\n <mj-code-editor\n [(ngModel)]=\"p.FormattedValue\"\n [name]=\"'param-' + p.Name\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 240px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </li>\n }\n </ul>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Output Message -->\n @if (record.Message) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-comment-alt\"></i> Output Message\n </ng-template>\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedMessage)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessage\"\n name=\"formattedMessage\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Empty States for missing data -->\n @if (!record.Params && !record.Message && !hasAnyParameters) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <div class=\"empty-state\">\n <i class=\"fas fa-inbox\"></i>\n <p>No execution data recorded</p>\n </div>\n </mj-accordion-panel>\n }\n </div>\n </div>\n </div>\n</div>"]}
|
|
1
|
+
{"version":3,"file":"action-execution-log-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Actions/action-execution-log-form.component.ts","../../../../src/lib/custom/Actions/action-execution-log-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { MJActionExecutionLogEntity, MJActionEntity, MJUserEntity } from '@memberjunction/core-entities';\nimport { RegisterClass, ParseJSONRecursive, ParseJSONOptions } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { Metadata, CompositeKey } from '@memberjunction/core';\nimport { MJActionExecutionLogFormComponent } from '../../generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component';\n\ntype ParamType = 'Input' | 'Output' | 'Both';\ntype TypeFilter = 'All' | ParamType;\ntype SortKey = 'name' | 'type';\ntype SortDir = 'asc' | 'desc';\n\ninterface ActionParameter {\n Name: string;\n Value: unknown;\n Type: ParamType;\n}\n\ninterface DisplayParameter extends ActionParameter {\n ValueKind: 'string' | 'number' | 'boolean' | 'null' | 'undefined' | 'array' | 'object';\n Preview: string;\n IsExpandable: boolean;\n Expanded: boolean;\n FormattedValue: string;\n}\n\n@RegisterClass(BaseFormComponent, 'MJ: Action Execution Logs')\n@Component({\n standalone: false,\n selector: 'mj-action-execution-log-form',\n templateUrl: './action-execution-log-form.component.html',\n styleUrls: ['./action-execution-log-form.component.css']\n})\nexport class MJActionExecutionLogFormComponentExtended extends MJActionExecutionLogFormComponent implements OnInit {\n public record!: MJActionExecutionLogEntity;\n\n // Related entities\n public action: MJActionEntity | null = null;\n public user: MJUserEntity | null = null;\n\n // Loading states\n public isLoadingAction = false;\n public isLoadingUser = false;\n\n // Formatted JSON fields\n public formattedParams: string = '';\n public formattedMessage: string = '';\n\n // Unified parameter display\n public allParameters: DisplayParameter[] = [];\n public paramCounts: Record<TypeFilter, number> = { All: 0, Input: 0, Output: 0, Both: 0 };\n public hasAnyParameters = false;\n\n // Filter / sort / view state\n public typeFilter: TypeFilter = 'All';\n public searchText: string = '';\n public sortKey: SortKey = 'type';\n public sortDir: SortDir = 'asc';\n public showRawJson: boolean = false;\n\n async ngOnInit() {\n await super.ngOnInit();\n \n if (this.record?.IsSaved) {\n // Load related data\n await Promise.all([\n this.loadAction(),\n this.loadUser()\n ]);\n \n // Format JSON fields\n this.formatJSONFields();\n this.cdr.detectChanges();\n }\n }\n\n private async loadAction() {\n if (!this.record.ActionID) return;\n \n this.isLoadingAction = true;\n try {\n const md = this.ProviderToUse;\n this.action = await md.GetEntityObject<MJActionEntity>('MJ: Actions');\n if (this.action) {\n await this.action.Load(this.record.ActionID);\n }\n } catch (error) {\n console.error('Error loading action:', error);\n } finally {\n this.isLoadingAction = false;\n }\n }\n\n private async loadUser() {\n if (!this.record.UserID) return;\n \n this.isLoadingUser = true;\n try {\n const md = this.ProviderToUse;\n this.user = await md.GetEntityObject<MJUserEntity>('MJ: Users');\n if (this.user) {\n await this.user.Load(this.record.UserID);\n }\n } catch (error) {\n console.error('Error loading user:', error);\n } finally {\n this.isLoadingUser = false;\n }\n }\n\n private formatJSONFields() {\n const parseOptions: ParseJSONOptions = {\n extractInlineJson: true,\n maxDepth: 100,\n debug: false\n };\n\n // Format Params with recursive JSON parsing\n if (this.record.Params) {\n try {\n const parsed = JSON.parse(this.record.Params);\n const recursivelyParsed = ParseJSONRecursive(parsed, parseOptions);\n this.formattedParams = JSON.stringify(recursivelyParsed, null, 2);\n\n if (Array.isArray(recursivelyParsed)) {\n this.buildDisplayParameters(recursivelyParsed as ActionParameter[]);\n }\n } catch (e) {\n this.formattedParams = this.record.Params;\n }\n }\n\n // Format Message field with recursive JSON parsing\n if (this.record.Message) {\n try {\n const parsed = JSON.parse(this.record.Message);\n const recursivelyParsed = ParseJSONRecursive(parsed, parseOptions);\n this.formattedMessage = JSON.stringify(recursivelyParsed, null, 2);\n } catch (e) {\n this.formattedMessage = this.record.Message;\n }\n }\n }\n\n /**\n * Build the unified parameter display list once, so filtering/sorting can\n * operate on a cheap, pre-computed structure.\n */\n private buildDisplayParameters(params: ActionParameter[]) {\n this.paramCounts = { All: 0, Input: 0, Output: 0, Both: 0 };\n this.allParameters = params\n .filter((p) => p && typeof p.Name === 'string')\n .map((p) => {\n const valueKind = this.detectValueKind(p.Value);\n const isExpandable = valueKind === 'array' || valueKind === 'object';\n this.paramCounts.All += 1;\n if (p.Type === 'Input' || p.Type === 'Output' || p.Type === 'Both') {\n this.paramCounts[p.Type] += 1;\n }\n return {\n Name: p.Name,\n Value: p.Value,\n Type: p.Type,\n ValueKind: valueKind,\n Preview: this.buildPreview(p.Value, valueKind),\n IsExpandable: isExpandable,\n Expanded: false,\n FormattedValue: isExpandable ? JSON.stringify(p.Value, null, 2) : ''\n };\n });\n this.hasAnyParameters = this.allParameters.length > 0;\n }\n\n private detectValueKind(value: unknown): DisplayParameter['ValueKind'] {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n if (Array.isArray(value)) return 'array';\n const t = typeof value;\n if (t === 'string' || t === 'number' || t === 'boolean') return t;\n if (t === 'object') return 'object';\n return 'string';\n }\n\n /**\n * Short inline preview for the row header. Objects/arrays get a compact\n * one-liner; expansion reveals the full formatted JSON below.\n */\n private buildPreview(value: unknown, kind: DisplayParameter['ValueKind']): string {\n switch (kind) {\n case 'null': return 'null';\n case 'undefined': return 'undefined';\n case 'boolean': return value ? 'true' : 'false';\n case 'number': return String(value);\n case 'string': {\n const s = value as string;\n return s.length > 160 ? `\"${s.slice(0, 157)}…\"` : `\"${s}\"`;\n }\n case 'array': {\n const arr = value as unknown[];\n if (arr.length === 0) return '[]';\n if (arr.length <= 5 && arr.every((v) => v === null || typeof v !== 'object')) {\n return `[${arr.map((v) => this.buildPreview(v, this.detectValueKind(v))).join(', ')}]`;\n }\n return `Array(${arr.length})`;\n }\n case 'object': {\n const obj = value as Record<string, unknown>;\n const keys = Object.keys(obj);\n if (keys.length === 0) return '{}';\n const head = keys.slice(0, 3).join(', ');\n return keys.length <= 3 ? `{ ${head} }` : `{ ${head}, …+${keys.length - 3} }`;\n }\n }\n }\n\n // --- Filter / sort / view helpers (invoked from template) ----------------\n\n public get filteredParameters(): DisplayParameter[] {\n const needle = this.searchText.trim().toLowerCase();\n let list = this.allParameters;\n if (this.typeFilter !== 'All') {\n list = list.filter((p) => p.Type === this.typeFilter);\n }\n if (needle) {\n list = list.filter(\n (p) =>\n p.Name.toLowerCase().includes(needle) ||\n (p.Preview && p.Preview.toLowerCase().includes(needle))\n );\n }\n const typeOrder: Record<ParamType, number> = { Input: 0, Both: 1, Output: 2 };\n const dirMult = this.sortDir === 'asc' ? 1 : -1;\n return [...list].sort((a, b) => {\n if (this.sortKey === 'name') {\n return dirMult * a.Name.localeCompare(b.Name, undefined, { sensitivity: 'base' });\n }\n const typeCmp = typeOrder[a.Type] - typeOrder[b.Type];\n if (typeCmp !== 0) return dirMult * typeCmp;\n return a.Name.localeCompare(b.Name, undefined, { sensitivity: 'base' });\n });\n }\n\n public setTypeFilter(filter: TypeFilter): void {\n this.typeFilter = filter;\n }\n\n public toggleSort(key: SortKey): void {\n if (this.sortKey === key) {\n this.sortDir = this.sortDir === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortKey = key;\n this.sortDir = 'asc';\n }\n }\n\n public toggleExpanded(param: DisplayParameter): void {\n if (!param.IsExpandable) return;\n param.Expanded = !param.Expanded;\n }\n\n public toggleRawJson(): void {\n this.showRawJson = !this.showRawJson;\n }\n\n public clearFilters(): void {\n this.typeFilter = 'All';\n this.searchText = '';\n }\n\n public trackParam(_index: number, p: DisplayParameter): string {\n return `${p.Type}::${p.Name}`;\n }\n\n public copyParamValue(param: DisplayParameter): void {\n const text = param.IsExpandable\n ? param.FormattedValue\n : this.formatScalarForCopy(param.Value);\n void this.copyToClipboard(text);\n }\n\n private formatScalarForCopy(value: unknown): string {\n if (value === null) return 'null';\n if (value === undefined) return '';\n if (typeof value === 'string') return value;\n return String(value);\n }\n\n /**\n * Returns the icon class for a value kind — rendered to the left of each\n * preview so object/array/scalar rows are visually distinct at a glance.\n */\n public getValueKindIcon(kind: DisplayParameter['ValueKind']): string {\n switch (kind) {\n case 'string': return 'fa-quote-right';\n case 'number': return 'fa-hashtag';\n case 'boolean': return 'fa-toggle-on';\n case 'array': return 'fa-list-ol';\n case 'object': return 'fa-code';\n case 'null': return 'fa-circle-minus';\n case 'undefined': return 'fa-ban';\n }\n }\n\n public getTypeLabel(type: ParamType): string {\n return type === 'Both' ? 'In/Out' : type;\n }\n\n // Navigation\n navigateToEntity(entityName: string, recordId: string | null) {\n if (!recordId) return;\n SharedService.Instance.OpenEntityRecord(entityName, CompositeKey.FromID(recordId));\n }\n\n navigateToAction() {\n if (this.record.ActionID) {\n this.navigateToEntity('MJ: Actions', this.record.ActionID);\n }\n }\n\n navigateToUser() {\n if (this.record.UserID) {\n this.navigateToEntity('MJ: Users', this.record.UserID);\n }\n }\n\n // UI Helpers\n getExecutionDuration(): number {\n if (!this.record.StartedAt || !this.record.EndedAt) return 0;\n return new Date(this.record.EndedAt).getTime() - new Date(this.record.StartedAt).getTime();\n }\n\n formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${(ms / 60000).toFixed(1)}m`;\n return `${(ms / 3600000).toFixed(1)}h`;\n }\n\n getResultCodeColor(): string {\n const code = this.record.ResultCode?.toLowerCase();\n if (code === 'success' || code === 'ok' || code === 'completed' || code === '200') {\n return 'var(--mj-status-success)';\n }\n return 'var(--mj-status-error)';\n }\n\n getResultCodeIcon(): string {\n const code = this.record.ResultCode?.toLowerCase();\n if (code === 'success' || code === 'ok' || code === 'completed' || code === '200') {\n return 'fa-check-circle';\n }\n return 'fa-times-circle';\n }\n\n // Save handlers for JSON fields\n async saveParams() {\n if (!this.EditMode) return;\n \n try {\n // Validate JSON\n JSON.parse(this.formattedParams);\n this.record.Params = this.formattedParams;\n await this.record.Save();\n } catch (e) {\n console.error('Invalid JSON in Params field:', e);\n // Could show notification here\n }\n }\n\n async saveMessage() {\n if (!this.EditMode) return;\n \n try {\n // Validate JSON\n JSON.parse(this.formattedMessage);\n this.record.Message = this.formattedMessage;\n await this.record.Save();\n } catch (e) {\n console.error('Invalid JSON in Message field:', e);\n // Could show notification here\n }\n }\n \n async copyToClipboard(text: string) {\n try {\n await navigator.clipboard.writeText(text);\n // Could show a toast notification here\n } catch (err) {\n console.error('Failed to copy to clipboard:', err);\n }\n }\n}\n","<div class=\"record-form-container action-execution-log-form\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <div class=\"record-form\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <div class=\"icon-wrapper\">\n <i class=\"fas fa-terminal\"></i>\n </div>\n <div class=\"header-info\">\n <h2>Action Execution Log</h2>\n <div class=\"meta-info\">\n @if (action) {\n <span class=\"action-name\">{{ action.Name }}</span>\n }\n <span class=\"log-id\">{{ record.ID }}</span>\n </div>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"status-badge\" [attr.data-status]=\"record.ResultCode?.toLowerCase()\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\"></i>\n {{ record.ResultCode || 'UNKNOWN' }}\n </div>\n <div class=\"execution-time\">\n <i class=\"fas fa-clock\"></i>\n {{ formatDuration(getExecutionDuration()) }}\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat\">\n <span class=\"label\">Started</span>\n <span class=\"value\">{{ record.StartedAt | date:'short' }}</span>\n </div>\n @if (record.EndedAt) {\n <div class=\"stat\">\n <span class=\"label\">Ended</span>\n <span class=\"value\">{{ record.EndedAt | date:'short' }}</span>\n </div>\n }\n @if (action) {\n <div class=\"stat\">\n <span class=\"label\">Action</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToAction()\">\n {{ action.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n @if (user) {\n <div class=\"stat\">\n <span class=\"label\">User</span>\n <span class=\"value\">\n <button class=\"btn-link\" (click)=\"navigateToUser()\">\n {{ user.Name }}\n <i class=\"fas fa-external-link-alt\"></i>\n </button>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- Content Area -->\n <div class=\"content-area\">\n <div class=\"accordion-container\">\n <!-- Execution Details -->\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-info-circle\"></i> Execution Details\n </ng-template>\n <div class=\"details-grid\">\n <div class=\"detail-item\">\n <label>Execution ID</label>\n <span class=\"monospace\">{{ record.ID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Action ID</label>\n <span class=\"monospace\">{{ record.ActionID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>User ID</label>\n <span class=\"monospace\">{{ record.UserID }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Result Code</label>\n <span class=\"detail-value\">\n <i class=\"fas\" [ngClass]=\"getResultCodeIcon()\" [style.color]=\"getResultCodeColor()\"></i>\n <span [style.color]=\"getResultCodeColor()\">{{ record.ResultCode || 'N/A' }}</span>\n </span>\n </div>\n <div class=\"detail-item\">\n <label>Duration</label>\n <span>{{ formatDuration(getExecutionDuration()) }}</span>\n </div>\n <div class=\"detail-item\">\n <label>Retention Period</label>\n <span>{{ record.RetentionPeriod ? record.RetentionPeriod + ' days' : 'Indefinite' }}</span>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Unified Parameters section -->\n @if (hasAnyParameters) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n <span class=\"mj-accordion-badge mj-accordion-badge--right\">{{ paramCounts.All }}</span>\n </ng-template>\n <div class=\"params-panel\">\n <!-- Toolbar: filter chips, search, sort, raw toggle -->\n <div class=\"params-toolbar\">\n <div class=\"filter-chips\">\n <button\n type=\"button\"\n class=\"chip\"\n [class.active]=\"typeFilter === 'All'\"\n (click)=\"setTypeFilter('All')\">\n All <span class=\"chip-count\">{{ paramCounts.All }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-input\"\n [class.active]=\"typeFilter === 'Input'\"\n [disabled]=\"paramCounts.Input === 0\"\n (click)=\"setTypeFilter('Input')\">\n <i class=\"fas fa-sign-in-alt\"></i>\n Input <span class=\"chip-count\">{{ paramCounts.Input }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-both\"\n [class.active]=\"typeFilter === 'Both'\"\n [disabled]=\"paramCounts.Both === 0\"\n (click)=\"setTypeFilter('Both')\">\n <i class=\"fas fa-exchange-alt\"></i>\n In/Out <span class=\"chip-count\">{{ paramCounts.Both }}</span>\n </button>\n <button\n type=\"button\"\n class=\"chip chip-output\"\n [class.active]=\"typeFilter === 'Output'\"\n [disabled]=\"paramCounts.Output === 0\"\n (click)=\"setTypeFilter('Output')\">\n <i class=\"fas fa-sign-out-alt\"></i>\n Output <span class=\"chip-count\">{{ paramCounts.Output }}</span>\n </button>\n </div>\n\n <div class=\"toolbar-right\">\n <div class=\"search-wrapper\">\n <i class=\"fas fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"mj-input params-search\"\n placeholder=\"Search name or value…\"\n [(ngModel)]=\"searchText\"\n name=\"paramSearch\" />\n @if (searchText) {\n <button type=\"button\" class=\"search-clear\" (click)=\"searchText = ''\" title=\"Clear search\">\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n\n <div class=\"sort-group\" role=\"group\" aria-label=\"Sort parameters\">\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'type'\"\n (click)=\"toggleSort('type')\"\n title=\"Sort by type\">\n Type\n @if (sortKey === 'type') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-short-wide' : 'fa-arrow-up-wide-short'\"></i>\n }\n </button>\n <button\n type=\"button\"\n class=\"sort-btn\"\n [class.active]=\"sortKey === 'name'\"\n (click)=\"toggleSort('name')\"\n title=\"Sort by name\">\n Name\n @if (sortKey === 'name') {\n <i class=\"fas\" [ngClass]=\"sortDir === 'asc' ? 'fa-arrow-down-a-z' : 'fa-arrow-up-z-a'\"></i>\n }\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"raw-toggle\"\n [class.active]=\"showRawJson\"\n (click)=\"toggleRawJson()\"\n title=\"Toggle raw JSON view\">\n <i class=\"fas fa-code\"></i>\n Raw\n </button>\n </div>\n </div>\n\n @if (showRawJson) {\n <div class=\"json-viewer raw-json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">Raw JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedParams)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor\n [(ngModel)]=\"formattedParams\"\n name=\"formattedParamsRaw\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 360px; width: 100%;\">\n </mj-code-editor>\n </div>\n } @else {\n <!-- Rich param list -->\n @if (filteredParameters.length === 0) {\n <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n Icon=\"fa-solid fa-filter-circle-xmark\"\n Title=\"No parameters match the current filter.\"\n ActionText=\"Clear filters\"\n ActionIcon=\"fa-solid fa-rotate-left\"\n ActionVariant=\"flat\"\n (Action)=\"clearFilters()\" />\n } @else {\n <ul class=\"params-list\">\n @for (p of filteredParameters; track trackParam($index, p)) {\n <li class=\"param-row\" [attr.data-type]=\"p.Type\">\n <div class=\"param-header\">\n <span class=\"type-badge\" [attr.data-type]=\"p.Type\">\n @if (p.Type === 'Input') {\n <i class=\"fas fa-sign-in-alt\"></i>\n } @else if (p.Type === 'Output') {\n <i class=\"fas fa-sign-out-alt\"></i>\n } @else {\n <i class=\"fas fa-exchange-alt\"></i>\n }\n {{ getTypeLabel(p.Type) }}\n </span>\n <div class=\"param-name-wrap\">\n <span class=\"param-name\">{{ p.Name }}</span>\n <span class=\"value-kind-chip\" [attr.data-kind]=\"p.ValueKind\">\n <i class=\"fas\" [ngClass]=\"getValueKindIcon(p.ValueKind)\"></i>\n {{ p.ValueKind }}\n </span>\n </div>\n <div class=\"param-actions\">\n @if (p.IsExpandable) {\n <button type=\"button\" class=\"btn-icon param-expand\" [class.is-expanded]=\"p.Expanded\" (click)=\"toggleExpanded(p)\" [title]=\"p.Expanded ? 'Collapse' : 'Expand'\">\n <i class=\"fas\" [ngClass]=\"p.Expanded ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n }\n <button type=\"button\" class=\"btn-icon\" (click)=\"copyParamValue(p)\" title=\"Copy value\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n </div>\n <div class=\"param-preview\" [attr.data-kind]=\"p.ValueKind\">{{ p.Preview }}</div>\n @if (p.IsExpandable && p.Expanded) {\n <div class=\"param-expanded\">\n <mj-code-editor\n [(ngModel)]=\"p.FormattedValue\"\n [name]=\"'param-' + p.Name\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 240px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </li>\n }\n </ul>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Output Message -->\n @if (record.Message) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-comment-alt\"></i> Output Message\n </ng-template>\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <span class=\"json-label\">JSON</span>\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"copyToClipboard(formattedMessage)\">\n <i class=\"fas fa-copy\"></i>\n </button>\n </div>\n <mj-code-editor \n [(ngModel)]=\"formattedMessage\"\n name=\"formattedMessage\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Empty States for missing data -->\n @if (!record.Params && !record.Message && !hasAnyParameters) {\n <mj-accordion-panel [Expanded]=\"true\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-database\"></i> Execution Data\n </ng-template>\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-inbox\"\n Title=\"No execution data recorded\" />\n </mj-accordion-panel>\n }\n </div>\n </div>\n </div>\n</div>"]}
|