mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-28 17:11:59 +08:00

* feat: pipeline page (#2168) * feat: Added POC of drag row table * fix: resolved eslint issue * fix: resolved webpack issue * fix: config changes * fix: removed unwanted code of antd table * feat: added icon on expand row * feat: ui of modal, alertbox & drag table * feat: added DraggableTableRow component * fix: issue on row reorder alert message * fix: styling & dynamic name when delete pipeline * feat: added edit modal ui * fix: modal on create or edit open issue * fix: types issue * fix: text change & styled component * fix: added react-i18next to translate constant * fix: removed webpack change * fix: webpack change * feat: added processor expand row poc * fix: linting issue * fix: sonar gate issues * fix: processor expand ui break issue * fix: added missing types * feat: added create & delete logic * fix: types issue * feat: added edit pipeline & processor logic * fix: added diff. local file for pipeline * fix: suggested changes for pipeline * fix: order of key name on useTranslation * test: added test cases * fix: code level changes * fix: code level changes * fix: edit tags issue * fix: changed inline function to handler * test: resolved test cases issue * fix: code level changes * fix: changed file structure * fix: added required styled component * feat: added common utils functions * fix: code level changes * test: added test cases * test: added more test cases * fix: abstracted code of pipeline column * fix: added utils for DraggableTableRow * fix: issue on drag at DraggableTableRow * test: added more test case * fix: abstracted code of processor column * fix: removed playwrite test * fix: abstracted code render method * fix: text correction pipline -> pipeline * test: added more test cases * fix: add pipeline form restructure * fix: add processor form restructure * fix: processor type issue * fix: forms abstraction * fix: on finish form abstraction * test: additional test cases of utils * feat: added new ui as per save config * fix: test cases issue * feat: added redux for data set managment * fix: updated logic of redux * fix: removed unused code * fix: modified pipeline data onchangeof processor data * fix: removed redux from pipeline * fix: test cases prop issue resolved * fix: reset field on add data * fix: sonar gate code smell * fix: sonar gate code duplicated issue * fix: code level changes * fix: add processor issue * fix: code level changes * chore: some of the types are updated * fix: inline css into styled component * fix: jsx element & type * fix: username, email object issue * fix: username, email object issue * fix: types issues * fix: inline condition removed * fix: code level changes * feat: integrated listing of pipeline & processor api * feat: integrated post api of pipeline & processor poc * feat: integrated delete api of pipeline & processor * fix: create pipeline api payload issue * fix: updated jest test cases * fix: processor order id ui issue * fix: create pipeline issue on payload * fix: add processor payload issue resolved * fix: added missing field on add pipeline * fix: processor type selection issue * fix: test cases updated * fix: sonar gate failed issue * fix: removed inline function * fix: enable switch logic at pipeline & processor level * fix: retain removed from type list * fix: build issue on jest * fix: test cases updated * chore: config is updated * chore: test snapshot is updated * fix: test cases updated * chore: test snapshot is updated * chore: test snapshot is updated * fix: api & ui integration of change history tab * chore: webpack is updated * test: test is updated * chore: build is fixed * chore: react-dnd is downgraded * chore: process is added * chore: build is fixed * chore: react-dnd is updated * fix: suggested changes * fix: tab pane issue * fix: build issue * fix: code level changes * fix: code level changes * fix: added types in def file * fix: code level changes * fix: test cases updated * fix: error message notification * fix: after reorder pipeline expand is not working * fix: on add of processor added optional field * feat: added search pipeline feature * fix: sonar gate failed issue * fix: processor reorder issue * fix: processor reorder output property issue * feat: added json_parser processor * fix: scalable code of component of column * fix: processor reorder issue * fix: search pipeline issue * fix: creating a pipeline description is an optional field * fix: nitya's suggested changes * fix: test cases updated * fix: edit data pipeline & processor * fix: pipeline cancel issue * fix: edit processor wrong payload * fix: processor reorder issue at payload * fix: pipeline undefined handle * fix: pipeline no data case * fix: updated test case * fix: resolved pipeline undefined issue * fix: processor data case * feat: added submenu system for pipeline * fix: pipeline suggested changes * fix: updated test case * fix: pipeline suggested changes * fix: test cases updated * test: updated test cases * chore: build issue * fix: pipeline level changes * fix: pipeline page access issue * fix: resolved issue on add operator when pipeline is empty * test: jest test cases updated * chore: try signoz cloud link is updated (#2928) * fix: solve history page issue --------- Co-authored-by: Palash Gupta <palashgdev@gmail.com> Co-authored-by: Vishal Sharma <makeavish786@gmail.com> Co-authored-by: Pranay Prateek <pranay@signoz.io> * chore: merge conflicts is resolved * test: snaps are updated * fix: remove unused dependency on process^0.11.10 --------- Co-authored-by: Chintan Sudani <46838508+techchintan@users.noreply.github.com> Co-authored-by: Vishal Sharma <makeavish786@gmail.com> Co-authored-by: Pranay Prateek <pranay@signoz.io> Co-authored-by: Raj <rkssisodiya@gmail.com>
151 lines
3.7 KiB
TypeScript
151 lines
3.7 KiB
TypeScript
import { Button, Divider, Form, Modal } from 'antd';
|
|
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { useSelector } from 'react-redux';
|
|
import { AppState } from 'store/reducers';
|
|
import { ActionMode, ActionType, PipelineData } from 'types/api/pipeline/def';
|
|
import AppReducer from 'types/reducer/app';
|
|
import { v4 } from 'uuid';
|
|
|
|
import { ModalButtonWrapper, ModalTitle } from '../styles';
|
|
import { getEditedDataSource, getRecordIndex } from '../utils';
|
|
import { renderPipelineForm } from './utils';
|
|
|
|
function AddNewPipeline({
|
|
isActionType,
|
|
setActionType,
|
|
selectedPipelineData,
|
|
setShowSaveButton,
|
|
setCurrPipelineData,
|
|
currPipelineData,
|
|
}: AddNewPipelineProps): JSX.Element {
|
|
const [form] = Form.useForm();
|
|
const { t } = useTranslation('pipeline');
|
|
const { user } = useSelector<AppState, AppReducer>((state) => state.app);
|
|
|
|
const isEdit = isActionType === 'edit-pipeline';
|
|
const isAdd = isActionType === 'add-pipeline';
|
|
|
|
useEffect(() => {
|
|
if (isEdit) {
|
|
form.setFieldsValue(selectedPipelineData);
|
|
}
|
|
if (isAdd) {
|
|
form.resetFields();
|
|
}
|
|
}, [form, isEdit, isAdd, selectedPipelineData]);
|
|
|
|
const onFinish = (values: PipelineData): void => {
|
|
const newPipeLineData: PipelineData = {
|
|
id: v4(),
|
|
orderId: (currPipelineData?.length || 0) + 1,
|
|
createdAt: new Date().toISOString(),
|
|
createdBy: user?.name || '',
|
|
name: values.name,
|
|
alias: values.name.replace(/\s/g, ''),
|
|
description: values.description,
|
|
filter: values.filter,
|
|
config: [],
|
|
enabled: true,
|
|
};
|
|
|
|
if (isEdit && selectedPipelineData) {
|
|
const findRecordIndex = getRecordIndex(
|
|
currPipelineData,
|
|
selectedPipelineData,
|
|
'id',
|
|
);
|
|
const updatedPipelineData: PipelineData = {
|
|
...currPipelineData[findRecordIndex],
|
|
...values,
|
|
};
|
|
|
|
const editedPipelineData = getEditedDataSource(
|
|
currPipelineData,
|
|
selectedPipelineData,
|
|
'id',
|
|
updatedPipelineData,
|
|
);
|
|
|
|
setCurrPipelineData(editedPipelineData);
|
|
}
|
|
if (isAdd) {
|
|
setCurrPipelineData((prevState) => {
|
|
if (prevState) return [...prevState, newPipeLineData];
|
|
return [newPipeLineData];
|
|
});
|
|
}
|
|
setActionType(undefined);
|
|
};
|
|
|
|
const onCancelModalHandler = (): void => {
|
|
setActionType(undefined);
|
|
};
|
|
|
|
const modalTitle = useMemo(
|
|
(): string =>
|
|
isEdit
|
|
? `${t('edit_pipeline')} : ${selectedPipelineData?.name}`
|
|
: t('create_pipeline'),
|
|
[isEdit, selectedPipelineData?.name, t],
|
|
);
|
|
|
|
const onOkModalHandler = useCallback(
|
|
() => setShowSaveButton(ActionMode.Editing),
|
|
[setShowSaveButton],
|
|
);
|
|
|
|
const isOpen = useMemo(() => isEdit || isAdd, [isAdd, isEdit]);
|
|
|
|
return (
|
|
<Modal
|
|
title={<ModalTitle level={4}>{modalTitle}</ModalTitle>}
|
|
centered
|
|
open={isOpen}
|
|
width={800}
|
|
footer={null}
|
|
onCancel={onCancelModalHandler}
|
|
>
|
|
<Divider plain />
|
|
<Form
|
|
name="add-new-pipeline"
|
|
layout="vertical"
|
|
onFinish={onFinish}
|
|
autoComplete="off"
|
|
form={form}
|
|
>
|
|
{renderPipelineForm()}
|
|
<Divider plain />
|
|
<Form.Item>
|
|
<ModalButtonWrapper>
|
|
<Button
|
|
key="submit"
|
|
type="primary"
|
|
htmlType="submit"
|
|
onClick={onOkModalHandler}
|
|
>
|
|
{isEdit ? t('update') : t('create')}
|
|
</Button>
|
|
<Button key="cancel" onClick={onCancelModalHandler}>
|
|
{t('cancel')}
|
|
</Button>
|
|
</ModalButtonWrapper>
|
|
</Form.Item>
|
|
</Form>
|
|
</Modal>
|
|
);
|
|
}
|
|
|
|
interface AddNewPipelineProps {
|
|
isActionType: string;
|
|
setActionType: (actionType?: ActionType) => void;
|
|
selectedPipelineData: PipelineData | undefined;
|
|
setShowSaveButton: (actionMode: ActionMode) => void;
|
|
setCurrPipelineData: (
|
|
value: React.SetStateAction<Array<PipelineData>>,
|
|
) => void;
|
|
currPipelineData: Array<PipelineData>;
|
|
}
|
|
|
|
export default AddNewPipeline;
|