=> ({
name: 'lens_metric_chart_renderer',
displayName: 'Metric Chart',
help: 'Metric Chart Renderer',
validate: () => {},
reuseDomNode: true,
render: async (domNode: Element, config: MetricChartProps, _handlers: unknown) => {
- ReactDOM.render(, domNode);
+ ReactDOM.render(, domNode);
},
-};
+});
-export function MetricChart({ data, args }: MetricChartProps) {
+export function MetricChart({
+ data,
+ args,
+ formatFactory,
+}: MetricChartProps & { formatFactory: FormatFactory }) {
const { title, accessor } = args;
- const [row] = Object.values(data.tables)[0].rows;
- // TODO: Use field formatters here...
- const value = Number(Number(row[accessor]).toFixed(3)).toString();
+ let value = '-';
+ const firstTable = Object.values(data.tables)[0];
+
+ if (firstTable) {
+ const column = firstTable.columns[0];
+ const row = firstTable.rows[0];
+ if (row[accessor]) {
+ value =
+ column && column.formatHint
+ ? formatFactory(column.formatHint).convert(row[accessor])
+ : Number(Number(row[accessor]).toFixed(3)).toString();
+ }
+ }
return (
metricChart);
- interpreter.renderersRegistry.register(() => metricChartRenderer as RenderFunction);
+ interpreter.renderersRegistry.register(
+ () => getMetricChartRenderer(fieldFormat.formatFactory) as RenderFunction
+ );
return metricVisualization;
}
@@ -65,6 +76,9 @@ export const metricVisualizationSetup = () =>
renderersRegistry,
functionsRegistry,
},
+ fieldFormat: {
+ formatFactory: getFormat,
+ },
});
export const metricVisualizationStop = () => plugin.stop();