{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/components/bp2019-statistic-widget.js"],"names":["Morph","BarChart","FilterActionType","deepCopy","StatisticWidget","initialize","data","rootContainer","get","currentActions","setColorStore","colorStore","setDataProcessor","dataProcessor","setCreator","creator","setData","originalData","_buildAllBarCharts","addBarChartForKeys","keys","forEach","key","addBarChartForKey","_generateBarChartForKey","close","parentElement","remove","unsavedChanges","statisticWidgetIsClosed","setExtent","extent","lively","applyAction","action","_dispatchAction","_clear","firstChild","removeChild","getType","_handleFilterAction","_handleNotSupportedAction","runOn","attributes","getAllAttributes","splice","indexOf","barChart","barChartContainer","_buildBarChartContainer","_appendBarChartContainer","barChartCanvas","generateCanvas","wrapperDiv","appendChild"],"mappings":";;;;;;;;;;;AAAOA,W;;AACAC,c;;AAEEC,sB,kDAAAA,gB;;AAEAC,c,gDAAAA,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,YAAMC,eAAN,SAA8BJ,KAA9B,CAAoC;;AAEjD,cAAMK,UAAN,GAAmB;AACjB,eAAKC,IAAL,GAAY,IAAZ;;AAEA,eAAKC,aAAL,GAAqB,KAAKC,GAAL,CAAS,kCAAT,CAArB;;AAEA,eAAKC,cAAL,GAAsB,EAAtB;AACD;;AAED;AACA;AACA;;AAEAC,sBAAcC,UAAd,EAA0B;AACxB,eAAKA,UAAL,GAAkBA,UAAlB;AACD;;AAEDC,yBAAiBC,aAAjB,EAAgC;AAC9B,eAAKA,aAAL,GAAqBA,aAArB;AACD;;AAEDC,mBAAWC,OAAX,EAAoB;AAClB,eAAKA,OAAL,GAAeA,OAAf;AACD;;AAED,cAAMC,OAAN,CAAcV,IAAd,EAAoB;AAClB,eAAKA,IAAL,GAAYA,IAAZ;AACA,eAAKW,YAAL,GAAoBX,IAApB;AACA,eAAKY,kBAAL;AACD;;AAEDC,2BAAmBC,IAAnB,EAAyB;AACvBA,eAAKC,OAAL,CAAcC,OAAO;AACnB,iBAAKC,iBAAL,CAAuBD,GAAvB;AACD,WAFD;AAGD;;AAEDC,0BAAkBD,GAAlB,EAAuB;AACrB,eAAKE,uBAAL,CAA6BF,GAA7B;AACD;;AAEDG,gBAAQ;AACN,cAAG,KAAKC,aAAR,EAAuB,KAAKA,aAAL,CAAmBC,MAAnB;AACxB;;AAEDC,yBAAiB;AACf,cAAI,KAAKb,OAAT,EAAkB;AAChB,iBAAKA,OAAL,CAAac,uBAAb;AACD;AACD,iBAAO,KAAP;AACD;;AAEDC,kBAAUC,MAAV,EAAkB;AAChBC,iBAAOF,SAAP,CAAiB,KAAKvB,aAAtB,EAAqCwB,MAArC;AACD;;AAEDE,oBAAYC,MAAZ,EAAoB;AAClB,eAAKC,eAAL,CAAqBD,MAArB;AACD;;AAED;AACA;AACA;;AAEAE,iBAAS;AACP,iBAAM,KAAK7B,aAAL,CAAmB8B,UAAzB,EAAqC;AACnC,iBAAK9B,aAAL,CAAmB+B,WAAnB,CAA+B,KAAK/B,aAAL,CAAmB8B,UAAlD;AACD;AACF;;AAEAF,wBAAgBD,MAAhB,EAAwB;AACvB,kBAAOA,OAAOK,OAAP,EAAP;AACE,iBAAMrC,gBAAN;AACE,mBAAKsC,mBAAL,CAAyBN,MAAzB;AACA;AACF;AACE,mBAAKO,yBAAL;AALJ;AAOD;;AAEDD,4BAAoBN,MAApB,EAA4B;AAC1B,eAAK5B,IAAL,GAAYH,SAAS,KAAKc,YAAd,CAAZ;AACA,eAAKX,IAAL,GAAY4B,OAAOQ,KAAP,CAAa,KAAKpC,IAAlB,CAAZ;AACA,eAAKY,kBAAL;AACA,eAAKT,cAAL,CAAoB,QAApB,IAAgCyB,MAAhC;AACD;;AAEDO,oCAA4B,CAE3B;;AAEDvB,6BAAqB;AACnB,eAAKkB,MAAL;AACA,cAAIO,aAAa,KAAK9B,aAAL,CAAmB+B,gBAAnB,EAAjB;AACAD,qBAAWE,MAAX,CAAkBF,WAAWG,OAAX,CAAmB,QAAnB,CAAlB,EAAgD,CAAhD;AACA,eAAK3B,kBAAL,CAAwBwB,UAAxB;AACD;;AAEDnB,gCAAwBF,GAAxB,EAA6B;AAC3B,cAAIyB,WAAW,IAAI9C,QAAJ,CAAa,KAAKK,IAAlB,EAAwBgB,GAAxB,EAA6B,GAA7B,EAAkC,GAAlC,CAAf;AACAyB,mBAASnC,gBAAT,CAA0B,KAAKC,aAA/B;AACAkC,mBAASrC,aAAT,CAAuB,KAAKC,UAA5B;AACA,cAAIqC,oBAAoB,KAAKC,uBAAL,CAA6BF,QAA7B,CAAxB;AACA,eAAKG,wBAAL,CAA8BF,iBAA9B;AACD;;AAEDC,gCAAwBF,QAAxB,EAAkC;AAChC,cAAII,iBAAiBJ,SAASK,cAAT,EAArB;AACA,cAAIC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACAA,qBAAWC,WAAX,CAAuBH,cAAvB;AACA,iBAAOE,UAAP;AACD;;AAEDH,iCAAyBF,iBAAzB,EAA4C;AAC1C,eAAKzC,aAAL,CAAmB+C,WAAnB,CAA+BN,iBAA/B;AACD;AApHgD;;yBAA9B5C,e","file":"bp2019-statistic-widget.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js'\nimport BarChart from '../src/internal/individuals-as-points/common/distribution-bar-chart.js'\n\nimport { FilterActionType } from '../src/internal/individuals-as-points/common/actions.js'\n\nimport { deepCopy } from \"../src/internal/individuals-as-points/common/utils.js\"\n\nexport default class StatisticWidget extends Morph {\n  \n  async initialize() {\n    this.data = null\n    \n    this.rootContainer = this.get('#statistic-widget-root-container')\n    \n    this.currentActions = {}\n  }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  setColorStore(colorStore) {\n    this.colorStore = colorStore\n  }\n  \n  setDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor\n  }\n  \n  setCreator(creator) {\n    this.creator = creator\n  }\n  \n  async setData(data) {\n    this.data = data\n    this.originalData = data\n    this._buildAllBarCharts()\n  }\n\n  addBarChartForKeys(keys) {\n    keys.forEach( key => {\n      this.addBarChartForKey(key)\n    })\n  }\n  \n  addBarChartForKey(key) {\n    this._generateBarChartForKey(key)\n  }\n  \n  close() {\n    if(this.parentElement) this.parentElement.remove()\n  }\n  \n  unsavedChanges() {\n    if (this.creator) {\n      this.creator.statisticWidgetIsClosed()\n    }\n    return false\n  }\n  \n  setExtent(extent) {\n    lively.setExtent(this.rootContainer, extent)\n  }\n  \n  applyAction(action) {\n    this._dispatchAction(action)\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _clear() {\n    while(this.rootContainer.firstChild) {\n      this.rootContainer.removeChild(this.rootContainer.firstChild)\n    }\n  }\n  \n   _dispatchAction(action) {\n    switch(action.getType()) {\n      case (FilterActionType):\n        this._handleFilterAction(action)\n        break\n      default:\n        this._handleNotSupportedAction()\n     }\n  }\n  \n  _handleFilterAction(action) {\n    this.data = deepCopy(this.originalData)\n    this.data = action.runOn(this.data)\n    this._buildAllBarCharts()\n    this.currentActions[\"filter\"] = action\n  }\n  \n  _handleNotSupportedAction() {\n    \n  }\n  \n  _buildAllBarCharts() {\n    this._clear()\n    let attributes = this.dataProcessor.getAllAttributes()\n    attributes.splice(attributes.indexOf(\"themes\"), 1)\n    this.addBarChartForKeys(attributes)\n  }\n  \n  _generateBarChartForKey(key) {\n    let barChart = new BarChart(this.data, key, 300, 300)\n    barChart.setDataProcessor(this.dataProcessor)\n    barChart.setColorStore(this.colorStore)\n    let barChartContainer = this._buildBarChartContainer(barChart)\n    this._appendBarChartContainer(barChartContainer)\n  }\n  \n  _buildBarChartContainer(barChart) {\n    let barChartCanvas = barChart.generateCanvas()\n    let wrapperDiv = <div></div>;\n    wrapperDiv.appendChild(barChartCanvas)\n    return wrapperDiv\n  }\n  \n  _appendBarChartContainer(barChartContainer) {\n    this.rootContainer.appendChild(barChartContainer)\n  }\n}\n"]}