{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/scratch/forces_spike/forces-structure.js"],"names":["d3","ForcesStructure","constructor","individuals","groups","_sortGroupsByLentgh","_enrichIndividualsWithGroupInformation","getNodesWithDrawingInformationForGroups","forEach","individual","_setGroupOfIndividual","sort","group1","group2","themes","length","l3ThemesOfIndividual","some","group","groupThemes","_groupThemesAreSubsetOfIndividualsThemes","name","individualThemes","every","theme","includes"],"mappings":";;;;;;AAAOA,Q;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,eAAN,CAAsB;AACnCC,oBAAYC,WAAZ,EAAyBC,MAAzB,EAAiC;AAC/B,eAAKD,WAAL,GAAmBA,WAAnB;AACA,eAAKC,MAAL,GAAcA,MAAd;AACA,eAAKC,mBAAL;AACA,eAAKC,sCAAL;AACD;;AAED;AACA;AACA;;AAEAC,gDAAwCH,MAAxC,EAAgD;AAC9C;AACD;;AAED;AACA;AACA;;AAEAE,iDAAyC;AACvC,eAAKH,WAAL,CAAiBK,OAAjB,CAA0BC,cAAc;AACtC,iBAAKC,qBAAL,CAA2BD,UAA3B;AACD,WAFD;AAGD;;AAEDJ,8BAAsB;AACpB,eAAKD,MAAL,CAAYO,IAAZ,CAAiB,UAAUC,MAAV,EAAkBC,MAAlB,EAA0B;AAAE,mBAAOA,OAAOC,MAAP,CAAcC,MAAd,GAAuBH,OAAOE,MAAP,CAAcC,MAA5C;AAAoD,WAAjG;AACD;;AAEDL,8BAAsBD,UAAtB,EAAkC;AAChC,cAAIO,uBAAuBP,WAAWK,MAAX,CAAkB,IAAlB,CAA3B;;AAEA,eAAKV,MAAL,CAAYa,IAAZ,CAAkBC,KAAD,IAAW;AAC1B,gBAAIC,cAAcD,MAAMJ,MAAxB;AACA,gBAAG,KAAKM,wCAAL,CAA8CD,WAA9C,EAA2DH,oBAA3D,CAAH,EAAqF;AACnFP,yBAAW,OAAX,IAAsBS,MAAMG,IAA5B;AACD;AACD,mBAAO,KAAKD,wCAAL,CAA8CD,WAA9C,EAA2DH,oBAA3D,CAAP;AACD,WAND;;AAQA,cAAG,CAACP,WAAW,OAAX,CAAJ,EAAyB;AACvBA,uBAAW,OAAX,IAAsB,SAAtB;AACD;AACF;;AAEDW,iDAAyCD,WAAzC,EAAsDG,gBAAtD,EAAwE;AACtE,iBAAOH,YAAYI,KAAZ,CAAkBC,SAASF,iBAAiBG,QAAjB,CAA0BD,KAA1B,CAA3B,CAAP;AACD;AAhDkC;;yBAAhBvB,e","file":"forces-structure.js","sourcesContent":["import d3 from \"src/external/d3.v5.js\";\n\nexport default class ForcesStructure {\n  constructor(individuals, groups) {\n    this.individuals = individuals\n    this.groups = groups\n    this._sortGroupsByLentgh()\n    this._enrichIndividualsWithGroupInformation();\n  }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  getNodesWithDrawingInformationForGroups(groups) {\n    return\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _enrichIndividualsWithGroupInformation() {\n    this.individuals.forEach( individual => {\n      this._setGroupOfIndividual(individual);\n    })\n  }\n  \n  _sortGroupsByLentgh() {\n    this.groups.sort(function (group1, group2) { return group2.themes.length - group1.themes.length })\n  }\n  \n  _setGroupOfIndividual(individual) {\n    let l3ThemesOfIndividual = individual.themes['L3']\n    \n    this.groups.some((group) => {\n      let groupThemes = group.themes\n      if(this._groupThemesAreSubsetOfIndividualsThemes(groupThemes, l3ThemesOfIndividual)) {\n        individual['group'] = group.name\n      }\n      return this._groupThemesAreSubsetOfIndividualsThemes(groupThemes, l3ThemesOfIndividual)\n    })\n    \n    if(!individual['group']) {\n      individual['group'] = 'nothing'\n    }\n  }\n  \n  _groupThemesAreSubsetOfIndividualsThemes(groupThemes, individualThemes) {\n    return groupThemes.every(theme => individualThemes.includes(theme));\n  }\n}\n\n"]}