[{"id":"f1a0be11.885ba","type":"tab","label":"Data Validation","disabled":false,"info":"Check objects for metadata porperty and value"},{"id":"4d36c183.88ca5","type":"inject","z":"f1a0be11.885ba","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"x":159.83334350585938,"y":360.0000228881836,"wires":[["5de714da.fc00ec"]]},{"id":"5de714da.fc00ec","type":"function","z":"f1a0be11.885ba","name":"MAIN INPUTS","func":"// INPUTS\n\nteamspace = \"***\"; // make sure you have permissions to acces this teamspace\nmodelID = \"***\"; // make sure you have permissions to acces this model or federation\nkey = \"***\"; // generate your API key in 3drepo.io Profile section\n\n// ignore the rest\n\ntry{\n flow.set(\"teamspace\", teamspace);\n}catch(error){\n node.error(\"Missing teamspace\", msg);\n return;\n}\ntry{\n flow.set(\"modelID\", modelID);\n}catch(error){\n node.error(\"Missing modelID\", msg);\n return;\n}\ntry{\n flow.set(\"key\", key);\n}catch(error){\n node.error(\"Missing API key\", msg);\n return;\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":192.54983520507812,"y":202.06722259521484,"wires":[["6551ae6f.2e3af","45893fe2.5fa21"]]},{"id":"c9e1b63d.1f8ca8","type":"http request","z":"f1a0be11.885ba","name":"","method":"POST","ret":"obj","url":"{{{topic}}}","tls":"","x":1381.083251953125,"y":290,"wires":[["b01b583f.f1dfa8"]]},{"id":"ea081454.42b328","type":"function","z":"f1a0be11.885ba","name":"group API call","func":"msg.topic = \"https://api1.www.3drepo.io/api/\" + flow.get(\"teamspace\") + \"/\" + flow.get(\"modelID\") + \"/groups?key=\" + flow.get(\"key\");\n\nvar group = {};\ngroup.name = msg.inputs.groupName ;\ngroup.description = msg.inputs.desc;\ngroup.author = global.get(\"username\"); \ngroup.createdAt = Date.now();\ngroup.color = msg.inputs.colour;\ngroup.objects = msg.payload;\n\nmsg.total = group.objects[0].shared_ids.length;\nmsg.payload = group;\n\nreturn msg;","outputs":1,"noerr":0,"x":1379.785888671875,"y":235.19122314453125,"wires":[["c9e1b63d.1f8ca8"]]},{"id":"2c5ef220.42247e","type":"function","z":"f1a0be11.885ba","name":"shared IDs","func":"function getKeyByValue(object, value) {\n return Object.keys(object).find(key => object[key] === value);\n}\n\nvar sharedIDs = [];\nIDmap = flow.get(\"IDmap\");\ntry{\n var test = IDmap.length;\n}catch(error){\n node.error(\"Missing ID map\", msg);\n return;\n}\n\nif (IDmap !== undefined) {\n if (IDmap.subModels.length !== 0) { // if federation\n for (var i = 0; i < msg.payload.length; i++) {\n for (var j = 0; j < IDmap.subModels.length; j++) {\n var key = getKeyByValue(IDmap.subModels[j].idMap, msg.payload[i]);\n if (key !== undefined) {\n sharedIDs.push(msg.payload[i]);\n break;\n }\n }\n }\n } else {\n for (var i = 0; i < msg.payload.length; i++) {\n var key = getKeyByValue(IDmap.mainTree.idMap, msg.payload[i]);\n sharedIDs.push(msg.payload[i]);\n }\n }\n}\n\nmsg.payload = [{\n \"account\": flow.get(\"teamspace\"),\n \"model\": flow.get(\"modelID\"),\n \"shared_ids\": sharedIDs,\n}];\n\nreturn msg;","outputs":1,"noerr":0,"x":1385.8849487304688,"y":176.24462890625,"wires":[["ea081454.42b328"]]},{"id":"3e555df0.c95bd2","type":"comment","z":"f1a0be11.885ba","name":"create group","info":"","x":1382.5933532714844,"y":75.45305633544922,"wires":[]},{"id":"8b0ead32.7f08f","type":"function","z":"f1a0be11.885ba","name":"INPUTS","func":"// INPUTS\n\ngroupName = (msg.topic) ? msg.topic : \"Group\";\ndescription = msg.payload.length + \" from Node-RED\";\ncolour = [parseInt(Math.random()*255),parseInt(Math.random()*255),parseInt(Math.random()*255)];\n\n\n// ignore the rest\n\nmsg.inputs = {};\nmsg.inputs.groupName = groupName;\nmsg.inputs.desc = description;\nmsg.inputs.colour = colour;\n\nreturn msg;","outputs":1,"noerr":0,"x":1380.6070251464844,"y":129.85570526123047,"wires":[["2c5ef220.42247e"]]},{"id":"45893fe2.5fa21","type":"function","z":"f1a0be11.885ba","name":"revisions API","func":"msg.payload = \"https://api1.www.3drepo.io/api/\" + flow.get(\"teamspace\") + \"/\" + flow.get(\"modelID\") + \"/\" + \"revisions.json?key=\" + flow.get(\"key\");\n\nreturn msg;","outputs":1,"noerr":0,"x":493.3334045410156,"y":128.75006103515625,"wires":[["eb3dac4b.8975e"]]},{"id":"eb3dac4b.8975e","type":"http request","z":"f1a0be11.885ba","name":"","method":"GET","ret":"obj","url":"{{{payload}}}","tls":"","x":493.322998046875,"y":178.22921085357666,"wires":[["73d18fbb.56c55"]]},{"id":"73d18fbb.56c55","type":"function","z":"f1a0be11.885ba","name":"OUTPUTS","func":"// all revisions\n\nflow.set(\"revisions\", msg.payload);\n\nreturn {payload:\"\"};\n\n\n// uncomment and specify subset of revisions below\n\n// flow.set(\"revisions\", msg.payload.slice(0,10));\n","outputs":1,"noerr":0,"x":504.32994079589844,"y":226.97229480743408,"wires":[["c2c7385a.838d38","2a5ddd0.ca58b24"]]},{"id":"9c35ea0a.16d538","type":"comment","z":"f1a0be11.885ba","name":"revisions","info":"get all revisions of a model\n\nto choose only subset of revisions use:\nmsg.payload.slice(0,3)\n\nplace after login","x":495.5834045410156,"y":82.22575378417969,"wires":[]},{"id":"c2c7385a.838d38","type":"function","z":"f1a0be11.885ba","name":"ID map call","func":"try{\n revID = flow.get(\"revisions\")[0]._id;\n}catch(error){\n node.error(\"Missing revisions\", msg);\n return;\n}\n\nmsg.payload = \"https://api1.www.3drepo.io/api/\" + flow.get(\"teamspace\") + \"/\" + flow.get(\"modelID\") + \"/revision/\" + revID + \"/idmap.json?key=\" + flow.get(\"key\");\n\nreturn msg;\n","outputs":1,"noerr":0,"x":502.0834045410156,"y":366.2500915527344,"wires":[["c672b331.3a29a"]]},{"id":"c672b331.3a29a","type":"http request","z":"f1a0be11.885ba","name":"","method":"GET","ret":"obj","url":"{{{payload}}}","tls":"","x":502.35682106018066,"y":419.7812690734863,"wires":[["fd2ffd09.59e34"]]},{"id":"bff6fb76.c6ede8","type":"comment","z":"f1a0be11.885ba","name":"ID map","info":"","x":498.9899387359619,"y":320.40349197387695,"wires":[]},{"id":"fd2ffd09.59e34","type":"function","z":"f1a0be11.885ba","name":"set ID map","func":"flow.set(\"IDmap\", msg.payload);","outputs":1,"noerr":0,"x":497.7399387359619,"y":474.0700263977051,"wires":[[]]},{"id":"6fbc285b.5a62b8","type":"comment","z":"f1a0be11.885ba","name":"how to","info":"log in at http://localhost:1880/ui/#/0 or http://yourVPS:1880/ui/#/0\nset your teamspace and model ID of Lego_House_Federation in MAIN INPUTS\nset path to validate.csv in read csv, make sure spreadsheet cells are formatted as text\ndeploy\nchange options for broad/narrow validation or value check in data validation INPUTS\nopen Lego_House_Federation in 3D Repo, see the results in Issues card","x":170.9375,"y":106.95834350585938,"wires":[]},{"id":"bd7a8641.d89958","type":"function","z":"f1a0be11.885ba","name":"all meta IDs","func":"teamspace = flow.get(\"teamspace\");\n\nallMeta = [];\n\nif (msg.payload.subModels !== undefined) {\n for (var i = 0; i < msg.payload.subModels.length; i++) {\n for (var j = 0; j < msg.payload.subModels[i].data.length; j++) {\n allMeta.push(msg.payload.subModels[i].data[j]._id)\n }\n }\n}else{\n for(var i in msg.payload.data){\n allMeta.push(msg.payload.data[i]._id)\n }\n}\n\nvar allMeta = new Set([].concat(...allMeta));\nallMeta = Array.from(allMeta);\n\nflow.set(\"allMeta\", allMeta);\n\nreturn {payload:allMeta};","outputs":1,"noerr":0,"x":769.85400390625,"y":232.35406494140625,"wires":[[]]},{"id":"58395677.583f38","type":"http request","z":"f1a0be11.885ba","name":"","method":"GET","ret":"obj","url":"{{{payload}}}","tls":"","x":772.711181640625,"y":182.5128173828125,"wires":[["bd7a8641.d89958","fd2098f.4f68f68"]]},{"id":"2a5ddd0.ca58b24","type":"function","z":"f1a0be11.885ba","name":"all meta call","func":"try{\n revID = flow.get(\"revisions\")[0]._id;\n}catch(error){\n node.error(\"Missing revisions\", msg);\n return;\n}\n\nmsg.payload = \"https://api1.www.3drepo.io/api/\" + flow.get(\"teamspace\") + \"/\" + flow.get(\"modelID\") + \"/revision/\" + revID + \"/meta/all.json?key=\" + flow.get(\"key\");\n\nreturn msg;","outputs":"1","noerr":0,"x":774.7747802734375,"y":132.25885009765625,"wires":[["58395677.583f38"]]},{"id":"cd147fd6.a3b1f","type":"comment","z":"f1a0be11.885ba","name":"all meta","info":"retrieve all metadata in model or federation","x":777.5525512695312,"y":82.3541259765625,"wires":[]},{"id":"d3c5272a.609348","type":"http response","z":"f1a0be11.885ba","name":"","statusCode":"","headers":{},"x":1672.35400390625,"y":276.1041259765625,"wires":[]},{"id":"3e919441.42f62c","type":"function","z":"f1a0be11.885ba","name":"create issue API call","func":"var issue = {};\nvar viewpoint = {};\n\nissue.name = msg.inputs.issueName;\nissue.desc = msg.inputs.desc;\nissue.account = flow.get(\"username\");\nissue.assigned_roles = [];\nissue.creator_role = \"Client\";\nissue.model = flow.get(\"modelID\");\nissue.objectId = null;\nissue.pickedNorm = null;\nissue.pickedPos = null;\nissue.priority = \"none\";\nissue.rev_id = null;\nissue.scale = 1;\nissue.status = \"open\";\nissue.topic_type = \"for_information\";\n\nviewpoint.screenshot = \"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\";\n\nissue.viewpoint = viewpoint;\nissue.viewpoint.highlighted_group_id = msg.payload._id;\n// issue.viewpoint.hidden_group_id = msg.payload._id;\n// issue.viewpoint.shown_group_id = msg.payload._id;\n\nmsg.topic = \"https://api1.www.3drepo.io/api/\" + flow.get(\"teamspace\") + \"/\" + flow.get(\"modelID\") + \"/issues.json?key=\" + flow.get(\"key\");\n\nmsg.payload = issue;\n\nreturn msg;\n","outputs":1,"noerr":0,"x":1661.3286743164062,"y":177.52197265625,"wires":[["4dc8eb41.ea9424"]]},{"id":"4dc8eb41.ea9424","type":"http request","z":"f1a0be11.885ba","name":"","method":"POST","ret":"obj","url":"{{{topic}}}","tls":"","x":1668.7453002929688,"y":225.44183349609375,"wires":[["d3c5272a.609348"]]},{"id":"e2031922.d2bc18","type":"comment","z":"f1a0be11.885ba","name":"create issue","info":"","x":1662.9674682617188,"y":84.67718505859375,"wires":[]},{"id":"b01b583f.f1dfa8","type":"function","z":"f1a0be11.885ba","name":"INPUTS","func":"// INPUTS\n\nissueName = \"Data validation\";\ndescription = msg.total + \" objects don't meet validation criteria\";\n\n\n// ignore the rest\n\nmsg.inputs = {};\nmsg.inputs.issueName = issueName;\nmsg.inputs.desc = description;\n\nreturn msg;","outputs":1,"noerr":0,"x":1659.3401489257812,"y":132.11798095703125,"wires":[["3e919441.42f62c"]]},{"id":"6551ae6f.2e3af","type":"file in","z":"f1a0be11.885ba","name":"validate.csv","filename":"C:\\Users\\___\\Downloads\\validate.csv","format":"utf8","chunk":false,"sendError":false,"x":490.8542938232422,"y":611.1042861938477,"wires":[["95f69b9.228b368"]]},{"id":"95f69b9.228b368","type":"csv","z":"f1a0be11.885ba","name":"","sep":",","hdrin":"","hdrout":"","multi":"mult","ret":"\\n","temp":"","skip":0,"x":494.1876983642578,"y":661.1045913696289,"wires":[["eff69b08.00df08"]]},{"id":"eff69b08.00df08","type":"function","z":"f1a0be11.885ba","name":"set validate","func":"flow.set(\"validate\", msg.payload);\n","outputs":1,"noerr":0,"x":499.74330139160156,"y":708.8824234008789,"wires":[[]]},{"id":"62d9b909.7d97f8","type":"comment","z":"f1a0be11.885ba","name":"read csv","info":"","x":499.1505584716797,"y":560.0304946899414,"wires":[]},{"id":"590aa1a8.f27fb","type":"comment","z":"f1a0be11.885ba","name":"data validation","info":"Inputs:\n- validate.csv with required fields and values\n- list of IFC types to exclude","x":1067.3540649414062,"y":77.35415649414062,"wires":[]},{"id":"9bb17b41.294ab8","type":"function","z":"f1a0be11.885ba","name":"if fed (meta)","func":"var o = [];\n\nif(Array.isArray(msg.payload)){\n for (var i=0; i < msg.payload.length; i++) {\n if (msg.payload[i] !== undefined) {\n if (msg.payload[i].subModels !== undefined) {\n var obj = {};\n obj.data = [];\n for (var j = 0; j < msg.payload[i].subModels.length; j++) {\n for (var k = 0; k < msg.payload[i].subModels[j].data.length; k++) {\n // merge data arrays as per API calls \n obj.data.push(msg.payload[i].subModels[j].data[k])\n }\n }\n // obj.data = temp;\n o.push(obj);\n } else {\n return msg;\n }\n }\n }\n}else{\n if (msg.payload !== undefined) {\n if (msg.payload.subModels !== undefined) {\n var obj = {};\n obj.data = [];\n for (var j = 0; j < msg.payload.subModels.length; j++) {\n for (var k = 0; k < msg.payload.subModels[j].data.length; k++) {\n // merge data arrays as per API calls \n obj.data.push(msg.payload.subModels[j].data[k])\n }\n }\n } else {\n return msg;\n }\n }\n msg.payload = obj;\n return msg\n}\n\n\n","outputs":1,"noerr":0,"x":1068.465087890625,"y":190.54873657226562,"wires":[["534c8b24.9b14d4"]]},{"id":"534c8b24.9b14d4","type":"function","z":"f1a0be11.885ba","name":"validation","func":"validate = flow.get(\"validate\");\n\ntry{\n test = validate.length;\n}catch(error){\n node.error(\"Missing validatation data\", msg);\n return;\n}\n\nfunction validation(object, validate){\n var hasField = true;\n var isCorrect = true;\n for(var j=0; j