Skip to content

Commit 5766222

Browse files
committed
add to metric page
Signed-off-by: Qxisylolo <qianxisy@amazon.com>
1 parent a9e4214 commit 5766222

22 files changed

Lines changed: 298 additions & 180 deletions

src/plugins/explore/public/application/in_context_vis_editor/component/save_vis_button.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const SaveVisButton = () => {
5050
const { queryEditorState, datasetView } = useQueryBuilderState();
5151
const { visualizationBuilderForEditor: visualizationBuilder } = useVisualizationBuilder();
5252
const visConfig = visualizationBuilder.visConfig$.value;
53-
const transformationService = useTransformationService();
53+
const transformationService = visualizationBuilder.getTransformationService();
5454

5555
const { services } = useOpenSearchDashboards<ExploreServices>();
5656

src/plugins/explore/public/application/in_context_vis_editor/component/transform_panel.tsx

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/plugins/explore/public/application/in_context_vis_editor/component/visualization_editor_bottom_left_container.tsx

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ import { useQueryBuilderState } from '../hooks/use_query_builder_state';
2828
import { ErrorCodeBlock } from '../../../components/tabs/error_guard/error_code_block';
2929
import { EditorPanel } from './editor_panel';
3030
import { useVisualizationBuilder } from '../hooks/use_visualization_builder';
31-
import { TransformPanel } from './transform_panel';
32-
import { useTransformationService } from '../hooks/use_transformation_service';
3331

3432
import '../visualization_editor.scss';
35-
import { TransformationService } from '../data_transformations';
33+
import {
34+
TransformationService,
35+
useTransformationService,
36+
TransformPanel,
37+
} from '../../../components/data_transformations';
3638

3739
type ActiveTab = 'QUERY_TAB' | 'TRANSFORM_TAB';
3840

@@ -53,25 +55,19 @@ const transformTabLabel = i18n.translate('explore.bottomPanel.transformTab', {
5355
defaultMessage: 'Transform',
5456
});
5557

56-
interface ResizableQueryPanelAndVisualizationProps {
57-
savedTransformationPipeline?: Array<{
58-
definitionId: string;
59-
instanceId: string;
60-
config: any;
61-
hide: boolean;
62-
}>;
63-
}
64-
65-
export const ResizableQueryPanelAndVisualization = ({
66-
savedTransformationPipeline,
67-
}: ResizableQueryPanelAndVisualizationProps) => {
58+
export const ResizableQueryPanelAndVisualization = () => {
6859
const { queryBuilder, queryEditorState } = useQueryBuilderState();
6960
const queryStatus = queryEditorState.queryStatus;
7061
const [activeTab, setActiveTab] = useState<ActiveTab>(
7162
queryEditorState.activeBottomPanelTab ?? 'QUERY_TAB'
7263
);
64+
const { visualizationBuilderForEditor } = useVisualizationBuilder();
7365

74-
const transformServices = useTransformationService(savedTransformationPipeline);
66+
const transformServices = useTransformationService(visualizationBuilderForEditor, {
67+
onPipelineChange: useCallback(() => {
68+
queryBuilder.updateQueryEditorState({ isQueryEditorDirty: true });
69+
}, [queryBuilder]),
70+
});
7571

7672
useEffect(() => {
7773
queryBuilder.updateQueryEditorState({ activeBottomPanelTab: activeTab });
@@ -168,7 +164,10 @@ export const ResizableQueryPanelAndVisualization = ({
168164
{activeTab === 'QUERY_TAB' ? (
169165
<QueryPanel queryEditorState$={queryBuilder.queryEditorState$} />
170166
) : (
171-
<TransformPanel transformationService={transformServices} />
167+
<TransformPanel
168+
transformationService={transformServices}
169+
visualizationBuilder={visualizationBuilderForEditor}
170+
/>
172171
)}
173172
</EuiPanel>
174173
</EuiResizablePanel>

src/plugins/explore/public/application/in_context_vis_editor/hooks/use_initial_save_explore.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,14 @@ export const useInitialSaveExplore = () => {
2424
}, [savedExplore]);
2525

2626
// parse saved vis state and transformation from saved explore
27-
const { savedVisConfig, savedTransformationPipeline } = useMemo(() => {
27+
const { savedVisConfig } = useMemo(() => {
2828
if (!savedExplore?.visualization)
2929
return { savedVisConfig: undefined, savedTransformationPipeline: undefined };
3030
try {
3131
const parsedVisualization = JSON.parse(savedExplore.visualization);
32-
const pipeline = parsedVisualization?.dataTransformationJSON
33-
? JSON.parse(parsedVisualization.dataTransformationJSON)
34-
: undefined;
32+
3533
return {
3634
savedVisConfig: parsedVisualization,
37-
savedTransformationPipeline: pipeline,
3835
};
3936
} catch {
4037
return { savedVisConfig: undefined, savedTransformationPipeline: undefined };
@@ -45,7 +42,6 @@ export const useInitialSaveExplore = () => {
4542
savedExplore,
4643
savedQueryState,
4744
savedVisConfig,
48-
savedTransformationPipeline,
4945
error,
5046
isLoading,
5147
};

src/plugins/explore/public/application/in_context_vis_editor/query_builder/query_builder.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ export class QueryBuilder {
135135
private subscriptions = Array<Subscription>();
136136
private getServices: () => ExploreServices;
137137
private interpolationService?: IVariableInterpolationService;
138-
private onDatasetChangedCallback?: () => void;
139138
public lastExecutedInterpolatedQuery?: string;
140139

141140
constructor(getServices: () => ExploreServices) {
@@ -297,10 +296,6 @@ export class QueryBuilder {
297296
// sync dataset change
298297
// check isLanguageChanged and isInitialized for the initial sync
299298
if (isDatasetChanged || isLanguageChanged || !this.isInitialized) {
300-
// Only clear the transformation pipeline when the user actively switches datasets after initialization
301-
if (isDatasetChanged && this.isInitialized) {
302-
this.onDatasetChangedCallback?.();
303-
}
304299
this.datasetView$.next({ ...this.datasetView$.getValue(), isLoading: true });
305300
return from(this.handleDatasetChange(newQuery.dataset));
306301
}
@@ -607,12 +602,6 @@ export class QueryBuilder {
607602
return this.variableNames$.value;
608603
}
609604

610-
// register a callback that fires when the dataset changes,
611-
// for example, used to clear the transformation pipeline on dataset switch.
612-
setOnDatasetChanged(callback: () => void) {
613-
this.onDatasetChangedCallback = callback;
614-
}
615-
616605
setEditorRef(editor: monaco.editor.IStandaloneCodeEditor | null) {
617606
this.editorRef = editor;
618607
}

src/plugins/explore/public/application/in_context_vis_editor/visualization_editor.scss

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ $osdHeaderOffset: $euiHeaderHeightCompensation;
5151
height: 100%;
5252
}
5353

54-
.visualizationEditorTabPanel {
55-
border: 0;
56-
}
57-
5854
.multiTabsPanel {
5955
border-top-right-radius: $euiSizeXS;
6056
}

src/plugins/explore/public/application/in_context_vis_editor/visualization_editor_page.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ export const VisualizationEditorPage = ({
7070
savedQueryState,
7171
savedVisConfig,
7272
error,
73-
savedTransformationPipeline,
7473
isLoading,
7574
} = useInitialSaveExplore();
7675

@@ -109,6 +108,7 @@ export const VisualizationEditorPage = ({
109108
splitField: savedVisConfig.splitField,
110109
splitLayout: savedVisConfig.splitLayout,
111110
showSplitLabel: savedVisConfig.showSplitLabel,
111+
dataTransformationJSON: savedVisConfig.dataTransformationJSON,
112112
});
113113
}
114114

@@ -137,7 +137,6 @@ export const VisualizationEditorPage = ({
137137
queryBuilder,
138138
savedVisConfig,
139139
savedQueryState,
140-
savedTransformationPipeline,
141140
osdUrlStateStorage,
142141
visualizationBuilderForEditor,
143142
needsDashboardSelection,
@@ -217,9 +216,7 @@ export const VisualizationEditorPage = ({
217216
{variableService && VariablesBar && (
218217
<VariablesBar variableService={variableService} />
219218
)}
220-
<ResizableQueryPanelAndVisualization
221-
savedTransformationPipeline={savedTransformationPipeline}
222-
/>
219+
<ResizableQueryPanelAndVisualization />
223220
</EuiResizablePanel>
224221
<EuiResizableButton />
225222
<EuiResizablePanel

src/plugins/explore/public/application/utils/hooks/use_page_initialization.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export const useInitPage = () => {
7777
splitField,
7878
splitLayout,
7979
showSplitLabel,
80+
dataTransformationJSON,
8081
} = JSON.parse(visualization);
8182
visualizationBuilder.setVisConfig({
8283
type: chartType,
@@ -85,6 +86,7 @@ export const useInitPage = () => {
8586
splitField,
8687
splitLayout,
8788
showSplitLabel,
89+
dataTransformationJSON,
8890
});
8991
}
9092
// Only use saved object's activeTab if there's no activeTab in URL state

src/plugins/explore/public/components/data_transformations/index.ts

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,5 @@ export {
5858
export { TransformPanel } from './transform_panel';
5959
export type { TransformPanelProps } from './transform_panel';
6060
export { TransformSelectorButton } from './transform_selector_overlay';
61-
62-
import { TransformationService } from './transformation_service';
63-
import { limitTransformationDefinition } from './transformations/limit_transformation';
64-
import { sortByTransformationDefinition } from './transformations/sortby_transformation';
65-
import { filterTransformationDefinition } from './transformations/filter_transformation';
66-
import { addFieldTransformationDefinition } from './transformations/add_field_transformation';
67-
import { filterFieldsTransformationDefinition } from './transformations/filter_fields_transformation';
68-
import { convertFieldTypeTransformationDefinition } from './transformations/convert_field_type_transformation';
69-
import { groupByTransformationDefinition } from './transformations/group_by_transformation';
70-
import { extractFieldsTransformationDefinition } from './transformations/extract_fields_transformation';
71-
72-
export function registerAllTransformations(service: TransformationService): void {
73-
service.registerDefinition(limitTransformationDefinition);
74-
service.registerDefinition(sortByTransformationDefinition);
75-
service.registerDefinition(filterTransformationDefinition);
76-
service.registerDefinition(addFieldTransformationDefinition);
77-
service.registerDefinition(filterFieldsTransformationDefinition);
78-
service.registerDefinition(convertFieldTypeTransformationDefinition);
79-
service.registerDefinition(groupByTransformationDefinition);
80-
service.registerDefinition(extractFieldsTransformationDefinition);
81-
}
61+
export { useTransformationService } from './use_transformation_service';
62+
export { registerAllTransformations } from './register_all_transformations';
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
import { TransformationService } from './transformation_service';
7+
import { limitTransformationDefinition } from './transformations/limit_transformation';
8+
import { sortByTransformationDefinition } from './transformations/sortby_transformation';
9+
import { filterTransformationDefinition } from './transformations/filter_transformation';
10+
import { addFieldTransformationDefinition } from './transformations/add_field_transformation';
11+
import { filterFieldsTransformationDefinition } from './transformations/filter_fields_transformation';
12+
import { convertFieldTypeTransformationDefinition } from './transformations/convert_field_type_transformation';
13+
import { groupByTransformationDefinition } from './transformations/group_by_transformation';
14+
import { extractFieldsTransformationDefinition } from './transformations/extract_fields_transformation';
15+
16+
export function registerAllTransformations(service: TransformationService): void {
17+
service.registerDefinition(limitTransformationDefinition);
18+
service.registerDefinition(sortByTransformationDefinition);
19+
service.registerDefinition(filterTransformationDefinition);
20+
service.registerDefinition(addFieldTransformationDefinition);
21+
service.registerDefinition(filterFieldsTransformationDefinition);
22+
service.registerDefinition(convertFieldTypeTransformationDefinition);
23+
service.registerDefinition(groupByTransformationDefinition);
24+
service.registerDefinition(extractFieldsTransformationDefinition);
25+
}

0 commit comments

Comments
 (0)