Skip to content

Commit

Permalink
[MDS] Fix sample data to use datasources for TSVB visualizations (#6940)
Browse files Browse the repository at this point in the history
* Fix sample data to use datasources for TSVB visualizations

Signed-off-by: Huy Nguyen <73027756+huyaboo@users.noreply.github.com>

* Changeset file for PR #6940 created/updated

---------

Signed-off-by: Huy Nguyen <73027756+huyaboo@users.noreply.github.com>
Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
  • Loading branch information
huyaboo and opensearch-changeset-bot[bot] committed Jun 6, 2024
1 parent 080c1fb commit 61e29b5
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 2 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/6940.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fix:
- Add TSVB Support for adding sample data ([#6940](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/6940))
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 61e29b5

Please sign in to comment.