Skip to content

Commit

Permalink
Fix sample data to use datasources for TSVB visualizations
Browse files Browse the repository at this point in the history
Signed-off-by: Huy Nguyen <73027756+huyaboo@users.noreply.github.com>
  • Loading branch information
huyaboo committed Jun 6, 2024
1 parent cb84bfb commit a6507ab
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,19 @@ describe('getSavedObjectsWithDataSource()', () => {
return visualizationObjects.saved_objects;
};

const TSVBVisualizationSavedObject = {
type: 'visualization',
id: 'some-id',
attributes: {
title: 'some-title',
visState: JSON.stringify({
type: 'metrics',
params: {},
}),
},
references: [],
};

test('when processing Vega Visualization saved objects, it should attach data_source_name to each OpenSearch query', () => {
const dataSourceId = 'some-datasource-id';
const dataSourceName = 'Data Source Name';
Expand Down Expand Up @@ -127,6 +140,35 @@ describe('getSavedObjectsWithDataSource()', () => {
},
]);
});

test('when processing TSVB Visualization saved objects, it should attach data_source_id to the visState and add datasource reference', () => {
const dataSourceId = 'some-datasource-id';
const dataSourceTitle = 'Data Source Name';
const expectedTSVBVisualizationSavedObject = {
...TSVBVisualizationSavedObject,
id: `${dataSourceId}_some-id`,
attributes: {
title: `some-title_${dataSourceTitle}`,
visState: JSON.stringify({
type: 'metrics',
params: {
data_source_id: dataSourceId,
},
}),
},
references: [
{
id: dataSourceId,
type: 'data-source',
name: 'dataSource',
},
],
};

expect(
getSavedObjectsWithDataSource([TSVBVisualizationSavedObject], dataSourceId, dataSourceTitle)
).toMatchObject([expectedTSVBVisualizationSavedObject]);
});
});

describe('getFinalSavedObjects()', () => {
Expand Down
18 changes: 16 additions & 2 deletions src/plugins/home/server/services/sample_data/data_sets/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ export const getSavedObjectsWithDataSource = (
if (saveObject.type === 'visualization') {
const vegaSpec = extractVegaSpecFromSavedObject(saveObject);

const visualizationSavedObject = saveObject as SavedObject & {
attributes: { visState: string };
};
const visStateObject = JSON.parse(visualizationSavedObject.attributes.visState);

if (!!vegaSpec) {
const updatedVegaSpec = updateDataSourceNameInVegaSpec({
spec: vegaSpec,
Expand All @@ -104,8 +109,6 @@ export const getSavedObjectsWithDataSource = (
spacing: 1,
});

// @ts-expect-error
const visStateObject = JSON.parse(saveObject.attributes?.visState);
visStateObject.params.spec = updatedVegaSpec;

// @ts-expect-error
Expand All @@ -131,6 +134,17 @@ export const getSavedObjectsWithDataSource = (
// @ts-expect-error
saveObject.attributes.visState = JSON.stringify(timelineStateObject);
}

if (visStateObject.type === 'metrics') {
visStateObject.params.data_source_id = dataSourceId;

visualizationSavedObject.attributes.visState = JSON.stringify(visStateObject);
visualizationSavedObject.references.push({
id: `${dataSourceId}`,
type: 'data-source',
name: 'dataSource',
});
}
}
}

Expand Down

0 comments on commit a6507ab

Please sign in to comment.