webwriter-chart
Version:
ww-chart is an interactive data visualization widget for the WebWriter tool that implements various charts and diagrams for static and exploratory data visualization.
58 lines (54 loc) • 2.01 kB
JavaScript
import { attribute } from "../../functions";
import { html, unsafeStatic } from "lit/static-html.js";
//@start-auto-generated
import * as Pie from "./Pie/definition";
import * as Doughnut from "./Doughnut/definition";
import * as Bar from "./Bar/definition";
import * as Line from "./Line/definition";
import * as PolarArea from "./PolarArea/definition";
import * as Radar from "./Radar/definition";
import * as Scatterplot from "./Scatterplot/definition";
import "./Bar/chart";
import "./Doughnut/chart";
import "./Pie/chart";
import "./Line/chart";
import "./PolarArea/chart";
import "./Radar/chart";
import "./Scatterplot/scatterplot";
const charts = [Pie, Doughnut, Bar, Line, PolarArea, Radar, Scatterplot];
//@end-auto-generated
export const availableCharts = charts.map((chart) => chart.Name);
export const availableRegressions = [
"none",
"linear",
"quadratic",
"exponential",
"polynomial",
"logarithmic",
"power",
"loess",
];
export function getOptionsDefinition(chartType) {
const chart = charts.find((chart) => chartType === chart.Name);
if (!chart)
throw "Chart not found!";
return chart.OptionDefinition;
}
export function getChart(chartType, datasets, title, options, teacherOptions) {
const chart = charts.find((chart) => chartType === chart.Name);
if (!chart)
return html `<div>Chart not found!</div>`;
//@ts-ignore
const chartName = unsafeStatic(chart.TagName);
return html `<div style="position: absolute; inset: 0; height: 100%; width: 100%; padding: 10px; box-sizing: border-box; display: flex; justify-content: center; flex-direction: row; align-items: end;">
<${chartName}
id="chart"
hide_excat_values="${attribute(!teacherOptions.showData)}"
datasets="${attribute(datasets)}"
label=${title}
style="display: flex; flex-grow: 1; max-height: 100%; max-width: 100%; justify-content: center; align-items: center;"
options="${attribute(options)}
">
</${chartName}>
</div>`;
}