<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://entorb.net//wiki/index.php?action=history&amp;feed=atom&amp;title=ECharts</id>
	<title>ECharts - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://entorb.net//wiki/index.php?action=history&amp;feed=atom&amp;title=ECharts"/>
	<link rel="alternate" type="text/html" href="https://entorb.net//wiki/index.php?title=ECharts&amp;action=history"/>
	<updated>2026-05-06T11:26:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://entorb.net//wiki/index.php?title=ECharts&amp;diff=4904&amp;oldid=prev</id>
		<title>Torben at 20:46, 30 October 2024</title>
		<link rel="alternate" type="text/html" href="https://entorb.net//wiki/index.php?title=ECharts&amp;diff=4904&amp;oldid=prev"/>
		<updated>2024-10-30T20:46:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Coding]][[Category:JavaScript]]&lt;br /&gt;
==Docu==&lt;br /&gt;
* [https://echarts.apache.org/handbook/en/how-to/chart-types/line/basic-line/# Handbook]&lt;br /&gt;
* [https://echarts.apache.org/en/option.html#title API]&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
 // init&lt;br /&gt;
 const myChart = echarts.init(document.getElementById(&amp;#039;div_chart_24h&amp;#039;))&lt;br /&gt;
 &lt;br /&gt;
 // Load data from a local JSON file in same dir&lt;br /&gt;
 fetch(&amp;#039;MT681_watt_24h.json&amp;#039;)&lt;br /&gt;
   .then(response =&amp;gt; response.json())&lt;br /&gt;
   .then(rawData =&amp;gt; {&lt;br /&gt;
     // raw: {&amp;quot;1720724640000&amp;quot;:54.0,&amp;quot;1720724760000&amp;quot;:53.5,...}&lt;br /&gt;
     // Convert data to ECharts format (x: timestamp, y: value) and set name to time&lt;br /&gt;
     const seriesData = Object.entries(rawData).map(([timestamp, value]) =&amp;gt; ({&lt;br /&gt;
       name: new Date(parseInt(timestamp)).toLocaleTimeString([&amp;#039;DE&amp;#039;], {&lt;br /&gt;
         hour: &amp;#039;2-digit&amp;#039;,&lt;br /&gt;
         minute: &amp;#039;2-digit&amp;#039;&lt;br /&gt;
       }),&lt;br /&gt;
       value: [parseInt(timestamp), value]&lt;br /&gt;
       // [name: &amp;#039;12:23&amp;#039; value: [1720724640000, 123.3]]&lt;br /&gt;
     }))&lt;br /&gt;
 &lt;br /&gt;
     const last = seriesData[seriesData.length - 1]&lt;br /&gt;
 &lt;br /&gt;
     // calc kWh sum&lt;br /&gt;
     let pos = 0&lt;br /&gt;
     let neg = 0&lt;br /&gt;
     for (const data of seriesData) {&lt;br /&gt;
       const value = data.value[1]&lt;br /&gt;
       if (value &amp;gt;= 0) {&lt;br /&gt;
         pos += value&lt;br /&gt;
       } else {&lt;br /&gt;
         neg -= value&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     // average watt over all data&lt;br /&gt;
     pos /= seriesData.length&lt;br /&gt;
     neg /= seriesData.length&lt;br /&gt;
     // kWh over 24h&lt;br /&gt;
     pos = (pos * 24) / 1000&lt;br /&gt;
     neg = (neg * 24) / 1000&lt;br /&gt;
     // rounding&lt;br /&gt;
     pos = Math.round(10 * pos) / 10&lt;br /&gt;
     neg = Math.round(10 * neg) / 10&lt;br /&gt;
 &lt;br /&gt;
     const textTitle =&lt;br /&gt;
       &amp;#039;StromzÃ¤hler: &amp;#039; + last[&amp;#039;value&amp;#039;][1] + &amp;#039;W @&amp;#039; + last[&amp;#039;name&amp;#039;] + &amp;#039; &amp;#039; + pos + &amp;#039;/&amp;#039; + neg + &amp;#039;kWh&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
     const option = {&lt;br /&gt;
       xAxis: {&lt;br /&gt;
         type: &amp;#039;time&amp;#039;,&lt;br /&gt;
         splitLine: { show: true } // grid&lt;br /&gt;
       },&lt;br /&gt;
       yAxis: {&lt;br /&gt;
         type: &amp;#039;value&amp;#039;,&lt;br /&gt;
         splitLine: { show: true } // grid&lt;br /&gt;
       },&lt;br /&gt;
       series: [&lt;br /&gt;
         {&lt;br /&gt;
           type: &amp;#039;line&amp;#039;,&lt;br /&gt;
           data: seriesData,&lt;br /&gt;
           showSymbol: false,&lt;br /&gt;
           smooth: false,&lt;br /&gt;
           areaStyle: {} // To enable coloring under the graph&lt;br /&gt;
         }&lt;br /&gt;
       ],&lt;br /&gt;
       visualMap: {&lt;br /&gt;
         show: false,&lt;br /&gt;
         min: 0,&lt;br /&gt;
         max: 1,&lt;br /&gt;
         inRange: {&lt;br /&gt;
           color: [&amp;#039;green&amp;#039;, &amp;#039;red&amp;#039;]&lt;br /&gt;
         },&lt;br /&gt;
         calculable: true&lt;br /&gt;
       },&lt;br /&gt;
       animation: false,&lt;br /&gt;
       title: {&lt;br /&gt;
         text: textTitle&lt;br /&gt;
       },&lt;br /&gt;
       //   axisPointer: { show: true, snap: true },&lt;br /&gt;
       tooltip: {&lt;br /&gt;
         trigger: &amp;#039;axis&amp;#039;,&lt;br /&gt;
         formatter: function (params) {&lt;br /&gt;
           let p = params&lt;br /&gt;
           if (Array.isArray(params)) {&lt;br /&gt;
             p = params[0]&lt;br /&gt;
           }&lt;br /&gt;
           return p.name + &amp;#039;&amp;lt;br&amp;gt;&amp;#039; + p.value[1] + &amp;#039;W&amp;#039;&lt;br /&gt;
         }&lt;br /&gt;
       },&lt;br /&gt;
       dataZoom: [&lt;br /&gt;
         { xAxisIndex: 0, filterMode: &amp;#039;none&amp;#039; },&lt;br /&gt;
         { yAxisIndex: 0, filterMode: &amp;#039;none&amp;#039; }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     myChart.setOption(option)&lt;br /&gt;
   })&lt;br /&gt;
   .catch(error =&amp;gt; {&lt;br /&gt;
     console.error(&amp;#039;Error loading data:&amp;#039;, error)&lt;br /&gt;
   })&lt;/div&gt;</summary>
		<author><name>Torben</name></author>
	</entry>
</feed>