{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/src/internal/individuals-as-points/map/map.js"],"names":["DefaultColoredCanvas","UniqueColoredCanvas","DefaultColoredMap","UniqueColoredMap","InteractiveMapCanvas","KenyaDistrictTooltip","KenyaIndividualTooltip","SomaliaDistrictTooltip","SomaliaIndividualTooltip","MapHoverer","IndividualClicker","KenyaDataHandler","SomaliaDataHandler","Zoomer","d3","Map","constructor","mapWidget","initialPointSize","width","drawingCanvas","height","individuals","geoData","dataHandler","uniqueColoredMap","defaultColoredMap","uniqueColoredCanvas","visibleIndividualCanvas","interactiveMapCanvas","individualTooltip","districtTooltip","mapHoverer","individualClicker","zoomer","setGeoData","setColorStore","colorStore","setDataProcessor","dataProcessor","clear","getContext","clearRect","hide","draw","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","createIndividualTooltip","createDistrictTooltip","addHover","addClick","drawer","canvasWindow","KenyaMap","geoEquirectangular","center","scale","translate","geoPath","locationLookupKey","locationGroupingAttribute","featureToAVF","missingDataKeys","colorAttributes","themeAttributes","individualTooltipDiv","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, KenyaIndividualTooltip, SomaliaDistrictTooltip, SomaliaIndividualTooltip } 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 = null\n    this.uniqueColoredMap = null\n    this.defaultColoredMap = null\n    this.uniqueColoredCanvas = null\n    this.visibleIndividualCanvas = null\n    this.interactiveMapCanvas = null\n    this.individualTooltip = null\n    this.districtTooltip = null\n    this.mapHoverer = null\n    this.individualClicker = null\n    this.zoomer = null\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  clear() {\n    this.mapWidget.drawingCanvas.getContext(\"2d\").clearRect(0, 0, this.width, this.height)\n    this.individualTooltip.hide()\n    this.districtTooltip.hide()\n  }\n  \n  draw() {\n    this.interactiveMapCanvas.draw()\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  \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.individualTooltip = this.createIndividualTooltip()\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.individualTooltip, 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(2200).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 = {\"Trans Nzoia\" : \"trans_nzoia\", \"Homa Bay\" : \"homa_bay\", \"Keiyo-Marakwet\" : \"elgeyo_marakwet\", \"Uasin Gishu\" : \"uasin_gishu\", \"West Pokot\" : \"west_pokot\", \"Murang'a\" : \"muranga\", \"Tharaka\": \"tharaka_nithi\", \"Taita Taveta\": \"taita_taveta\", \"Tana River\": \"tana_river\"}\n    this.missingDataKeys = [\"missing\"]\n    this.colorAttributes = [\"default\", \"age\", \"county\", \"constituency\", \"gender\", \"themes\"]\n    this.themeAttributes = [\"escalate\", \"question\", \"answer\", \"knowledge\", \"attitude\", \"behaviour\", \"about_coronavirus\", \"symptoms\", \"how_to_prevent\", \"how_to_treat\", \"what_is_govt_policy\", \"kenya_update\", \"rumour_stigma_misinfo\", \"opinion_on_govt_policy\", \"collective_hope\", \"anxiety_panic\", \"how_spread_transmitted\", \"other_theme\", \"push_back\", \"showtime_question\", \"greeting\", \"opt_in\", \"similar_content\", \"participation_incentive\", \"exclusion_complaint\", \"gratitude\", \"other\"]\n    this.geoDataUrl = \"/src/geodata/kenya-simplified-repaired.geojson\"\n  }\n  \n  createDataHandler(geoData, individuals) {\n    return new KenyaDataHandler(geoData, individuals, this.initialPointSize, this.width, this.height, this.featureToAVF, this.missingDataKeys, this.locationGroupingAttribute, this.locationLookupKey)\n  }\n  \n  createIndividualTooltip() {\n    return new KenyaIndividualTooltip(this.mapWidget.individualTooltipDiv)\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(2000).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 = {\"Gabiley\" : \"gebiley\", \"Galkaacyo\" : \"gaalkacyo\", \"Bulo Burti\" : \"bulo burto\", \"Laasqoray\" : \"lasqooray\", \"El Waq\" : \"ceel waaq\", \"Wanle Weyne\" : \"wanla weyn\", \"NC\" : \"NC\", \"NA\" : \"NA\", \"STOP\" : \"STOP\", \"CE\" : \"CE\", \"NR\" : \"NR\"}\n    this.missingDataKeys = [\"missing\"]\n    this.colorAttributes = [\"default\", \"age\", \"district\", \"gender\", \"themes\"]\n    this.themeAttributes = [\"rqa_s04e01_food_nutrition\", \"rqa_s04e01_health_services\", \"rqa_s04e01_access_to_water\", \"rqa_s04e01_hygiene\", \"rqa_s04e01_education\", \"rqa_s04e01_shelter\", \"rqa_s04e01_peace_and_security\", \"rqa_s04e01_good_governance\", \"rqa_s04e01_protection_of_rights\", \"rqa_s04e01_cooperation_between_government_and_people\", \"rqa_s04e01_cooperation_between_government_and_NGOs\", \"rqa_s04e01_NGOs_to_be_accountable_participatory\", \"rqa_s04e01_community_organisation\", \"rqa_s04e01_job_creation\", \"rqa_s04e01_build_resilience_to_drought\", \"rqa_s04e01_support_for_IDPs\", \"rqa_s04e01_information\", \"rqa_s04e01_religion\", \"rqa_s04e01_support_to_the_poor\", \"rqa_s04e01_return_and_resettlement_of_IDPs\", \"rqa_s04e01_stop_aid_dependency\", \"rqa_s04e01_farming_support\", \"rqa_s04e01_stop_clannism\", \"rqa_s04e01_economic_development\", \"rqa_s04e01_other\", \"rqa_s04e01_NA\", \"rqa_s04e01_NS\", \"rqa_s04e01_NC\", \"rqa_s04e01_NR\", \"rqa_s04e01_NIC\", \"rqa_s04e01_STOP\", \"rqa_s04e01_WS\", \"rqa_s04e01_CE\", \"rqa_s04e01_push_back\", \"rqa_s04e01_showtime_question\", \"rqa_s04e01_question\", \"rqa_s04e01_greeting\", \"rqa_s04e01_opt_in\", \"rqa_s04e02_health_service\", \"rqa_s04e02_government_stability\", \"rqa_s04e02_job_creation\", \"rqa_s04e02_economic_development\", \"rqa_s04e02_peace_and_security\", \"rqa_s04e02_education\", \"rqa_s04e02_shelter\", \"rqa_s04e02_NGOs_to_be_accountable_and_transparent\", \"rqa_s04e02_access_to_water\", \"rqa_s04e02_food_nutrition\", \"rqa_s04e02_resettlement_and_return_for_IDPs\", \"rqa_s04e02_support_for_agriculture\", \"rqa_s04e02_cooperation_between_NGOs_people_government\", \"rqa_s04e02_stop_aid_dependency\", \"rqa_s04e02_support_the_poor_IDPs\", \"rqa_s04e02_information\", \"rqa_s04e02_other\", \"rqa_s04e02_NA\", \"rqa_s04e02_NS\", \"rqa_s04e02_NC\", \"rqa_s04e02_NR\", \"rqa_s04e02_NIC\", \"rqa_s04e02_STOP\", \"rqa_s04e02_WS\", \"rqa_s04e02_CE\", \"rqa_s04e02_push_back\", \"rqa_s04e02_showtime_question\", \"rqa_s04e02_question\", \"rqa_s04e02_greeting\", \"rqa_s04e02_opt_in\"]\n    this.geoDataUrl = \"/src/geodata/somalia.geojson\"\n  }\n  \n  createDataHandler(geoData, individuals) {\n    return new SomaliaDataHandler(geoData, individuals, this.initialPointSize, this.width, this.height, this.featureToAVF, this.missingDataKeys, this.locationGroupingAttribute, this.locationLookupKey)\n  }\n  \n  createIndividualTooltip() {\n    return new SomaliaIndividualTooltip(this.mapWidget.individualTooltipDiv)\n  }\n  \n  createDistrictTooltip() {\n    return new SomaliaDistrictTooltip(this.mapWidget.districtTooltipDiv)\n  }\n}\n"]}