Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Features #271

Draft
wants to merge 73 commits into
base: master
Choose a base branch
from
Draft

Features #271

wants to merge 73 commits into from

Conversation

atlasan
Copy link
Contributor

@atlasan atlasan commented Nov 12, 2021

I'm pushing new features.
Let's check 'em before merging.

- check both source and destination slot type to assign link type
- changed default slot colours to a more general whithish
- added couple types to LGraphCanvas.link_type_colors, mainly to debug and check the current colours implementation behaviours
- added showConnectionMenu method, when dragging a connection from an out slot open the menu to add a new node and connect it!
- changed pasting behaviour: nodes will be placed at current mouse position respecting distances (top-left positions are calculated and used)
- new settings default_connection_color_byType and default_connection_color_byTypeOff to set default type-based colours for slots
- fix auto connection on placing a node inside a link: skip checking types! connect method will do it for you
- fix link in index.html
- fix function and type in string/toString node
- new node logic/If
- fix boolConst: enable serialization
- use names for slots.. why not? it helps getting the slot back
- provide reaaaly simple nodes.. why not: logic AND, OR, NOT
- close on mouseleave, on ESC, check for modified
- save on enter
- unify behaviours..
- proposed method for options_default
- many mods to allow this:
- create a node for each type while registering to get all the addSlot (input and output)
- keep track of every slot type while adding
- add selectboxes in the search widget
- refresh list on change

- now I can: drag a link, release while holding shift, I got the list filtered by that slot type! select a node, it will be placed and linked!
- include sillyclient from local repo
- ws server has not url by default
- considering 0 as default value for general slot data type (or "*" could eventually be good ?)
- new methods: connectByType, find[Input/Output]SlotByType
- fix for interface/widget EOL (\r\n)
- couple refactoring
- still need some fix and improvement
- improvement when has to auto select a slot: look for type
- still need some (eg. highlights and hover)
- look for the first free slot by type
- if none, connect to first good (replace connection if going to output, connect multiple if going to input)
- to the future: have a check on slot usage and carefoul with add/remove slot operations
- special attention to selectboxes inside dialog, trick
- logic/AND and logic/OR accepts multi inputs
- copied behaviour frmo events/timer to color the topleft icon to all nodes: lighter when active, blink on action
- new nodes: compare bool, generic compare (object, string, bool, number)
- populate node types array instead of static
- close node panel with ESC
- fix code type widget and related css
- Node panel mods: title, mode, color (missing shape and better design)
- add colors textual array, wrote look for color (make function or refactor)
atlasan added 18 commits January 2, 2021 15:07
- being events, it is strongly reccomanded to use them sequentually, one by one
- bit of cleaning
- allow disconnect input links
- fix for beforeChange, afterChange
- fix for optionally removable onExecuted slot
- name the action
- ensure every node execute it only once
- prevent MultiOutputForEvents
- removed default previous tries: ensureNodeSingleAction, preventAncestorRecalculation
- merge with master multiline text widget
- fix node resize: call compute when adding
- fix in-nodes parameters to action/execute for ancestors
what changed? just checking new workstation
getting up to date with implementations
- use a default, "NODE_MIN_SIZE", instead of hard coded
- save original size, "size_basic"
- check for canvas options "free_resize" to allow resizing  under
calculated size (node.computeSize())
- when clearing (and creating) a graph, apply the default configs
- config is already used and serialized
- currently "align_to_grid" and "links_ontop" are used
- align_to_grid has been set to true, it's nice
- history, (cntrlZ,cntrlY)
- replaced "version++" with new "onGraphChanged" method
- doProcessChange, common option to tell a method it should push his
action in history (don't do it when that action is a subaction of
another)
methods
- actionHistoryForward
- actionHistoryBack
- actionHistoryLoad
Search close

ON_REQUEST and ALWAYS nodes will be executed when needed by an Action
being called on a node on which an input depends on

- LG.refreshAncestorsOnTriggers property
- LG.refreshAncestorsOnActions property
- node.refreshAncestors method updated
- graph.node_ancestorsCalculated array with flags by node

- NodeTooltip
- Search close button (useful and must have for mobile)
- enable CntrlZ
- enable Ancestors execution
@atlasan
Copy link
Contributor Author

atlasan commented Nov 16, 2021

This is it.
I have to double check few things and eventually clean and optimize.

I'm proud of the Ancestors way: one could have a graph with the default node mode ON_REQUEST, every node is executed only when needed, being events what triggers the ancestors execution.
The ON_REQUEST can be seamlessly mixed with the others modes, but only ancestors with that and ALWAYS mode will be updated (the others will continue to follow the old behaviours).
This has been tested with the current nodes and seems working pretty good.

History is working quite good, some graph changes has to be verified (may save extra times or save before-after the actual action..). Anyway a perfect solution would consider which action and revert it, instead of saving the whole graph every time.

@ademola-lou
Copy link

Is there a plan to add a drop down option widget?

@atlasan
Copy link
Contributor Author

atlasan commented Nov 18, 2021

Hi @waverider404. Not by me for now, but sure it would be useful. Do you have a coded solution?

@jagenjo
Copy link
Owner

jagenjo commented Nov 18, 2021

@waverider404 there is already a dropdown widget called combo, when clicked displays all posible options in a context menu

- defaults
- node tooltip fixes
- hide onTriggered and onExecuted slots
@ademola-lou
Copy link

Oh that’s exactly what I needed thanks very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants