UNPKG

@amcharts/amcharts4

Version:
841 lines (753 loc) 31.6 kB
import * as am4core from "@amcharts/amcharts4/core"; import * as am4charts from "@amcharts/amcharts4/charts"; import * as am4maps from "@amcharts/amcharts4/maps"; import am4geodata_continentsLow from "@amcharts/amcharts4-geodata/continentsLow"; import am4themes_dark from "@amcharts/amcharts4/themes/dark"; import am4themes_animated from "@amcharts/amcharts4/themes/animated"; am4core.useTheme(am4themes_animated); am4core.useTheme(am4themes_dark); // times of events let startTime = new Date(2018, 0, 13, 6).getTime(); let endTime = new Date(2018, 0, 13, 11, 59).getTime(); let launchTime = new Date(2018, 0, 13, 7, 0).getTime(); let alertTime = new Date(2018, 0, 13, 8, 7).getTime(); let cancelTime = new Date(2018, 0, 13, 8, 45).getTime(); let colorSet = new am4core.ColorSet(); let currentTime; let container = am4core.create("chartdiv", am4core.Container); container.width = am4core.percent(100); container.height = am4core.percent(100); // map chart //////////////////////////////////////////////////////// let mapChart = container.createChild(am4maps.MapChart); try { mapChart.geodata = am4geodata_continentsLow; } catch (e) { mapChart.raiseCriticalError(new Error("Map geodata could not be loaded. Please download the latest <a href=\"https://www.amcharts.com/download/download-v4/\">amcharts geodata</a> and extract its contents into the same directory as your amCharts files.")); } mapChart.projection = new am4maps.projections.Miller(); mapChart.deltaLongitude = 145; mapChart.seriesContainer.draggable = false; let polygonSeries = mapChart.series.push(new am4maps.MapPolygonSeries()); polygonSeries.useGeodata = true; polygonSeries.exclude = ["Antarctica"]; let mapImageSeries = mapChart.series.push(new am4maps.MapImageSeries()); let pyongyang = mapImageSeries.mapImages.create(); pyongyang.longitude = 125.739708; pyongyang.latitude = 39.034333; pyongyang.nonScaling = true; let pyongyangCircle = pyongyang.createChild(am4core.Circle); pyongyangCircle.fill = colorSet.getIndex(5); pyongyangCircle.stroke = pyongyangCircle.fill; pyongyangCircle.radius = 4; pyongyangCircle.tooltip = new am4core.Tooltip(); pyongyangCircle.tooltip.filters.clear(); pyongyangCircle.tooltip.background.cornerRadius = 20; pyongyangCircle.tooltip.label.padding(15, 20, 15, 20); pyongyangCircle.tooltip.background.strokeOpacity = 0; pyongyangCircle.tooltipY = -5; let koreaText = pyongyang.createChild(am4core.Label); koreaText.text = "North Korea"; koreaText.fillOpacity = 0.2; koreaText.fontSize = 20; koreaText.verticalCenter = "middle"; koreaText.horizontalCenter = "right"; koreaText.paddingRight = 15; let bomb = mapImageSeries.mapImages.create(); bomb.longitude = 125.739708; bomb.latitude = 39.034333; bomb.nonScaling = true; bomb.opacity = 0; let bombImage = bomb.createChild(am4core.Image); bombImage.width = 32; bombImage.height = 32; bombImage.href = "rocket.svg"; bombImage.verticalCenter = "middle"; bombImage.horizontalCenter = "middle"; let honolulu = mapImageSeries.mapImages.create(); honolulu.longitude = -157.887841; honolulu.latitude = 21.368213; honolulu.nonScaling = true; let bulletAlertCircle = honolulu.createChild(am4core.Circle); bulletAlertCircle.fill = am4core.color(); bulletAlertCircle.stroke = colorSet.getIndex(2); bulletAlertCircle.strokeOpacity = 1; bulletAlertCircle.radius = 5; bulletAlertCircle.strokeWidth = 2; bulletAlertCircle.visible = false; let bulletAlertAnimation = bulletAlertCircle.animate([{ property: "radius", to: 50 }, { property: "strokeOpacity", to: 0, from: 1 }], 600).loop().pause(); let honoluluCircle = honolulu.createChild(am4core.Circle); honoluluCircle.fill = colorSet.getIndex(2); honoluluCircle.stroke = honoluluCircle.fill; honoluluCircle.radius = 4; honoluluCircle.tooltipY = -5; honoluluCircle.tooltip = new am4core.Tooltip(); honoluluCircle.tooltip.filters.clear(); honoluluCircle.tooltip.background.cornerRadius = 20; honoluluCircle.tooltip.label.padding(15, 20, 15, 20); honoluluCircle.tooltip.background.strokeOpacity = 0; let hawaiiText = honolulu.createChild(am4core.Label); hawaiiText.text = "Hawaii, USA"; hawaiiText.fillOpacity = 0.1; hawaiiText.fontSize = 35; hawaiiText.verticalCenter = "middle"; hawaiiText.paddingLeft = 30; let bang = mapImageSeries.mapImages.create(); bang.longitude = -177; bang.latitude = 24; bang.nonScaling = true; let bangImage = bang.createChild(am4core.Image); bangImage.width = 50; bangImage.height = 50; bangImage.verticalCenter = "middle"; bangImage.horizontalCenter = "middle"; bangImage.href = "bang.png"; bang.opacity = 0; let mapLineSeries = mapChart.series.push(new am4maps.MapLineSeries()); let line = mapLineSeries.mapLines.create(); line.imagesToConnect = [pyongyang, bang]; line.line.strokeOpacity = 0; // it's invisible, we use it for a bomb image to follow it mapChart.homeGeoPoint = { longitude: -175, latitude: 15 }; mapChart.homeZoomLevel = 2.2; // clock chart ////////////////////////////////////////////////////////////////// let clock = mapChart.chartContainer.createChild(am4charts.GaugeChart); clock.align = "right"; clock.width = 250; clock.height = 250; clock.align = "right"; clock.zIndex = 10; clock.startAngle = -90; clock.endAngle = 270; let axis = clock.xAxes.push(new am4charts.ValueAxis()); axis.min = 0; axis.max = 12; axis.strictMinMax = true; axis.renderer.line.strokeWidth = 1; axis.renderer.line.strokeOpacity = 0.2; axis.renderer.minLabelPosition = 0.05; // hides 0 label axis.renderer.inside = true; axis.renderer.labels.template.radius = 23; axis.renderer.grid.template.disabled = true; axis.renderer.minGridDistance = 20; axis.renderer.ticks.template.length = 4; axis.renderer.ticks.template.strokeOpacity = 0.2; // clock hands let hourHand = clock.hands.push(new am4charts.ClockHand()); hourHand.radius = am4core.percent(60); hourHand.startWidth = 5; hourHand.endWidth = 5; hourHand.rotationDirection = "clockWise"; hourHand.pin.radius = 5; hourHand.zIndex = 0; let minutesHand = clock.hands.push(new am4charts.ClockHand()); minutesHand.rotationDirection = "clockWise"; minutesHand.startWidth = 2; minutesHand.endWidth = 2; minutesHand.radius = am4core.percent(78); minutesHand.zIndex = 1; function updateHands(date) { var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); // set hours hourHand.showValue(hours + minutes / 60, 0); // set minutes minutesHand.showValue(12 * (minutes + seconds / 60) / 60, 0); } /// end of clock let exploded = false; let honoluluTexts = [ { time: new Date(2018, 0, 13, 6, 7).getTime(), text: "I wonder what's on youtube..." }, { time: new Date(2018, 0, 13, 6, 30).getTime(), text: "... oooh a kitty video ..." }, { time: new Date(2018, 0, 13, 7, 10).getTime(), text: "... LOL funny ..." }, { time: new Date(2018, 0, 13, 8, 7).getTime(), text: "Huh?!?" }, { time: new Date(2018, 0, 13, 8, 15).getTime(), text: "OMG!!!" }, { time: new Date(2018, 0, 13, 8, 49).getTime(), text: "Phew!" }, { time: new Date(2018, 0, 13, 8, 59).getTime(), text: "OK, where were we?" }, { time: new Date(2018, 0, 13, 9, 20).getTime(), text: "" } ]; let pyongyangTexts = [ { time: new Date(2018, 0, 13, 6, 5).getTime(), text: "Great comrade..." }, { time: new Date(2018, 0, 13, 6, 20).getTime(), text: "WHAT!?" }, { time: new Date(2018, 0, 13, 6, 40).getTime(), text: "Please, push this button..." }, { time: new Date(2018, 0, 13, 7, 0).getTime(), text: "O.K." }, { time: new Date(2018, 0, 13, 7, 30).getTime(), text: "" }, ]; // updates all elements function setTime() { let time = new Date(startTime + (endTime - startTime) * slider.start).getTime();; let roundedTime = am4core.time.round(new Date(time), "minute").getTime(); if (roundedTime != currentTime) { currentTime = roundedTime; let count = lineSeries.dataItems.length; if (slider) { for (let i = 0; i < count; i++) { let dataItem = lineSeries.dataItems.getIndex(i); if (i < slider.start * count) { dataItem.show(500, 0, ["valueY"]); } else { dataItem.hide(500, 0, 0, ["valueY"]); } } } } // add some drama by zooming the map updateHands(new Date(time)); let bombFlyDuration = cancelTime - launchTime; let bombPosition = (time - launchTime) / bombFlyDuration; bombPosition = Math.min(1, bombPosition); bombPosition = Math.max(0, bombPosition); let oPoint = line.positionToPoint(bombPosition); let geoPoint = mapChart.seriesPointToGeo(oPoint); bomb.latitude = geoPoint.latitude; bomb.longitude = geoPoint.longitude; bomb.rotation = oPoint.angle + 90; if (bombPosition > 0 && bombPosition < 1) { bomb.opacity = 1; } if ((bombPosition >= 1 && !exploded)) { bomb.opacity = 0; bang.opacity = 1; bang.animate({ property: "opacity", to: 0, from: 1 }, 1000); exploded = true; } if (exploded && bombPosition < 1) { exploded = false; bang.opacity = 0; bomb.opacity = 1; } if (bombPosition <= 0.001) { bomb.opacity = 0; } if (time > alertTime && time < cancelTime) { if (!bulletAlertCircle.visible) { bulletAlertCircle.visible = true; bulletAlertAnimation.resume(); } } else { bulletAlertCircle.visible = false; } for (let i = 0; i < honoluluTexts.length; i++) { let honoluluText = honoluluTexts[i]; if (time > honoluluText.time) { honoluluCircle.tooltipText = honoluluText.text; } } if (honoluluCircle.tooltipText) { honoluluCircle.showTooltip(); } else { honoluluCircle.hideTooltip(); } for (let i = 0; i < pyongyangTexts.length; i++) { let pyongyangText = pyongyangTexts[i]; if (time > pyongyangText.time) { pyongyangCircle.tooltipText = pyongyangText.text; } } if (pyongyangCircle.tooltipText) { pyongyangCircle.showTooltip(); } else { pyongyangCircle.hideTooltip(); } } let chart = container.createChild(am4charts.XYChart); chart.padding(0, 50, 50, 50); let dateAxis = chart.xAxes.push(new am4charts.DateAxis()); dateAxis.tooltip.background.pointerLength = 4; dateAxis.tooltip.background.fillOpacity = 1; dateAxis.tooltip.background.fill = am4core.color("#666666"); dateAxis.tooltip.background.stroke = dateAxis.tooltip.background.fill; chart.height = 300; chart.valign = "bottom"; let gradientFill = new am4core.LinearGradient(); gradientFill.addColor(am4core.color("#000000"), 0, 0); gradientFill.addColor(am4core.color("#000000"), 1, 1); gradientFill.rotation = 90; chart.background.fill = gradientFill; //dateAxis.renderer.inside = true; dateAxis.renderer.ticks.template.disabled = true; dateAxis.renderer.grid.template.strokeDasharray = "3,3"; dateAxis.renderer.grid.template.strokeOpacity = 0.2; dateAxis.renderer.line.disabled = true; dateAxis.tooltip.dateFormatter.dateFormat = "YYYY-MM-dd HH:mm"; dateAxis.renderer.inside = false; dateAxis.renderer.labels.template.fillOpacity = 0.4; dateAxis.renderer.minLabelPosition = 0.03; let valueAxis = chart.yAxes.push(new am4charts.ValueAxis()); valueAxis.renderer.ticks.template.disabled = true; valueAxis.min = -90; valueAxis.max = 90; valueAxis.renderer.minGridDistance = 20; valueAxis.renderer.grid.template.disabled = true; valueAxis.renderer.line.disabled = true; valueAxis.tooltip.disabled = true; valueAxis.strictMinMax = true; valueAxis.renderer.labels.template.fillOpacity = 0.4; valueAxis.renderer.inside = true; let lineSeries = chart.series.push(new am4charts.LineSeries()); lineSeries.dataFields.valueY = "value"; lineSeries.dataFields.dateX = "time"; lineSeries.tooltipText = "{valueY.workingValue}%"; lineSeries.stroke = am4core.color("#3f2698"); lineSeries.tooltip.background.fillOpacity = 0; lineSeries.tooltip.autoTextColor = false; lineSeries.tooltip.label.fill = am4core.color("#ffffff"); lineSeries.tooltip.filters.clear(); lineSeries.tooltip.pointerOrientation = "vertical"; lineSeries.strokeWidth = 2; lineSeries.tensionX = 0.7; let negativeRange = valueAxis.createSeriesRange(lineSeries); negativeRange.value = 0; negativeRange.endValue = - 100; negativeRange.contents.stroke = am4core.color("#84279a"); negativeRange.contents.fill = negativeRange.contents.stroke; chart.dateFormatter.inputDateFormat = "yyyy-MM-dd HH:mm"; chart.cursor = new am4charts.XYCursor(); chart.cursor.behavior = "none"; chart.cursor.xAxis = dateAxis; chart.cursor.lineX.strokeOpacity = 0; chart.events.on("ready", () => { createSlider(); }) let slider; let alertStart = dateAxis.axisRanges.create(); alertStart.date = new Date(alertTime); alertStart.grid.stroke = am4core.color("#ffffff"); alertStart.grid.strokeWidth = 1; alertStart.grid.strokeOpacity = 0.5; alertStart.grid.strokeDasharray = undefined; alertStart.label.text = "Citizens alerted"; alertStart.label.horizontalCenter = "right"; alertStart.label.fillOpacity = 0.7; alertStart.label.dy = -215; let alertCanceled = dateAxis.axisRanges.create(); alertCanceled.date = new Date(cancelTime); alertCanceled.grid.stroke = am4core.color("#ffffff"); alertCanceled.grid.strokeOpacity = 0.5; alertCanceled.grid.strokeDasharray = undefined; alertCanceled.label.text = "Alert canceled"; alertCanceled.label.dy = -215; alertCanceled.label.fillOpacity = 0.7; alertCanceled.label.horizontalCenter = "left"; let playButton; function createSlider() { let sliderContainer = container.createChild(am4core.Container); sliderContainer.width = am4core.percent(100); sliderContainer.valign = "bottom"; sliderContainer.padding(0, 50, 25, 50); sliderContainer.layout = "horizontal"; sliderContainer.height = 50; playButton = sliderContainer.createChild(am4core.PlayButton); playButton.valign = "middle"; playButton.events.on("toggled", (event) => { if (event.target.isActive) { play(); } else { stop(); } }) slider = sliderContainer.createChild(am4core.Slider); slider.valign = "middle"; slider.margin(0, 0, 0, 0); slider.marginLeft = 30; slider.height = 15; slider.events.on("rangechanged", () => { setTime(); }); slider.startGrip.events.on("drag", () => { stop(); sliderAnimation.setProgress(slider.start); }); sliderAnimation = slider.animate({ property: "start", to: 1 }, 50000, am4core.ease.linear).pause(); sliderAnimation.events.on("animationended", () => { playButton.isActive = false; }) } var sliderAnimation; function play() { if (slider) { if (slider.start >= 1) { slider.start = 0; sliderAnimation.start(); } sliderAnimation.resume(); playButton.isActive = true; } } function stop() { sliderAnimation.pause(); playButton.isActive = false; } setTimeout(() => { play() }, 2000); let label = container.createChild(am4core.Label); label.text = "Website traffic in Hawaii during January 13, 2018 false ballistic missile alert"; label.valign = "bottom"; label.padding(0, 50, 10, 0); label.align = "right"; chart.data = [{ "time": "2018-01-13 06:00", "value": 0 }, { "time": "2018-01-13 06:01", "value": -4 }, { "time": "2018-01-13 06:02", "value": -16 }, { "time": "2018-01-13 06:03", "value": -5 }, { "time": "2018-01-13 06:04", "value": 12 }, { "time": "2018-01-13 06:05", "value": -4 }, { "time": "2018-01-13 06:06", "value": -5 }, { "time": "2018-01-13 06:07", "value": -8 }, { "time": "2018-01-13 06:08", "value": -2 }, { "time": "2018-01-13 06:09", "value": -14 }, { "time": "2018-01-13 06:10", "value": 15 }, { "time": "2018-01-13 06:11", "value": 0 }, { "time": "2018-01-13 06:12", "value": -14 }, { "time": "2018-01-13 06:13", "value": -13 }, { "time": "2018-01-13 06:14", "value": 2 }, { "time": "2018-01-13 06:15", "value": 10 }, { "time": "2018-01-13 06:16", "value": 11 }, { "time": "2018-01-13 06:17", "value": 13 }, { "time": "2018-01-13 06:18", "value": -11 }, { "time": "2018-01-13 06:19", "value": 0 }, { "time": "2018-01-13 06:20", "value": -10 }, { "time": "2018-01-13 06:21", "value": 0 }, { "time": "2018-01-13 06:22", "value": -21 }, { "time": "2018-01-13 06:23", "value": -9 }, { "time": "2018-01-13 06:24", "value": -11 }, { "time": "2018-01-13 06:25", "value": -7 }, { "time": "2018-01-13 06:26", "value": -14 }, { "time": "2018-01-13 06:27", "value": 0 }, { "time": "2018-01-13 06:28", "value": -9 }, { "time": "2018-01-13 06:29", "value": 12 }, { "time": "2018-01-13 06:30", "value": 7 }, { "time": "2018-01-13 06:31", "value": 10 }, { "time": "2018-01-13 06:32", "value": 5 }, { "time": "2018-01-13 06:33", "value": 12 }, { "time": "2018-01-13 06:34", "value": 13 }, { "time": "2018-01-13 06:35", "value": 10 }, { "time": "2018-01-13 06:36", "value": -14 }, { "time": "2018-01-13 06:37", "value": -12 }, { "time": "2018-01-13 06:38", "value": -8 }, { "time": "2018-01-13 06:39", "value": -13 }, { "time": "2018-01-13 06:40", "value": -13 }, { "time": "2018-01-13 06:41", "value": -12 }, { "time": "2018-01-13 06:42", "value": -11 }, { "time": "2018-01-13 06:43", "value": 9 }, { "time": "2018-01-13 06:44", "value": 0 }, { "time": "2018-01-13 06:45", "value": -4 }, { "time": "2018-01-13 06:46", "value": -6 }, { "time": "2018-01-13 06:47", "value": -7 }, { "time": "2018-01-13 06:48", "value": -12 }, { "time": "2018-01-13 06:49", "value": -8 }, { "time": "2018-01-13 06:50", "value": -7 }, { "time": "2018-01-13 06:51", "value": 9 }, { "time": "2018-01-13 06:52", "value": 10 }, { "time": "2018-01-13 06:53", "value": 12 }, { "time": "2018-01-13 06:54", "value": -4 }, { "time": "2018-01-13 06:55", "value": 3 }, { "time": "2018-01-13 06:56", "value": 9 }, { "time": "2018-01-13 06:57", "value": -2 }, { "time": "2018-01-13 06:58", "value": 7 }, { "time": "2018-01-13 06:59", "value": 5 }, { "time": "2018-01-13 07:00", "value": 8 }, { "time": "2018-01-13 07:01", "value": -1 }, { "time": "2018-01-13 07:02", "value": 1 }, { "time": "2018-01-13 07:03", "value": -6 }, { "time": "2018-01-13 07:04", "value": 0 }, { "time": "2018-01-13 07:05", "value": -7 }, { "time": "2018-01-13 07:06", "value": 3 }, { "time": "2018-01-13 07:07", "value": 7 }, { "time": "2018-01-13 07:08", "value": 2 }, { "time": "2018-01-13 07:09", "value": -6 }, { "time": "2018-01-13 07:10", "value": 2 }, { "time": "2018-01-13 07:11", "value": -3 }, { "time": "2018-01-13 07:12", "value": -8 }, { "time": "2018-01-13 07:13", "value": -15 }, { "time": "2018-01-13 07:14", "value": -3 }, { "time": "2018-01-13 07:15", "value": -17 }, { "time": "2018-01-13 07:16", "value": -8 }, { "time": "2018-01-13 07:17", "value": -4 }, { "time": "2018-01-13 07:18", "value": 0 }, { "time": "2018-01-13 07:19", "value": -6 }, { "time": "2018-01-13 07:20", "value": -5 }, { "time": "2018-01-13 07:21", "value": -16 }, { "time": "2018-01-13 07:22", "value": -8 }, { "time": "2018-01-13 07:23", "value": -23 }, { "time": "2018-01-13 07:24", "value": -9 }, { "time": "2018-01-13 07:25", "value": -9 }, { "time": "2018-01-13 07:26", "value": -11 }, { "time": "2018-01-13 07:27", "value": -12 }, { "time": "2018-01-13 07:28", "value": -13 }, { "time": "2018-01-13 07:29", "value": -11 }, { "time": "2018-01-13 07:30", "value": -14 }, { "time": "2018-01-13 07:31", "value": -10 }, { "time": "2018-01-13 07:32", "value": -4 }, { "time": "2018-01-13 07:33", "value": -17 }, { "time": "2018-01-13 07:34", "value": 0 }, { "time": "2018-01-13 07:35", "value": 12 }, { "time": "2018-01-13 07:36", "value": -11 }, { "time": "2018-01-13 07:37", "value": 5 }, { "time": "2018-01-13 07:38", "value": -4 }, { "time": "2018-01-13 07:39", "value": 4 }, { "time": "2018-01-13 07:40", "value": 1 }, { "time": "2018-01-13 07:41", "value": -3 }, { "time": "2018-01-13 07:42", "value": 4 }, { "time": "2018-01-13 07:43", "value": -1 }, { "time": "2018-01-13 07:44", "value": 0 }, { "time": "2018-01-13 07:45", "value": 1 }, { "time": "2018-01-13 07:46", "value": 1 }, { "time": "2018-01-13 07:47", "value": 0 }, { "time": "2018-01-13 07:48", "value": -5 }, { "time": "2018-01-13 07:49", "value": 8 }, { "time": "2018-01-13 07:50", "value": 7 }, { "time": "2018-01-13 07:51", "value": -1 }, { "time": "2018-01-13 07:52", "value": 10 }, { "time": "2018-01-13 07:53", "value": 10 }, { "time": "2018-01-13 07:54", "value": -10 }, { "time": "2018-01-13 07:55", "value": -6 }, { "time": "2018-01-13 07:56", "value": 0 }, { "time": "2018-01-13 07:57", "value": 2 }, { "time": "2018-01-13 07:58", "value": -10 }, { "time": "2018-01-13 07:59", "value": 0 }, { "time": "2018-01-13 08:00", "value": -12 }, { "time": "2018-01-13 08:01", "value": -1 }, { "time": "2018-01-13 08:02", "value": 0 }, { "time": "2018-01-13 08:03", "value": 0 }, { "time": "2018-01-13 08:04", "value": 0 }, { "time": "2018-01-13 08:05", "value": 0 }, { "time": "2018-01-13 08:06", "value": 0 }, { "time": "2018-01-13 08:07", "value": 0 }, { "time": "2018-01-13 08:08", "value": -47 }, { "time": "2018-01-13 08:09", "value": -48 }, { "time": "2018-01-13 08:10", "value": -54 }, { "time": "2018-01-13 08:11", "value": -60 }, { "time": "2018-01-13 08:12", "value": -44 }, { "time": "2018-01-13 08:13", "value": -55 }, { "time": "2018-01-13 08:14", "value": -56 }, { "time": "2018-01-13 08:15", "value": -62 }, { "time": "2018-01-13 08:16", "value": -62 }, { "time": "2018-01-13 08:17", "value": -58 }, { "time": "2018-01-13 08:18", "value": -56 }, { "time": "2018-01-13 08:19", "value": -63 }, { "time": "2018-01-13 08:20", "value": -58 }, { "time": "2018-01-13 08:21", "value": -63 }, { "time": "2018-01-13 08:22", "value": -62 }, { "time": "2018-01-13 08:23", "value": -77 }, { "time": "2018-01-13 08:24", "value": -69 }, { "time": "2018-01-13 08:25", "value": -62 }, { "time": "2018-01-13 08:26", "value": -68 }, { "time": "2018-01-13 08:27", "value": -68 }, { "time": "2018-01-13 08:28", "value": -63 }, { "time": "2018-01-13 08:29", "value": -55 }, { "time": "2018-01-13 08:30", "value": -54 }, { "time": "2018-01-13 08:31", "value": -58 }, { "time": "2018-01-13 08:32", "value": -61 }, { "time": "2018-01-13 08:33", "value": -64 }, { "time": "2018-01-13 08:34", "value": -53 }, { "time": "2018-01-13 08:35", "value": -52 }, { "time": "2018-01-13 08:36", "value": -47 }, { "time": "2018-01-13 08:37", "value": -55 }, { "time": "2018-01-13 08:38", "value": -48 }, { "time": "2018-01-13 08:39", "value": -47 }, { "time": "2018-01-13 08:40", "value": -32 }, { "time": "2018-01-13 08:41", "value": -42 }, { "time": "2018-01-13 08:42", "value": -41 }, { "time": "2018-01-13 08:43", "value": -34 }, { "time": "2018-01-13 08:44", "value": -40 }, { "time": "2018-01-13 08:45", "value": -49 }, { "time": "2018-01-13 08:46", "value": -38 }, { "time": "2018-01-13 08:47", "value": -33 }, { "time": "2018-01-13 08:48", "value": -39 }, { "time": "2018-01-13 08:49", "value": -28 }, { "time": "2018-01-13 08:50", "value": -38 }, { "time": "2018-01-13 08:51", "value": -39 }, { "time": "2018-01-13 08:52", "value": -35 }, { "time": "2018-01-13 08:53", "value": -30 }, { "time": "2018-01-13 08:54", "value": -13 }, { "time": "2018-01-13 08:55", "value": -15 }, { "time": "2018-01-13 08:56", "value": -17 }, { "time": "2018-01-13 08:57", "value": -17 }, { "time": "2018-01-13 08:58", "value": -14 }, { "time": "2018-01-13 08:59", "value": -5 }, { "time": "2018-01-13 09:00", "value": 13 }, { "time": "2018-01-13 09:01", "value": 48 }, { "time": "2018-01-13 09:02", "value": 33 }, { "time": "2018-01-13 09:03", "value": 32 }, { "time": "2018-01-13 09:04", "value": 22 }, { "time": "2018-01-13 09:05", "value": 38 }, { "time": "2018-01-13 09:06", "value": 9 }, { "time": "2018-01-13 09:07", "value": 28 }, { "time": "2018-01-13 09:08", "value": 21 }, { "time": "2018-01-13 09:09", "value": 32 }, { "time": "2018-01-13 09:10", "value": 16 }, { "time": "2018-01-13 09:11", "value": 22 }, { "time": "2018-01-13 09:12", "value": 17 }, { "time": "2018-01-13 09:13", "value": 32 }, { "time": "2018-01-13 09:14", "value": 12 }, { "time": "2018-01-13 09:15", "value": 11 }, { "time": "2018-01-13 09:16", "value": 18 }, { "time": "2018-01-13 09:17", "value": 19 }, { "time": "2018-01-13 09:18", "value": 15 }, { "time": "2018-01-13 09:19", "value": -7 }, { "time": "2018-01-13 09:20", "value": 6 }, { "time": "2018-01-13 09:21", "value": 7 }, { "time": "2018-01-13 09:22", "value": 13 }, { "time": "2018-01-13 09:23", "value": 14 }, { "time": "2018-01-13 09:24", "value": 11 }, { "time": "2018-01-13 09:25", "value": 15 }, { "time": "2018-01-13 09:26", "value": -5 }, { "time": "2018-01-13 09:27", "value": 6 }, { "time": "2018-01-13 09:28", "value": 10 }, { "time": "2018-01-13 09:29", "value": 24 }, { "time": "2018-01-13 09:30", "value": -11 }, { "time": "2018-01-13 09:31", "value": -8 }, { "time": "2018-01-13 09:32", "value": -13 }, { "time": "2018-01-13 09:33", "value": 3 }, { "time": "2018-01-13 09:34", "value": -1 }, { "time": "2018-01-13 09:35", "value": 6 }, { "time": "2018-01-13 09:36", "value": 7 }, { "time": "2018-01-13 09:37", "value": 7 }, { "time": "2018-01-13 09:38", "value": 8 }, { "time": "2018-01-13 09:39", "value": 10 }, { "time": "2018-01-13 09:40", "value": -12 }, { "time": "2018-01-13 09:41", "value": -6 }, { "time": "2018-01-13 09:42", "value": -10 }, { "time": "2018-01-13 09:43", "value": 2 }, { "time": "2018-01-13 09:44", "value": -6 }, { "time": "2018-01-13 09:45", "value": -5 }, { "time": "2018-01-13 09:46", "value": -9 }, { "time": "2018-01-13 09:47", "value": -12 }, { "time": "2018-01-13 09:48", "value": -6 }, { "time": "2018-01-13 09:49", "value": -10 }, { "time": "2018-01-13 09:50", "value": 2 }, { "time": "2018-01-13 09:51", "value": -6 }, { "time": "2018-01-13 09:52", "value": -5 }, { "time": "2018-01-13 09:53", "value": -9 }, { "time": "2018-01-13 09:54", "value": -12 }, { "time": "2018-01-13 09:55", "value": -6 }, { "time": "2018-01-13 09:56", "value": -16 }, { "time": "2018-01-13 09:57", "value": 2 }, { "time": "2018-01-13 09:58", "value": -6 }, { "time": "2018-01-13 09:59", "value": -5 }, { "time": "2018-01-13 10:00", "value": -20 }, { "time": "2018-01-13 10:01", "value": -12 }, { "time": "2018-01-13 10:02", "value": 8 }, { "time": "2018-01-13 10:03", "value": -10 }, { "time": "2018-01-13 10:04", "value": -20 }, { "time": "2018-01-13 10:05", "value": -6 }, { "time": "2018-01-13 10:06", "value": -5 }, { "time": "2018-01-13 10:07", "value": -9 }, { "time": "2018-01-13 10:08", "value": -5 }, { "time": "2018-01-13 10:09", "value": 9 }, { "time": "2018-01-13 10:10", "value": 2 }, { "time": "2018-01-13 10:11", "value": -8 }, { "time": "2018-01-13 10:12", "value": 10 }, { "time": "2018-01-13 10:13", "value": 4 }, { "time": "2018-01-13 10:14", "value": -1 }, { "time": "2018-01-13 10:15", "value": 3 }, { "time": "2018-01-13 10:16", "value": -5 }, { "time": "2018-01-13 10:17", "value": -1 }, { "time": "2018-01-13 10:18", "value": -4 }, { "time": "2018-01-13 10:19", "value": 0 }, { "time": "2018-01-13 10:20", "value": 4 }, { "time": "2018-01-13 10:21", "value": 5 }, { "time": "2018-01-13 10:22", "value": 6 }, { "time": "2018-01-13 10:23", "value": 20 }, { "time": "2018-01-13 10:24", "value": 12 }, { "time": "2018-01-13 10:25", "value": 8 }, { "time": "2018-01-13 10:26", "value": 3 }, { "time": "2018-01-13 10:27", "value": 2 }, { "time": "2018-01-13 10:28", "value": 0 }, { "time": "2018-01-13 10:29", "value": -3 }, { "time": "2018-01-13 10:30", "value": 0 }, { "time": "2018-01-13 10:31", "value": 4 }, { "time": "2018-01-13 10:32", "value": 5 }, { "time": "2018-01-13 10:33", "value": 3 }, { "time": "2018-01-13 10:34", "value": 13 }, { "time": "2018-01-13 10:35", "value": 16 }, { "time": "2018-01-13 10:36", "value": 12 }, { "time": "2018-01-13 10:37", "value": 11 }, { "time": "2018-01-13 10:38", "value": 3 }, { "time": "2018-01-13 10:39", "value": 13 }, { "time": "2018-01-13 10:40", "value": 16 }, { "time": "2018-01-13 10:41", "value": 12 }, { "time": "2018-01-13 10:42", "value": 11 }, { "time": "2018-01-13 10:43", "value": 3 }, { "time": "2018-01-13 10:44", "value": 13 }, { "time": "2018-01-13 10:45", "value": 22 }, { "time": "2018-01-13 10:46", "value": 18 }, { "time": "2018-01-13 10:47", "value": 22 }, { "time": "2018-01-13 10:48", "value": 3 }, { "time": "2018-01-13 10:49", "value": 13 }, { "time": "2018-01-13 10:50", "value": 6 }, { "time": "2018-01-13 10:51", "value": 12 }, { "time": "2018-01-13 10:52", "value": 11 }, { "time": "2018-01-13 10:53", "value": 3 }, { "time": "2018-01-13 10:54", "value": 24 }, { "time": "2018-01-13 10:55", "value": 2 }, { "time": "2018-01-13 10:56", "value": -1 }, { "time": "2018-01-13 10:57", "value": 2 }, { "time": "2018-01-13 10:58", "value": -10 }, { "time": "2018-01-13 10:59", "value": -5 }, { "time": "2018-01-13 11:00", "value": -11 }, { "time": "2018-01-13 11:01", "value": 4 }, { "time": "2018-01-13 11:02", "value": 0 }, { "time": "2018-01-13 11:03", "value": 5 }, { "time": "2018-01-13 11:04", "value": -4 }, { "time": "2018-01-13 11:05", "value": -19 }, { "time": "2018-01-13 11:06", "value": 4 }, { "time": "2018-01-13 11:07", "value": -1 }, { "time": "2018-01-13 11:08", "value": 3 }, { "time": "2018-01-13 11:09", "value": -5 }, { "time": "2018-01-13 11:10", "value": -3 }, { "time": "2018-01-13 11:11", "value": -10 }, { "time": "2018-01-13 11:12", "value": -8 }, { "time": "2018-01-13 11:13", "value": -10 }, { "time": "2018-01-13 11:14", "value": 2 }, { "time": "2018-01-13 11:15", "value": -10 }, { "time": "2018-01-13 11:16", "value": 14 }, { "time": "2018-01-13 11:17", "value": 16 }, { "time": "2018-01-13 11:18", "value": 8 }, { "time": "2018-01-13 11:19", "value": 12 }, { "time": "2018-01-13 11:20", "value": 6 }, { "time": "2018-01-13 11:21", "value": 17 }, { "time": "2018-01-13 11:22", "value": 14 }, { "time": "2018-01-13 11:23", "value": -15 }, { "time": "2018-01-13 11:24", "value": -14 }, { "time": "2018-01-13 11:25", "value": -8 }, { "time": "2018-01-13 11:26", "value": -6 }, { "time": "2018-01-13 11:27", "value": -3 }, { "time": "2018-01-13 11:28", "value": -16 }, { "time": "2018-01-13 11:29", "value": -8 }, { "time": "2018-01-13 11:30", "value": 10 }, { "time": "2018-01-13 11:31", "value": -8 }, { "time": "2018-01-13 11:32", "value": -6 }, { "time": "2018-01-13 11:33", "value": -3 }, { "time": "2018-01-13 11:34", "value": 0 }, { "time": "2018-01-13 11:35", "value": 4 }, { "time": "2018-01-13 11:36", "value": -11 }, { "time": "2018-01-13 11:37", "value": -8 }, { "time": "2018-01-13 11:38", "value": -3 }, { "time": "2018-01-13 11:39", "value": -2 }, { "time": "2018-01-13 11:40", "value": -15 }, { "time": "2018-01-13 11:41", "value": 9 }, { "time": "2018-01-13 11:42", "value": 0 }, { "time": "2018-01-13 11:43", "value": -1 }, { "time": "2018-01-13 11:44", "value": -5 }, { "time": "2018-01-13 11:45", "value": -1 }, { "time": "2018-01-13 11:46", "value": -7 }, { "time": "2018-01-13 11:47", "value": -4 }, { "time": "2018-01-13 11:48", "value": -7 }, { "time": "2018-01-13 11:49", "value": -8 }, { "time": "2018-01-13 11:50", "value": -7 }, { "time": "2018-01-13 11:51", "value": -6 }, { "time": "2018-01-13 11:52", "value": -5 }, { "time": "2018-01-13 11:53", "value": -6 }, { "time": "2018-01-13 11:54", "value": 1 }, { "time": "2018-01-13 11:55", "value": -3 }, { "time": "2018-01-13 11:56", "value": 10 }, { "time": "2018-01-13 11:57", "value": 15 }, { "time": "2018-01-13 11:58", "value": 0 }, { "time": "2018-01-13 11:59", "value": 0 }];