@carbon/charts 0.41.76 → 0.41.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -222,24 +222,21 @@ var CirclePack = /** @class */ (function (_super) {
222
222
  }
223
223
  childrenData = datum.children.map(function (child) {
224
224
  if (child !== null) {
225
- // sum up the children values if there are any 3rd level
226
- var value = void 0;
225
+ // retrieve the children values if there are any 3rd level
227
226
  if (typeof child.data.value === 'number') {
228
- value = child.data.value;
229
227
  return {
230
228
  label: child.data.name,
231
- value: value,
229
+ value: child.data.value,
232
230
  };
233
231
  }
234
232
  else {
235
- value = child.data.children.reduce(function (a, b) { return a + b.value; }, 0);
236
233
  return {
237
234
  label: child.data.name,
238
235
  labelIcon: canvasZoomEnabled &&
239
236
  hierarchyLevel <= 2
240
237
  ? self.getZoomIcon()
241
238
  : null,
242
- value: value,
239
+ value: child.value,
243
240
  };
244
241
  }
245
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD,aAAa;AACb,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC;IAAgC,8BAAS;IAAzC;QAAA,qEA0cC;QAzcA,UAAI,GAAG,aAAa,CAAC;QAmMrB,yBAAmB,GAAG,UAAC,KAAkB;YAChC,IAAA,4CAAc,CAAkB;YAExC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,aAAa,CAAC;iBACxB,UAAU,CACV,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,yBAAyB,CACzB,CACD;iBACA,IAAI,CAAC,SAAS,EAAE,UAAC,CAAC;gBAClB,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;oBAC7D,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,0BAAoB,GAAG,UAAC,KAAkB;YACzC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,aAAa,CAAC;iBACxB,UAAU,CACV,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,4BAA4B,CAC5B,CACD;iBACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;;IA4OH,CAAC;IAtcA,2BAAM,GAAN,UAAO,OAAc;QAArB,iBAoHC;QApHM,wBAAA,EAAA,cAAc;QACpB,2BAA2B;QAC3B,IAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAA;;UAEJ,EAFM,gBAAK,EAAE,kBAEb,CAAC;QAEH,8DAA8D;QAC9D,oDAAoD;QACpD,kDAAkD;QAClD,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC5B,gDAAgD;YAChD,uDAAuD;YACvD,OAAO;SACP;QAED,mCAAmC;QACnC,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC9C,iDAAiD;QACjD,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC9C,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACtD,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAC1C,OAAO,EACP,YAAY,EACZ,SAAS,CACT,CAAC;QAEF,0CAA0C;QAC1C,uEAAuE;QACvE,IAAI,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE;YAChE,uDAAuD;YACvD,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;SAC5D;QAED,IAAM,IAAI,GAAG,WAAW,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;aACjD,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC;aACxB,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CAAC;QAEpC,IAAM,UAAU,GAAG,MAAM,EAAE;aACzB,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACrB,OAAO,CAAC,UAAC,CAAC;YACV,iDAAiD;YACjD,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;gBAClB,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC;gBAC/C,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEJ,IAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;aAC/B,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,CAAC;aACT,MAAM,CAAC,UAAC,IAAI;YACZ,kCAAkC;YAClC,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC;QACrC,CAAC,CAAC,CAAC;QAEJ,oBAAoB;QACpB,IAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5D,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAE3D,IAAM,eAAe,GAAG,OAAO;aAC7B,KAAK,EAAE;aACP,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAExB,eAAe;aACb,KAAK,CAAC,OAAO,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,UAAC,CAAC;YAChB,IAAM,aAAa,GAClB,iBAAiB,IAAI,cAAc,KAAK,CAAC;gBACxC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACnC,cAAc,EAAE;oBACf,mBAAmB,CAAC,IAAI;oBACxB,mBAAmB,CAAC,MAAM;iBAC1B;gBACD,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa;gBACnC,iBAAiB,EAAE,CAAC,CAAC,QAAQ;oBAC5B,CAAC,CAAC,UAAQ,aAAe;oBACzB,CAAC,CAAC,oBAAkB,aAAe;aACpC,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAA7C,CAA6C,CAAC;aACnE,KAAK,CAAC,QAAQ,EAAE,UAAC,CAAC;YAClB,OAAA,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAA7C,CAA6C,CAC7C;aACA,IAAI,CAAC,IAAI,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aACtB,IAAI,CAAC,IAAI,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aACtB,UAAU,CACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,8BAA8B,EAC9B,OAAO,CACP,CACD;aACA,IAAI,CAAC,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aACrB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAClB,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAErE,IAAI,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAC9B,IAAI,CAAC,KAAK,EACV,eAAe,EACf,aAAa,CAAC,kBAAkB,CAChC,CAAC;YACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,UAAU,EAAE;YAChB,qDAAqD;YACrD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC1B;QAED,wCAAwC;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,mDAAmD;IACnD,wCAAmB,GAAnB,UAAoB,SAAS;QAA7B,iBAWC;QAVA,IAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,aAAa,CAAC;aACxB,MAAM,CACN,UAAC,CAAC,IAAK,OAAA,IAAI,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,KAAK,CAAC,CAAC,IAAI,EAAhB,CAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAArD,CAAqD,CAC5D;aACA,KAAK,CAAC,QAAQ,EAAE,UAAC,CAAC;YAClB,OAAA,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAA7C,CAA6C,CAC7C,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,sCAAiB,GAAjB,UAAkB,SAAS;QAC1B,IAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,aAAa,CAAC;aACxB,MAAM,CACN,UAAC,CAAC,IAAK,OAAA,IAAI,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,KAAK,CAAC,CAAC,IAAI,EAAhB,CAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAArD,CAAqD,CAC5D;aACA,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,iCAAY,GAAZ,UAAa,IAAI;QAChB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YACvD,IACC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI;gBAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAApB,CAAoB,CAAC,EACpD;gBACD,OAAO,OAAO,CAAC;aACf;SACD;QACD,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,uCAAkB,GAAlB;QACS,IAAA,6BAAM,CAAmB;QACjC,iDAAiD;QACjD,MAAM,CAAC,gBAAgB,CACtB,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QACF,gDAAgD;QAChD,MAAM,CAAC,gBAAgB,CACtB,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;IACH,CAAC;IAED,8CAAyB,GAAzB;QACC,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;IAClC,CAAC;IAED,2CAAsB,GAAtB;QACC,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACpC,aAAa,EACb,oBAAoB,CACpB,CAAC;QAEF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACnC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACJ,CAAC;IA8BD,uDAAuD;IACvD,gCAAW,GAAX;QACC,OAAO,+ZAIA,CAAC;IACT,CAAC;IAED,iDAAiD;IACjD,sCAAiB,GAAjB;QACC,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,aAAa,CAAC;aACxB,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK;YAC/B,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAExC,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACtD,IAAM,QAAQ,GACb,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxD,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,YAAY,EACZ,SAAS,CACT,CAAC;YAEF,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,QAAQ,EAAE;gBACd,wCAAwC;gBACxC,IAAI,YAAY,GAAG,EAAE,CAAC;gBACtB,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,WAAW,GAAG,IAAI,CAAC;gBACvB,IAAI,KAAK,CAAC,QAAQ,EAAE;oBACnB,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,EAAE;wBACzC,QAAQ,GAAG,IAAI,CAAC;wBAChB,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;qBAC1C;oBACD,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK;wBACvC,IAAI,KAAK,KAAK,IAAI,EAAE;4BACnB,wDAAwD;4BACxD,IAAI,KAAK,SAAA,CAAC;4BACV,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;gCACzC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gCAEzB,OAAO;oCACN,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;oCACtB,KAAK,EAAE,KAAK;iCACZ,CAAC;6BACF;iCAAM;gCACN,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACjC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,CAAC,KAAK,EAAX,CAAW,EACrB,CAAC,CACD,CAAC;gCAEF,OAAO;oCACN,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;oCACtB,SAAS,EACR,iBAAiB;wCACjB,cAAc,IAAI,CAAC;wCAClB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;wCACpB,CAAC,CAAC,IAAI;oCACR,KAAK,EAAE,KAAK;iCACZ,CAAC;6BACF;yBACD;oBACF,CAAC,CAAC,CAAC;oBAEH,UAAU,GAAG;wBACZ;4BACC,KAAK,EAAE,OAAO;4BACd,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,IAAI,EAAE,IAAI;yBACV;qBACD,CAAC;oBACF,kCAAkC;oBAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBACvC;qBAAM;oBACN,oEAAoE;oBACpE,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;iBAC1B;gBAED,IAAI,SAAS,GAAG,gBAAgB,CAC/B,IAAI,EACJ,IAAI,CACJ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAE3B,eAAe;gBACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;oBACvD,cAAc,gBAAA;oBACd,KAAK;wBACJ;4BACC,KAAK,EAAE,SAAS;4BAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;4BACtB,SAAS,EACR,QAAQ;gCACR,iBAAiB;gCACjB,cAAc,IAAI,CAAC;gCAClB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;gCACpB,CAAC,CAAC,IAAI;4BACR,KAAK,EAAE,WAAW;yBAClB;uBACE,YAAY,EACZ,UAAU,CACb;iBACD,CAAC,CAAC;aACH;YAED,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAClC;gBACC,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;QACH,CAAC,CAAC;aACD,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK;YAC/B,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpC,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAClC;gBACC,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC;aACD,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK;YAC9B,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACnB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aACzC;YAED,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,UAAU,CAAC,eAAe,EACjC;gBACC,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;YAEF,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvD,cAAc,gBAAA;aACd,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK;YAC3B,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAErD,IAAM,QAAQ,GACb,KAAK,CAAC,WAAW,CAChB,IAAI,CAAC,UAAU,EAAE,EACjB,YAAY,EACZ,SAAS,CACT,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAEzC,IAAI,QAAQ,EAAE;gBACb,IAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAC5C,aAAa,CACb,CAAC;gBACF,IAAM,QAAQ,GAAG,MAAM,CACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CACnC,CAAC;gBACF,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAC/B,eAAe,EACf,aAAa,CAAC,kBAAkB,CAChC,CAAC;aACF;YACD,+EAA+E;iBAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBAC1D,IAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAC5C,aAAa,CACb,CAAC;gBACF,IAAM,QAAQ,GAAG,MAAM,CACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CACnC,CAAC;gBACF,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAC9B,KAAK,EACL,eAAe,EACf,aAAa,CAAC,kBAAkB,CAChC,CAAC;gBACF,qEAAqE;gBACrE,iFAAiF;gBACjF,qDAAqD;gBACrD,KAAK,CAAC,eAAe,EAAE,CAAC;aACxB;YAED,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CACjC,MAAM,CAAC,UAAU,CAAC,YAAY,EAC9B;gBACC,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CACD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4BAAO,GAAP;QACC,yBAAyB;QACzB,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,aAAa,CAAC;aACxB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;aACrB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;aACrB,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC;aACpB,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEpB,qCAAqC;QACrC,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,cAAc,CAAC,mBAAmB,CACjC,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QACF,cAAc,CAAC,mBAAmB,CACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAClC,CAAC;IACF,iBAAC;AAAD,CAAC,AA1cD,CAAgC,SAAS,GA0cxC","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { hierarchy as d3Hierarchy, pack as D3Pack } from 'd3-hierarchy';\nimport { event, select } from 'd3-selection';\n\nimport { ColorClassNameTypes, Events } from '../../interfaces/enums';\nimport { Tools } from './../../tools';\n\nexport class CirclePack extends Component {\n\ttype = 'circle-pack';\n\tfocal;\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Because of a Firefox bug with regards to sizing & d3 packs,\n\t\t// rather than checking if height or width aren't 0,\n\t\t// we have to make sure they're not smaller than 1\n\t\tif (width < 1 || height < 1) {\n\t\t\t// on first render the svg is width and height 0\n\t\t\t// the circle packing layout functionality will not run\n\t\t\treturn;\n\t\t}\n\n\t\t// data and options (zoom/not zoom)\n\t\tlet displayData = this.model.getDisplayData();\n\t\t// check if there is just one parent for the data\n\t\tconst parentNode = this.model.hasParentNode();\n\t\tconst hierarchyLevel = this.model.getHierarchyLevel();\n\t\tconst options = this.getOptions();\n\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'canvasZoom',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// check if there is one root for the data\n\t\t// that root will be the only datagroup (colorscale will be monochrome)\n\t\tif (parentNode && Tools.getProperty(displayData, 0, 'children')) {\n\t\t\t// remove want to remove the parent from being rendered\n\t\t\tdisplayData = Tools.getProperty(displayData, 0, 'children');\n\t\t}\n\n\t\tconst root = d3Hierarchy({ children: displayData })\n\t\t\t.sum((d: any) => d.value)\n\t\t\t.sort((a, b) => b.value - a.value);\n\n\t\tconst packLayout = D3Pack()\n\t\t\t.size([width, height])\n\t\t\t.padding((d) => {\n\t\t\t\t// add 3 px to account for the stroke width 1.5px\n\t\t\t\treturn d.depth >= 1\n\t\t\t\t\t? Configuration.circlePack.padding.children + 3\n\t\t\t\t\t: Configuration.circlePack.padding.mainGroup + 3;\n\t\t\t});\n\n\t\tconst nodeData = packLayout(root)\n\t\t\t.descendants()\n\t\t\t.splice(1)\n\t\t\t.filter((node) => {\n\t\t\t\t// filter based on hierarchy level\n\t\t\t\treturn node.depth <= hierarchyLevel;\n\t\t\t});\n\n\t\t// enter the circles\n\t\tconst circles = svg.selectAll('circle.node').data(nodeData);\n\n\t\tcircles.exit().attr('width', 0).attr('height', 0).remove();\n\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('node', true);\n\n\t\tenteringCircles\n\t\t\t.merge(circles)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst originalClass =\n\t\t\t\t\tcanvasZoomEnabled && hierarchyLevel === 3\n\t\t\t\t\t\t? this.getZoomClass(d)\n\t\t\t\t\t\t: '';\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\tdataGroupName: d.data.dataGroupName,\n\t\t\t\t\toriginalClassName: d.children\n\t\t\t\t\t\t? `node ${originalClass}`\n\t\t\t\t\t\t: `node node-leaf ${originalClass}`,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.style('fill', (d) => this.model.getFillColor(d.data.dataGroupName))\n\t\t\t.style('stroke', (d) =>\n\t\t\t\tthis.model.getFillColor(d.data.dataGroupName)\n\t\t\t)\n\t\t\t.attr('cx', (d) => d.x)\n\t\t\t.attr('cy', (d) => d.y)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'circlepack-leaf-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('r', (d) => d.r)\n\t\t\t.attr('opacity', 1)\n\t\t\t.attr('fill-opacity', Configuration.circlePack.circles.fillOpacity);\n\n\t\tif (canvasZoomEnabled === true && this.focal) {\n\t\t\tthis.services.canvasZoom.zoomIn(\n\t\t\t\tthis.focal,\n\t\t\t\tenteringCircles,\n\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t);\n\t\t\tthis.setBackgroundListeners();\n\t\t}\n\n\t\tif (!parentNode) {\n\t\t\t// add legend filtering if it isnt a monochrome chart\n\t\t\tthis.addLegendListeners();\n\t\t}\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// turn off the highlight class on children circles\n\tunhighlightChildren(childData) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.style('stroke', (d) =>\n\t\t\t\tthis.model.getFillColor(d.data.dataGroupName)\n\t\t\t);\n\t}\n\n\t// highlight the children circles with a stroke\n\thighlightChildren(childData) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.style('stroke', Configuration.circlePack.circles.hover.stroke);\n\t}\n\n\tgetZoomClass(node) {\n\t\tif (this.model.getHierarchyLevel() === 3 && this.focal) {\n\t\t\tif (\n\t\t\t\tnode.data === this.focal.data ||\n\t\t\t\tthis.focal.children.some((d) => d.data === node.data)\n\t\t\t) {\n\t\t\t\treturn 'focal';\n\t\t\t}\n\t\t}\n\t\treturn 'non-focal';\n\t}\n\n\taddLegendListeners() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tremoveBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getMainSVG());\n\t\tchartSvg.on('click', () => null);\n\t}\n\n\tsetBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getMainSVG());\n\t\tconst self = this;\n\t\tconst canvasSelection = this.parent.selectAll('circle.node');\n\t\tconst zoomSetting = Tools.getProperty(\n\t\t\tConfiguration,\n\t\t\t'canvasZoomSettings'\n\t\t);\n\n\t\tchartSvg.on('click', () => {\n\t\t\tself.focal = null;\n\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\tchartSvg.classed('zoomed-in', false);\n\t\t\tself.services.canvasZoom.zoomOut(canvasSelection, zoomSetting);\n\t\t});\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\treturn d.data.dataGroupName === hoveredElement.datum()['name']\n\t\t\t\t\t? 1\n\t\t\t\t\t: Configuration.circlePack.circles.fillOpacity;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\t// Zoom icon to be appended to the label in the tooltip\n\tgetZoomIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\">\n\t\t\t<polygon points=\"5.93 3.71 4.45 3.71 4.45 2.23 3.71 2.23 3.71 3.71 2.23 3.71 2.23 4.45 3.71 4.45 3.71 5.93 4.45 5.93 4.45 4.45 5.93 4.45 5.93 3.71\"/>\n\t\t\t<path d=\"M7.2,6.67a4,4,0,0,0,1-2.59A4.08,4.08,0,1,0,4.07,8.15h0a4,4,0,0,0,2.59-1L9.48,10,10,9.48Zm-3.12.77A3.34,3.34,0,1,1,7.41,4.08,3.34,3.34,0,0,1,4.08,7.44Z\"/>\n\t\t</svg>`;\n\t}\n\n\t// add event listeners for tooltip on the circles\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\tconst hierarchyLevel = self.model.getHierarchyLevel();\n\t\t\t\tconst disabled =\n\t\t\t\t\thierarchyLevel > 2 && !hoveredElement.classed('focal');\n\t\t\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\t\t\tself.model.getOptions(),\n\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t'enabled'\n\t\t\t\t);\n\n\t\t\t\tlet zoomable = false;\n\t\t\t\tif (!disabled) {\n\t\t\t\t\t// get the children data for the tooltip\n\t\t\t\t\tlet childrenData = [];\n\t\t\t\t\tlet totalValue = [];\n\t\t\t\t\tlet parentValue = null;\n\t\t\t\t\tif (datum.children) {\n\t\t\t\t\t\tif (datum.depth > 1 && canvasZoomEnabled) {\n\t\t\t\t\t\t\tzoomable = true;\n\t\t\t\t\t\t\thoveredElement.classed('clickable', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildrenData = datum.children.map((child) => {\n\t\t\t\t\t\t\tif (child !== null) {\n\t\t\t\t\t\t\t\t// sum up the children values if there are any 3rd level\n\t\t\t\t\t\t\t\tlet value;\n\t\t\t\t\t\t\t\tif (typeof child.data.value === 'number') {\n\t\t\t\t\t\t\t\t\tvalue = child.data.value;\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = child.data.children.reduce(\n\t\t\t\t\t\t\t\t\t\t(a, b) => a + b.value,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\t\t\tcanvasZoomEnabled &&\n\t\t\t\t\t\t\t\t\t\t\thierarchyLevel <= 2\n\t\t\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttotalValue = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Total',\n\t\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\t// children get a highlight stroke\n\t\t\t\t\t\tself.highlightChildren(datum.children);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if there is no children we want to display the value for the data\n\t\t\t\t\t\tparentValue = datum.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet fillColor = getComputedStyle(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tnull\n\t\t\t\t\t).getPropertyValue('fill');\n\n\t\t\t\t\t// Show tooltip\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\thoveredElement,\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolor: fillColor,\n\t\t\t\t\t\t\t\tlabel: datum.data.name,\n\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\tzoomable &&\n\t\t\t\t\t\t\t\t\tcanvasZoomEnabled &&\n\t\t\t\t\t\t\t\t\thierarchyLevel <= 2\n\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\tvalue: parentValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...childrenData,\n\t\t\t\t\t\t\t...totalValue,\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (datum.children) {\n\t\t\t\t\tself.unhighlightChildren(datum.children);\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst disabled = hoveredElement.classed('non-focal');\n\n\t\t\t\tconst zoomedIn =\n\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t\t'enabled'\n\t\t\t\t\t) && self.model.getHierarchyLevel() > 2;\n\n\t\t\t\tif (zoomedIn) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\t\t\t\t\tconst chartSvg = select(\n\t\t\t\t\t\tself.services.domUtils.getMainSVG()\n\t\t\t\t\t);\n\t\t\t\t\tchartSvg.classed('zoomed-in', false);\n\t\t\t\t\tself.focal = null;\n\t\t\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\t\t\tself.services.canvasZoom.zoomOut(\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// zoom if chart has zoom enabled and if its a depth 2 circle that has children\n\t\t\t\telse if (datum.depth === 2 && datum.children && !disabled) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\t\t\t\t\tconst chartSvg = select(\n\t\t\t\t\t\tself.services.domUtils.getMainSVG()\n\t\t\t\t\t);\n\t\t\t\t\tchartSvg.classed('zoomed-in', true);\n\t\t\t\t\tself.focal = datum;\n\t\t\t\t\tself.model.updateHierarchyLevel(3);\n\t\t\t\t\tself.services.canvasZoom.zoomIn(\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t\t// don't want the click event to propagate to the background zoom out\n\t\t\t\t\t// does not clash with the tooltip/other events because it does need to close the\n\t\t\t\t\t// tooltip on the click event in order to zoom in/out\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null)\n\t\t\t.on('click', null);\n\n\t\t// remove the listeners on the legend\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tthis.removeBackgroundListeners();\n\t}\n}\n"]}
1
+ {"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { hierarchy as d3Hierarchy, pack as D3Pack } from 'd3-hierarchy';\nimport { event, select } from 'd3-selection';\n\nimport { ColorClassNameTypes, Events } from '../../interfaces/enums';\nimport { Tools } from './../../tools';\n\nexport class CirclePack extends Component {\n\ttype = 'circle-pack';\n\tfocal;\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Because of a Firefox bug with regards to sizing & d3 packs,\n\t\t// rather than checking if height or width aren't 0,\n\t\t// we have to make sure they're not smaller than 1\n\t\tif (width < 1 || height < 1) {\n\t\t\t// on first render the svg is width and height 0\n\t\t\t// the circle packing layout functionality will not run\n\t\t\treturn;\n\t\t}\n\n\t\t// data and options (zoom/not zoom)\n\t\tlet displayData = this.model.getDisplayData();\n\t\t// check if there is just one parent for the data\n\t\tconst parentNode = this.model.hasParentNode();\n\t\tconst hierarchyLevel = this.model.getHierarchyLevel();\n\t\tconst options = this.getOptions();\n\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'canvasZoom',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// check if there is one root for the data\n\t\t// that root will be the only datagroup (colorscale will be monochrome)\n\t\tif (parentNode && Tools.getProperty(displayData, 0, 'children')) {\n\t\t\t// remove want to remove the parent from being rendered\n\t\t\tdisplayData = Tools.getProperty(displayData, 0, 'children');\n\t\t}\n\n\t\tconst root = d3Hierarchy({ children: displayData })\n\t\t\t.sum((d: any) => d.value)\n\t\t\t.sort((a, b) => b.value - a.value);\n\n\t\tconst packLayout = D3Pack()\n\t\t\t.size([width, height])\n\t\t\t.padding((d) => {\n\t\t\t\t// add 3 px to account for the stroke width 1.5px\n\t\t\t\treturn d.depth >= 1\n\t\t\t\t\t? Configuration.circlePack.padding.children + 3\n\t\t\t\t\t: Configuration.circlePack.padding.mainGroup + 3;\n\t\t\t});\n\n\t\tconst nodeData = packLayout(root)\n\t\t\t.descendants()\n\t\t\t.splice(1)\n\t\t\t.filter((node) => {\n\t\t\t\t// filter based on hierarchy level\n\t\t\t\treturn node.depth <= hierarchyLevel;\n\t\t\t});\n\n\t\t// enter the circles\n\t\tconst circles = svg.selectAll('circle.node').data(nodeData);\n\n\t\tcircles.exit().attr('width', 0).attr('height', 0).remove();\n\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('node', true);\n\n\t\tenteringCircles\n\t\t\t.merge(circles)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst originalClass =\n\t\t\t\t\tcanvasZoomEnabled && hierarchyLevel === 3\n\t\t\t\t\t\t? this.getZoomClass(d)\n\t\t\t\t\t\t: '';\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\tdataGroupName: d.data.dataGroupName,\n\t\t\t\t\toriginalClassName: d.children\n\t\t\t\t\t\t? `node ${originalClass}`\n\t\t\t\t\t\t: `node node-leaf ${originalClass}`,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.style('fill', (d) => this.model.getFillColor(d.data.dataGroupName))\n\t\t\t.style('stroke', (d) =>\n\t\t\t\tthis.model.getFillColor(d.data.dataGroupName)\n\t\t\t)\n\t\t\t.attr('cx', (d) => d.x)\n\t\t\t.attr('cy', (d) => d.y)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'circlepack-leaf-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('r', (d) => d.r)\n\t\t\t.attr('opacity', 1)\n\t\t\t.attr('fill-opacity', Configuration.circlePack.circles.fillOpacity);\n\n\t\tif (canvasZoomEnabled === true && this.focal) {\n\t\t\tthis.services.canvasZoom.zoomIn(\n\t\t\t\tthis.focal,\n\t\t\t\tenteringCircles,\n\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t);\n\t\t\tthis.setBackgroundListeners();\n\t\t}\n\n\t\tif (!parentNode) {\n\t\t\t// add legend filtering if it isnt a monochrome chart\n\t\t\tthis.addLegendListeners();\n\t\t}\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// turn off the highlight class on children circles\n\tunhighlightChildren(childData) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.style('stroke', (d) =>\n\t\t\t\tthis.model.getFillColor(d.data.dataGroupName)\n\t\t\t);\n\t}\n\n\t// highlight the children circles with a stroke\n\thighlightChildren(childData) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.style('stroke', Configuration.circlePack.circles.hover.stroke);\n\t}\n\n\tgetZoomClass(node) {\n\t\tif (this.model.getHierarchyLevel() === 3 && this.focal) {\n\t\t\tif (\n\t\t\t\tnode.data === this.focal.data ||\n\t\t\t\tthis.focal.children.some((d) => d.data === node.data)\n\t\t\t) {\n\t\t\t\treturn 'focal';\n\t\t\t}\n\t\t}\n\t\treturn 'non-focal';\n\t}\n\n\taddLegendListeners() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tremoveBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getMainSVG());\n\t\tchartSvg.on('click', () => null);\n\t}\n\n\tsetBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getMainSVG());\n\t\tconst self = this;\n\t\tconst canvasSelection = this.parent.selectAll('circle.node');\n\t\tconst zoomSetting = Tools.getProperty(\n\t\t\tConfiguration,\n\t\t\t'canvasZoomSettings'\n\t\t);\n\n\t\tchartSvg.on('click', () => {\n\t\t\tself.focal = null;\n\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\tchartSvg.classed('zoomed-in', false);\n\t\t\tself.services.canvasZoom.zoomOut(canvasSelection, zoomSetting);\n\t\t});\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\treturn d.data.dataGroupName === hoveredElement.datum()['name']\n\t\t\t\t\t? 1\n\t\t\t\t\t: Configuration.circlePack.circles.fillOpacity;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\t// Zoom icon to be appended to the label in the tooltip\n\tgetZoomIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\">\n\t\t\t<polygon points=\"5.93 3.71 4.45 3.71 4.45 2.23 3.71 2.23 3.71 3.71 2.23 3.71 2.23 4.45 3.71 4.45 3.71 5.93 4.45 5.93 4.45 4.45 5.93 4.45 5.93 3.71\"/>\n\t\t\t<path d=\"M7.2,6.67a4,4,0,0,0,1-2.59A4.08,4.08,0,1,0,4.07,8.15h0a4,4,0,0,0,2.59-1L9.48,10,10,9.48Zm-3.12.77A3.34,3.34,0,1,1,7.41,4.08,3.34,3.34,0,0,1,4.08,7.44Z\"/>\n\t\t</svg>`;\n\t}\n\n\t// add event listeners for tooltip on the circles\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\tconst hierarchyLevel = self.model.getHierarchyLevel();\n\t\t\t\tconst disabled =\n\t\t\t\t\thierarchyLevel > 2 && !hoveredElement.classed('focal');\n\t\t\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\t\t\tself.model.getOptions(),\n\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t'enabled'\n\t\t\t\t);\n\n\t\t\t\tlet zoomable = false;\n\t\t\t\tif (!disabled) {\n\t\t\t\t\t// get the children data for the tooltip\n\t\t\t\t\tlet childrenData = [];\n\t\t\t\t\tlet totalValue = [];\n\t\t\t\t\tlet parentValue = null;\n\t\t\t\t\tif (datum.children) {\n\t\t\t\t\t\tif (datum.depth > 1 && canvasZoomEnabled) {\n\t\t\t\t\t\t\tzoomable = true;\n\t\t\t\t\t\t\thoveredElement.classed('clickable', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildrenData = datum.children.map((child) => {\n\t\t\t\t\t\t\tif (child !== null) {\n\t\t\t\t\t\t\t\t// retrieve the children values if there are any 3rd level\n\t\t\t\t\t\t\t\tif (typeof child.data.value === 'number') {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tvalue: child.data.value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\t\t\tcanvasZoomEnabled &&\n\t\t\t\t\t\t\t\t\t\t\thierarchyLevel <= 2\n\t\t\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t\tvalue: child.value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttotalValue = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Total',\n\t\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\t// children get a highlight stroke\n\t\t\t\t\t\tself.highlightChildren(datum.children);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if there is no children we want to display the value for the data\n\t\t\t\t\t\tparentValue = datum.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet fillColor = getComputedStyle(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tnull\n\t\t\t\t\t).getPropertyValue('fill');\n\n\t\t\t\t\t// Show tooltip\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\thoveredElement,\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolor: fillColor,\n\t\t\t\t\t\t\t\tlabel: datum.data.name,\n\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\tzoomable &&\n\t\t\t\t\t\t\t\t\tcanvasZoomEnabled &&\n\t\t\t\t\t\t\t\t\thierarchyLevel <= 2\n\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\tvalue: parentValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...childrenData,\n\t\t\t\t\t\t\t...totalValue,\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (datum.children) {\n\t\t\t\t\tself.unhighlightChildren(datum.children);\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst disabled = hoveredElement.classed('non-focal');\n\n\t\t\t\tconst zoomedIn =\n\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t\t'enabled'\n\t\t\t\t\t) && self.model.getHierarchyLevel() > 2;\n\n\t\t\t\tif (zoomedIn) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\t\t\t\t\tconst chartSvg = select(\n\t\t\t\t\t\tself.services.domUtils.getMainSVG()\n\t\t\t\t\t);\n\t\t\t\t\tchartSvg.classed('zoomed-in', false);\n\t\t\t\t\tself.focal = null;\n\t\t\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\t\t\tself.services.canvasZoom.zoomOut(\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// zoom if chart has zoom enabled and if its a depth 2 circle that has children\n\t\t\t\telse if (datum.depth === 2 && datum.children && !disabled) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\t\t\t\t\tconst chartSvg = select(\n\t\t\t\t\t\tself.services.domUtils.getMainSVG()\n\t\t\t\t\t);\n\t\t\t\t\tchartSvg.classed('zoomed-in', true);\n\t\t\t\t\tself.focal = datum;\n\t\t\t\t\tself.model.updateHierarchyLevel(3);\n\t\t\t\t\tself.services.canvasZoom.zoomIn(\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t\t// don't want the click event to propagate to the background zoom out\n\t\t\t\t\t// does not clash with the tooltip/other events because it does need to close the\n\t\t\t\t\t// tooltip on the click event in order to zoom in/out\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.CirclePack.CIRCLE_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null)\n\t\t\t.on('click', null);\n\n\t\t// remove the listeners on the legend\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tthis.removeBackgroundListeners();\n\t}\n}\n"]}
@@ -21,7 +21,7 @@ import * as Configuration from '../../configuration';
21
21
  // D3 Imports
22
22
  import { select } from 'd3-selection';
23
23
  import { scaleBand, scaleLinear } from 'd3-scale';
24
- import { max, extent } from 'd3-array';
24
+ import { max, min, extent } from 'd3-array';
25
25
  import { lineRadial, curveLinearClosed } from 'd3-shape';
26
26
  var Radar = /** @class */ (function (_super) {
27
27
  __extends(Radar, _super);
@@ -137,9 +137,10 @@ var Radar = /** @class */ (function (_super) {
137
137
  var xScale = scaleBand()
138
138
  .domain(this.fullDataNormalized.map(function (d) { return d[angle]; }))
139
139
  .range([0, 2 * Math.PI].map(function (a) { return a - Math.PI / 2; }));
140
+ var centerPointMinValue = min(this.fullDataNormalized.map(function (d) { return d[value]; }));
140
141
  var yScale = scaleLinear()
141
142
  .domain([
142
- 0,
143
+ centerPointMinValue >= 0 ? 0 : centerPointMinValue,
143
144
  max(this.fullDataNormalized.map(function (d) { return d[value]; })),
144
145
  ])
145
146
  .range([minRange, radius])
@@ -1 +1 @@
1
- {"version":3,"file":"radar.js","sourceRoot":"","sources":["radar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, Roles, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\nimport {\n\tPoint,\n\tAngle,\n\tradialLabelPlacement,\n\tradToDeg,\n\tpolarToCartesianCoords,\n\tdistanceBetweenPointOnCircAndVerticalDiameter,\n} from '../../services/angle-utils';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { scaleBand, scaleLinear, ScaleLinear } from 'd3-scale';\nimport { max, extent } from 'd3-array';\nimport { lineRadial, curveLinearClosed } from 'd3-shape';\n\nexport class Radar extends Component {\n\ttype = 'radar';\n\tsvg: SVGElement;\n\tgroupMapsTo: string;\n\tuniqueKeys: string[];\n\tuniqueGroups: string[];\n\tfullDataNormalized: any;\n\tgroupedDataNormalized: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight lines on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst data = this.model.getData();\n\t\tconst groupedData = this.model.getGroupedData();\n\t\tconst options = this.getOptions();\n\t\tconst { angle, value } = Tools.getProperty(options, 'radar', 'axes');\n\t\tconst groupMapsTo = Tools.getProperty(options, 'data', 'groupMapsTo');\n\t\tconst {\n\t\t\txLabelPadding,\n\t\t\tyLabelPadding,\n\t\t\tyTicksNumber,\n\t\t\tminRange,\n\t\t\txAxisRectHeight,\n\t\t} = Configuration.radar;\n\n\t\tthis.uniqueKeys = Array.from(new Set(data.map((d) => d[angle])));\n\t\tthis.uniqueGroups = Array.from(\n\t\t\tnew Set(data.map((d) => d[groupMapsTo]))\n\t\t);\n\t\tthis.fullDataNormalized = this.normalizeFlatData(data);\n\t\tthis.groupedDataNormalized = this.normalizeGroupedData(groupedData);\n\n\t\tconst labelHeight = this.getLabelDimensions(this.uniqueKeys[0]).height;\n\t\tconst margin = 2 * (labelHeight + yLabelPadding);\n\t\tconst size = Math.min(width, height);\n\t\tconst diameter = size - margin;\n\t\tconst radius = diameter / 2;\n\n\t\tif (radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// given a key, return the corresponding angle in radiants\n\t\t// rotated by -PI/2 because we want angle 0° at -y (12 o’clock)\n\t\tconst xScale = scaleBand<string>()\n\t\t\t.domain(this.fullDataNormalized.map((d) => d[angle]))\n\t\t\t.range(\n\t\t\t\t[0, 2 * Math.PI].map((a) => a - Math.PI / 2) as [Angle, Angle]\n\t\t\t);\n\n\t\tconst yScale = scaleLinear()\n\t\t\t.domain([\n\t\t\t\t0,\n\t\t\t\tmax(this.fullDataNormalized.map((d) => d[value]) as number[]),\n\t\t\t])\n\t\t\t.range([minRange, radius])\n\t\t\t.nice(yTicksNumber);\n\t\tconst yTicks = yScale.ticks(yTicksNumber);\n\n\t\tconst colorScale = (group: string): string =>\n\t\t\tthis.model.getFillColor(group);\n\n\t\t// constructs a new radial line generator\n\t\t// the angle accessor returns the angle in radians with 0° at -y (12 o’clock)\n\t\t// so map back the angle\n\t\tconst radialLineGenerator = lineRadial<any>()\n\t\t\t.angle((d) => xScale(d[angle]) + Math.PI / 2)\n\t\t\t.radius((d) => yScale(d[value]))\n\t\t\t.curve(curveLinearClosed);\n\n\t\t// compute the space that each x label needs\n\t\tconst horizSpaceNeededByEachXLabel = this.uniqueKeys.map((key) => {\n\t\t\tconst tickWidth = this.getLabelDimensions(key).width;\n\t\t\t// compute the distance between the point that the label rapresents and the vertical diameter\n\t\t\tconst distanceFromDiameter = distanceBetweenPointOnCircAndVerticalDiameter(\n\t\t\t\txScale(key),\n\t\t\t\tradius\n\t\t\t);\n\t\t\t// the space each label occupies is the sum of these two values\n\t\t\treturn tickWidth + distanceFromDiameter;\n\t\t});\n\t\tconst leftPadding = max(horizSpaceNeededByEachXLabel);\n\n\t\t// center coordinates\n\t\tconst c: Point = {\n\t\t\tx: leftPadding + xLabelPadding,\n\t\t\ty: height / 2,\n\t\t};\n\n\t\t/////////////////////////////\n\t\t// Drawing the radar\n\t\t/////////////////////////////\n\n\t\t// y axes\n\t\tconst yAxes = DOMUtils.appendOrSelect(svg, 'g.y-axes').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst yAxisUpdate = yAxes\n\t\t\t.selectAll('path')\n\t\t\t.data(yTicks, (tick) => tick);\n\t\t// for each tick, create array of data corresponding to the points composing the shape\n\t\tconst shapeData = (tick: number) =>\n\t\t\tthis.uniqueKeys.map((key) => ({ [angle]: key, [value]: tick }));\n\t\tyAxisUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('path')\n\t\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`)\n\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_y_axes_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t\t.attr('d', (tick) =>\n\t\t\t\t\t\t\t\tradialLineGenerator(shapeData(tick))\n\t\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_axes_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`)\n\t\t\t\t\t\t.attr('d', (tick) =>\n\t\t\t\t\t\t\tradialLineGenerator(shapeData(tick))\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_axes_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('d', (tick) =>\n\t\t\t\t\t\t\tradialLineGenerator(shapeData(tick))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\t// x axes\n\t\tconst xAxes = DOMUtils.appendOrSelect(svg, 'g.x-axes').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst xAxisUpdate = xAxes\n\t\t\t.selectAll('line')\n\t\t\t.data(this.uniqueKeys, (key) => key);\n\t\txAxisUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('line')\n\t\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr('class', (key) => `x-axis-${Tools.kebabCase(key)}`) // replace spaces with -\n\t\t\t\t\t.attr('stroke-dasharray', '0')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).x\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).y\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).x\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).y\n\t\t\t\t\t)\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_x_axes_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_axes_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_axes_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\t// x labels\n\t\tconst xLabels = DOMUtils.appendOrSelect(svg, 'g.x-labels').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst xLabelUpdate = xLabels.selectAll('text').data(this.uniqueKeys);\n\t\txLabelUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text((key) => key)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).x\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).y\n\t\t\t\t\t)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'text-anchor',\n\t\t\t\t\t\t(key) => radialLabelPlacement(xScale(key)).textAnchor\n\t\t\t\t\t)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'dominant-baseline',\n\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\tradialLabelPlacement(xScale(key)).dominantBaseline\n\t\t\t\t\t)\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_x_labels_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_labels_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_labels_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\t// blobs\n\t\tconst blobs = DOMUtils.appendOrSelect(svg, 'g.blobs').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst blobUpdate = blobs\n\t\t\t.selectAll('path')\n\t\t\t.data(this.groupedDataNormalized, (group) => group.name);\n\n\t\tblobUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('path')\n\t\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\t\toriginalClassName: 'blob',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t? () =>\n\t\t\t\t\t\t\t\t\t`translate(${c.x}, ${c.y}) scale(${\n\t\t\t\t\t\t\t\t\t\t1 + Math.random() * 0.35\n\t\t\t\t\t\t\t\t\t})`\n\t\t\t\t\t\t\t: `translate(${c.x}, ${c.y})`\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (group) => colorScale(group.name))\n\t\t\t\t\t.style('fill-opacity', Configuration.radar.opacity.selected)\n\t\t\t\t\t.style('stroke', (group) => colorScale(group.name))\n\n\t\t\t\t\t.call((selection) => {\n\t\t\t\t\t\tconst selectionUpdate = selection.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_blobs_enter',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (animate) {\n\t\t\t\t\t\t\tselectionUpdate\n\t\t\t\t\t\t\t\t.delay(() => Math.random() * 30)\n\t\t\t\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tselectionUpdate\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t\t.attr('d', (group) =>\n\t\t\t\t\t\t\t\tradialLineGenerator(group.data)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t(update) => {\n\t\t\t\tupdate\n\t\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\t\toriginalClassName: 'blob',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (group) => colorScale(group.name))\n\t\t\t\t\t.style('stroke', (group) => colorScale(group.name));\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_blobs_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`)\n\t\t\t\t\t\t.attr('d', (group) => radialLineGenerator(group.data))\n\t\t\t\t);\n\t\t\t},\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) => {\n\t\t\t\t\tconst selectionUpdate = selection.transition(\n\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t'radar_blobs_exit',\n\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tif (animate) {\n\t\t\t\t\t\tselectionUpdate\n\t\t\t\t\t\t\t.delay(() => Math.random() * 30)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t`translate(${c.x}, ${c.y}) scale(${\n\t\t\t\t\t\t\t\t\t\t1 + Math.random() * 0.35\n\t\t\t\t\t\t\t\t\t})`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tselectionUpdate.attr('opacity', 0).remove();\n\t\t\t\t})\n\t\t);\n\n\t\t// data dots\n\t\tconst dots = DOMUtils.appendOrSelect(svg, 'g.dots').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst dotsUpdate = dots\n\t\t\t.selectAll('circle')\n\t\t\t.data(this.fullDataNormalized);\n\t\tdotsUpdate\n\t\t\t.join(\n\t\t\t\t(enter) =>\n\t\t\t\t\tenter.append('circle').attr('role', Roles.GRAPHICS_SYMBOL),\n\t\t\t\t(update) => update,\n\t\t\t\t(exit) => exit.remove()\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: Tools.kebabCase(d[angle]),\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t'cx',\n\t\t\t\t(d) =>\n\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\txScale(d[angle]),\n\t\t\t\t\t\tyScale(d[value]),\n\t\t\t\t\t\tc\n\t\t\t\t\t).x\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t'cy',\n\t\t\t\t(d) =>\n\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\txScale(d[angle]),\n\t\t\t\t\t\tyScale(d[value]),\n\t\t\t\t\t\tc\n\t\t\t\t\t).y\n\t\t\t)\n\t\t\t.attr('r', 0)\n\t\t\t.attr('opacity', 0)\n\t\t\t.style('fill', (d) => colorScale(d[groupMapsTo]));\n\n\t\t// rectangles\n\t\tconst xAxesRect = DOMUtils.appendOrSelect(svg, 'g.x-axes-rect').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst xAxisRectUpdate = xAxesRect\n\t\t\t.selectAll('rect')\n\t\t\t.data(this.uniqueKeys);\n\t\txAxisRectUpdate\n\t\t\t.join(\n\t\t\t\t(enter) =>\n\t\t\t\t\tenter.append('rect').attr('role', Roles.GRAPHICS_SYMBOL),\n\t\t\t\t(update) => update,\n\t\t\t\t(exit) => exit.remove()\n\t\t\t)\n\t\t\t.attr('x', c.x)\n\t\t\t.attr('y', c.y - xAxisRectHeight / 2)\n\t\t\t.attr('width', yScale.range()[1])\n\t\t\t.attr('height', xAxisRectHeight)\n\t\t\t.style('fill', 'red')\n\t\t\t.style('fill-opacity', 0)\n\t\t\t.attr(\n\t\t\t\t'transform',\n\t\t\t\t(key) => `rotate(${radToDeg(xScale(key))}, ${c.x}, ${c.y})`\n\t\t\t);\n\n\t\t// y labels (show only the min and the max labels)\n\t\tconst yLabels = DOMUtils.appendOrSelect(svg, 'g.y-labels').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst yLabelUpdate = yLabels.selectAll('text').data(extent(yTicks));\n\t\tyLabelUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.text((tick) => tick)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).x + yLabelPadding\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).y\n\t\t\t\t\t)\n\t\t\t\t\t.style('text-anchor', 'start')\n\t\t\t\t\t.style('dominant-baseline', 'middle')\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_y_labels_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_labels_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.text((tick) => tick)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x',\n\t\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x + yLabelPadding\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y',\n\t\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_labels_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\tconst alignment = Tools.getProperty(options, 'radar', 'alignment');\n\n\t\tconst alignmentOffset = DOMUtils.getAlignmentOffset(\n\t\t\talignment,\n\t\t\tsvg,\n\t\t\tthis.getParent()\n\t\t);\n\t\tsvg.attr('transform', `translate(${alignmentOffset}, 0)`);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t// append temporarily the label to get the exact space that it occupies\n\tgetLabelDimensions = (label: string) => {\n\t\tconst tmpTick = DOMUtils.appendOrSelect(\n\t\t\tthis.getContainerSVG(),\n\t\t\t`g.tmp-tick`\n\t\t);\n\t\tconst tmpTickText = DOMUtils.appendOrSelect(tmpTick, `text`).text(\n\t\t\tlabel\n\t\t);\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(\n\t\t\ttmpTickText.node(),\n\t\t\t{ useBBox: true }\n\t\t);\n\t\ttmpTick.remove();\n\t\treturn { width, height };\n\t};\n\n\t// Given a flat array of objects, if there are missing data on key,\n\t// creates corresponding data with value = null\n\tnormalizeFlatData = (dataset: any) => {\n\t\tconst options = this.getOptions();\n\t\tconst { angle, value } = Tools.getProperty(options, 'radar', 'axes');\n\t\tconst groupMapsTo = Tools.getProperty(options, 'data', 'groupMapsTo');\n\t\tconst completeBlankData = Tools.flatMapDeep(\n\t\t\tthis.uniqueKeys.map((key) => {\n\t\t\t\treturn this.uniqueGroups.map((group) => ({\n\t\t\t\t\t[angle]: key,\n\t\t\t\t\t[groupMapsTo]: group,\n\t\t\t\t\t[value]: null,\n\t\t\t\t}));\n\t\t\t})\n\t\t);\n\t\treturn Tools.merge(completeBlankData, dataset);\n\t};\n\n\t// Given a a grouped array of objects, if there are missing data on key,\n\t// creates corresponding data with value = null\n\tnormalizeGroupedData = (dataset: any) => {\n\t\tconst options = this.getOptions();\n\t\tconst { angle, value } = Tools.getProperty(options, 'radar', 'axes');\n\t\tconst groupMapsTo = Tools.getProperty(options, 'data', 'groupMapsTo');\n\t\treturn dataset.map(({ name, data }) => {\n\t\t\tconst completeBlankData = this.uniqueKeys.map((k) => ({\n\t\t\t\t[groupMapsTo]: name,\n\t\t\t\t[angle]: k,\n\t\t\t\t[value]: null,\n\t\t\t}));\n\t\t\treturn { name, data: Tools.merge(completeBlankData, data) };\n\t\t});\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tthis.parent\n\t\t\t.selectAll('g.blobs path')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-blob')\n\t\t\t)\n\t\t\t.style('fill-opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum().name) {\n\t\t\t\t\treturn Configuration.radar.opacity.unselected;\n\t\t\t\t}\n\t\t\t\treturn Configuration.radar.opacity.selected;\n\t\t\t})\n\t\t\t.style('stroke-opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum().name) {\n\t\t\t\t\treturn Configuration.radar.opacity.unselected;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('g.blobs path')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-blob')\n\t\t\t)\n\t\t\t.style('fill-opacity', Configuration.radar.opacity.selected)\n\t\t\t.style('stroke-opacity', 1);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('.x-axes-rect > rect')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst {\n\t\t\taxes: { angle },\n\t\t} = Tools.getProperty(this.getOptions(), 'radar');\n\n\t\t// events on x axes rects\n\t\tthis.parent\n\t\t\t.selectAll('.x-axes-rect > rect')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Radar.X_AXIS_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst axisLine = self.parent.select(\n\t\t\t\t\t`.x-axes .x-axis-${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\t\t\t\tconst dots = self.parent.selectAll(\n\t\t\t\t\t`.dots circle.${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\n\t\t\t\t// Change style\n\t\t\t\taxisLine\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('stroke-dasharray', '4 4');\n\t\t\t\tdots.classed('hovered', true)\n\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t.attr('r', Configuration.radar.dotsRadius);\n\n\t\t\t\t// get the items that should be highlighted\n\t\t\t\tconst itemsToHighlight = self.fullDataNormalized.filter(\n\t\t\t\t\t(d) => d[angle] === datum\n\t\t\t\t);\n\n\t\t\t\tconst options = self.getOptions();\n\t\t\t\tconst { groupMapsTo } = options.data;\n\t\t\t\tconst valueMapsTo = Tools.getProperty(\n\t\t\t\t\toptions,\n\t\t\t\t\t'radar',\n\t\t\t\t\t'axes',\n\t\t\t\t\t'value'\n\t\t\t\t);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: itemsToHighlight\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(datum) => typeof datum[valueMapsTo] === 'number'\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\t\tvalue: datum[valueMapsTo],\n\t\t\t\t\t\t\tcolor: self.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Radar.X_AXIS_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Radar.X_AXIS_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst axisLine = self.parent.select(\n\t\t\t\t\t`.x-axes .x-axis-${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\t\t\t\tconst dots = self.parent.selectAll(\n\t\t\t\t\t`.dots circle.${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\n\t\t\t\t// Change style\n\t\t\t\taxisLine\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr('stroke-dasharray', '0');\n\t\t\t\tdots.classed('hovered', false).attr('opacity', 0).attr('r', 0);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Radar.X_AXIS_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"radar.js","sourceRoot":"","sources":["radar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, Roles, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\nimport {\n\tPoint,\n\tAngle,\n\tradialLabelPlacement,\n\tradToDeg,\n\tpolarToCartesianCoords,\n\tdistanceBetweenPointOnCircAndVerticalDiameter,\n} from '../../services/angle-utils';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport { max, min, extent } from 'd3-array';\nimport { lineRadial, curveLinearClosed } from 'd3-shape';\n\nexport class Radar extends Component {\n\ttype = 'radar';\n\tsvg: SVGElement;\n\tgroupMapsTo: string;\n\tuniqueKeys: string[];\n\tuniqueGroups: string[];\n\tfullDataNormalized: any;\n\tgroupedDataNormalized: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight lines on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst data = this.model.getData();\n\t\tconst groupedData = this.model.getGroupedData();\n\t\tconst options = this.getOptions();\n\t\tconst { angle, value } = Tools.getProperty(options, 'radar', 'axes');\n\t\tconst groupMapsTo = Tools.getProperty(options, 'data', 'groupMapsTo');\n\t\tconst {\n\t\t\txLabelPadding,\n\t\t\tyLabelPadding,\n\t\t\tyTicksNumber,\n\t\t\tminRange,\n\t\t\txAxisRectHeight,\n\t\t} = Configuration.radar;\n\n\t\tthis.uniqueKeys = Array.from(new Set(data.map((d) => d[angle])));\n\t\tthis.uniqueGroups = Array.from(\n\t\t\tnew Set(data.map((d) => d[groupMapsTo]))\n\t\t);\n\t\tthis.fullDataNormalized = this.normalizeFlatData(data);\n\t\tthis.groupedDataNormalized = this.normalizeGroupedData(groupedData);\n\n\t\tconst labelHeight = this.getLabelDimensions(this.uniqueKeys[0]).height;\n\t\tconst margin = 2 * (labelHeight + yLabelPadding);\n\t\tconst size = Math.min(width, height);\n\t\tconst diameter = size - margin;\n\t\tconst radius = diameter / 2;\n\n\t\tif (radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// given a key, return the corresponding angle in radiants\n\t\t// rotated by -PI/2 because we want angle 0° at -y (12 o’clock)\n\t\tconst xScale = scaleBand<string>()\n\t\t\t.domain(this.fullDataNormalized.map((d) => d[angle]))\n\t\t\t.range(\n\t\t\t\t[0, 2 * Math.PI].map((a) => a - Math.PI / 2) as [Angle, Angle]\n\t\t\t);\n\n\t\tconst centerPointMinValue = min(\n\t\t\tthis.fullDataNormalized.map((d) => d[value]) as number[]\n\t\t);\n\t\tconst yScale = scaleLinear()\n\t\t\t.domain([\n\t\t\t\tcenterPointMinValue >= 0 ? 0 : centerPointMinValue,\n\t\t\t\tmax(this.fullDataNormalized.map((d) => d[value]) as number[]),\n\t\t\t])\n\t\t\t.range([minRange, radius])\n\t\t\t.nice(yTicksNumber);\n\t\tconst yTicks = yScale.ticks(yTicksNumber);\n\n\t\tconst colorScale = (group: string): string =>\n\t\t\tthis.model.getFillColor(group);\n\n\t\t// constructs a new radial line generator\n\t\t// the angle accessor returns the angle in radians with 0° at -y (12 o’clock)\n\t\t// so map back the angle\n\t\tconst radialLineGenerator = lineRadial<any>()\n\t\t\t.angle((d) => xScale(d[angle]) + Math.PI / 2)\n\t\t\t.radius((d) => yScale(d[value]))\n\t\t\t.curve(curveLinearClosed);\n\n\t\t// compute the space that each x label needs\n\t\tconst horizSpaceNeededByEachXLabel = this.uniqueKeys.map((key) => {\n\t\t\tconst tickWidth = this.getLabelDimensions(key).width;\n\t\t\t// compute the distance between the point that the label rapresents and the vertical diameter\n\t\t\tconst distanceFromDiameter = distanceBetweenPointOnCircAndVerticalDiameter(\n\t\t\t\txScale(key),\n\t\t\t\tradius\n\t\t\t);\n\t\t\t// the space each label occupies is the sum of these two values\n\t\t\treturn tickWidth + distanceFromDiameter;\n\t\t});\n\t\tconst leftPadding = max(horizSpaceNeededByEachXLabel);\n\n\t\t// center coordinates\n\t\tconst c: Point = {\n\t\t\tx: leftPadding + xLabelPadding,\n\t\t\ty: height / 2,\n\t\t};\n\n\t\t/////////////////////////////\n\t\t// Drawing the radar\n\t\t/////////////////////////////\n\n\t\t// y axes\n\t\tconst yAxes = DOMUtils.appendOrSelect(svg, 'g.y-axes').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst yAxisUpdate = yAxes\n\t\t\t.selectAll('path')\n\t\t\t.data(yTicks, (tick) => tick);\n\t\t// for each tick, create array of data corresponding to the points composing the shape\n\t\tconst shapeData = (tick: number) =>\n\t\t\tthis.uniqueKeys.map((key) => ({ [angle]: key, [value]: tick }));\n\t\tyAxisUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('path')\n\t\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`)\n\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_y_axes_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t\t.attr('d', (tick) =>\n\t\t\t\t\t\t\t\tradialLineGenerator(shapeData(tick))\n\t\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_axes_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`)\n\t\t\t\t\t\t.attr('d', (tick) =>\n\t\t\t\t\t\t\tradialLineGenerator(shapeData(tick))\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_axes_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('d', (tick) =>\n\t\t\t\t\t\t\tradialLineGenerator(shapeData(tick))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\t// x axes\n\t\tconst xAxes = DOMUtils.appendOrSelect(svg, 'g.x-axes').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst xAxisUpdate = xAxes\n\t\t\t.selectAll('line')\n\t\t\t.data(this.uniqueKeys, (key) => key);\n\t\txAxisUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('line')\n\t\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr('class', (key) => `x-axis-${Tools.kebabCase(key)}`) // replace spaces with -\n\t\t\t\t\t.attr('stroke-dasharray', '0')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).x\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).y\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).x\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t(key) => polarToCartesianCoords(xScale(key), 0, c).y\n\t\t\t\t\t)\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_x_axes_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_axes_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x1',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y1',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[0],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x2',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y2',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1],\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_axes_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\t// x labels\n\t\tconst xLabels = DOMUtils.appendOrSelect(svg, 'g.x-labels').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst xLabelUpdate = xLabels.selectAll('text').data(this.uniqueKeys);\n\t\txLabelUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text((key) => key)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).x\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).y\n\t\t\t\t\t)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'text-anchor',\n\t\t\t\t\t\t(key) => radialLabelPlacement(xScale(key)).textAnchor\n\t\t\t\t\t)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'dominant-baseline',\n\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\tradialLabelPlacement(xScale(key)).dominantBaseline\n\t\t\t\t\t)\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_x_labels_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_labels_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y',\n\t\t\t\t\t\t\t(key) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\txScale(key),\n\t\t\t\t\t\t\t\t\tyScale.range()[1] + xLabelPadding,\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_x_labels_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\t// blobs\n\t\tconst blobs = DOMUtils.appendOrSelect(svg, 'g.blobs').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst blobUpdate = blobs\n\t\t\t.selectAll('path')\n\t\t\t.data(this.groupedDataNormalized, (group) => group.name);\n\n\t\tblobUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('path')\n\t\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\t\toriginalClassName: 'blob',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t? () =>\n\t\t\t\t\t\t\t\t\t`translate(${c.x}, ${c.y}) scale(${\n\t\t\t\t\t\t\t\t\t\t1 + Math.random() * 0.35\n\t\t\t\t\t\t\t\t\t})`\n\t\t\t\t\t\t\t: `translate(${c.x}, ${c.y})`\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (group) => colorScale(group.name))\n\t\t\t\t\t.style('fill-opacity', Configuration.radar.opacity.selected)\n\t\t\t\t\t.style('stroke', (group) => colorScale(group.name))\n\n\t\t\t\t\t.call((selection) => {\n\t\t\t\t\t\tconst selectionUpdate = selection.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_blobs_enter',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (animate) {\n\t\t\t\t\t\t\tselectionUpdate\n\t\t\t\t\t\t\t\t.delay(() => Math.random() * 30)\n\t\t\t\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tselectionUpdate\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t\t.attr('d', (group) =>\n\t\t\t\t\t\t\t\tradialLineGenerator(group.data)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t(update) => {\n\t\t\t\tupdate\n\t\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\t\toriginalClassName: 'blob',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (group) => colorScale(group.name))\n\t\t\t\t\t.style('stroke', (group) => colorScale(group.name));\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_blobs_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr('transform', `translate(${c.x}, ${c.y})`)\n\t\t\t\t\t\t.attr('d', (group) => radialLineGenerator(group.data))\n\t\t\t\t);\n\t\t\t},\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) => {\n\t\t\t\t\tconst selectionUpdate = selection.transition(\n\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t'radar_blobs_exit',\n\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tif (animate) {\n\t\t\t\t\t\tselectionUpdate\n\t\t\t\t\t\t\t.delay(() => Math.random() * 30)\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t`translate(${c.x}, ${c.y}) scale(${\n\t\t\t\t\t\t\t\t\t\t1 + Math.random() * 0.35\n\t\t\t\t\t\t\t\t\t})`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tselectionUpdate.attr('opacity', 0).remove();\n\t\t\t\t})\n\t\t);\n\n\t\t// data dots\n\t\tconst dots = DOMUtils.appendOrSelect(svg, 'g.dots').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst dotsUpdate = dots\n\t\t\t.selectAll('circle')\n\t\t\t.data(this.fullDataNormalized);\n\t\tdotsUpdate\n\t\t\t.join(\n\t\t\t\t(enter) =>\n\t\t\t\t\tenter.append('circle').attr('role', Roles.GRAPHICS_SYMBOL),\n\t\t\t\t(update) => update,\n\t\t\t\t(exit) => exit.remove()\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: Tools.kebabCase(d[angle]),\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t'cx',\n\t\t\t\t(d) =>\n\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\txScale(d[angle]),\n\t\t\t\t\t\tyScale(d[value]),\n\t\t\t\t\t\tc\n\t\t\t\t\t).x\n\t\t\t)\n\t\t\t.attr(\n\t\t\t\t'cy',\n\t\t\t\t(d) =>\n\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\txScale(d[angle]),\n\t\t\t\t\t\tyScale(d[value]),\n\t\t\t\t\t\tc\n\t\t\t\t\t).y\n\t\t\t)\n\t\t\t.attr('r', 0)\n\t\t\t.attr('opacity', 0)\n\t\t\t.style('fill', (d) => colorScale(d[groupMapsTo]));\n\n\t\t// rectangles\n\t\tconst xAxesRect = DOMUtils.appendOrSelect(svg, 'g.x-axes-rect').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst xAxisRectUpdate = xAxesRect\n\t\t\t.selectAll('rect')\n\t\t\t.data(this.uniqueKeys);\n\t\txAxisRectUpdate\n\t\t\t.join(\n\t\t\t\t(enter) =>\n\t\t\t\t\tenter.append('rect').attr('role', Roles.GRAPHICS_SYMBOL),\n\t\t\t\t(update) => update,\n\t\t\t\t(exit) => exit.remove()\n\t\t\t)\n\t\t\t.attr('x', c.x)\n\t\t\t.attr('y', c.y - xAxisRectHeight / 2)\n\t\t\t.attr('width', yScale.range()[1])\n\t\t\t.attr('height', xAxisRectHeight)\n\t\t\t.style('fill', 'red')\n\t\t\t.style('fill-opacity', 0)\n\t\t\t.attr(\n\t\t\t\t'transform',\n\t\t\t\t(key) => `rotate(${radToDeg(xScale(key))}, ${c.x}, ${c.y})`\n\t\t\t);\n\n\t\t// y labels (show only the min and the max labels)\n\t\tconst yLabels = DOMUtils.appendOrSelect(svg, 'g.y-labels').attr(\n\t\t\t'role',\n\t\t\tRoles.GROUP\n\t\t);\n\t\tconst yLabelUpdate = yLabels.selectAll('text').data(extent(yTicks));\n\t\tyLabelUpdate.join(\n\t\t\t(enter) =>\n\t\t\t\tenter\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t.text((tick) => tick)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).x + yLabelPadding\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t).y\n\t\t\t\t\t)\n\t\t\t\t\t.style('text-anchor', 'start')\n\t\t\t\t\t.style('dominant-baseline', 'middle')\n\t\t\t\t\t.call((selection) =>\n\t\t\t\t\t\tselection\n\t\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t\t'radar_y_labels_enter',\n\t\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t),\n\t\t\t(update) =>\n\t\t\t\tupdate.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_labels_update',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.text((tick) => tick)\n\t\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'x',\n\t\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).x + yLabelPadding\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'y',\n\t\t\t\t\t\t\t(tick) =>\n\t\t\t\t\t\t\t\tpolarToCartesianCoords(\n\t\t\t\t\t\t\t\t\t-Math.PI / 2,\n\t\t\t\t\t\t\t\t\tyScale(tick),\n\t\t\t\t\t\t\t\t\tc\n\t\t\t\t\t\t\t\t).y\n\t\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t(exit) =>\n\t\t\t\texit.call((selection) =>\n\t\t\t\t\tselection\n\t\t\t\t\t\t.transition(\n\t\t\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t\t\t'radar_y_labels_exit',\n\t\t\t\t\t\t\t\tanimate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.attr('opacity', 0)\n\t\t\t\t\t\t.remove()\n\t\t\t\t)\n\t\t);\n\n\t\tconst alignment = Tools.getProperty(options, 'radar', 'alignment');\n\n\t\tconst alignmentOffset = DOMUtils.getAlignmentOffset(\n\t\t\talignment,\n\t\t\tsvg,\n\t\t\tthis.getParent()\n\t\t);\n\t\tsvg.attr('transform', `translate(${alignmentOffset}, 0)`);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t// append temporarily the label to get the exact space that it occupies\n\tgetLabelDimensions = (label: string) => {\n\t\tconst tmpTick = DOMUtils.appendOrSelect(\n\t\t\tthis.getContainerSVG(),\n\t\t\t`g.tmp-tick`\n\t\t);\n\t\tconst tmpTickText = DOMUtils.appendOrSelect(tmpTick, `text`).text(\n\t\t\tlabel\n\t\t);\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(\n\t\t\ttmpTickText.node(),\n\t\t\t{ useBBox: true }\n\t\t);\n\t\ttmpTick.remove();\n\t\treturn { width, height };\n\t};\n\n\t// Given a flat array of objects, if there are missing data on key,\n\t// creates corresponding data with value = null\n\tnormalizeFlatData = (dataset: any) => {\n\t\tconst options = this.getOptions();\n\t\tconst { angle, value } = Tools.getProperty(options, 'radar', 'axes');\n\t\tconst groupMapsTo = Tools.getProperty(options, 'data', 'groupMapsTo');\n\t\tconst completeBlankData = Tools.flatMapDeep(\n\t\t\tthis.uniqueKeys.map((key) => {\n\t\t\t\treturn this.uniqueGroups.map((group) => ({\n\t\t\t\t\t[angle]: key,\n\t\t\t\t\t[groupMapsTo]: group,\n\t\t\t\t\t[value]: null,\n\t\t\t\t}));\n\t\t\t})\n\t\t);\n\t\treturn Tools.merge(completeBlankData, dataset);\n\t};\n\n\t// Given a a grouped array of objects, if there are missing data on key,\n\t// creates corresponding data with value = null\n\tnormalizeGroupedData = (dataset: any) => {\n\t\tconst options = this.getOptions();\n\t\tconst { angle, value } = Tools.getProperty(options, 'radar', 'axes');\n\t\tconst groupMapsTo = Tools.getProperty(options, 'data', 'groupMapsTo');\n\t\treturn dataset.map(({ name, data }) => {\n\t\t\tconst completeBlankData = this.uniqueKeys.map((k) => ({\n\t\t\t\t[groupMapsTo]: name,\n\t\t\t\t[angle]: k,\n\t\t\t\t[value]: null,\n\t\t\t}));\n\t\t\treturn { name, data: Tools.merge(completeBlankData, data) };\n\t\t});\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tthis.parent\n\t\t\t.selectAll('g.blobs path')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-blob')\n\t\t\t)\n\t\t\t.style('fill-opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum().name) {\n\t\t\t\t\treturn Configuration.radar.opacity.unselected;\n\t\t\t\t}\n\t\t\t\treturn Configuration.radar.opacity.selected;\n\t\t\t})\n\t\t\t.style('stroke-opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum().name) {\n\t\t\t\t\treturn Configuration.radar.opacity.unselected;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('g.blobs path')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-blob')\n\t\t\t)\n\t\t\t.style('fill-opacity', Configuration.radar.opacity.selected)\n\t\t\t.style('stroke-opacity', 1);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('.x-axes-rect > rect')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst {\n\t\t\taxes: { angle },\n\t\t} = Tools.getProperty(this.getOptions(), 'radar');\n\n\t\t// events on x axes rects\n\t\tthis.parent\n\t\t\t.selectAll('.x-axes-rect > rect')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Radar.X_AXIS_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst axisLine = self.parent.select(\n\t\t\t\t\t`.x-axes .x-axis-${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\t\t\t\tconst dots = self.parent.selectAll(\n\t\t\t\t\t`.dots circle.${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\n\t\t\t\t// Change style\n\t\t\t\taxisLine\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('stroke-dasharray', '4 4');\n\t\t\t\tdots.classed('hovered', true)\n\t\t\t\t\t.attr('opacity', 1)\n\t\t\t\t\t.attr('r', Configuration.radar.dotsRadius);\n\n\t\t\t\t// get the items that should be highlighted\n\t\t\t\tconst itemsToHighlight = self.fullDataNormalized.filter(\n\t\t\t\t\t(d) => d[angle] === datum\n\t\t\t\t);\n\n\t\t\t\tconst options = self.getOptions();\n\t\t\t\tconst { groupMapsTo } = options.data;\n\t\t\t\tconst valueMapsTo = Tools.getProperty(\n\t\t\t\t\toptions,\n\t\t\t\t\t'radar',\n\t\t\t\t\t'axes',\n\t\t\t\t\t'value'\n\t\t\t\t);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: itemsToHighlight\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(datum) => typeof datum[valueMapsTo] === 'number'\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\t\tvalue: datum[valueMapsTo],\n\t\t\t\t\t\t\tcolor: self.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t})),\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Radar.X_AXIS_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Radar.X_AXIS_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst axisLine = self.parent.select(\n\t\t\t\t\t`.x-axes .x-axis-${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\t\t\t\tconst dots = self.parent.selectAll(\n\t\t\t\t\t`.dots circle.${Tools.kebabCase(datum)}`\n\t\t\t\t);\n\n\t\t\t\t// Change style\n\t\t\t\taxisLine\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr('stroke-dasharray', '0');\n\t\t\t\tdots.classed('hovered', false).attr('opacity', 0).attr('r', 0);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Radar.X_AXIS_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t});\n\t}\n}\n"]}
@@ -283,12 +283,14 @@ var Scatter = /** @class */ (function (_super) {
283
283
  if (!self.configs.filled) {
284
284
  var filled_1 = self.getOptions().points.filled;
285
285
  var domainIdentifier_1 = self.services.cartesianScales.getDomainIdentifier(datum);
286
+ var isFilled_1 = self.model.getIsFilled(datum[groupMapsTo], datum[domainIdentifier_1], datum, filled_1);
286
287
  hoveredElement
287
- .classed('unfilled', !self.model.getIsFilled(datum[groupMapsTo], datum[domainIdentifier_1], datum, filled_1))
288
+ .classed('unfilled', !isFilled_1)
288
289
  .style('fill', function (d) {
289
- return filled_1
290
- ? self.model.getFillColor(d[groupMapsTo], d[domainIdentifier_1], d)
291
- : null;
290
+ if (isFilled_1 || filled_1) {
291
+ return self.model.getFillColor(d[groupMapsTo], d[domainIdentifier_1], d);
292
+ }
293
+ return null;
292
294
  });
293
295
  }
294
296
  // Dispatch mouse event
@@ -1 +1 @@
1
- {"version":3,"file":"scatter.js","sourceRoot":"","sources":["scatter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Roles, Events, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\n\nexport class Scatter extends Component {\n\ttype = 'scatter';\n\tscatterData: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tif (fadeInOnChartHolderMouseover) {\n\t\t\t// Fade-in scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\t\tthis.handleChartHolderOnHover\n\t\t\t);\n\t\t\t// Fade-out scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\t\tthis.handleChartHolderOnMouseOut\n\t\t\t);\n\t\t}\n\t}\n\n\tfilterBasedOnZoomDomain(data) {\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\tdata\n\t\t);\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain !== undefined) {\n\t\t\treturn data.filter(\n\t\t\t\t(d) =>\n\t\t\t\t\td[domainIdentifier].getTime() > zoomDomain[0].getTime() &&\n\t\t\t\t\td[domainIdentifier].getTime() < zoomDomain[1].getTime()\n\t\t\t);\n\t\t}\n\t\treturn data;\n\t}\n\n\tgetScatterData() {\n\t\tconst options = this.getOptions();\n\n\t\tconst { stacked } = this.configs;\n\n\t\tlet scatterData;\n\t\tif (stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tscatterData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\t\t} else {\n\t\t\tscatterData = this.model\n\t\t\t\t.getDisplayData(this.configs.groups)\n\t\t\t\t.filter((d) => {\n\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] !== undefined &&\n\t\t\t\t\t\td[rangeIdentifier] !== null\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t// filter out datapoints that aren't part of the zoomed domain\n\t\treturn this.filterBasedOnZoomDomain(scatterData);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst isScatterEnabled =\n\t\t\tTools.getProperty(this.getOptions(), 'points', 'enabled') ||\n\t\t\tTools.getProperty(this.getOptions(), 'bubble', 'enabled');\n\n\t\tif (!isScatterEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Update data on dot groups\n\t\tconst circles = svg\n\t\t\t.selectAll('circle.dot')\n\t\t\t.data(\n\t\t\t\tthis.getScatterData(),\n\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum[domainIdentifier]}`\n\t\t\t);\n\n\t\t// Remove circles that need to be removed\n\t\tcircles.exit().attr('opacity', 0).remove();\n\n\t\t// Add the dot groups that need to be introduced\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('dot', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styling & position\n\t\tconst circlesToStyle = enteringCircles.merge(circles);\n\t\tthis.styleCircles(circlesToStyle, animate);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// A value is an anomaly if is above all defined domain and range thresholds\n\tisDatapointThresholdAnomaly(datum: any, index: number) {\n\t\tconst { handleThresholds } = this.configs;\n\t\tif (!handleThresholds) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\n\t\t// Get highest domain and range thresholds\n\t\tconst [\n\t\t\txThreshold,\n\t\t\tyThreshold,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tthis.services.cartesianScales.getHighestDomainThreshold(),\n\t\t\tthis.services.cartesianScales.getHighestRangeThreshold(),\n\t\t\torientation\n\t\t);\n\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\t// Get datum x and y values\n\t\tconst xValue = getXValue(datum, index);\n\t\tconst yValue = getYValue(datum, index);\n\n\t\t// To be an anomaly, the value has to be higher or equal than the threshold value\n\t\t// (if are present, both range and domain threshold values)\n\t\tif (yThreshold && xThreshold) {\n\t\t\treturn (\n\t\t\t\tyValue <= yThreshold.scaleValue &&\n\t\t\t\txValue >= xThreshold.scaleValue\n\t\t\t);\n\t\t}\n\n\t\tif (yThreshold) {\n\t\t\treturn yValue <= yThreshold.scaleValue;\n\t\t}\n\n\t\tif (xThreshold) {\n\t\t\treturn xValue >= xThreshold.scaleValue;\n\t\t}\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { filled, fillOpacity } = options.points;\n\t\tconst { cartesianScales, transitions } = this.services;\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tconst isFilled = this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t\tconst classNamesNeeded = isFilled\n\t\t\t\t\t? [ColorClassNameTypes.FILL, ColorClassNameTypes.STROKE]\n\t\t\t\t\t: [ColorClassNameTypes.STROKE];\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: classNamesNeeded,\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Set class to highlight the dots that are above all the thresholds, in both directions (vertical and horizontal)\n\t\t\t.classed('threshold-anomaly', (d, i) =>\n\t\t\t\tthis.isDatapointThresholdAnomaly(d, i)\n\t\t\t)\n\t\t\t.classed('filled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.classed('unfilled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn !this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.transition(\n\t\t\t\ttransitions.getTransition('scatter-update-enter', animate)\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t.attr('r', options.points.radius)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tif (\n\t\t\t\t\tthis.model.getIsFilled(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', filled ? fillOpacity : 1)\n\t\t\t.attr('opacity', fadeInOnChartHolderMouseover ? 0 : 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'point')\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t});\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleChartHolderOnHover = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-hover-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\thandleChartHolderOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 0);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-scatter')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst { groupMapsTo } = self.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\t\toriginalClassName: hoveredElement.attr('class'),\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tconst bubbleOptions = Tools.getProperty(\n\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t'bubble'\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: Tools.getProperty(\n\t\t\t\t\t\t\t\tbubbleOptions,\n\t\t\t\t\t\t\t\t'radiusLabel'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum[\n\t\t\t\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\t\t\t\tbubbleOptions,\n\t\t\t\t\t\t\t\t\t\t'radiusMapsTo'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (!self.configs.filled) {\n\t\t\t\t\tconst { filled } = self.getOptions().points;\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed(\n\t\t\t\t\t\t\t'unfilled',\n\t\t\t\t\t\t\t!self.model.getIsFilled(\n\t\t\t\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\t\t\t\tdatum[domainIdentifier],\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\tfilled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('fill', (d) =>\n\t\t\t\t\t\t\tfilled\n\t\t\t\t\t\t\t\t? self.model.getFillColor(\n\t\t\t\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\t\t\t\td\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst { events } = this.services;\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\tthis.handleChartHolderOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleChartHolderOnMouseOut\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"scatter.js","sourceRoot":"","sources":["scatter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Roles, Events, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\n\nexport class Scatter extends Component {\n\ttype = 'scatter';\n\tscatterData: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tif (fadeInOnChartHolderMouseover) {\n\t\t\t// Fade-in scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\t\tthis.handleChartHolderOnHover\n\t\t\t);\n\t\t\t// Fade-out scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\t\tthis.handleChartHolderOnMouseOut\n\t\t\t);\n\t\t}\n\t}\n\n\tfilterBasedOnZoomDomain(data) {\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\tdata\n\t\t);\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain !== undefined) {\n\t\t\treturn data.filter(\n\t\t\t\t(d) =>\n\t\t\t\t\td[domainIdentifier].getTime() > zoomDomain[0].getTime() &&\n\t\t\t\t\td[domainIdentifier].getTime() < zoomDomain[1].getTime()\n\t\t\t);\n\t\t}\n\t\treturn data;\n\t}\n\n\tgetScatterData() {\n\t\tconst options = this.getOptions();\n\n\t\tconst { stacked } = this.configs;\n\n\t\tlet scatterData;\n\t\tif (stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tscatterData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\t\t} else {\n\t\t\tscatterData = this.model\n\t\t\t\t.getDisplayData(this.configs.groups)\n\t\t\t\t.filter((d) => {\n\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] !== undefined &&\n\t\t\t\t\t\td[rangeIdentifier] !== null\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t// filter out datapoints that aren't part of the zoomed domain\n\t\treturn this.filterBasedOnZoomDomain(scatterData);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst isScatterEnabled =\n\t\t\tTools.getProperty(this.getOptions(), 'points', 'enabled') ||\n\t\t\tTools.getProperty(this.getOptions(), 'bubble', 'enabled');\n\n\t\tif (!isScatterEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Update data on dot groups\n\t\tconst circles = svg\n\t\t\t.selectAll('circle.dot')\n\t\t\t.data(\n\t\t\t\tthis.getScatterData(),\n\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum[domainIdentifier]}`\n\t\t\t);\n\n\t\t// Remove circles that need to be removed\n\t\tcircles.exit().attr('opacity', 0).remove();\n\n\t\t// Add the dot groups that need to be introduced\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('dot', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styling & position\n\t\tconst circlesToStyle = enteringCircles.merge(circles);\n\t\tthis.styleCircles(circlesToStyle, animate);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// A value is an anomaly if is above all defined domain and range thresholds\n\tisDatapointThresholdAnomaly(datum: any, index: number) {\n\t\tconst { handleThresholds } = this.configs;\n\t\tif (!handleThresholds) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\n\t\t// Get highest domain and range thresholds\n\t\tconst [\n\t\t\txThreshold,\n\t\t\tyThreshold,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tthis.services.cartesianScales.getHighestDomainThreshold(),\n\t\t\tthis.services.cartesianScales.getHighestRangeThreshold(),\n\t\t\torientation\n\t\t);\n\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\t// Get datum x and y values\n\t\tconst xValue = getXValue(datum, index);\n\t\tconst yValue = getYValue(datum, index);\n\n\t\t// To be an anomaly, the value has to be higher or equal than the threshold value\n\t\t// (if are present, both range and domain threshold values)\n\t\tif (yThreshold && xThreshold) {\n\t\t\treturn (\n\t\t\t\tyValue <= yThreshold.scaleValue &&\n\t\t\t\txValue >= xThreshold.scaleValue\n\t\t\t);\n\t\t}\n\n\t\tif (yThreshold) {\n\t\t\treturn yValue <= yThreshold.scaleValue;\n\t\t}\n\n\t\tif (xThreshold) {\n\t\t\treturn xValue >= xThreshold.scaleValue;\n\t\t}\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { filled, fillOpacity } = options.points;\n\t\tconst { cartesianScales, transitions } = this.services;\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tconst isFilled = this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t\tconst classNamesNeeded = isFilled\n\t\t\t\t\t? [ColorClassNameTypes.FILL, ColorClassNameTypes.STROKE]\n\t\t\t\t\t: [ColorClassNameTypes.STROKE];\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: classNamesNeeded,\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Set class to highlight the dots that are above all the thresholds, in both directions (vertical and horizontal)\n\t\t\t.classed('threshold-anomaly', (d, i) =>\n\t\t\t\tthis.isDatapointThresholdAnomaly(d, i)\n\t\t\t)\n\t\t\t.classed('filled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.classed('unfilled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn !this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.transition(\n\t\t\t\ttransitions.getTransition('scatter-update-enter', animate)\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t.attr('r', options.points.radius)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tif (\n\t\t\t\t\tthis.model.getIsFilled(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', filled ? fillOpacity : 1)\n\t\t\t.attr('opacity', fadeInOnChartHolderMouseover ? 0 : 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'point')\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t});\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleChartHolderOnHover = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-hover-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\thandleChartHolderOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 0);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-scatter')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst { groupMapsTo } = self.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\t\toriginalClassName: hoveredElement.attr('class'),\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tconst bubbleOptions = Tools.getProperty(\n\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t'bubble'\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: Tools.getProperty(\n\t\t\t\t\t\t\t\tbubbleOptions,\n\t\t\t\t\t\t\t\t'radiusLabel'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum[\n\t\t\t\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\t\t\t\tbubbleOptions,\n\t\t\t\t\t\t\t\t\t\t'radiusMapsTo'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (!self.configs.filled) {\n\t\t\t\t\tconst { filled } = self.getOptions().points;\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\tconst isFilled = self.model.getIsFilled(\n\t\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\t\tdatum[domainIdentifier],\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t);\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('unfilled', !isFilled)\n\t\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\t\tif (isFilled || filled) {\n\t\t\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\t\t\td\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst { events } = this.services;\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\tthis.handleChartHolderOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleChartHolderOnMouseOut\n\t\t);\n\t}\n}\n"]}
package/demo/styles.css CHANGED
@@ -13018,6 +13018,7 @@ div.container .bx--snippet--multi.bx--snippet--expand .bx--snippet-container pre
13018
13018
  content: " ";
13019
13019
  display: block;
13020
13020
  position: absolute;
13021
+ z-index: 2;
13021
13022
  top: 0;
13022
13023
  left: 0;
13023
13024
  background: #f4f4f4;
@@ -13031,6 +13032,7 @@ div.container div.demo-desktop-only div.cp-message {
13031
13032
  @media screen and (max-width: 768px) {
13032
13033
  div.container div.demo-desktop-only div.cp-message {
13033
13034
  position: absolute;
13035
+ z-index: 2;
13034
13036
  top: 50%;
13035
13037
  left: 50%;
13036
13038
  transform: translate(-50%, -50%);