Dashboard to website for mutplie users

So i have made a program with a dashboard for getting information that then is saved in a database i origanly did this with a dashboard for testing but is there a way to make the dashboard that i made into a webpage where mutltiple people can go on and give in data separtly in.
the dashboard looks like this


and if you press maak een afspraak you will see this
afbeelding
This is a bachelor proof but if it is good it is meant to be in commercial use we do have a url with nothing in yet if that helps for this. Or a way to set the dashboard on a website where multpile user can use on the same time.

I hope you guys can help me on this i have looked iframe up but that isnt realy for mutiple users on the same time
This is the code used for making the dashboard and for what it is used there are more parts but those arent importend for this part
Thx in advacne guys for the help for this

[{"id":"2ba2213e.f33b0e","type":"ui_form","z":"4da1fc7a.6424d4","name":"","label":"","group":"6266950d.4a9d3c","order":3,"width":"6","height":"6","options":[{"label":"E-mailadres","value":"emailadres","type":"email","required":false,"rows":null},{"label":"GSM number","value":"gsm_nummer","type":"number","required":false,"rows":null}],"formValue":{"emailadres":"","gsm_nummer":""},"payload":"","submit":"submit","cancel":"cancel","topic":"topic","topicType":"msg","splitLayout":true,"x":490,"y":420,"wires":[["78b54959.10bf8"]]},{"id":"5d073a33.8c7fa4","type":"ui_dropdown","z":"4da1fc7a.6424d4","name":"","label":"Machine Keuze","tooltip":"","place":"Select option","group":"6266950d.4a9d3c","order":2,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"Kortrijk 1","value":"ElietMachine1","type":"str"},{"label":"Kortrijk 2","value":"ElietMachine2","type":"str"},{"label":"Machine3","value":"ElietMachine3","type":"str"},{"label":"Machine4","value":"ElietMachine4","type":"str"},{"label":"Machine5","value":"ElietMachine5","type":"str"},{"label":"Machine6","value":"ElietMachine6","type":"str"},{"label":"Machine7","value":"ElietMachine7","type":"str"},{"label":"Machine8","value":"ElietMachine8","type":"str"},{"label":"Machine9","value":"ElietMachine9","type":"str"},{"label":"Machine10","value":"ElietMachine10","type":"str"},{"label":"Machine11","value":"ElietMachine11","type":"str"},{"label":"Machine12","value":"ElietMachine12","type":"str"},{"label":"Machine13","value":"ElietMachine13","type":"str"},{"label":"Machine14","value":"ElietMachine14","type":"str"},{"label":"Machine15","value":"ElietMachine15","type":"str"},{"label":"Machine16","value":"ElietMachine16","type":"str"},{"label":"Machine17","value":"ElietMachine17","type":"str"}],"payload":"","topic":"payload","topicType":"msg","x":520,"y":480,"wires":[["6ed12c95.8efc94","1092938a.ec31e4"]]},{"id":"b88532cd.309d5","type":"join","z":"4da1fc7a.6424d4","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"0.5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1270,"y":580,"wires":[["a03dc1de.4daf1","ff0b29df.1e2988"]]},{"id":"a2f13041.a64d7","type":"ui_button","z":"4da1fc7a.6424d4","name":"","group":"6266950d.4a9d3c","order":4,"width":0,"height":0,"passthru":false,"label":"Bevestiging","tooltip":"","color":"","bgcolor":"","icon":"","payload":"1","payloadType":"num","topic":"trigger","topicType":"msg","x":90,"y":440,"wires":[["6f5c2ff1.295c28","ddf79d9b.2da4b8"]]},{"id":"ec08bfe8.226598","type":"function","z":"4da1fc7a.6424d4","name":"","func":"if (msg.payload== 1)\nmsg.trigger=true\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":660,"wires":[["1442bf67.7a32e9","e80a6eb0.5a9b3","696e56a5.427b18","85bdcf51.77a088","4924ba85.29237c","43d30ace.c51754","b8123e0d.268c7"]]},{"id":"1442bf67.7a32e9","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":480,"wires":[["b88532cd.309d5","2c3d5b85.3fb3b4"]]},{"id":"e7590984.825ba8","type":"change","z":"4da1fc7a.6424d4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"#:(file)::klanten","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":360,"wires":[["b3236209.8f5f2"]]},{"id":"5e765bef.492b84","type":"random","z":"4da1fc7a.6424d4","name":"","low":1,"high":"1000000","inte":"true","property":"payload","x":500,"y":300,"wires":[["62a0edf0.8d1b94"]]},{"id":"913882aa.f24898","type":"moment","z":"4da1fc7a.6424d4","name":"","topic":"","input":"payload","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"","locale":"nl-NL","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":400,"y":780,"wires":[["b844f496.b274c"]]},{"id":"e4284afe.070f7","type":"ui_date_picker","z":"4da1fc7a.6424d4","name":"","label":"Datum","group":"6266950d.4a9d3c","order":1,"width":0,"height":0,"passthru":true,"topic":"timestamp","topicType":"msg","x":210,"y":780,"wires":[["913882aa.f24898","e97a8e3b.ab7868","ea540572.0d8608"]]},{"id":"b844f496.b274c","type":"function","z":"4da1fc7a.6424d4","name":"","func":"function formatDate(date) {\n    var d = new Date(date),\n        month = '' + (d.getMonth() + 1),\n        day = '' + d.getDate(),\n        year = d.getFullYear();\n\n    if (month.length < 2) \n        month = '0' + month;\n    if (day.length < 2) \n        day = '0' + day;\n\n    return [year, month, day].join('-');\n}\n\nlet dStart = new Date(msg.payload);\n//proof time is normal (its a timezone thing)\n\nmsg.payload = formatDate(dStart); //iso format date only\nvar d=new Date();\nvar day=d.getDate();  \nvar month=d.getMonth() // month as a number 0-11\n\nlet payload= msg.payload.split(/\\s|-/g);\nmsg.he={year: payload[0],\n            month:payload[1],\n            day:payload[2]}\n\n\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":780,"wires":[["3b6e7131.fbbe1e","e8590395.34bf98"]]},{"id":"e80a6eb0.5a9b3","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":720,"wires":[["b88532cd.309d5"]]},{"id":"c0736e5f.dfdd88","type":"change","z":"4da1fc7a.6424d4","name":"","rules":[{"t":"set","p":"#:(file)::datum","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":980,"wires":[[]]},{"id":"5b53503.4a6fc3","type":"ui_ui_control","z":"4da1fc7a.6424d4","name":"","events":"all","x":760,"y":860,"wires":[[]]},{"id":"d709ac06.a21148","type":"ui_button","z":"4da1fc7a.6424d4","name":"","group":"1b4c2ca.b64d153","order":5,"width":0,"height":0,"passthru":false,"label":"Maak een afspraak","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":210,"y":900,"wires":[["15588e67.538932"]]},{"id":"15588e67.538932","type":"change","z":"4da1fc7a.6424d4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"group\":{\"hide\":[\"KlantMongo_Zoeken\"],\"show\":[\"KlantMongo_Afspraak\"]}}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":900,"wires":[["5b53503.4a6fc3"]]},{"id":"48255b6e.d1c1e4","type":"ui_date_picker","z":"4da1fc7a.6424d4","name":"","label":"Datum","group":"1b4c2ca.b64d153","order":2,"width":0,"height":0,"passthru":true,"topic":"timestamp","topicType":"msg","x":170,"y":980,"wires":[["e97a8e3b.ab7868","dbceb30e.f4e92"]]},{"id":"e97a8e3b.ab7868","type":"moment","z":"4da1fc7a.6424d4","name":"","topic":"","input":"payload","inputType":"msg","inTz":"Europe/Amsterdam","adjAmount":0,"adjType":"days","adjDir":"add","format":"","locale":"nl-NL","output":"payload","outputType":"msg","outTz":"Europe/Amsterdam","x":400,"y":980,"wires":[["6f196ca5.f2a234"]]},{"id":"4dafe5a0.e733a4","type":"ui_dropdown","z":"4da1fc7a.6424d4","name":"","label":"Machine Keuze","tooltip":"","place":"Select option","group":"1b4c2ca.b64d153","order":3,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"Kortrijk ","value":"ElietMachine1","type":"str"},{"label":"Machine2","value":"ElietMachine2","type":"str"},{"label":"Machine3","value":"ElietMachine3","type":"str"},{"label":"Machine4","value":"ElietMachine4","type":"str"},{"label":"Machine5","value":"ElietMachine5","type":"str"},{"label":"Machine6","value":"ElietMachine6","type":"str"},{"label":"Machine7","value":"ElietMachine7","type":"str"},{"label":"Machine8","value":"ElietMachine8","type":"str"},{"label":"Machine9","value":"ElietMachine9","type":"str"},{"label":"Machine10","value":"ElietMachine10","type":"str"},{"label":"Machine11","value":"ElietMachine11","type":"str"},{"label":"Machine12","value":"ElietMachine12","type":"str"},{"label":"Machine13","value":"ElietMachine13","type":"str"},{"label":"Machine14","value":"ElietMachine14","type":"str"},{"label":"Machine15","value":"ElietMachine15","type":"str"},{"label":"Machine16","value":"ElietMachine16","type":"str"},{"label":"Machine17","value":"ElietMachine17","type":"str"}],"payload":"","topic":"payload","topicType":"msg","x":140,"y":1020,"wires":[["2269643.7bf241c"]]},{"id":"6f196ca5.f2a234","type":"function","z":"4da1fc7a.6424d4","name":"","func":"function formatDate(date) {\n    var d = new Date(date),\n        month = '' + (d.getMonth() + 1),\n        day = '' + d.getDate(),\n        year = d.getFullYear();\n\n    if (month.length < 2) \n        month = '0' + month;\n    if (day.length < 2) \n        day = '0' + day;\n\n    return [year, month, day].join('-');\n}\n\nlet dStart = new Date(msg.payload);\n//proof time is normal (its a timezone thing)\n\nmsg.payload = formatDate(dStart); //iso format date only\nvar d=new Date();\nvar day=d.getDate();  \nvar month=d.getMonth() // month as a number 0-11\n\n\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":580,"y":980,"wires":[["c0736e5f.dfdd88"]]},{"id":"696e56a5.427b18","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":420,"wires":[["b88532cd.309d5","2c3d5b85.3fb3b4"]]},{"id":"cce10cd9.d2a968","type":"change","z":"4da1fc7a.6424d4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"group\":{\"hide\":[\"KlantMongo_Afspraak\"],\"show\":[\"KlantMongo_Zoeken\"]}}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":860,"wires":[["5b53503.4a6fc3"]]},{"id":"35b8f552.7bcf1a","type":"ui_dropdown","z":"4da1fc7a.6424d4","name":"","label":"Tijd Keuze","tooltip":"","place":"Select option","group":"6266950d.4a9d3c","order":4,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"08:30 - 12:30","value":"08:30","type":"str"},{"label":"13:00 - 17:00","value":"13:00","type":"str"}],"payload":"","topic":"topic","topicType":"msg","x":510,"y":540,"wires":[["84d57f2f.596d","ed097a4e.2b84c8"]]},{"id":"85bdcf51.77a088","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":540,"wires":[["b88532cd.309d5"]]},{"id":"57d224af.df85bc","type":"link in","z":"4da1fc7a.6424d4","name":"Join","links":["a03dc1de.4daf1"],"x":175,"y":120,"wires":[["28fa6f6c.b233b"]]},{"id":"dbceb30e.f4e92","type":"link out","z":"4da1fc7a.6424d4","name":"Datum","links":["4712b3ad.af2b3c"],"x":315,"y":940,"wires":[]},{"id":"4712b3ad.af2b3c","type":"link in","z":"4da1fc7a.6424d4","name":"Datum","links":["dbceb30e.f4e92"],"x":105,"y":780,"wires":[["e4284afe.070f7"]]},{"id":"1f0ee555.ce0313","type":"function","z":"4da1fc7a.6424d4","name":"","func":"if (flow.get(\"Bezet\", 'file') == 1 && flow.get(\"year\" ,'file') ==1) {\n    msg.payload= \"Deze afspraak is al bezet\";\n   return [ null, msg];\n}\nelse if(flow.get(\"Bezet\", 'file') == 0 && flow.get(\"year\" ,'file') ==1) {\n    msg.payload= 1;\n   return [ msg, null];\n}\nelse if (flow.get(\"year\" ,'file')==0){\n    msg.payload = \"De ingevoerde datum is niet geldig\"\n    return [ null, msg];\n}\nreturn msg;","outputs":2,"noerr":0,"initialize":"","finalize":"","x":260,"y":500,"wires":[["2ba2213e.f33b0e","5d073a33.8c7fa4","35b8f552.7bcf1a","cce10cd9.d2a968","e7590984.825ba8","5e765bef.492b84","d01b9c96.c95ee8"],["f113c236.4490b"]]},{"id":"f113c236.4490b","type":"ui_toast","z":"4da1fc7a.6424d4","position":"dialog","displayTime":"5","highlight":"","sendall":true,"outputs":1,"ok":"OK","cancel":"Cancel","raw":false,"topic":"","name":"","x":510,"y":600,"wires":[[]]},{"id":"84d57f2f.596d","type":"change","z":"4da1fc7a.6424d4","name":"","rules":[{"t":"set","p":"#:(file)::Tijd","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1010,"y":600,"wires":[[]]},{"id":"6f5c2ff1.295c28","type":"delay","z":"4da1fc7a.6424d4","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":110,"y":500,"wires":[["1f0ee555.ce0313"]]},{"id":"ddf79d9b.2da4b8","type":"link out","z":"4da1fc7a.6424d4","name":"Bevestiging","links":["385d369.1a041ca"],"x":255,"y":440,"wires":[]},{"id":"6ed12c95.8efc94","type":"link out","z":"4da1fc7a.6424d4","name":"Machine Keuze","links":["e107125c.f6fbc"],"x":655,"y":440,"wires":[]},{"id":"98f9a5dd.20b2b","type":"function","z":"4da1fc7a.6424d4","name":"","func":"if (msg.he.year >msg.myyear || msg.he.year >= msg.myyear && msg.he.month > msg.mymonthn || msg.he.year >= msg.myyear && msg.he.month >=msg.mymonthn && msg.he.day >msg.mydom){\n    msg.payload = 1;\n    \n}\nelse{\nmsg.payload=0;\n\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1000,"y":780,"wires":[["8aca7d5d.3ceda"]]},{"id":"8aca7d5d.3ceda","type":"change","z":"4da1fc7a.6424d4","name":"","rules":[{"t":"set","p":"#:(file)::year","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":780,"wires":[[]]},{"id":"a03dc1de.4daf1","type":"link out","z":"4da1fc7a.6424d4","name":"Join","links":["57d224af.df85bc"],"x":1415,"y":540,"wires":[]},{"id":"28fa6f6c.b233b","type":"mongodb out","z":"4da1fc7a.6424d4","mongodb":"9da53c80.bd4e18","name":"","collection":"Mongo","payonly":false,"upsert":false,"multi":false,"operation":"store","x":890,"y":120,"wires":[]},{"id":"3b6e7131.fbbe1e","type":"simpletime","z":"4da1fc7a.6424d4","name":"","mydate":false,"myymd":false,"myyear":true,"mymonth":false,"mymonthn":true,"mydom":true,"mydoy":false,"myday":false,"myhourpm":false,"myhour":false,"mytime":false,"mytimes":false,"myminute":false,"myminutes":false,"mysecond":false,"mymillis":false,"myepoch":false,"myrawdate":false,"mypm":false,"x":830,"y":780,"wires":[["98f9a5dd.20b2b"]]},{"id":"1092938a.ec31e4","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload={\n     \n        \"Machine\": msg.payload,\n        \n    \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":480,"wires":[["1442bf67.7a32e9"]]},{"id":"78b54959.10bf8","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload={\n     \n        \"Email\": msg.payload.emailadres,\n        \"Gsm\": msg.payload.gsm_nummer\n        \n    \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":420,"wires":[["696e56a5.427b18"]]},{"id":"ed097a4e.2b84c8","type":"function","z":"4da1fc7a.6424d4","name":"","func":"\nif (msg.payload== \"08:30\" ){\n    msg.payload={\n                  \"Begin_tijd\" : \"08:30\",\n                  \"Eind_tijd\" : \"12:30\"\n    }\n}\nelse if (msg.payload== \"13:00\"){\n   msg.payload={\n                  \"Begin_tijd\" : \"13:00\",\n                  \"Eind_tijd\" : \"17:00\"\n    }\n\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":540,"wires":[["85bdcf51.77a088"]]},{"id":"e8590395.34bf98","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload={\n     \n        \"datum\": msg.payload,\n        \"year\":msg.he.year,\n        \"month\":msg.he.month,\n        \"day\":msg.he.day,\n       \n    \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":820,"y":720,"wires":[["e80a6eb0.5a9b3"]]},{"id":"ff0b29df.1e2988","type":"debug","z":"4da1fc7a.6424d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1450,"y":580,"wires":[]},{"id":"4924ba85.29237c","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":360,"wires":[["b88532cd.309d5"]]},{"id":"b3236209.8f5f2","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload=msg.payload+1\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":680,"y":360,"wires":[["a7b6125f.db9ba"]]},{"id":"62a0edf0.8d1b94","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload={\n     \n        \"Code\": msg.payload,\n        \n    \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":300,"wires":[["43d30ace.c51754"]]},{"id":"43d30ace.c51754","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":300,"wires":[["b88532cd.309d5","2c3d5b85.3fb3b4"]]},{"id":"a7b6125f.db9ba","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload={\n     \n        \"Klantennummer\": msg.payload,\n        \n    \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":840,"y":360,"wires":[["4924ba85.29237c"]]},{"id":"ea540572.0d8608","type":"function","z":"4da1fc7a.6424d4","name":"","func":"msg.payload={\n     \n      \n        \"timestamp\":msg.payload\n    \n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":720,"wires":[["b8123e0d.268c7"]]},{"id":"b8123e0d.268c7","type":"hold","z":"4da1fc7a.6424d4","name":"","x":990,"y":660,"wires":[["b88532cd.309d5"]]},{"id":"d01b9c96.c95ee8","type":"delay","z":"4da1fc7a.6424d4","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":290,"y":660,"wires":[["ec08bfe8.226598"]]},{"id":"5645d296.14dad4","type":"function","z":"4da1fc7a.6424d4","name":"","func":"var message=\"\";\nmsg.to = msg.payload.Email\nmessage =msg.payload.Code\nmsg.file=msg.payload.Machine + \".xlsx\"\nmsg.filep = \"D:/Games/\" + msg.file\nmsg.topic = \"Test Mail Eliet eindwerk\";\nmsg.payload = \"Dit is de bevestings mail van u huurbeurt de code voor u machine kunt u onderaan vinden in deze mail \"+  message+ msg.payload.Machine ;\nmsg.attachments = [ \n  { filename: msg.file , path: msg.filep },\n\n];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1220,"y":340,"wires":[["1199783c.eb0c9","cefa234f.8589e"]]},{"id":"1199783c.eb0c9","type":"e-mail","z":"4da1fc7a.6424d4","server":"smtp.gmail.com","port":"465","secure":true,"tls":true,"name":"","dname":"","x":1370,"y":340,"wires":[]},{"id":"decd506a.f16498","type":"inject","z":"4da1fc7a.6424d4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":340,"wires":[["5e765bef.492b84"]]},{"id":"2c3d5b85.3fb3b4","type":"join","z":"4da1fc7a.6424d4","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"0.2","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1210,"y":300,"wires":[["5645d296.14dad4"]]},{"id":"cefa234f.8589e","type":"debug","z":"4da1fc7a.6424d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1370,"y":380,"wires":[]},{"id":"ddf7eeaf.e5b23","type":"ui_iframe","z":"4da1fc7a.6424d4","group":"d44d4f44.3219e8","name":"","order":9,"width":0,"height":0,"url":"http://127.0.0.1:1880/ui/#!/4?socketid=ZumcZptWN2KObdkhAAAG","origin":"*","scale":100,"x":300,"y":240,"wires":[[]]},{"id":"6d929b47.bc7064","type":"ui_dropdown","z":"4da1fc7a.6424d4","name":"","label":"","tooltip":"","place":"Select option","group":"d44d4f44.3219e8","order":10,"width":0,"height":0,"passthru":true,"multiple":false,"options":[{"label":"xx","value":"dgv","type":"str"}],"payload":"","topic":"topic","topicType":"msg","x":100,"y":240,"wires":[["ddf7eeaf.e5b23"]]},{"id":"59ff2a1.fa600d4","type":"http in","z":"4da1fc7a.6424d4","name":"","url":"/hello","method":"get","upload":false,"swaggerDoc":"","x":800,"y":220,"wires":[["54c1e70d.ab3e18"]]},{"id":"54c1e70d.ab3e18","type":"template","z":"4da1fc7a.6424d4","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head></head>\n    <body>\n        <h1>Hello World!</h1>\n    </body>\n</html>","x":950,"y":220,"wires":[["266c286f.d993d8"]]},{"id":"266c286f.d993d8","type":"http response","z":"4da1fc7a.6424d4","name":"","statusCode":"","headers":{},"x":1090,"y":220,"wires":[]},{"id":"d61388b7.a4041","type":"group","z":"4da1fc7a.6424d4","name":"Zoek op bezeting","style":{"stroke":"#ffC000","fill":"#ffefbf","label":true,"color":"#000000"},"nodes":["9d3721a7.2d4c48","3166bfa3.84c228","559833fe.8bb6cc","385d369.1a041ca","6edde85f.aec14","25dff159.89d70e","e8fac31.00af4c","e36fac3c.2c10b","d00667af.96ab5"],"x":14,"y":1499,"w":812,"h":222},{"id":"9d3721a7.2d4c48","type":"ui_button","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","name":"","group":"1b4c2ca.b64d153","order":4,"width":0,"height":0,"passthru":false,"label":"Zoek","tooltip":"","color":"","bgcolor":"","icon":"","payload":"1","payloadType":"str","topic":"topic","topicType":"msg","x":90,"y":1620,"wires":[["559833fe.8bb6cc","25dff159.89d70e"]]},{"id":"3166bfa3.84c228","type":"ui_template","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","group":"1b4c2ca.b64d153","name":"UI Table","order":1,"width":"12","height":"10","format":"<style>\n.table\n{\n     background:lightblue;\n    height:600px;\n    width:1630px;\n    \n}\n</style>\n<div class=\"table\">\n<table style=\"width:40%\">\n  <tr>\n    \n    <th>DATUM</th> \n    <th>BEGIN_TIJD</th>\n    <th>EIND_TIJD</th>\n    <th>MACHINE</th>\n  \n  </tr>\n  <tr ng-repeat=\"x in msg.payload | limitTo:1000000\">\n    <td>{{msg.payload[0].payload.datum}}</td>\n    <td>{{msg.payload[0].payload.Begin_tijd}}</td>\n    <td>{{msg.payload[$index].payload.Eind_tijd}}</td>\n    <td>{{msg.payload[$index].payload.Machine}}</td>\n\n  </tr>\n</table>\n</div>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","x":740,"y":1680,"wires":[[]]},{"id":"559833fe.8bb6cc","type":"function","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","name":"","func":"\nmsg.payload={\n     \n        \n        \"payload.datum\": flow.get(\"datum\", 'file') ,\n        \"payload.Machine\":flow.get(\"machine\", 'file') ,\n        \n        \n    \n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":260,"y":1680,"wires":[["e36fac3c.2c10b"]]},{"id":"385d369.1a041ca","type":"link in","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","name":"Bevestiging","links":["ddf79d9b.2da4b8"],"x":115,"y":1580,"wires":[["25dff159.89d70e"]]},{"id":"6edde85f.aec14","type":"mongodb in","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","mongodb":"9da53c80.bd4e18","name":"","collection":"Mongo","operation":"find","x":500,"y":1620,"wires":[["e8fac31.00af4c"]]},{"id":"25dff159.89d70e","type":"function","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","name":"","func":"\nmsg.payload={\n     \n        \n        \"payload.datum\": flow.get(\"datum\", 'file') ,\n        \"payload.Machine\":flow.get(\"machine\", 'file') ,\n        \"payload.Begin_tijd\":flow.get(\"Tijd\", 'file')\n        \n    \n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":260,"y":1620,"wires":[["6edde85f.aec14"]]},{"id":"e8fac31.00af4c","type":"function","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","name":"","func":"if(msg.payload.length === 0){\n flow.set(\"Bezet\",0,'file')\n}\nelse{\n flow.set(\"Bezet\",1,'file')\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":1620,"wires":[[]]},{"id":"e36fac3c.2c10b","type":"mongodb in","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","mongodb":"9da53c80.bd4e18","name":"","collection":"Mongo","operation":"find","x":500,"y":1680,"wires":[["3166bfa3.84c228"]]},{"id":"d00667af.96ab5","type":"comment","z":"4da1fc7a.6424d4","g":"d61388b7.a4041","name":"Zoek","info":"Deze nodes zijn voor het zoeken en bekijken of de gekozen datum en uur al bezet zijn.\nAls deze tijd en dag bezet is bij de gekozen machine wordt flow.bezet op 1 gezet waardoor de verdere actie niet kan gedaan wordt totdat er een niet bezete datum wordt gekozen","x":90,"y":1540,"wires":[]},{"id":"efcbb110.de89a8","type":"group","z":"4da1fc7a.6424d4","name":"Klantennummer","style":{"stroke":"#ffff00","fill":"#ffffbf","label":true,"color":"#000000"},"nodes":["33b01e10.04e792","ad88cc6e.3c0168","7fad9ac4.06d034","d3cc5c5c.a40538","7410fece.ff06a","de5b81dd.4aa38","67c595ca.64811c","b3ad270f.f9c84","d8488d66.d5a6d"],"x":14,"y":1319,"w":1252,"h":162},{"id":"33b01e10.04e792","type":"inject","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"show RECORDS","props":[],"repeat":"1","crontab":"","once":false,"onceDelay":"","topic":"","x":150,"y":1400,"wires":[["b488c6da.757e8"]]},{"id":"ad88cc6e.3c0168","type":"ui_template","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","group":"d44d4f44.3219e8","name":"UI Table","order":1,"width":"12","height":"9","format":"<style>\n.table\n{\n    height:600px;\n    width:2250px;\n    background:lightblue;\n}\n</style>\n<div class=\"table\">\n<table style=\"width:100%\">\n  <tr>\n    <th>KLANTENNUMMER</th> \n    <th>DATUM</th> \n    <th>BEGIN_TIJD</th>\n    <th>EIND_TIJD</th>\n    <th>EMAILADRES</th>\n    <th>GSM_NUMMER</th>\n    <th>MACHINE</th>\n    <th>TOEGANGSCODE</th>\n  \n  </tr>\n  <tr ng-repeat=\"x in msg.payload | limitTo:1000000\">\n    <td>{{msg.payload[$index].payload.Klantennummer}}</td>\n    <td>{{msg.payload[$index].payload.datum}}</td>\n    <td>{{msg.payload[$index].payload.Begin_tijd}}</td>\n    <td>{{msg.payload[$index].payload.Eind_tijd}}</td>\n    <td>{{msg.payload[$index].payload.Email}}</td>\n    <td>{{msg.payload[$index].payload.Gsm}}</td>\n    <td>{{msg.payload[$index].payload.Machine}}</td>\n    <td>{{msg.payload[$index].payload.Code}}</td>\n\n  </tr>\n</table>\n</div>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","x":640,"y":1360,"wires":[[]]},{"id":"7fad9ac4.06d034","type":"change","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"","rules":[{"t":"set","p":"klanten","pt":"msg","to":"payload.payload.Klantennummer","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":1440,"wires":[["7410fece.ff06a","6e8513e6.312adc"]]},{"id":"d3cc5c5c.a40538","type":"link in","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"","links":["c2d27593.c61f8"],"x":855,"y":1400,"wires":[["7410fece.ff06a"]]},{"id":"7410fece.ff06a","type":"function","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"","func":"\n\nvar count=context.get('count',count) || 0;\nif(count<msg.klanten){\n    count=msg.klanten\n    \n}\n if (msg.help == true){\ncount=0\n}\n\n    context.set('count',count);\nmsg.klanten=count;\n\n\nreturn msg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":980,"y":1440,"wires":[["de5b81dd.4aa38"]]},{"id":"de5b81dd.4aa38","type":"change","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"","rules":[{"t":"set","p":"#:(file)::klanten","pt":"flow","to":"klanten","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1160,"y":1440,"wires":[[]]},{"id":"67c595ca.64811c","type":"mongodb in","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","mongodb":"9da53c80.bd4e18","name":"","collection":"Mongo","operation":"find","x":400,"y":1400,"wires":[["ad88cc6e.3c0168","b3ad270f.f9c84"]]},{"id":"b3ad270f.f9c84","type":"split","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":630,"y":1440,"wires":[["7fad9ac4.06d034"]]},{"id":"d8488d66.d5a6d","type":"comment","z":"4da1fc7a.6424d4","g":"efcbb110.de89a8","name":"Klantennummer","info":"Deze groep nodes zijn voor het maken van de klanten nummer en het tonen van de data in een tabel formaat op een dashboard van node red.\nIn de eerste function node wordt er gezocht naar een klantennummer die groter is dan het nummer dat hij opgslagen heeft.\nIn de tweede function node wordt de de ingekomen waarde +1 gedaan en dan terug opgeslagen in tijdelijke variable.","x":140,"y":1360,"wires":[]},{"id":"6266950d.4a9d3c","type":"ui_group","name":"Afspraak","tab":"72538e90.f5b8b","order":1,"disp":true,"width":"6","collapse":false},{"id":"1b4c2ca.b64d153","type":"ui_group","name":"Zoeken","tab":"72538e90.f5b8b","order":2,"disp":true,"width":"12","collapse":false},{"id":"9da53c80.bd4e18","type":"mongodb","hostname":"127.0.0.1","topology":"direct","connectOptions":"","port":"27017","db":"mongo","name":""},{"id":"d44d4f44.3219e8","type":"ui_group","name":"Sensors","tab":"34054411.bf9404","order":1,"disp":true,"width":"12","collapse":false},{"id":"72538e90.f5b8b","type":"ui_tab","name":"KlantMongo","icon":"dashboard","disabled":false,"hidden":false},{"id":"34054411.bf9404","type":"ui_tab","name":"Personeel","icon":"dashboard","disabled":false,"hidden":false}]

Dashboard is not really an inherently multi-user system. Also, it isn't clear whether you need/want to have any ongoing identity management (e.g. users have to log in) or whether you are just using it to capture all the needed information in 1 go. If the 2nd, it probably doesn't really matter whether the system is multi-user does it? What does multi-user mean to you in this case?

If you don't need any user management as such then you already have a page that many people can access at once. Dashboard is a web-based app and everyone who submits some data will be sending a msg to Node-RED that will have a unique msgid on it and a unique socket id. The socket id identifies the browser tab that sent the msg (though note that socket ids change if the user reloads the page or if the connection is temporarily lost).

So you will, in Node-RED, get a msg for each submission. No extra processing needed.


Do note though that you need to add HTTPS to your app before releasing to the Internet. You will also want to lock down your system and network. If this is for commercial purposes, you will want to get the system penetration tested at least and will need to put up things like privacy policies, GDPR declarations (for the EU and something similar for California), cookie declarations, etc.

But if it cant handle multple users on the same timecouldnt it be that when 2 people want to register an appoitment on the same time on the website wouldnt they mess each other data up multi user means fofr me when 2 or more people on the same time want to make an apointment that there data dont get messed up with each other

and how would you implent that in my node red beaucse they will be from home on there laptop filling in the form and dashboard is a local server thing i tried ifrme but then it is not possible for 2 people to fill the form on the same time in right or is it possible to make with node red a public website where you can place what i made or code what i want to make is that possible and if so do you know a guide or a example that i could use

And sorry for the bad english hope you understand what i mean.
already thx for the help and sorry if i dont understand it directly im using node red for only 2 months but i like it very much

Yes, but it wasn't clear what you wanted to do. Funnily enough I had exactly that problem with the NHS's booking website for vaccination bookings - it didn't block the timeslot early enough in the process so I kept asking for slots that someone had already nabbed.

You could likely work around this by changing the wording on the site to indicate that the process was checking if the slot were free.

Dashboard is a web thing. The web server happens to run on a device in a particular location. To make it available to the Internet, you need a registered domain and a hole in your router/firewall to allow https traffic (not http note) to reach the server.

Web servers are inherently multi-user, running Node-RED even on a Raspberry Pi will let you handle a few 10s of simultaneous connections if not a few hundred.

If you need to be able to scale to thousands or 10s of thousands or beyond, you will need a slightly different approach. For scale, you should create your form as a static web page that is served by a full web server and make only the submission connect to Node-RED. There are all sorts of tricks to allow such scalability.

Honestly though, if you are looking at that kind of scale, you need professional help. Both in the development and in the security and operations.

Yes, it is certainly possible. But keep your expectations realistic. Fine for a smallish user group.

And you NEED to think about the SECURITY. You are capturing personal data, you WILL be liable if you let that be copied. There are no excuses there.

This is a steep learning curve. What you want to do is feasible with care and even not really that hard. But there are a lot of things that you need to get right.

There is a lot of information on this forum because similar questions have been asked before (about using Node-RED to deliver an Internet-facing website). There are also many tutorials on the web about setting up websites to capture a form. If they don't mention security though, just ignore them and move on.

Blockquot

I do have something like that programmed when they comifern there appointlent it is saved in a database and when you want to then same date and hour again the data base wilgive you a message that that it is already taken and that they need to choose another one

There will mostlukely max 10s people maybe using on the dame time when we scale it up but otherwise not realy that big its for renting garding machines

That is something i will ask the IT guy but he is t good in making websites

Do you know maybe a good guide because i found only thing like iframe butbtjat doenst make the cut because only one person can deliver data at eacht time

Are there maybe sime premaid example where i can try stuf and change somethings that i can learn it
And thx for the fast response
You are of great help for md

Allow me to rephrase my question.

Is it possible to export my dashboard wich I've created inside of node red.
I want to export it onto a working website on wich 2 or 3 of my jurors can register and login and interact with said interface.

And the company for wich I work doesnt have any experience with website building and node red.
So they are of no help to me.

You could export the static part of your Dashboard but it is the dynamic part that is what you really need so I don't think that will help you as you don't have the support to translate it to something else.

There are all manner of ways to achieve what you are trying to do but fundamentally while this is easy enough to achieve on a private network, it is fraught with issues over the public Internet.

With limited experience of setting these things up, I can really only recommend that you get some professional support.

The simplest approach in general will be for you to implement an edge web server that provides the HTTPS support and perhaps a simple login if needed to just protect the entrypoint (could be just a single id with a password that you change weekly for example). That would be configured to act as a "reverse proxy". In other words, it acts as the gatekeeper managing traffic to/from Node-RED. It would only allow access to Dashboard and not to the Editor.

Along with whatever router/firewall changes would be required to allow access to the web server from the Internet.

That may be enough for your case though really, the web server should also be hardened to prevent attacks from gaining entry to your network and from there being able to worm their way onto more critical assets.

The flow aspect is really quite separate and "simply" a matter of getting the logic right.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.