Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a7d65c4
implement quick create
Edwardvaneechoud Aug 29, 2025
05300d5
Adding a fetch now in the backend and frontend
Edwardvaneechoud Aug 30, 2025
3bccaf8
handling fetch data
Edwardvaneechoud Aug 31, 2025
bd8de8b
Adding flow execution to specific page
Edwardvaneechoud Aug 31, 2025
b1e7d1d
Fix test
Edwardvaneechoud Aug 31, 2025
7625464
fixing the layout
Edwardvaneechoud Sep 2, 2025
6cd415f
refactor of how nodes are shown
Edwardvaneechoud Sep 4, 2025
15a7065
Implementing dynamic imports
Edwardvaneechoud Sep 4, 2025
666392a
Adding one entry point for the node button
Edwardvaneechoud Sep 5, 2025
f072ae8
Ensure the status is shown in the button
Edwardvaneechoud Sep 5, 2025
00b7798
Changing the filenames to TitleCase
Edwardvaneechoud Sep 5, 2025
6082d15
Changing the filenames to TitleCase and removing unused nodes
Edwardvaneechoud Sep 5, 2025
f92576b
Removing redundant calls to nodestore
Edwardvaneechoud Sep 5, 2025
a928a77
Changing cap
Edwardvaneechoud Sep 5, 2025
7d85561
Big fix in
Edwardvaneechoud Sep 5, 2025
7454a87
Delete temp.py
Edwardvaneechoud Sep 5, 2025
f70c811
stashing changes
Edwardvaneechoud Sep 5, 2025
3631c6c
Removing prints
Edwardvaneechoud Sep 5, 2025
a6ab4c4
Merge branch 'feature/general-ui-improvements' of github.com:Edwardva…
Edwardvaneechoud Sep 5, 2025
a4d12e1
fixing empty statement
Edwardvaneechoud Sep 5, 2025
f2f48f7
Fixing eslint issue
Edwardvaneechoud Sep 5, 2025
5b27f3d
Remove incorrectly cased duplicate files from Git tracking
Edwardvaneechoud Sep 5, 2025
49e1543
removing flaky test
Edwardvaneechoud Sep 5, 2025
580018f
Bumping version
Edwardvaneechoud Sep 6, 2025
b569ed7
small textual improvement
Edwardvaneechoud Sep 6, 2025
39eb399
Ensuring that the quick create handles no rights to write gracefully
Edwardvaneechoud Sep 6, 2025
d02aee5
Ensure the get node data does not set the node id in the node store
Edwardvaneechoud Sep 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion flowfile/flowfile/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- flowfile_worker: Computation engine
"""

__version__ = "0.3.9"
__version__ = "0.3.10"

import os
import logging
Expand Down
1 change: 0 additions & 1 deletion flowfile/flowfile/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,6 @@ def open_graph_in_editor(flow_graph: FlowGraph, storage_location: Optional[str]
return False

flow_id = import_flow_to_editor(flow_file_path, auth_token)
print(flow_id, "flow_id", flow_in_single_mode, automatically_open_browser)
if flow_id is not None:
if flow_in_single_mode and automatically_open_browser:
_open_flow_in_browser(flow_id)
Expand Down
347 changes: 303 additions & 44 deletions flowfile_core/flowfile_core/configs/node_store/nodes.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,310 @@
from typing import List
from flowfile_core.schemas.schemas import NodeTemplate, NodeDefault, TransformTypeLiteral, NodeTypeLiteral

from typing import List
from flowfile_core.schemas.schemas import NodeTemplate, NodeDefault, TransformTypeLiteral, NodeTypeLiteral

nodes_list: List[NodeTemplate] = [
NodeTemplate(name='External source', item='external_source', input=0, output=1,
image='external_source.png', node_group='input', prod_ready=False),
NodeTemplate(name='Manual input', item='manual_input', input=0, output=1,
image='manual_input.png', node_group='input'),
NodeTemplate(name='Read data', item='read', input=0, output=1, image='input_data.png', node_group='input'),
NodeTemplate(name='Join', color='#49494970', item='join', input=2, output=1, image='join.png',
node_group='combine'),
NodeTemplate(name='Formula', color='blue', item='formula', input=1, output=1, image='formula.png',
node_group='transform'),
# NodeTemplate(name='Sql editor', color='blue', item='sql_editor', input=1, output=1, image='sql.png'),
NodeTemplate(name='Write data', item='output', input=1, output=0, image='output.png', node_group='output'),
NodeTemplate(name='Select data', item='select', input=1, output=1, image='select.png', node_group='transform'),
NodeTemplate(name='Filter data', item='filter', input=1, output=1, image='filter.png', node_group='transform'),
NodeTemplate(name='Group by', item='group_by', input=1, output=1, image='group_by.png', node_group='aggregate'),
NodeTemplate(name='Fuzzy match', item='fuzzy_match', input=2, output=1, image='fuzzy_match.png',
node_group='combine'),
NodeTemplate(name='Sort data', item='sort', input=1, output=1, image='sort.png', node_group='transform'),
NodeTemplate(name='Add record Id', item='record_id', input=1, output=1, image='record_id.png',
node_group='transform'),
NodeTemplate(name='Take Sample', item='sample', input=1, output=1, image='sample.png', node_group='transform'),
NodeTemplate(name='Explore data', item='explore_data', input=1, output=0,
image='explore_data.png', node_group='output'),
NodeTemplate(name='Pivot data', item='pivot', input=1, output=1, image='pivot.png', node_group='aggregate'),
NodeTemplate(name='Unpivot data', item='unpivot', input=1, output=1, image='unpivot.png', node_group='aggregate'),
NodeTemplate(name='Union data', item='union', input=10, output=1, image='union.png', multi=True,
node_group='combine'),
NodeTemplate(name='Drop duplicates', item='unique', input=1, output=1, image='unique.png', node_group='transform'),
NodeTemplate(name='Graph solver', item='graph_solver', input=1, output=1, image='graph_solver.png',
node_group='combine'),
NodeTemplate(name='Count records', item='record_count', input=1, output=1, image='record_count.png',
node_group='aggregate'),
NodeTemplate(name='Cross join', item='cross_join', input=2, output=1, image='cross_join.png', node_group='combine'),
NodeTemplate(name='Text to rows', item='text_to_rows', input=1, output=1, image='text_to_rows.png',
node_group='transform'),
NodeTemplate(name="Polars code", item="polars_code", input=10, output=1, image='polars_code.png',
node_group='transform', multi=True, can_be_start=True),
NodeTemplate(name="Read from Database", item="database_reader", input=0, output=1, image='database_reader.svg',
node_group='input'),
NodeTemplate(name='Write to Database', item='database_writer', input=1, output=0, image='database_writer.svg',
node_group='output'),
NodeTemplate(name='Read from cloud provider', item='cloud_storage_reader', input=0, output=1,
image='cloud_storage_reader.png', node_group='input'),
NodeTemplate(name='Write to cloud provider', item='cloud_storage_writer', input=1, output=0,
image='cloud_storage_writer.png', node_group='output'),
NodeTemplate(
name='External source',
item='external_source',
input=0,
output=1,
image='external_source.png',
node_group='input',
prod_ready=False,
drawer_title="External Source",
drawer_intro="Connect to external data sources and APIs"
),

NodeTemplate(
name='Manual input',
item='manual_input',
input=0,
output=1,
image='manual_input.png',
node_group='input',
drawer_title="Manual Input",
drawer_intro="Create data directly"
),

NodeTemplate(
name='Read data',
item='read',
input=0,
output=1,
image='input_data.png',
node_group='input',
drawer_title="Read Data",
drawer_intro="Load data from CSV, Excel, or Parquet files"
),

NodeTemplate(
name='Join',
item='join',
input=2,
output=1,
image='join.png',
node_group='combine',
drawer_title="Join Datasets",
drawer_intro="Merge two datasets based on matching column values"
),

NodeTemplate(
name='Formula',
item='formula',
input=1,
output=1,
image='formula.png',
node_group='transform',
drawer_title="Formula Editor",
drawer_intro="Create or modify columns using custom expressions"
),

NodeTemplate(
name='Write data',
item='output',
input=1,
output=0,
image='output.png',
node_group='output',
drawer_title="Write Data",
drawer_intro="Save your data as CSV, Excel, or Parquet files"
),

NodeTemplate(
name='Select data',
item='select',
input=1,
output=1,
image='select.png',
node_group='transform',
drawer_title="Select Columns",
drawer_intro="Choose, rename, and reorder columns to keep"
),

NodeTemplate(
name='Filter data',
item='filter',
input=1,
output=1,
image='filter.png',
node_group='transform',
drawer_title="Filter Rows",
drawer_intro="Keep only rows that match your conditions"
),

NodeTemplate(
name='Group by',
item='group_by',
input=1,
output=1,
image='group_by.png',
node_group='aggregate',
drawer_title="Group By",
drawer_intro="Aggregate data by grouping and calculating statistics"
),

NodeTemplate(
name='Fuzzy match',
item='fuzzy_match',
input=2,
output=1,
image='fuzzy_match.png',
node_group='combine',
drawer_title="Fuzzy Match",
drawer_intro="Join datasets based on similar values instead of exact matches"
),

NodeTemplate(
name='Sort data',
item='sort',
input=1,
output=1,
image='sort.png',
node_group='transform',
drawer_title="Sort Data",
drawer_intro="Order your data by one or more columns"
),

NodeTemplate(
name='Add record Id',
item='record_id',
input=1,
output=1,
image='record_id.png',
node_group='transform',
drawer_title="Add Record ID",
drawer_intro="Generate unique identifiers for each row"
),

NodeTemplate(
name='Take Sample',
item='sample',
input=1,
output=1,
image='sample.png',
node_group='transform',
drawer_title="Take Sample",
drawer_intro="Work with a subset of your data"
),

NodeTemplate(
name='Explore data',
item='explore_data',
input=1,
output=0,
image='explore_data.png',
node_group='output',
drawer_title="Explore Data",
drawer_intro="Interactive data exploration and analysis"
),

NodeTemplate(
name='Pivot data',
item='pivot',
input=1,
output=1,
image='pivot.png',
node_group='aggregate',
drawer_title="Pivot Data",
drawer_intro="Convert data from long format to wide format"
),

NodeTemplate(
name='Unpivot data',
item='unpivot',
input=1,
output=1,
image='unpivot.png',
node_group='aggregate',
drawer_title="Unpivot Data",
drawer_intro="Transform data from wide format to long format"
),

NodeTemplate(
name='Union data',
item='union',
input=10,
output=1,
image='union.png',
multi=True,
node_group='combine',
drawer_title="Union Data",
drawer_intro="Stack multiple datasets by combining rows"
),

NodeTemplate(
name='Drop duplicates',
item='unique',
input=1,
output=1,
image='unique.png',
node_group='transform',
drawer_title="Drop Duplicates",
drawer_intro="Remove duplicate rows based on selected columns"
),

NodeTemplate(
name='Graph solver',
item='graph_solver',
input=1,
output=1,
image='graph_solver.png',
node_group='combine',
drawer_title="Graph Solver",
drawer_intro="Group related records in graph-structured data"
),

NodeTemplate(
name='Count records',
item='record_count',
input=1,
output=1,
image='record_count.png',
node_group='aggregate',
drawer_title="Count Records",
drawer_intro="Calculate the total number of rows"
),

NodeTemplate(
name='Cross join',
item='cross_join',
input=2,
output=1,
image='cross_join.png',
node_group='combine',
drawer_title="Cross Join",
drawer_intro="Create all possible combinations between two datasets"
),

NodeTemplate(
name='Text to rows',
item='text_to_rows',
input=1,
output=1,
image='text_to_rows.png',
node_group='transform',
drawer_title="Text to Rows",
drawer_intro="Split text into multiple rows based on a delimiter"
),

NodeTemplate(
name="Polars code",
item="polars_code",
input=10,
output=1,
image='polars_code.png',
node_group='transform',
multi=True,
can_be_start=True,
drawer_title="Polars Code",
drawer_intro="Write custom Polars DataFrame transformations"
),

NodeTemplate(
name="Read from Database",
item="database_reader",
input=0,
output=1,
image='database_reader.svg',
node_group='input',
drawer_title="Database Reader",
drawer_intro="Load data from database tables or queries"
),

NodeTemplate(
name='Write to Database',
item='database_writer',
input=1,
output=0,
image='database_writer.svg',
node_group='output',
drawer_title="Database Writer",
drawer_intro="Save data to database tables"
),

NodeTemplate(
name='Read from cloud provider',
item='cloud_storage_reader',
input=0,
output=1,
image='cloud_storage_reader.png',
node_group='input',
drawer_title="Cloud Storage Reader",
drawer_intro="Read data from AWS S3 and other cloud storage"
),

NodeTemplate(
name='Write to cloud provider',
item='cloud_storage_writer',
input=1,
output=0,
image='cloud_storage_writer.png',
node_group='output',
drawer_title="Cloud Storage Writer",
drawer_intro="Save data to AWS S3 and other cloud storage"
),
]

nodes_list.sort(key=lambda x: x.name)
Expand Down
Loading
Loading