Mercurial > code > home > repos > light9
view web/calibrate/XyPlot.ts @ 2450:a4052905ca7d default tip
notes about how rdfdb syncs, or should sync
author | drewp@bigasterisk.com |
---|---|
date | Mon, 03 Jun 2024 23:01:54 -0700 |
parents | e3af0ac507c8 |
children |
line wrap: on
line source
import debug from "debug"; import * as echarts from "echarts"; import { css, html, LitElement, PropertyValueMap } from "lit"; import { customElement, property } from "lit/decorators.js"; debug.enable("*"); const log = debug("calibrate"); @customElement("xy-plot") export class XyPlot extends LitElement { static styles = [ css` #chart { width: 800px; height: 300px; } `, ]; chart!: echarts.ECharts; @property() label: string = ""; @property() data: number[][] = []; render() { return html` <fieldset> <legend>${this.label}</legend> <div id="chart"></div> </fieldset> `; } protected async firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>) { var chartDom = this.shadowRoot!.getElementById("chart")!; this.chart = echarts.init(chartDom); this.chart.setOption({ animation: false, xAxis: { type: "value", }, yAxis: { type: "value", }, series: [ { name: "d", data: [], type: "line", }, ], }); } clear() { this.data.length = 0; } insertPoint(x: number, y: number) { this.data.push([x, y]); this.data.sort((a, b) => a[0] - b[0]); this.chart.setOption({ series: [{ name: "d", data: this.data }] }); } setXMarklines(lines: { txt: string; x: number }[]) { const markLineData = (row: { txt: string; x: number }, i: number) => ({ name: row.txt, label: { distance: 10*i, formatter: "{b} {c}", color: "#fff", textBorderWidth: 0 }, xAxis: row.x }); this.chart.setOption( { series: [ { name: "d", markLine: { data: lines.map(markLineData), }, }, ], } // ); } }