{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/components/bp2019-individual-visualization.js"],"names":["Morph","assertCanvasWidgetInterface","AVFParser","DataProcessor","ColorStore","deepCopy","IndividualVisualization","initialize","windowTitle","headerRow","get","tabWidget","legend","inspector","_setUpGlobalControlWidget","_registerDatasetSelection","colorStore","dataProcessor","setColorStore","_setUpLegend","canvasWidgets","getContents","_initializeCanvasWidgets","_setCanvasWidgetExtents","_addEventListenerForResizing","addEventListener","event","stopPropagation","applyAction","detail","action","_updateCanvasesWithKenyaData","_applyActionToLegend","_applyActionToInspector","_applyActionToAllCanvasWidgets","unsavedChanges","_stopAllCanvasWidgets","globalControlWidget","close","_setUpControlWidgetButton","_openNewGlobalControlWidget","position","lively","pt","extent","openComponentInWindow","setDataProcessor","addListener","initializeAfterDataFetch","setToNotCollapsable","forEach","canvasWidget","_calculateVisualizationExtent","setExtent","ownExtent","getExtent","legendExtent","headerRowExtent","inspectorRootContainer","inspectorContainerExtent","margin","subPt","y","x","container","parentElement","removeEventListener","catch","datasetSelection","evt","_changeDataset","that","datasetName","target","value","_loadDatasetWithName","_updateCanvasesWithSomaliaData","data","_fetchKenyaData","initializeWithIndividualsFromKenia","_initializeColorScales","_transferDataToCanvases","_updateGlobalControlWidget","_fetchSomaliaData","initializeWithIndividualsFromSomalia","i","length","setData","loadDefaultColors","initializeWithValuesByAttribute","getValuesByAttribute","loadInferredCovidData","loadCovidSomDataMessageThemes","stop"],"mappings":"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","file":"bp2019-individual-visualization.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js'\nimport { assertCanvasWidgetInterface } from '../src/internal/individuals-as-points/common/interfaces.js'\nimport { AVFParser } from \"https://lively-kernel.org/voices/parsing-data/avf-parser.js\"\nimport DataProcessor from '../src/internal/individuals-as-points/common/data-processor.js'\nimport ColorStore from '../src/internal/individuals-as-points/common/color-store.js'\nimport { deepCopy } from '../src/internal/individuals-as-points/common/utils.js'\n\nexport default class IndividualVisualization extends Morph {\n  \n  async initialize() {\n    this.windowTitle = \"Individual visualizations\"\n    this.headerRow = this.get(\"#header-row\")\n    this.tabWidget = this.get('#canvas-tab-widget') \n    this.legend = this.get('#legend-widget') \n    this.inspector = this.get('#inspector-widget') \n    this._setUpGlobalControlWidget()\n    this._registerDatasetSelection()\n    \n    this.colorStore = new ColorStore()\n    this.dataProcessor = new DataProcessor()\n    this.dataProcessor.setColorStore(this.colorStore)\n    \n    this._setUpLegend()\n    \n    this.canvasWidgets = this.tabWidget.getContents() \n    this._initializeCanvasWidgets()\n    this._setCanvasWidgetExtents()\n    \n    this._addEventListenerForResizing()\n    this.get(\"#individual-visualization-root-container\").addEventListener(\"individual-inspected\", (event) => {\n      event.stopPropagation()\n      this.applyAction(event.detail.action)\n    })\n        \n    await this._updateCanvasesWithKenyaData(this) \n  }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  applyAction(action) {\n    this._applyActionToLegend(action) \n    this._applyActionToInspector(action) \n    this._applyActionToAllCanvasWidgets(action)\n    this._setCanvasWidgetExtents()\n  }\n  \n  unsavedChanges() {\n    if(this.canvasWidgets) this._stopAllCanvasWidgets()\n    if(this.globalControlWidget) this.globalControlWidget.close()\n    return false\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  async _setUpGlobalControlWidget() {\n    this._setUpControlWidgetButton()\n  }\n  \n  _setUpControlWidgetButton() {\n    this.get('#open-global-controls').addEventListener(\n      \"click\", () => this._openNewGlobalControlWidget())\n  }\n  \n  async _openNewGlobalControlWidget() {\n    let position = lively.pt(1000, 10)\n    let extent = lively.pt(300, 700)\n    this.globalControlWidget = await lively.openComponentInWindow('bp2019-global-control-widget', position, extent)\n    this.globalControlWidget.setDataProcessor(this.dataProcessor)\n    this.globalControlWidget.setColorStore(this.colorStore)\n    this.globalControlWidget.addListener(this)\n    this.globalControlWidget.initializeAfterDataFetch()\n    this.globalControlWidget.setToNotCollapsable()\n  }\n  \n  _setUpLegend(){\n    this.legend.setColorStore(this.colorStore)\n  }\n  \n  _initializeCanvasWidgets() {\n    this.canvasWidgets.forEach( (canvasWidget) => {\n      assertCanvasWidgetInterface(canvasWidget) \n      canvasWidget.setDataProcessor(this.dataProcessor)\n      canvasWidget.setColorStore(this.colorStore)\n      canvasWidget.addListener(this) \n    })\n  }\n  \n  _setCanvasWidgetExtents() {\n    let extent = this._calculateVisualizationExtent()\n    this.tabWidget.setExtent(extent)\n  }\n  \n  _calculateVisualizationExtent() {\n    let ownExtent = lively.getExtent(this)\n    let legendExtent = lively.getExtent(this.legend)\n    let headerRowExtent = lively.getExtent(this.headerRow)\n    let inspectorRootContainer = this.get('#inspector-container')\n    let inspectorContainerExtent = lively.getExtent(inspectorRootContainer)\n    let margin = lively.pt(10, 10)\n    \n    return ownExtent.subPt(lively.pt(0, legendExtent.y)).subPt(lively.pt(0, headerRowExtent.y)).subPt(lively.pt(inspectorContainerExtent.x, 0)).subPt(margin)\n  }\n  \n  _addEventListenerForResizing() {\n    let container = this.parentElement\n    lively.removeEventListener(\"bp2019\", container, \"extent-changed\")\n  \n    lively.addEventListener(\"bp2019\", container, \"extent-changed\", () => {\n      this._setCanvasWidgetExtents()\n    })\n  }\n  \n  _applyActionToAllCanvasWidgets(action) {\n    this.canvasWidgets.forEach((canvasWidget) => {\n      canvasWidget.applyAction(action)\n        .catch(() => {}) \n    })\n  }\n  \n  _registerDatasetSelection() {\n    let datasetSelection = this.get(\"#dataset-selection\") \n    datasetSelection.addEventListener(\"change\", (evt) => this._changeDataset(evt, this)) \n  }\n  \n  _changeDataset(evt, that) {\n    let datasetName = evt.target.value \n    this._loadDatasetWithName(datasetName, that) \n  }\n  \n  _loadDatasetWithName(datasetName, that) {\n    switch(datasetName) {\n      case 'Somalia':\n        this._updateCanvasesWithSomaliaData(that) \n        break;\n      case 'Kenya':\n        this._updateCanvasesWithKenyaData(that) \n        break;\n      default:\n        break;\n    }\n  }\n  \n  _applyActionToInspector(action) {\n    this.inspector.applyAction(action) \n  }\n  \n  _applyActionToLegend(action){\n    this.legend.applyAction(action) \n  }\n  \n  async _updateCanvasesWithKenyaData(that) {\n    that.data = await that._fetchKenyaData() \n    this.dataProcessor.initializeWithIndividualsFromKenia(that.data) \n    await that._initializeColorScales() \n    await that._transferDataToCanvases() \n    that._updateGlobalControlWidget()\n  }\n  \n  async _updateCanvasesWithSomaliaData(that) {\n    that.data = await that._fetchSomaliaData() \n    this.dataProcessor.initializeWithIndividualsFromSomalia(that.data) \n    await that._initializeColorScales() \n    await that._transferDataToCanvases() \n    that._updateGlobalControlWidget() \n  }\n  \n   async _transferDataToCanvases() {\n     for (let i = 0; i < this.canvasWidgets.length; i++) {\n       await this.canvasWidgets[i].setData(deepCopy(this.data))\n     }\n  }\n  \n  async _initializeColorScales(){\n    await this.colorStore.loadDefaultColors()\n    this.colorStore.initializeWithValuesByAttribute(this.dataProcessor.getValuesByAttribute()) \n  }\n  \n  _updateGlobalControlWidget() {\n    if (this.globalControlWidget) {\n      this.globalControlWidget.initializeAfterDataFetch()  \n    }\n  }\n  \n  async _fetchKenyaData() {\n    let data = await AVFParser.loadInferredCovidData() \n    return data \n  }\n  \n  async _fetchSomaliaData() {\n    let data = await AVFParser.loadCovidSomDataMessageThemes()\n    return data \n  }\n  \n  _stopAllCanvasWidgets() {\n    this.canvasWidgets.forEach( (canvasWidget) => {\n      if(canvasWidget.stop) {\n        canvasWidget.stop().catch(() => {})\n      }\n      \n    })\n  }\n    \n}"]}