Using @chrisn-au example and the table node from node-red-node-ui-table
I have put together a little display that I may still tweak with, but looks OK so far. You'll also need the cronstrue npm module for the human readable timings.
[{"id":"4c65c2239626cd4b","type":"inject","z":"da204325.2b65f","name":"Get Triggers","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[]","payloadType":"json","x":130,"y":260,"wires":[["70ccc2a69aaf2bf0","0b3b8f8728bf56eb"]]},{"id":"70ccc2a69aaf2bf0","type":"http request","z":"da204325.2b65f","name":"Get flows","method":"GET","ret":"obj","paytoqs":"ignore","url":"localhost:1880/flows","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":320,"y":280,"wires":[["946dd11ca12996c0"]]},{"id":"946dd11ca12996c0","type":"function","z":"da204325.2b65f","name":"Filter only ","func":"function nodeType(node) {\n return ((node.type == \"inject\") || (node.type == \"cronplus\"))\n}\nconst injectNodes = msg.payload.filter(nodeType);\nconst injectNodeList = [];\n\ninjectNodes.forEach((node) => {\n const inject = node;\n inject.name = node.name != \"\" ? node.name : \"blank\";\n injectNodeList.push(inject);\n})\n\n//msg.injectNodes = injectNodes\nmsg.injectNodeList = injectNodeList;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":280,"wires":[["14a8b8bde7b3cb2b"]]},{"id":"14a8b8bde7b3cb2b","type":"function","z":"da204325.2b65f","name":"Parse Data","func":"//const cronstrue = require('cronstrue');\n\nmsg.injectNodeList.forEach(item => {\n var linksTo = [];\n\n if (item.wires) {\n (item.wires[0]).forEach(linkOut => {\n const foundOut = msg.payload.find((foundOut) => foundOut.id == linkOut);\n\n if (foundOut.type === \"link out\") {\n (foundOut.links).forEach(linkIn => {\n const foundIn = msg.payload.find((foundIn) => foundIn.id == foundOut);\n linksTo.push(`[L] ${foundOut.name}`);\n })\n }\n else {\n linksTo.push(`[N] ${foundOut.name}`);\n }\n })\n }\n\n var cronString = \"\";\n if (item.options) { item.crontab = item.options[0].expression }\n if (item.crontab) {\n cronString = cronstrue.toString(item.crontab, {use24HourTimeFormat: true, monthStartIndexZero: true});\n }\n\n node.send({\n \"payload\":{\n name: item.name,\n once: item.once,\n delay: item.oncedelay,\n repeat: item.repeat,\n crontab: cronString,\n n: linksTo.length,\n linksTo: linksTo\n }\n });\n});\n\nnode.done;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[{"var":"cronstrue","module":"cronstrue"}],"x":650,"y":280,"wires":[["ae065a9af46dba6f"]]},{"id":"ae065a9af46dba6f","type":"join","z":"da204325.2b65f","name":"Join","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"1","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":810,"y":280,"wires":[["7d0dfd0e0757cca2"]]},{"id":"7d0dfd0e0757cca2","type":"ui_table","z":"da204325.2b65f","group":"cdb12a338f126946","name":"Trigger List","order":0,"width":"24","height":"19","columns":[],"outputs":0,"cts":false,"x":990,"y":240,"wires":[]},{"id":"0b3b8f8728bf56eb","type":"change","z":"da204325.2b65f","name":"Format Columns","rules":[{"t":"set","p":"ui_control","pt":"msg","to":"{\"tabulator\":{\"layout\":\"fitDataFill\"}}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":240,"wires":[["7d0dfd0e0757cca2"]]},{"id":"cdb12a338f126946","type":"ui_group","name":"Testing","tab":"cf15d7badfb5510b","order":2,"disp":true,"width":"24","collapse":false,"className":""},{"id":"cf15d7badfb5510b","type":"ui_tab","name":"Testing","icon":"dashboard","order":11,"disabled":false,"hidden":false}]