@vizzly/dashboard 0.15.0-dev-6114a3b52b10e59a48578b0bad33d5be5e0d850d → 0.15.0-dev-825e222034d95127ba57aec3c08d7617ffa39237

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.
@@ -7233,7 +7233,10 @@ var attributesSchema$a = function attributesSchema(config) {
7233
7233
  subsetDimension: Joi.string().required().description('The ID of the field in the data set to drill down by.')
7234
7234
  })).description('Drilldown configuration for a pivot table.'),
7235
7235
  summarizeKPIs: Joi["boolean"]()["default"](false).description('Enable/disable KPI summarisation above column headers.'),
7236
- visualFormatColumns: Joi.array().items(Joi.string().min(1))["default"]([]).sparse(false).description('Array of column names to display as horizontal bars.'),
7236
+ visualFormatColumns: Joi.array().items(Joi.object({
7237
+ field: Joi.string(),
7238
+ "function": Joi.string()
7239
+ }))["default"]([]).description('Array of metrics to display as horizontal bars.'),
7237
7240
  results: Joi.array().items(Joi.object({
7238
7241
  content: Joi.array().required(),
7239
7242
  fields: Joi.array().items(Joi.object({
@@ -7252,17 +7255,27 @@ var attributesSchema$a = function attributesSchema(config) {
7252
7255
 
7253
7256
  var setAttributes$a = (function (config) {
7254
7257
  return function (dataTable, partial) {
7255
- var _partial$dimension;
7258
+ var _partial$measure;
7256
7259
  var newAttributes = setAttributes(dataTable, partial, attributesSchema$a(config));
7257
- var numOfColumnsInDataTable = dataTable.dimension.filter(function (d) {
7258
- return d.pivot === 'y';
7259
- }).length;
7260
- var numOfColumnsInPartial = (_partial$dimension = partial.dimension) == null ? void 0 : _partial$dimension.filter(function (d) {
7261
- return d.pivot === 'y';
7262
- }).length;
7263
- var dimensionColumnsHasChanged = numOfColumnsInPartial === undefined ? false : numOfColumnsInDataTable !== numOfColumnsInPartial;
7264
- var shouldRemoveVisualFormatColumns = dimensionColumnsHasChanged && !partial.visualFormatColumns;
7265
- if (shouldRemoveVisualFormatColumns) newAttributes.visualFormatColumns = [];
7260
+ var numOfMeasuresInDataTable = dataTable.measure.length;
7261
+ var numOfMeasuresInPartial = (_partial$measure = partial.measure) == null ? void 0 : _partial$measure.length;
7262
+ var hasRemovedMetrics = numOfMeasuresInPartial === undefined ? false : numOfMeasuresInDataTable > numOfMeasuresInPartial;
7263
+ if (hasRemovedMetrics) {
7264
+ var removedMetrics = dataTable.measure.filter(function (metric) {
7265
+ var _partial$measure2;
7266
+ return !((_partial$measure2 = partial.measure) != null && _partial$measure2.some(function (partialMetric) {
7267
+ return partialMetric.field === metric.field && partialMetric["function"] === metric["function"];
7268
+ }));
7269
+ });
7270
+ newAttributes.visualFormatColumns = (dataTable.visualFormatColumns || []).filter(function (column) {
7271
+ var isColumnUsingRemovedMetric = removedMetrics.some(function (removedMetric) {
7272
+ var fieldId = column.field;
7273
+ var aggregateFunction = column["function"];
7274
+ return removedMetric.field === fieldId && removedMetric["function"] === aggregateFunction;
7275
+ });
7276
+ return !isColumnUsingRemovedMetric;
7277
+ });
7278
+ }
7266
7279
  newAttributes = removeUnusedOrderFieldsFromTimeSeriesComponent(newAttributes);
7267
7280
  return newAttributes;
7268
7281
  };
@@ -7383,6 +7396,13 @@ var CONSTANTS$a = {
7383
7396
  }
7384
7397
  };
7385
7398
 
7399
+ function filterOutOldVisualFormatContract(visualFormat) {
7400
+ var withoutOldContract = visualFormat.filter(function (measure) {
7401
+ return typeof measure !== 'string';
7402
+ });
7403
+ return withoutOldContract;
7404
+ }
7405
+
7386
7406
  // Get the dimensions for a particular pivot.
7387
7407
  var dimensionsForPivot = function dimensionsForPivot(dimension, pivot) {
7388
7408
  return dimension.filter(function (d) {
@@ -7436,7 +7456,7 @@ var DataTable = function DataTable(config) {
7436
7456
  tags: (_dumped$tags = dumped.tags) != null ? _dumped$tags : [],
7437
7457
  hiddenFields: (_dumped$hiddenFields = dumped.hiddenFields) != null ? _dumped$hiddenFields : [],
7438
7458
  summarizeKPIs: (_dumped$summarizeKPIs = dumped.summarizeKPIs) != null ? _dumped$summarizeKPIs : false,
7439
- visualFormatColumns: (_dumped$visualFormatC = dumped.visualFormatColumns) != null ? _dumped$visualFormatC : []
7459
+ visualFormatColumns: filterOutOldVisualFormatContract((_dumped$visualFormatC = dumped.visualFormatColumns) != null ? _dumped$visualFormatC : [])
7440
7460
  };
7441
7461
  },
7442
7462
  setAttributes: setAttributes$a(config),
@@ -54152,11 +54172,13 @@ var calculatePercentage = function calculatePercentage(value, max) {
54152
54172
  var VisualFormatCell = function VisualFormatCell(_ref) {
54153
54173
  var value = _ref.value,
54154
54174
  displayValue = _ref.displayValue,
54155
- columnName = _ref.columnName,
54175
+ column = _ref.column,
54156
54176
  visualFormatColumns = _ref.visualFormatColumns,
54157
54177
  columnValues = _ref.columnValues,
54158
54178
  conditionalFormattingColor = _ref.conditionalFormattingColor;
54159
- var shouldShowHorizontalBar = visualFormatColumns.includes(columnName);
54179
+ var shouldShowHorizontalBar = visualFormatColumns.some(function (vf) {
54180
+ return vf.field === column.fieldId && vf["function"] === column["function"];
54181
+ });
54160
54182
  var numericValue = Number(value);
54161
54183
  var isNumeric = !isNaN(numericValue);
54162
54184
  if (!shouldShowHorizontalBar && !isNumeric) {
@@ -54167,7 +54189,7 @@ var VisualFormatCell = function VisualFormatCell(_ref) {
54167
54189
  if (isNumeric) {
54168
54190
  var actualMax = Math.max.apply(Math, columnValues);
54169
54191
  var percentage = calculatePercentage(numericValue, actualMax);
54170
- var barColor = conditionalFormattingColor || (shouldShowHorizontalBar ? '#2196f3' : '#4caf50');
54192
+ var barColor = conditionalFormattingColor != null ? conditionalFormattingColor : '#4caf50';
54171
54193
  return jsxRuntime.jsxs("div", {
54172
54194
  style: {
54173
54195
  display: 'flex',
@@ -54198,20 +54220,20 @@ var VisualFormatCell = function VisualFormatCell(_ref) {
54198
54220
  className: /*#__PURE__*/css$1.css( {
54199
54221
  name: "1qyjf6m-VisualFormatCell",
54200
54222
  styles: "cursor:pointer;transition:width 0.3s ease;label:VisualFormatCell;",
54201
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpc3VhbEZvcm1hdENlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEeUIiLCJmaWxlIjoiVmlzdWFsRm9ybWF0Q2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVGFibGVDb250ZW50IH0gZnJvbSAnc2hhcmVkLWxvZ2ljL3NyYy9EYXRhVGFibGUvdHlwZXMnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcblxuaW50ZXJmYWNlIFZpc3VhbEZvcm1hdENlbGxQcm9wcyB7XG4gIHZhbHVlOiBUYWJsZUNvbnRlbnRbJ3ZhbHVlJ107XG4gIGRpc3BsYXlWYWx1ZTogVGFibGVDb250ZW50WydkaXNwbGF5VmFsdWUnXTtcbiAgY29sdW1uTmFtZTogc3RyaW5nO1xuICB2aXN1YWxGb3JtYXRDb2x1bW5zOiBzdHJpbmdbXTtcbiAgY29sdW1uVmFsdWVzOiBudW1iZXJbXTtcbiAgY29uZGl0aW9uYWxGb3JtYXR0aW5nQ29sb3I/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGNhbGN1bGF0ZVBlcmNlbnRhZ2UgPSAodmFsdWU6IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBpZiAobWF4ID09PSAwKSByZXR1cm4gMDtcbiAgaWYgKHZhbHVlIDwgMCkgcmV0dXJuIDA7XG4gIHJldHVybiAodmFsdWUgLyBtYXgpICogMTAwO1xufTtcblxuZXhwb3J0IGNvbnN0IFZpc3VhbEZvcm1hdENlbGw6IFJlYWN0LkZDPFZpc3VhbEZvcm1hdENlbGxQcm9wcz4gPSAoe1xuICB2YWx1ZSxcbiAgZGlzcGxheVZhbHVlLFxuICBjb2x1bW5OYW1lLFxuICB2aXN1YWxGb3JtYXRDb2x1bW5zLFxuICBjb2x1bW5WYWx1ZXMsXG4gIGNvbmRpdGlvbmFsRm9ybWF0dGluZ0NvbG9yLFxufSkgPT4ge1xuICBjb25zdCBzaG91bGRTaG93SG9yaXpvbnRhbEJhciA9IHZpc3VhbEZvcm1hdENvbHVtbnMuaW5jbHVkZXMoY29sdW1uTmFtZSk7XG5cbiAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgY29uc3QgaXNOdW1lcmljID0gIWlzTmFOKG51bWVyaWNWYWx1ZSk7XG5cbiAgaWYgKCFzaG91bGRTaG93SG9yaXpvbnRhbEJhciAmJiAhaXNOdW1lcmljKSB7XG4gICAgcmV0dXJuIDxzcGFuPntkaXNwbGF5VmFsdWUgfHwgdmFsdWV9PC9zcGFuPjtcbiAgfVxuXG4gIGlmIChpc051bWVyaWMpIHtcbiAgICBjb25zdCBhY3R1YWxNYXggPSBNYXRoLm1heCguLi5jb2x1bW5WYWx1ZXMpO1xuICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSBjYWxjdWxhdGVQZXJjZW50YWdlKG51bWVyaWNWYWx1ZSwgYWN0dWFsTWF4KTtcbiAgICBjb25zdCBiYXJDb2xvciA9IGNvbmRpdGlvbmFsRm9ybWF0dGluZ0NvbG9yIHx8IChzaG91bGRTaG93SG9yaXpvbnRhbEJhciA/ICcjMjE5NmYzJyA6ICcjNGNhZjUwJyk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICBnYXA6ICcwLjVyZW0nLFxuICAgICAgICAgIHBhZGRpbmc6ICcycHgnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7ISF2YWx1ZSAmJiAoXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjcwJVwiIGhlaWdodD1cIjIwXCIgc3R5bGU9e3sgZmxleFNocmluazogMCB9fT5cbiAgICAgICAgICAgIDxyZWN0IHg9ezB9IHk9ezJ9IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIiNlMGUwZTBcIiByeD17Mn0gLz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIGtleT17J2JhclJlY3RLZXknfVxuICAgICAgICAgICAgICB4PXswfVxuICAgICAgICAgICAgICB5PXsyfVxuICAgICAgICAgICAgICB3aWR0aD17YCR7TWF0aC5tYXgoNCwgKHBlcmNlbnRhZ2UgLyAxMDApICogMTAwKX0lYH1cbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgICBmaWxsPXtiYXJDb2xvcn1cbiAgICAgICAgICAgICAgcng9ezJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3NzKHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnd2lkdGggMC4zcyBlYXNlJyxcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICApfVxuICAgICAgICA8c3BhblxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBmb250U2l6ZTogJzAuODEyNXJlbScsXG4gICAgICAgICAgICBtaW5XaWR0aDogJ2ZpdC1jb250ZW50JyxcbiAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICAgICAgZm9udFdlaWdodDogc2hvdWxkU2hvd0hvcml6b250YWxCYXIgPyAnYm9sZCcgOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICdhdXRvJyxcbiAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkaXNwbGF5VmFsdWUgfHwgdmFsdWV9IHtzaG91bGRTaG93SG9yaXpvbnRhbEJhciA/ICfimIUnIDogJyd9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPHNwYW4+e2Rpc3BsYXlWYWx1ZSB8fCB2YWx1ZX08L3NwYW4+O1xufTtcbiJdfQ== */",
54223
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpc3VhbEZvcm1hdENlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlFeUIiLCJmaWxlIjoiVmlzdWFsRm9ybWF0Q2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFRhYmxlQ29udGVudCB9IGZyb20gJ3NoYXJlZC1sb2dpYy9zcmMvRGF0YVRhYmxlL3R5cGVzJztcbmltcG9ydCAqIGFzIERhdHVtS2V5IGZyb20gJ3NoYXJlZC1sb2dpYy9zcmMvRGF0dW1LZXknO1xuaW1wb3J0IHsgUXVlcnlBdHRyaWJ1dGVzIH0gZnJvbSAnc2hhcmVkLWxvZ2ljL3NyYy9RdWVyeUF0dHJpYnV0ZXMvdHlwZXMnO1xuXG5pbnRlcmZhY2UgVmlzdWFsRm9ybWF0Q2VsbFByb3BzIHtcbiAgdmFsdWU6IFRhYmxlQ29udGVudFsndmFsdWUnXTtcbiAgZGlzcGxheVZhbHVlOiBUYWJsZUNvbnRlbnRbJ2Rpc3BsYXlWYWx1ZSddO1xuICBjb2x1bW46IERhdHVtS2V5LlBhcnNlZERhdHVtS2V5O1xuICB2aXN1YWxGb3JtYXRDb2x1bW5zOiBRdWVyeUF0dHJpYnV0ZXMuTWVhc3VyZVtdO1xuICBjb2x1bW5WYWx1ZXM6IG51bWJlcltdO1xuICBjb25kaXRpb25hbEZvcm1hdHRpbmdDb2xvcj86IHN0cmluZztcbn1cblxuY29uc3QgY2FsY3VsYXRlUGVyY2VudGFnZSA9ICh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGlmIChtYXggPT09IDApIHJldHVybiAwO1xuICBpZiAodmFsdWUgPCAwKSByZXR1cm4gMDtcbiAgcmV0dXJuICh2YWx1ZSAvIG1heCkgKiAxMDA7XG59O1xuXG5leHBvcnQgY29uc3QgVmlzdWFsRm9ybWF0Q2VsbDogUmVhY3QuRkM8VmlzdWFsRm9ybWF0Q2VsbFByb3BzPiA9ICh7XG4gIHZhbHVlLFxuICBkaXNwbGF5VmFsdWUsXG4gIGNvbHVtbixcbiAgdmlzdWFsRm9ybWF0Q29sdW1ucyxcbiAgY29sdW1uVmFsdWVzLFxuICBjb25kaXRpb25hbEZvcm1hdHRpbmdDb2xvcixcbn0pID0+IHtcbiAgY29uc3Qgc2hvdWxkU2hvd0hvcml6b250YWxCYXIgPSB2aXN1YWxGb3JtYXRDb2x1bW5zLnNvbWUoXG4gICAgKHZmKSA9PiB2Zi5maWVsZCA9PT0gY29sdW1uLmZpZWxkSWQgJiYgdmYuZnVuY3Rpb24gPT09IGNvbHVtbi5mdW5jdGlvbixcbiAgKTtcblxuICBjb25zdCBudW1lcmljVmFsdWUgPSBOdW1iZXIodmFsdWUpO1xuICBjb25zdCBpc051bWVyaWMgPSAhaXNOYU4obnVtZXJpY1ZhbHVlKTtcblxuICBpZiAoIXNob3VsZFNob3dIb3Jpem9udGFsQmFyICYmICFpc051bWVyaWMpIHtcbiAgICByZXR1cm4gPHNwYW4+e2Rpc3BsYXlWYWx1ZSB8fCB2YWx1ZX08L3NwYW4+O1xuICB9XG5cbiAgaWYgKGlzTnVtZXJpYykge1xuICAgIGNvbnN0IGFjdHVhbE1heCA9IE1hdGgubWF4KC4uLmNvbHVtblZhbHVlcyk7XG4gICAgY29uc3QgcGVyY2VudGFnZSA9IGNhbGN1bGF0ZVBlcmNlbnRhZ2UobnVtZXJpY1ZhbHVlLCBhY3R1YWxNYXgpO1xuICAgIGNvbnN0IGJhckNvbG9yID0gY29uZGl0aW9uYWxGb3JtYXR0aW5nQ29sb3IgPz8gJyM0Y2FmNTAnO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgZ2FwOiAnMC41cmVtJyxcbiAgICAgICAgICBwYWRkaW5nOiAnMnB4JyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgeyEhdmFsdWUgJiYgKFxuICAgICAgICAgIDxzdmcgd2lkdGg9XCI3MCVcIiBoZWlnaHQ9XCIyMFwiIHN0eWxlPXt7IGZsZXhTaHJpbms6IDAgfX0+XG4gICAgICAgICAgICA8cmVjdCB4PXswfSB5PXsyfSB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCIjZTBlMGUwXCIgcng9ezJ9IC8+XG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICBrZXk9eydiYXJSZWN0S2V5J31cbiAgICAgICAgICAgICAgeD17MH1cbiAgICAgICAgICAgICAgeT17Mn1cbiAgICAgICAgICAgICAgd2lkdGg9e2Ake01hdGgubWF4KDQsIChwZXJjZW50YWdlIC8gMTAwKSAqIDEwMCl9JWB9XG4gICAgICAgICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgZmlsbD17YmFyQ29sb3J9XG4gICAgICAgICAgICAgIHJ4PXsyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nzcyh7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogJ3dpZHRoIDAuM3MgZWFzZScsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgKX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgZm9udFNpemU6ICcwLjgxMjVyZW0nLFxuICAgICAgICAgICAgbWluV2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogJ2F1dG8nLFxuICAgICAgICAgICAgZmxleFNocmluazogMCxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZSA/PyB2YWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiA8c3Bhbj57ZGlzcGxheVZhbHVlIHx8IHZhbHVlfTwvc3Bhbj47XG59O1xuIl19 */",
54202
54224
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$b
54203
54225
  })
54204
54226
  }, 'barRectKey')]
54205
- }), jsxRuntime.jsxs("span", {
54227
+ }), jsxRuntime.jsx("span", {
54206
54228
  style: {
54207
54229
  fontSize: '0.8125rem',
54208
54230
  minWidth: 'fit-content',
54209
54231
  whiteSpace: 'nowrap',
54210
- fontWeight: shouldShowHorizontalBar ? 'bold' : 'normal',
54232
+ fontWeight: 'normal',
54211
54233
  marginLeft: 'auto',
54212
54234
  flexShrink: 0
54213
54235
  },
54214
- children: [displayValue || value, " ", shouldShowHorizontalBar ? '★' : '']
54236
+ children: displayValue != null ? displayValue : value
54215
54237
  })]
54216
54238
  });
54217
54239
  }
@@ -54262,18 +54284,11 @@ var DataTableTR = function DataTableTR(props) {
54262
54284
  var component = props.renderTableCell(rowIndex, cellIndex, cell.value, field.datumKey);
54263
54285
  var shouldApplyVisualFormat = false;
54264
54286
  if (props.visualFormatColumns && field.dataType === 'number') {
54265
- var groupedValues = props.visualFormatColumns.map(function (column) {
54266
- return {
54267
- originalValue: column,
54268
- splitValues: column.split(',').map(function (val) {
54269
- return val.trim();
54270
- })
54271
- };
54272
- });
54273
- shouldApplyVisualFormat = groupedValues.some(function (group) {
54274
- return group.splitValues.every(function (value) {
54275
- return field.datumKey && field.datumKey.includes(value) || field.id && field.id.includes(value);
54276
- });
54287
+ shouldApplyVisualFormat = props.visualFormatColumns.some(function (group) {
54288
+ var isSameField = parse(field.datumKey).fieldId === group.field;
54289
+ var isCustomMetric = group["function"] === 'none';
54290
+ var isSameAggregateFunction = parse(field.datumKey)["function"] === group["function"];
54291
+ return isSameField && (isCustomMetric || isSameAggregateFunction);
54277
54292
  });
54278
54293
  }
54279
54294
  var columnWidth = buildColumnWidth(field.datumKey, props == null ? void 0 : props.sizing, props == null ? void 0 : props.defaultColumnWidth, props == null ? void 0 : props.alternativeColumnSizing);
@@ -54295,7 +54310,7 @@ var DataTableTR = function DataTableTR(props) {
54295
54310
  cellContent = jsxRuntime.jsx(VisualFormatCell, {
54296
54311
  value: cell.value,
54297
54312
  displayValue: cell.displayValue,
54298
- columnName: field.datumKey || field.id,
54313
+ column: parse(field.datumKey),
54299
54314
  visualFormatColumns: props.visualFormatColumns || [],
54300
54315
  columnValues: columnValues,
54301
54316
  conditionalFormattingColor: conditionalFormattingColor
@@ -55031,7 +55046,7 @@ var DataTableView = function DataTableView(props) {
55031
55046
  children: groupingHeading.content
55032
55047
  }, groupingHeading + "_" + headerIndex);
55033
55048
  })
55034
- }), props.summarizeKPIs && props.dimension.length > 0 && jsxRuntime.jsx(KPISummaryHeader, {
55049
+ }), props.summarizeKPIs && dimensionXFields.length > 0 && jsxRuntime.jsx(KPISummaryHeader, {
55035
55050
  tableRepresentation: tableRepresentation,
55036
55051
  numberFormat: props.numberFormat,
55037
55052
  numberFormatOptions: props.numberFormatOptions,
@@ -67418,55 +67433,17 @@ var WaterfallColorsSection = function WaterfallColorsSection(props) {
67418
67433
  };
67419
67434
 
67420
67435
  var VisualFormatSection = function VisualFormatSection(props) {
67421
- var _props$attributes$dim;
67422
67436
  var _useDashboardBehaviou = useDashboardBehaviourContext(),
67423
67437
  textOverride = _useDashboardBehaviou.textOverride,
67424
- mode = _useDashboardBehaviou.mode;
67425
- var previousYDimensionsRef = React.useRef([]);
67426
- var editor = useEditor();
67427
- var dashboardBehaviour = useDashboardBehaviourContext();
67428
- var kpiSummaryQuery = _extends({}, props.attributes, {
67429
- dimension: ((_props$attributes$dim = props.attributes.dimension) == null ? void 0 : _props$attributes$dim.filter(function (dim) {
67430
- return dim.pivot === 'y';
67431
- })) || [],
67432
- measure: [],
67433
- limit: undefined,
67434
- offset: undefined
67435
- });
67436
- var _useQueryEffect = useQueryEffect(kpiSummaryQuery, (editor == null ? void 0 : editor.runQueriesCallback) || function () {
67437
- return Promise.resolve([]);
67438
- }, {
67439
- localFilters: (editor == null ? void 0 : editor.component.localFilters) || [],
67440
- globalFilters: []
67441
- }, props.dataSet, undefined, dashboardBehaviour.variables),
67442
- results = _useQueryEffect.results;
67443
- var yDimensionsChanged = function yDimensionsChanged() {
67444
- var _props$attributes$dim2;
67445
- var currentYDimensions = ((_props$attributes$dim2 = props.attributes.dimension) == null ? void 0 : _props$attributes$dim2.filter(function (dim) {
67446
- return dim.pivot === 'y';
67447
- })) || [];
67448
- var deepEqual = function deepEqual(a, b) {
67449
- if (a.length !== b.length) return false;
67450
- return a.every(function (item, index) {
67451
- var _b$index, _b$index2, _b$index3;
67452
- return item.field === ((_b$index = b[index]) == null ? void 0 : _b$index.field) && item["function"] === ((_b$index2 = b[index]) == null ? void 0 : _b$index2["function"]) && item.pivot === ((_b$index3 = b[index]) == null ? void 0 : _b$index3.pivot);
67453
- });
67454
- };
67455
- var hasChanged = deepEqual(currentYDimensions, previousYDimensionsRef.current);
67456
- if (hasChanged) previousYDimensionsRef.current = currentYDimensions;
67457
- return hasChanged;
67458
- };
67459
- React.useEffect(function () {
67460
- var _props$attributes$vis;
67461
- if (yDimensionsChanged() && (((_props$attributes$vis = props.attributes.visualFormatColumns) == null ? void 0 : _props$attributes$vis.length) || 0) > 0) {
67462
- props.setAttributes({
67463
- visualFormatColumns: []
67464
- });
67465
- }
67466
- }, [props.attributes.dimension]);
67438
+ mode = _useDashboardBehaviou.mode,
67439
+ queryEngineConfig = _useDashboardBehaviou.queryEngineConfig;
67467
67440
  var handleColumnAdd = function handleColumnAdd(field) {
67468
- var currentColumns = props.attributes.visualFormatColumns || [];
67469
- if (field && !currentColumns.includes(field)) {
67441
+ var _props$attributes$vis;
67442
+ var currentColumns = (_props$attributes$vis = props.attributes.visualFormatColumns) != null ? _props$attributes$vis : [];
67443
+ var alreadyExists = currentColumns.some(function (col) {
67444
+ return col.field === field.field && col["function"] === field["function"];
67445
+ });
67446
+ if (!alreadyExists) {
67470
67447
  var newColumns = [].concat(currentColumns, [field]);
67471
67448
  props.setAttributes({
67472
67449
  visualFormatColumns: newColumns
@@ -67486,18 +67463,26 @@ var VisualFormatSection = function VisualFormatSection(props) {
67486
67463
  visualFormatColumns: newColumns
67487
67464
  });
67488
67465
  };
67489
- var firstResult = results == null ? void 0 : results[0];
67490
- var uniqueFirstValues = (firstResult == null ? void 0 : firstResult.content) || [];
67491
- var availableFields = uniqueFirstValues.map(function (value) {
67466
+ var availableFields = props.attributes.measure.map(function (measure) {
67467
+ var _aggregateFunction$va;
67468
+ var field = findField(props.dataSet, measure.field);
67469
+ var options = supportedAggregateOptions(field, queryEngineConfig.supportedAggregates);
67470
+ var aggregateFunction = options.find(function (opt) {
67471
+ return opt.value === measure["function"];
67472
+ });
67473
+ var isCustomMetric = (aggregateFunction == null ? void 0 : aggregateFunction.label) === undefined;
67492
67474
  return {
67493
- title: value.join(', '),
67494
- icon: 'string',
67495
- value: value.join(', ')
67475
+ title: isCustomMetric ? "" + field.publicName : field.publicName + " ( " + (aggregateFunction == null ? void 0 : aggregateFunction.label) + " )",
67476
+ icon: 'number',
67477
+ value: {
67478
+ field: field.id,
67479
+ "function": (_aggregateFunction$va = aggregateFunction == null ? void 0 : aggregateFunction.value) != null ? _aggregateFunction$va : 'none'
67480
+ }
67496
67481
  };
67497
67482
  });
67498
- var selectedItems = (props.attributes.visualFormatColumns || []).map(function (columnId) {
67483
+ var selectedItems = (props.attributes.visualFormatColumns || []).map(function (visualFormat) {
67499
67484
  var field = availableFields.find(function (f) {
67500
- return f.title === columnId;
67485
+ return f.value.field === visualFormat.field;
67501
67486
  });
67502
67487
  return field || null;
67503
67488
  }).filter(function (item) {
@@ -67524,7 +67509,7 @@ var VisualFormatSection = function VisualFormatSection(props) {
67524
67509
  fontStyle: 'italic',
67525
67510
  margin: '1rem 0'
67526
67511
  },
67527
- children: textOverride('visual_format.no_columns', 'No numeric columns available')
67512
+ children: textOverride('visual_format.no_columns', 'No metrics available')
67528
67513
  })]
67529
67514
  });
67530
67515
  };