@lightdash/common 0.1387.1 → 0.1389.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -71,6 +71,7 @@ export type CartesianChartDisplay = {
71
71
  color?: string;
72
72
  type?: CartesianSeriesType.LINE | CartesianSeriesType.BAR;
73
73
  valueLabelPosition?: ValueLabelPositionOptions;
74
+ whichYAxis?: number;
74
75
  };
75
76
  };
76
77
  legend?: {
@@ -299,12 +299,17 @@ class CartesianChartDataModel {
299
299
  const defaultSeriesType = type === savedCharts_1.ChartKind.VERTICAL_BAR ? 'bar' : 'line';
300
300
  const shouldStack = display?.stack === true;
301
301
  const xAxisReference = transformedData.indexColumn?.reference;
302
+ const leftYAxisSeriesReferences = [];
303
+ const rightYAxisSeriesReferences = [];
302
304
  const series = transformedData.valuesColumns.map((seriesColumn, index) => {
303
305
  const seriesDisplay = Object.values(display?.series || {}).find((s) => s.yAxisIndex === index);
304
- const seriesFormat = seriesDisplay?.format ?? display?.yAxis?.[0]?.format; // TODO: don't always use the first y-axis format once there are multiple y-axes;
305
306
  const seriesColor = seriesDisplay?.color;
306
307
  const seriesValueLabelPosition = seriesDisplay?.valueLabelPosition;
307
308
  const seriesType = seriesDisplay?.type ?? defaultSeriesType;
309
+ // Any value other than 1 is considered the left axis.
310
+ const whichYAxis = seriesDisplay?.whichYAxis === 1 ? 1 : 0;
311
+ const seriesFormat = seriesDisplay?.format ??
312
+ display?.yAxis?.[whichYAxis]?.format;
308
313
  const singleYAxisLabel =
309
314
  // NOTE: When there's only one y-axis left, set the label on the series as well
310
315
  transformedData.valuesColumns.length === 1 &&
@@ -312,6 +317,12 @@ class CartesianChartDataModel {
312
317
  ? display.yAxis[0].label
313
318
  : undefined;
314
319
  const seriesLabel = singleYAxisLabel ?? seriesDisplay?.label;
320
+ if (whichYAxis === 1) {
321
+ rightYAxisSeriesReferences.push(seriesColumn);
322
+ }
323
+ else {
324
+ leftYAxisSeriesReferences.push(seriesColumn);
325
+ }
315
326
  return {
316
327
  dimensions: [xAxisReference, seriesColumn],
317
328
  type: seriesType ?? defaultSeriesType,
@@ -324,9 +335,9 @@ class CartesianChartDataModel {
324
335
  x: xAxisReference,
325
336
  y: seriesColumn,
326
337
  },
327
- yAxisIndex: (display?.series &&
328
- display.series[seriesColumn]?.yAxisIndex) ||
329
- 0,
338
+ // NOTE: this yAxisIndex is the echarts option, NOT the yAxisIndex
339
+ // we had been storing in the display object.
340
+ yAxisIndex: whichYAxis,
330
341
  tooltip: {
331
342
  valueFormatter: seriesFormat
332
343
  ? CartesianChartDataModel.getTooltipFormatter(seriesFormat)
@@ -387,10 +398,10 @@ class CartesianChartDataModel {
387
398
  {
388
399
  type: 'value',
389
400
  position: display?.yAxis?.[0]?.position || 'left',
390
- name: (display?.yAxis && display.yAxis[0]?.label) ||
391
- (0, field_1.friendlyName)(transformedData.valuesColumns.length === 1
392
- ? transformedData.valuesColumns[0]
393
- : ''),
401
+ name: leftYAxisSeriesReferences.length > 0
402
+ ? display?.yAxis?.[0]?.label ||
403
+ (0, field_1.friendlyName)(leftYAxisSeriesReferences[0])
404
+ : '',
394
405
  nameLocation: 'center',
395
406
  nameGap: 50,
396
407
  nameRotate: 90,
@@ -405,6 +416,27 @@ class CartesianChartDataModel {
405
416
  }
406
417
  : {}),
407
418
  },
419
+ {
420
+ type: 'value',
421
+ position: 'right',
422
+ name: rightYAxisSeriesReferences.length > 0
423
+ ? display?.yAxis?.[1]?.label ||
424
+ (0, field_1.friendlyName)(rightYAxisSeriesReferences[0])
425
+ : '',
426
+ nameLocation: 'center',
427
+ nameGap: 50,
428
+ nameRotate: -90,
429
+ nameTextStyle: {
430
+ fontWeight: 'bold',
431
+ },
432
+ ...(display?.yAxis?.[1]?.format
433
+ ? {
434
+ axisLabel: {
435
+ formatter: CartesianChartDataModel.getTooltipFormatter(display?.yAxis?.[1].format),
436
+ },
437
+ }
438
+ : {}),
439
+ },
408
440
  ],
409
441
  dataset: {
410
442
  id: 'dataset',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightdash/common",
3
- "version": "0.1387.1",
3
+ "version": "0.1389.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [