Steveorevo / node-maker

A set of subflows that can be used to quickly create a new Node-RED node, its property panels, and initial behavior.
GNU Lesser General Public License v2.1
21 stars 4 forks source link

Hidden fields (PR disguised as an issue) #7

Open lgrkvst opened 1 year ago

lgrkvst commented 1 year ago

I wanted to create a PR for hidden fields, but PR'ing on a 200kb json is hard on whoever has to compare and merge.

One idea would be to divide this repo into individual json's for each field and subflow, and have a simple build.js script assemble the final json and place it in dist/ which would be our new goto.

In the meantime, here's an isolated subflow for hidden fields:

[
    {
        "id": "614e7fb59f287520",
        "type": "subflow",
        "name": "hidden ",
        "info": "",
        "category": "node maker",
        "in": [
            {
                "x": 50,
                "y": 30,
                "wires": [
                    {
                        "id": "d75df3167eea9a9b"
                    }
                ]
            }
        ],
        "out": [
            {
                "x": 360,
                "y": 240,
                "wires": [
                    {
                        "id": "5f7c79b770c5e406",
                        "port": 0
                    }
                ]
            }
        ],
        "env": [
            {
                "name": "field_name",
                "type": "str",
                "value": "",
                "ui": {
                    "label": {
                        "en-US": "Field Name"
                    },
                    "type": "input",
                    "opts": {
                        "types": [
                            "str"
                        ]
                    }
                }
            },
            {
                "name": "field_default",
                "type": "str",
                "value": "",
                "ui": {
                    "label": {
                        "en-US": "Default"
                    },
                    "type": "input",
                    "opts": {
                        "types": [
                            "str"
                        ]
                    }
                }
            }
        ],
        "meta": {},
        "color": "#DDAA99",
        "icon": "node-red/hash.svg"
    },
    {
        "id": "d75df3167eea9a9b",
        "type": "function",
        "z": "614e7fb59f287520",
        "name": "function 41",
        "func": "msg.field_name = env.get('field_name');\nmsg.field_label = env.get('field_label');\nmsg.field_default = env.get('field_default');\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 190,
        "y": 80,
        "wires": [
            [
                "ce1349d2b09c5ba0"
            ]
        ]
    },
    {
        "id": "ce1349d2b09c5ba0",
        "type": "template",
        "z": "614e7fb59f287520",
        "name": "",
        "field": "payload",
        "fieldType": "msg",
        "format": "html",
        "syntax": "mustache",
        "template": "    <input type=\"hidden\" id=\"node-input-{{field_name}}\" name=\"node-input-{{field_name}}\"/>",
        "output": "str",
        "x": 190,
        "y": 140,
        "wires": [
            [
                "5f7c79b770c5e406"
            ]
        ]
    },
    {
        "id": "5f7c79b770c5e406",
        "type": "function",
        "z": "614e7fb59f287520",
        "name": "function 42",
        "func": "msg.edit_dialog.push(msg.payload);\nmsg.defaults.push(msg.field_name + ': {value:\"' + msg.field_default.toString() + '\"}');\n\nif (msg.hasOwnProperty('rgroup_name')) {\n    msg.rgroup_details.push({\n        field_name: msg.field_name,\n        field_default_type: '',\n        field_types: ''\n    });\n}\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 190,
        "y": 200,
        "wires": [
            []
        ]
    },
    {
        "id": "c609db8aed86d3fb",
        "type": "subflow:614e7fb59f287520",
        "z": "82e9c64fb447d01a",
        "name": "",
        "env": [
            {
                "name": "field_name",
                "value": "hidden_field",
                "type": "str"
            },
            {
                "name": "field_default",
                "value": "hidden_default_value",
                "type": "str"
            }
        ],
        "x": 1020,
        "y": 40,
        "wires": [
            []
        ]
    }
]
Steveorevo commented 1 year ago

It’s a holiday here in the states; I’ll definitely take a look when I get back. There is a slightly related project to address the lengthy flow files and code editing/viewing/differences; also allows you to use external code editors: flow2src. Created using the initial version of Node Maker too.

I have yet to check in the final version, but should be releasing a 1.0 shortly.

Steveorevo commented 1 year ago

Hi Christian, hidden fields sounds like a good idea. I've updated the main branch to include a 'src' folder. This folder was generated via https://github.com/steveorevo/node-red-flow2src. This should make it a lot easier to see changes and additions to the project.

I'll write up directions on how to better contribute to node-maker, using Node-RED's project feature and flow2src; the directions will be in the README.md file.