2021-04-24 14:14:06 -07:00
import { ITriggerFunctions } from 'n8n-core' ;
import {
INodeType ,
INodeTypeDescription ,
ITriggerResponse ,
} from 'n8n-workflow' ;
type eventType = 'Instance started' | undefined ;
export class N8nTrigger implements INodeType {
description : INodeTypeDescription = {
displayName : 'n8n Trigger' ,
name : 'n8nTrigger' ,
icon : 'file:n8nTrigger.svg' ,
group : [ 'trigger' ] ,
version : 1 ,
description : 'Handle events from your n8n instance' ,
:sparkles: Improve Waiting Webhook call state in WF Canvas (#2430)
* N8N-2586 Improve Waiting Webhook call state in WF Canvas
* N8N-2586 Added watcher for showing Webhook's Node Tooltip on execution
* N8N-2586 Show helping tooltip for trigger node if wokrflow is running, it is a trigger node, if it is only one trigger node in WF
* N8N-2586 Rework/Move logic to computed property, Created getter for ActveTriggerNodesInWokrflow, Add style to trigger node's tooltip, remove comments
* N8N-2586 Added EventTriggerDescription prop in INodeTypeDescription Interface, Updated Logic for TriggerNode Tooltip based on the new prop
* N8N-2586 Add new use cases/watcher to show Trigger Nodes Tooltip / If has issues, if paused, if wokrlfow is running, Refactor Getter
* N8N-2586 Added z-index to tooltip, Added new Scenario for Tooltip if it is Draged&Droped on the WF
* N8N-2586 Refactor computed property for draged nodes
* N8N-2586 Fixed Conflicts
* N8N-2586 Fixed Tooltip
* N8N-2586 Dont show tooltip on core trigger nodes that execute automatically
* N8N-2586 Fixed Webhook tooltip when adding/deleting canvas during WF execution
* N8N-2586 Updated Logic, Simplify the code
* N8N-2586 Simplify Code
* N8N-2586 Added check for nodetype
* update dragging to use local state
* N8N-2586 Added eventTriggerDescription to Interval Node
* add comment, use new getter
* update to always check
Co-authored-by: Mutasem <mutdmour@gmail.com>
2021-11-25 14:33:41 -08:00
eventTriggerDescription : '' ,
2021-04-24 14:14:06 -07:00
defaults : {
name : 'n8n Trigger' ,
} ,
inputs : [ ] ,
outputs : [ 'main' ] ,
properties : [
{
displayName : 'Events' ,
name : 'events' ,
type : 'multiOptions' ,
required : true ,
default : [ ] ,
2021-11-25 09:10:06 -08:00
description : 'Specifies under which conditions an execution should happen: <b>Instance started</b>: Triggers when this n8n instance is started or re-started' ,
2021-04-24 14:14:06 -07:00
options : [
{
name : 'Instance started' ,
value : 'init' ,
description : 'Triggers when this n8n instance is started or re-started' ,
} ,
] ,
} ,
] ,
} ;
async trigger ( this : ITriggerFunctions ) : Promise < ITriggerResponse > {
const events = this . getNodeParameter ( 'events' , [ ] ) as string [ ] ;
const activationMode = this . getActivationMode ( ) ;
if ( events . includes ( activationMode ) ) {
let event : eventType ;
if ( activationMode === 'init' ) {
event = 'Instance started' ;
}
this . emit ( [
this . helpers . returnJsonArray ( [
{ event , timestamp : ( new Date ( ) ) . toISOString ( ) , workflow_id : this.getWorkflow ( ) . id } ,
] ) ,
] ) ;
}
const self = this ;
async function manualTriggerFunction() {
self . emit ( [ self . helpers . returnJsonArray ( [ { event : 'Manual execution' , timestamp : ( new Date ( ) ) . toISOString ( ) , workflow_id : self.getWorkflow ( ) . id } ] ) ] ) ;
}
return {
manualTriggerFunction ,
} ;
}
}