{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/map/map.js"],"names":["DefaultColoredCanvas","UniqueColoredCanvas","DefaultColoredMap","UniqueColoredMap","InteractiveMapCanvas","KenyaDistrictTooltip","SomaliaDistrictTooltip","MapHoverer","IndividualClicker","KenyaDataHandler","SomaliaDataHandler","Zoomer","d3","Map","constructor","mapWidget","initialPointSize","width","drawingCanvas","height","individuals","geoData","dataHandler","undefined","uniqueColoredMap","defaultColoredMap","uniqueColoredCanvas","visibleIndividualCanvas","interactiveMapCanvas","districtTooltip","mapHoverer","individualClicker","zoomer","setGeoData","setColorStore","colorStore","setDataProcessor","dataProcessor","setStrokeStyle","strokeStyle","clear","getContext","clearRect","hide","draw","updateStrokeStyle","updateZoom","addEventListenersForNavigation","addZoomToMaster","removeEventListenersForNavigation","removeZoomFromMaster","updateIndividuals","setIndividuals","calculateIndividualsPosition","imageData","path","create","Object","keys","length","result","json","bp2019url","geoDataUrl","features","createDataHandler","addDistrictsForMissingData","createDistrictColorCoding","uniquePolygonCanvas","projection","drawMap","getImageData","initializeIndividuals","uniqueIndividualCanvas","drawIndividuals","createDistrictTooltip","addHover","addClick","drawer","canvasWindow","KenyaMap","geoEquirectangular","center","scale","translate","geoPath","locationLookupKey","locationGroupingAttribute","featureToAVF","missingDataKeys","colorAttributes","themeAttributes","districtTooltipDiv","SomaliaMap"],"mappings":"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","file":"map.js","sourcesContent":["import { DefaultColoredCanvas, UniqueColoredCanvas } from \"./individualCanvas.js\"\nimport { DefaultColoredMap, UniqueColoredMap } from \"./mapCanvas.js\"\nimport { InteractiveMapCanvas } from \"./interactiveMapCanvas.js\"\nimport { KenyaDistrictTooltip, SomaliaDistrictTooltip } from \"./tooltip.js\"\nimport { MapHoverer } from \"./mapHoverer.js\"\nimport { IndividualClicker } from \"./individualClicker.js\"\nimport { KenyaDataHandler, SomaliaDataHandler } from \"./dataHandler.js\"\nimport { Zoomer } from \"./zoomer.js\"\nimport d3 from \"src/external/d3.v5.js\"\n\nclass Map {\n  constructor(mapWidget, initialPointSize) {\n    this.mapWidget = mapWidget\n    this.width = this.mapWidget.drawingCanvas.width\n    this.height = this.mapWidget.drawingCanvas.height\n    this.initialPointSize = initialPointSize\n    this.individuals = []\n    this.geoData = {}\n    this.dataHandler = undefined\n    this.uniqueColoredMap = undefined\n    this.defaultColoredMap = undefined\n    this.uniqueColoredCanvas = undefined\n    this.visibleIndividualCanvas = undefined\n    this.interactiveMapCanvas = undefined\n    this.districtTooltip = undefined\n    this.mapHoverer = undefined\n    this.individualClicker = undefined\n    this.zoomer = undefined\n  }\n  \n  setGeoData(geoData) {\n    if (geoData) {\n      this.geoData = geoData\n    }\n  }\n  \n  setColorStore(colorStore) {\n    this.colorStore = colorStore\n  }\n  \n  setDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor  \n  } \n  \n  setStrokeStyle(strokeStyle) {\n    this.interactiveMapCanvas.setStrokeStyle(strokeStyle)\n  }\n  \n  clear() {\n    this.mapWidget.drawingCanvas.getContext(\"2d\").clearRect(0, 0, this.width, this.height)\n    this.districtTooltip.hide()\n  }\n  \n  draw() {\n    this.interactiveMapCanvas.draw()\n  }\n  \n  updateStrokeStyle(strokeStyle) {\n    this.interactiveMapCanvas.updateStrokeStyle(strokeStyle)\n  }\n  \n  updateZoom() {\n    if (this.zoomer) {\n      this.zoomer.updateZoom()\n    }\n  }\n  \n  addEventListenersForNavigation() {\n    this.zoomer.addZoomToMaster()\n  }\n  \n  removeEventListenersForNavigation() {\n    this.zoomer.removeZoomFromMaster()\n  }\n  \n  updateIndividuals(individuals) {\n    this.dataHandler.setIndividuals(individuals)\n    this.dataHandler.calculateIndividualsPosition(this.imageData, this.path)\n    this.uniqueColoredCanvas.setIndividuals(this.dataHandler.individuals)\n    this.uniqueColoredCanvas.draw()\n    this.visibleIndividualCanvas.setIndividuals(this.dataHandler.individuals)\n    this.draw()\n  }\n  \n  \n  async create(individuals) {\n    this.individuals = individuals\n    if (Object.keys(this.geoData).length === 0) {\n      let result = await d3.json(bp2019url + this.geoDataUrl)\n      this.geoData = result.features\n    }\n    \n    this.dataHandler = this.createDataHandler(this.geoData, this.individuals)\n    this.dataHandler.setColorStore(this.colorStore)\n    this.dataHandler.addDistrictsForMissingData()\n    this.dataHandler.createDistrictColorCoding()\n\n    this.uniqueColoredMap = new UniqueColoredMap(this.mapWidget.uniquePolygonCanvas, this.dataHandler, this.projection)\n    this.uniqueColoredMap.setColorStore(this.colorStore)\n    this.uniqueColoredMap.drawMap()\n\n    this.defaultColoredMap = new DefaultColoredMap(this.mapWidget.drawingCanvas, this.dataHandler, this.projection)\n    this.defaultColoredMap.setColorStore(this.colorStore)\n    this.defaultColoredMap.drawMap()\n\n    this.imageData = this.mapWidget.uniquePolygonCanvas.getContext(\"2d\").getImageData(0,0,this.width,this.height) \n\n    this.dataHandler.initializeIndividuals()\n    this.dataHandler.calculateIndividualsPosition(this.imageData, this.path)\n    this.uniqueColoredCanvas = new UniqueColoredCanvas(this.mapWidget.uniqueIndividualCanvas, this.dataHandler.individuals, this.initialPointSize)\n    this.uniqueColoredCanvas.drawIndividuals()\n  \n    this.visibleIndividualCanvas = new DefaultColoredCanvas(this.mapWidget.drawingCanvas, this.dataHandler.individuals, this.initialPointSize)\n    this.visibleIndividualCanvas.drawIndividuals()\n\n    this.interactiveMapCanvas = new InteractiveMapCanvas(this.defaultColoredMap, this.visibleIndividualCanvas, this.mapWidget.drawingCanvas)\n\n    this.districtTooltip = this.createDistrictTooltip()\n\n    this.mapHoverer = new MapHoverer(this.uniqueColoredMap, this.interactiveMapCanvas, this.districtTooltip, this.dataHandler)\n    this.mapHoverer.addHover()\n\n    this.individualClicker = new IndividualClicker(this, this.mapWidget, this.dataHandler)\n    this.individualClicker.setDataProcessor(this.dataProcessor)\n    this.individualClicker.setColorStore(this.colorStore)\n    this.individualClicker.addClick()\n\n    this.zoomer = new Zoomer(this.interactiveMapCanvas, [this.uniqueColoredMap, this.uniqueColoredCanvas], this.mapWidget.drawer, this.mapWidget.canvasWindow)\n  }\n}\n\nexport class KenyaMap extends Map {\n  \n  constructor(mapWidget, initialPointSize) {\n    super(mapWidget, initialPointSize)\n    this.projection = d3.geoEquirectangular().center([37, 0]).scale(4400).translate([this.width / 2, this.height / 2])\n    this.path = d3.geoPath().projection(this.projection)\n\n    this.locationLookupKey = \"COUNTY\"\n    this.locationGroupingAttribute = \"county\"\n    this.featureToAVF = {\n      \"Trans Nzoia\" : \"trans_nzoia\", \n      \"Homa Bay\" : \"homa_bay\", \n      \"Keiyo-Marakwet\" : \"elgeyo_marakwet\", \n      \"Uasin Gishu\" : \"uasin_gishu\", \n      \"West Pokot\" : \"west_pokot\", \n      \"Murang'a\" : \"muranga\", \n      \"Tharaka\": \"tharaka_nithi\", \n      \"Taita Taveta\": \"taita_taveta\", \n      \"Tana River\": \"tana_river\"\n    }\n    this.missingDataKeys = [\"missing\"]\n    this.colorAttributes = [\"default\", \"age\", \"county\", \"constituency\", \"gender\", \"themes\"]\n    this.themeAttributes = [\n      \"escalate\", \n      \"question\", \n      \"answer\", \n      \"knowledge\", \n      \"attitude\", \n      \"behaviour\", \n      \"about_coronavirus\", \n      \"symptoms\", \n      \"how_to_prevent\", \n      \"how_to_treat\", \n      \"what_is_govt_policy\", \n      \"kenya_update\", \n      \"rumour_stigma_misinfo\", \n      \"opinion_on_govt_policy\", \n      \"collective_hope\", \n      \"anxiety_panic\", \n      \"how_spread_transmitted\", \n      \"other_theme\", \n      \"push_back\", \n      \"showtime_question\", \n      \"greeting\", \n      \"opt_in\", \n      \"similar_content\", \n      \"participation_incentive\", \n      \"exclusion_complaint\", \n      \"gratitude\", \n      \"other\"\n    ]\n    this.geoDataUrl = \"/src/geodata/kenya-simplified-repaired.geojson\"\n  }\n  \n  createDataHandler(geoData, individuals) {\n    return new KenyaDataHandler(\n      geoData, \n      individuals, \n      this.initialPointSize, \n      this.width, \n      this.height, \n      this.featureToAVF, \n      this.missingDataKeys, \n      this.locationGroupingAttribute, \n      this.locationLookupKey\n    )\n  }\n\n  createDistrictTooltip() {\n    return new KenyaDistrictTooltip(this.mapWidget.districtTooltipDiv)\n  }\n}\n\nexport class SomaliaMap extends Map {\n  \n  constructor(mapWidget, initialPointSize) {\n    super(mapWidget, initialPointSize)\n    this.projection = d3.geoEquirectangular().center([45,5]).scale(4000).translate([this.width / 2, this.height / 2])\n    this.path = d3.geoPath().projection(this.projection)\n\n    this.locationLookupKey = \"DISTRICT\"\n    this.locationGroupingAttribute = \"district\"\n    this.featureToAVF = {\n      \"Gabiley\" : \"gebiley\", \n      \"Galkaacyo\" : \"gaalkacyo\", \n      \"Bulo Burti\" : \"bulo burto\", \n      \"Laasqoray\" : \"lasqooray\", \n      \"El Waq\" : \"ceel waaq\", \n      \"Wanle Weyne\" : \"wanla weyn\", \n      \"NC\" : \"NC\", \n      \"NA\" : \"NA\", \n      \"STOP\" : \"STOP\", \n      \"CE\" : \"CE\", \n      \"NR\" : \"NR\"\n    }\n    this.missingDataKeys = [\"missing\"]\n    this.colorAttributes = [\"default\", \"age\", \"district\", \"gender\", \"themes\"]\n    this.themeAttributes = [\n      \"rqa_s04e01_food_nutrition\",\n      \"rqa_s04e01_health_services\",\n      \"rqa_s04e01_access_to_water\",\n      \"rqa_s04e01_hygiene\",\n      \"rqa_s04e01_education\",\n      \"rqa_s04e01_shelter\",\n      \"rqa_s04e01_peace_and_security\",\n      \"rqa_s04e01_good_governance\",\n      \"rqa_s04e01_protection_of_rights\",\n      \"rqa_s04e01_cooperation_between_government_and_people\",\n      \"rqa_s04e01_cooperation_between_government_and_NGOs\",\n      \"rqa_s04e01_NGOs_to_be_accountable_participatory\",\n      \"rqa_s04e01_community_organisation\",\n      \"rqa_s04e01_job_creation\",\n      \"rqa_s04e01_build_resilience_to_drought\",\n      \"rqa_s04e01_support_for_IDPs\",\n      \"rqa_s04e01_information\",\n      \"rqa_s04e01_religion\",\n      \"rqa_s04e01_support_to_the_poor\",\n      \"rqa_s04e01_return_and_resettlement_of_IDPs\",\n      \"rqa_s04e01_stop_aid_dependency\",\n      \"rqa_s04e01_farming_support\",\n      \"rqa_s04e01_stop_clannism\",\n      \"rqa_s04e01_economic_development\",\n      \"rqa_s04e01_other\",\n      \"rqa_s04e01_NA\",\n      \"rqa_s04e01_NS\",\n      \"rqa_s04e01_NC\",\n      \"rqa_s04e01_NR\",\n      \"rqa_s04e01_NIC\",\n      \"rqa_s04e01_STOP\",\n      \"rqa_s04e01_WS\",\n      \"rqa_s04e01_CE\",\n      \"rqa_s04e01_push_back\",\n      \"rqa_s04e01_showtime_question\",\n      \"rqa_s04e01_question\",\n      \"rqa_s04e01_greeting\",\n      \"rqa_s04e01_opt_in\",\n      \"rqa_s04e02_health_service\",\n      \"rqa_s04e02_government_stability\",\n      \"rqa_s04e02_job_creation\",\n      \"rqa_s04e02_economic_development\",\n      \"rqa_s04e02_peace_and_security\",\n      \"rqa_s04e02_education\",\n      \"rqa_s04e02_shelter\",\n      \"rqa_s04e02_NGOs_to_be_accountable_and_transparent\",\n      \"rqa_s04e02_access_to_water\",\n      \"rqa_s04e02_food_nutrition\",\n      \"rqa_s04e02_resettlement_and_return_for_IDPs\",\n      \"rqa_s04e02_support_for_agriculture\",\n      \"rqa_s04e02_cooperation_between_NGOs_people_government\",\n      \"rqa_s04e02_stop_aid_dependency\",\n      \"rqa_s04e02_support_the_poor_IDPs\",\n      \"rqa_s04e02_information\",\n      \"rqa_s04e02_other\",\n      \"rqa_s04e02_NA\",\n      \"rqa_s04e02_NS\",\n      \"rqa_s04e02_NC\",\n      \"rqa_s04e02_NR\",\n      \"rqa_s04e02_NIC\",\n      \"rqa_s04e02_STOP\",\n      \"rqa_s04e02_WS\",\n      \"rqa_s04e02_CE\",\n      \"rqa_s04e02_push_back\",\n      \"rqa_s04e02_showtime_question\",\n      \"rqa_s04e02_question\",\n      \"rqa_s04e02_greeting\",\n      \"rqa_s04e02_opt_in\"\n    ]\n    this.geoDataUrl = \"/src/geodata/somalia.geojson\"\n  }\n  \n  createDataHandler(geoData, individuals) {\n    return new SomaliaDataHandler(\n      geoData, \n      individuals, \n      this.initialPointSize, \n      this.width, \n      this.height, \n      this.featureToAVF, \n      this.missingDataKeys, \n      this.locationGroupingAttribute, \n      this.locationLookupKey\n    )\n  }\n\n  createDistrictTooltip() {\n    return new SomaliaDistrictTooltip(this.mapWidget.districtTooltipDiv)\n  }\n}\n"]}