UNPKG

covid19-dashboard

Version:

Dashboard App displaying COVID-19 numbers by country

96 lines (79 loc) 2.85 kB
import ComponentController from '../../../node_modules/neo.mjs/src/controller/Component.mjs'; /** * @class Covid.view.WorldMapContainerController * @extends Neo.controller.Component */ class WorldMapContainerController extends ComponentController { static getConfig() {return { /** * @member {String} className='Covid.view.WorldMapContainerController' * @protected */ className: 'Covid.view.WorldMapContainerController', /** * @member {Number} heatRuleChangeDelay=150 */ heatRuleChangeDelay: 150, /** * @member {String|null} heatRuleChangeTimeout=null */ heatRuleChangeTimeout: null }} changeHeatRule(value) { const chartId = this.getReference('worldmap').id; Neo.main.addon.AmCharts.setProperty({ id : this.getReference('worldmap').id, path : 'series.values.0.heatRules.values.0.maxValue', value : value }); Neo.main.addon.AmCharts.callMethod({ id : chartId, path: 'series.values.0.invalidateData' }); } /** * @param {Object} data */ onHeatRuleFieldChange(data) { const me = this; clearTimeout(me.heatRuleChangeTimeout); me.heatRuleChangeTimeout = setTimeout(() => { me.changeHeatRule(data.value); }, me.heatRuleChangeDelay); } /** * @param {Object} data */ onSeriesButtonClick(data) { const me = this, chartId = me.getReference('worldmap').id, countryData = [...me.getParent().data]; const colorMap = { active : '#64b5f6', cases : '#bbbbbb', deaths : '#fb6767', recovered: '#28ca68' }; Neo.main.addon.AmCharts.setProperty({ id : chartId, isColor: true, path : 'series.values.0.heatRules.values.0.max', value : colorMap[data.component.series] }); Neo.main.addon.AmCharts.setProperty({ id : chartId, path : 'series.values.0.dataFields.value', value: data.component.series }); Neo.main.addon.AmCharts.callMethod({ id : chartId, path: 'series.values.0.invalidateData' }).then(() => { me.getReference('currentMapViewLabel').text = 'Current view: ' + Neo.capitalize(data.component.series); countryData.sort((a, b) => b[data.component.series] - a[data.component.series]); me.getReference('heatRuleField').value = Math.ceil(countryData[9][data.component.series] / 100) * 100; }); } } Neo.applyClassConfig(WorldMapContainerController); export {WorldMapContainerController as default};