Add a sticky note node under tools

This commit is contained in:
Ilango 2024-01-11 14:37:10 +05:30
parent 6e2bf91c21
commit d70c097341
3 changed files with 110 additions and 57 deletions

View File

@ -0,0 +1,42 @@
import { INode, INodeOutputsValue, INodeParams } from '../../../src/Interface'
class StickyNote implements INode {
label: string
name: string
version: number
description: string
type: string
icon: string
category: string
baseClasses: string[]
inputs: INodeParams[]
disableOutput: boolean
constructor() {
this.label = 'Sticky Note'
this.name = 'stickyNote'
this.version = 1.0
this.type = 'StickyNote'
this.icon = 'stickyNote.svg'
this.category = 'Tools'
this.description = 'Add a note about a node'
this.inputs = [
{
label: 'Note',
name: 'note',
type: 'string',
rows: 4,
placeholder: 'Input your notes',
optional: true
}
]
this.disableOutput = true
this.baseClasses = [this.type]
}
async init(): Promise<any> {
return new StickyNote()
}
}
module.exports = { nodeClass: StickyNote }

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z"/>
<path d="M15 3v6h6"/>
</svg>

After

Width:  |  Height:  |  Size: 305 B

View File

@ -54,6 +54,7 @@ const CanvasNode = ({ data }) => {
const [infoDialogProps, setInfoDialogProps] = useState({}) const [infoDialogProps, setInfoDialogProps] = useState({})
const [warningMessage, setWarningMessage] = useState('') const [warningMessage, setWarningMessage] = useState('')
const [open, setOpen] = useState(false) const [open, setOpen] = useState(false)
const isNote = data.type === 'StickyNote'
const handleClose = () => { const handleClose = () => {
setOpen(false) setOpen(false)
@ -150,6 +151,7 @@ const CanvasNode = ({ data }) => {
placement='right-start' placement='right-start'
> >
<Box> <Box>
{!isNote && (
<div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}> <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>
<Box style={{ width: 50, marginRight: 10, padding: 5 }}> <Box style={{ width: 50, marginRight: 10, padding: 5 }}>
<div <div
@ -190,7 +192,8 @@ const CanvasNode = ({ data }) => {
</> </>
)} )}
</div> </div>
{(data.inputAnchors.length > 0 || data.inputParams.length > 0) && ( )}
{(data.inputAnchors.length > 0 || data.inputParams.length > 0) && !isNote && (
<> <>
<Divider /> <Divider />
<Box sx={{ background: theme.palette.asyncSelect.main, p: 1 }}> <Box sx={{ background: theme.palette.asyncSelect.main, p: 1 }}>
@ -230,6 +233,8 @@ const CanvasNode = ({ data }) => {
</Button> </Button>
</div> </div>
)} )}
{!isNote && (
<>
<Divider /> <Divider />
<Box sx={{ background: theme.palette.asyncSelect.main, p: 1 }}> <Box sx={{ background: theme.palette.asyncSelect.main, p: 1 }}>
<Typography <Typography
@ -242,10 +247,11 @@ const CanvasNode = ({ data }) => {
</Typography> </Typography>
</Box> </Box>
<Divider /> <Divider />
{data.outputAnchors.map((outputAnchor, index) => ( {data.outputAnchors.map((outputAnchor, index) => (
<NodeOutputHandler key={index} outputAnchor={outputAnchor} data={data} /> <NodeOutputHandler key={index} outputAnchor={outputAnchor} data={data} />
))} ))}
</>
)}
</Box> </Box>
</LightTooltip> </LightTooltip>
</CardWrapper> </CardWrapper>