Hi, yes here it is:
[{"id":"44544537.178a5c","type":"ui_dropdown","z":"53541a30.e1abb4","name":"Bromine Reading","label":"","tooltip":"","place":"Bromine","group":"3ac4cc84.a53204","order":1,"width":"3","height":"1","passthru":true,"options":[{"label":"0 (Low)","value":0,"type":"num"},{"label":"1 (Low)","value":1,"type":"num"},{"label":"2 (OK)","value":2,"type":"num"},{"label":"5 (OK)","value":5,"type":"num"},{"label":"10 (High)","value":10,"type":"num"},{"label":"20 (Very High)","value":20,"type":"num"}],"payload":"","topic":"","x":630,"y":1060,"wires":[["4b7f4861.0a1048"]]},{"id":"6e89ccb3.a15a24","type":"ui_dropdown","z":"53541a30.e1abb4","name":"pH Reading","label":"","tooltip":"","place":"pH","group":"3ac4cc84.a53204","order":2,"width":"3","height":"1","passthru":true,"options":[{"label":"6.2 (Low / Acidic)","value":6.2,"type":"num"},{"label":"6.8 (Low / Acidic)","value":6.8,"type":"num"},{"label":"7.2 (OK)","value":7.2,"type":"num"},{"label":"7.6 (OK)","value":7.6,"type":"num"},{"label":"7.8 (High / Alkaline)","value":7.8,"type":"num"},{"label":"8.4 (Very High / Alkaline)","value":8.4,"type":"num"}],"payload":"","topic":"","x":610,"y":1100,"wires":[["ef5f3d93.a9a16"]]},{"id":"c87a87c5.85bbd8","type":"ui_dropdown","z":"53541a30.e1abb4","name":"Alkalinity Reading","label":"","tooltip":"","place":"Alkalinity","group":"3ac4cc84.a53204","order":3,"width":"3","height":"1","passthru":true,"options":[{"label":"0 (Low)","value":0,"type":"num"},{"label":"40 (Low)","value":40,"type":"num"},{"label":"80 (OK)","value":80,"type":"num"},{"label":"120 (OK)","value":120,"type":"num"},{"label":"180 (High)","value":180,"type":"num"},{"label":"240 (High)","value":240,"type":"num"}],"payload":"","topic":"","x":630,"y":1140,"wires":[["c1abdc0.7e57a28"]]},{"id":"190e2d80.e15c53","type":"ui_button","z":"53541a30.e1abb4","name":"","group":"3ac4cc84.a53204","order":6,"width":"3","height":"1","passthru":false,"label":"Submit","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":100,"y":1220,"wires":[["1e02e39d.4c1a2c"]]},{"id":"4b7f4861.0a1048","type":"change","z":"53541a30.e1abb4","name":"","rules":[{"t":"set","p":"tub.bromine","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":1060,"wires":[[]]},{"id":"ef5f3d93.a9a16","type":"change","z":"53541a30.e1abb4","name":"","rules":[{"t":"set","p":"tub.ph","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1100,"wires":[[]]},{"id":"c1abdc0.7e57a28","type":"change","z":"53541a30.e1abb4","name":"","rules":[{"t":"set","p":"tub.alkalinity","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":1140,"wires":[[]]},{"id":"1e02e39d.4c1a2c","type":"function","z":"53541a30.e1abb4","name":"New hot tub reading","func":"// Save new hot tub reading entered in Dashboard to global context\n// Includes form validation\n// and supports clearing the form when done correctly\n\n// check form was filled in properly\nif (typeof flow.get(\"tub\") == 'undefined') {\n msg.payload = \"You didn't enter anything\"\n msg.error = true\n return [msg, null]\n}\n\n// assume tub object exists (some part of form was filled)\nvar newTubReading = flow.get(\"tub\")\n\n// if form not complete\nif (typeof newTubReading.bromine == 'undefined' ||\n newTubReading.bromine === \"\" ||\n typeof newTubReading.ph == 'undefined' ||\n newTubReading.ph === \"\" ||\n typeof newTubReading.alkalinity == 'undefined' ||\n newTubReading.alkalinity === \"\") {\n msg.payload = \"Missing info - reading not saved\"\n msg.error = true\n return [msg, null]\n}\n\n// if we've got this far,\n\nmsg.payload = \"Success - added a reading\"\nmsg.error = false\nflow.set (\"tub\", undefined)\n\n\nreturn [msg, newTubReading]\n","outputs":2,"noerr":0,"initialize":"","finalize":"","x":300,"y":1220,"wires":[["7e09a7e0.2d7168","d7f1d2a7.04e6"],["51fdc78e.1cbe28","b88d2174.4922e"]]},{"id":"7e09a7e0.2d7168","type":"function","z":"53541a30.e1abb4","name":"Success","func":"// Save new reading: clear form & result if successful\n\nif (!msg.error) {\n msg.payload = \"\"\n return msg;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":400,"y":1160,"wires":[["44544537.178a5c","6e89ccb3.a15a24","c87a87c5.85bbd8","ccf753ed.c9217","2f030e6c.ab41a2","c725ff69.3e60e"]]},{"id":"ccf753ed.c9217","type":"delay","z":"53541a30.e1abb4","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":600,"y":1260,"wires":[["d7f1d2a7.04e6"]]},{"id":"d7f1d2a7.04e6","type":"ui_template","z":"53541a30.e1abb4","group":"3ac4cc84.a53204","name":"New tub reading validation","order":7,"width":"6","height":1,"format":"{{msg.payload}}","storeOutMessages":true,"fwdInMessages":false,"templateScope":"local","x":820,"y":1260,"wires":[[]]},{"id":"51fdc78e.1cbe28","type":"link out","z":"53541a30.e1abb4","name":"Output from manual hot tub reading","links":["9962bd21.2f458","bc4212ca.b96f4"],"x":455,"y":1260,"wires":[]},{"id":"9a9746db.423b28","type":"comment","z":"53541a30.e1abb4","name":"Ideal spec for data logging system (hot tub)","info":"\n- Build for generic use\n\n- Ability to input readings into Dashboard, hit submit, and they are saved to InfluxDB or similar (I've already done this in Node-RED)\n\n- Ability to add a date / time to the above, to backdate readings\n\n- Ability to show existing records in InfluxDB, with the option of deleting individual records if they were incorrect, or for tidying up data\n\n- Ability to show existing records within a given timeframe\n\n- Ability to delete data from within a given timeframe (e.g. sensor was malfunctioning for 2 days...)\n\n- Advanced spec: adjust up or down a set of readings between timeframes, downsample data, etc.\n","x":330,"y":1040,"wires":[]},{"id":"b88d2174.4922e","type":"debug","z":"53541a30.e1abb4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":730,"y":1340,"wires":[]},{"id":"bc4212ca.b96f4","type":"link in","z":"53541a30.e1abb4","name":"","links":["51fdc78e.1cbe28","678b70d.e41889"],"x":215,"y":1420,"wires":[["5bd6fbad.653384"]]},{"id":"d236ec40.5f3ce","type":"comment","z":"53541a30.e1abb4","name":"Hot tub readings","info":"","x":180,"y":1400,"wires":[]},{"id":"5f80d464.88baec","type":"influxdb out","z":"53541a30.e1abb4","influxdb":"9d9ad3f4.49ce7","name":"","measurement":"hot_tub","precision":"","retentionPolicy":"","x":790,"y":1420,"wires":[]},{"id":"5bd6fbad.653384","type":"function","z":"53541a30.e1abb4","name":"","func":"\nbromine = msg.bromine\nph = msg.ph\nalkalinity = msg.alkalinity\ntimestamp = new Date(1564128384000)\nmsg.payload = {\n bromine: bromine,\n ph: ph,\n alkalinity: alkalinity,\n}\n\nif (msg.time != 'undefined' && msg.date != 'undefined') {\n datetime = msg.time+msg.date\n msg.payload.time = new Date(datetime)\n}\n\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":370,"y":1420,"wires":[["5f80d464.88baec","4cf09692.008628"]]},{"id":"4cf09692.008628","type":"debug","z":"53541a30.e1abb4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":550,"y":1480,"wires":[]},{"id":"16394282.598f2d","type":"change","z":"53541a30.e1abb4","name":"","rules":[{"t":"set","p":"tub.time","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1180,"wires":[[]]},{"id":"2f030e6c.ab41a2","type":"ui_text_input","z":"53541a30.e1abb4","name":"","label":"","tooltip":"","group":"3ac4cc84.a53204","order":5,"width":0,"height":0,"passthru":true,"mode":"time","delay":300,"topic":"","x":600,"y":1180,"wires":[["16394282.598f2d"]]},{"id":"c725ff69.3e60e","type":"ui_date_picker","z":"53541a30.e1abb4","name":"","label":"date","group":"3ac4cc84.a53204","order":6,"width":0,"height":0,"passthru":true,"topic":"","x":590,"y":1220,"wires":[["ed4256ef.3ee2e8"]]},{"id":"ed4256ef.3ee2e8","type":"change","z":"53541a30.e1abb4","name":"","rules":[{"t":"set","p":"tub.date","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1220,"wires":[[]]},{"id":"3ac4cc84.a53204","type":"ui_group","z":"","name":"Hot Tub","tab":"484568b1.0b3ae8","order":2,"disp":true,"width":"6","collapse":false},{"id":"9d9ad3f4.49ce7","type":"influxdb","z":"","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"nodered","name":"","usetls":false,"tls":""},{"id":"484568b1.0b3ae8","type":"ui_tab","z":"","name":"Garden","icon":"dashboard","disabled":false,"hidden":false}]```