{"version":3,"sources":["https://lively-kernel.org/voices/BP2019RH1-report/content/topic5/tests/tracing-graph.js"],"names":["formTreeNode","groups","attribute","groupArray","Object","keys","forEach","key","groupElement","children","push","getAgeBuckets","matches","ageString","parseInt","countLeafNodes","tree","sum","node","groupDataByBuckets","data","buckets","element","bucket","groupDataByAttribute","oneToOneMapping","mappingFunction","mappingResult","value","manyToOneMapping","manyToOneBucketMapping","oneToOneBucketMapping"],"mappings":"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","file":"tracing-graph.js","sourcesContent":["export function formTreeNode(groups, attribute) {\n  let groupArray = []\n  Object.keys(groups).forEach(key => {\n    let groupElement = {}\n    \n    groupElement[attribute] = key\n    groupElement.children = groups[key]\n    \n    groupArray.push(groupElement)\n  })\n  \n  return groupArray\n}\n\nexport function getAgeBuckets() {\n  return [\n    {\n      key: \"<10\",\n      matches: (ageString) => {\n        return parseInt(ageString) < 10\n      }\n    }, {\n      key: \"10-14\",\n      matches: (ageString) => {\n        return 10 <= parseInt(ageString) && parseInt(ageString) <= 14\n      }\n    }, {\n      key: \"15-17\",\n      matches: (ageString) => {\n        return 15 <= parseInt(ageString) && parseInt(ageString) <= 17\n      }\n    }, {\n      key: \"18-35\",\n      matches: (ageString) => {\n        return 18 <= parseInt(ageString) && parseInt(ageString) <= 35\n      }\n    }, {\n      key: \"36-55\",\n      matches: (ageString) => {\n        return 36 <= parseInt(ageString) && parseInt(ageString) <= 55\n      }\n    }, {\n      key: \">55\",\n      matches: (ageString) => {\n        return 55 < parseInt(ageString)\n      }\n    }, {\n      key: \"missing\",\n      matches: (ageString) => {\n        return ageString === \"missing\"\n      }\n    }\n  ]\n}\n\nexport function countLeafNodes(tree) {\n  if (!tree.children) {\n    return 1\n  }\n  \n  let sum = 0;\n  tree.children.forEach(node => {\n    sum += countLeafNodes(node)\n  })\n  \n  return sum\n}\n\nexport function groupDataByBuckets(data, attribute, buckets) {\n  let groups = {}\n  \n  data.forEach(element => {\n    buckets.forEach(bucket => {\n      if (bucket.matches(element[attribute])) {\n        if (!groups[bucket.key]) {\n          groups[bucket.key] = []\n        }\n        \n        groups[bucket.key].push(element)\n      }\n    })\n  })\n  \n  return formTreeNode(groups, attribute)\n}\n\nexport function groupDataByAttribute(data, attribute) {\n  let groups = {}\n  \n  data.forEach(element => {\n    if (!groups[element[attribute]]) {\n      groups[element[attribute]] = []\n    }\n    \n    groups[element[attribute]].push(element)\n  })\n  \n  return formTreeNode(groups, attribute)\n}\n\n// ------------------------------------------------------------------------//\n\nexport function oneToOneMapping(data, key, mappingFunction) {\n  let mappingResult = []\n  \n  data.forEach(element => {\n    mappingResult.push({\n      key: key,\n      children: element,\n      value: mappingFunction(element, key)\n    })\n  })\n  \n  return mappingResult\n}\n\nexport function manyToOneMapping(data, key, mappingFunction) {\n  return {\n    key: key,\n    children: mappingFunction(data, key)\n  }\n}\n\nexport function manyToOneBucketMapping(data, key, mappingFunction, buckets) {\n  return {\n    key: key,\n    children: mappingFunction(data, key,  buckets)\n  }\n}\n\nexport function oneToOneBucketMapping(data, key, mappingFunction, buckets) {\n  let mappingResult = []\n  \n  data.forEach(element => {\n    mappingResult.push({\n      key: key,\n      children: element,\n      value: mappingFunction(element, key, buckets)\n    })\n  })\n  \n  return mappingResult\n}"]}