mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-23 18:36:16 +00:00
* feat: logs explorer - new design * feat: update styles * feat: added new toolbar for logs explorer (#4336) * feat: logs list view changes (#4348) * feat: logs list view changes * fix: list view and toolbar styles * feat: side btns * feat: added auto refresh handler * feat: handle popover close for btn click date time * feat: extract the common log actions btn component * feat: update the button for log line actions * fix: event propagation from context button * feat: use styles from ui-library * Query builder design update (#4359) * feat: QB design update * fix: add functionality and light mode styles * fix: ts issues * fix: update all css color variables to correct names * fix: lint errors * feat: new table view for logs explorer list section (#4353) * feat: table view changes for logs list * feat: code refactor to support log line actions * feat: code refactor to support log line actions * fix: the positioning of the btns * feat: fix the table onclick * fix: header issue * fix: on hover * fix: type issue * fix: eslint error * fix: type errors (#4360) * feat: handle light theme for logs explorer design changes (#4363) * feat: handle light theme for list tables and dateTime selection * feat: handle light theme for popover * fix: address review comments * feat: date time custom time modal to render inside the new popover (#4366) * feat: single calender for range picker * fix: edgecases * feat: integrate date time selector across app * fix: remove dangling border after element removal * feat: handle qb design changes across the application * feat: handle light theme * feat: handle light theme * fix: virtuoso scroll refresh issue * feat: handle new typing changes for date time picker v2 (#4386) Co-authored-by: Yunus M <myounis.ar@live.com> * chore: styles improvement across new design (#4389) * fix: improve date time styles * feat: table view changes according to new design * fix: button visibility in clickhouse and promQL headers (#4390) * feat: change the tabs to new design buttons for query builder * Settings theme change (#4368) * feat: settings theme change * [Refactor]: New design for Log details page (#4362) New design for Log details page Co-authored-by: Vikrant Gupta <vikrant.thomso@gmail.com> Co-authored-by: Yunus M <myounis.ar@live.com> * feat: save view for new design (#4392) * feat: save view for new design * refactor: done with save view * feat: update styles for logs detail view (#4407) * feat: update styles for logs detail view * feat: update styles for logs detail view * feat: add raw view attributes in the logs list view (#4422) * feat: add raw view attributes in the logs list view * feat: add raw view attributes in the logs list view * fix: raw attributes * fix: logs UI improvements (#4426) * fix: remove fixed times from the date time picker v2 * fix: added old logs explorer CTA in new designs * feat: handle active logs indicator update * fix: address review comments * fix: old logs explorer page * fix: remove info text and add relative time buttons * fix: update logs explorer tab designs * fix: update logs explorer tab designs * fix: update logs explorer tab designs * refactor: New design for Save views. (#4435) * feat: [GH-4436]: date range enhancements (#4448) * feat: [GH-4436]: when selecting custom time range it should be from start of day to end of date * fix: custom time width and refresh text visibility issues (#4428) --------- Co-authored-by: Yunus M <myounis.ar@live.com> * feat: update ui (#4449) * feat: added loading and error states for logs design (#4452) * feat: added loading and error states for logs design * feat: added error states for table view and time series view * feat: handle error and loading states * feat: loading states * [Refactor]: Tab Switch deplay issue and UI improvement for Clickhouse (#4409) * fix: switching between logs display tabs (#4457) * [Feat]: View in Traces (#4450) * refactor: datetime selector beside run query removed add to dashboard * refactor: added tab for traces view details page * refactor: done with the save view in traces * fix: the gittery effect when navigatigating from views * refactor: view tab view title light mode support * refactor: removed console * fix: gittery effect when switch view from views tabs * refactor: separate traces routes * refactor: remove query params * chore: fix tsc issues * fix: jest config issues * fix: update TODO and remove extra braces * feat: handle loading states and incorporate ui feedback (#4479) * UI feedback updates (#4482) * feat: handle loading and fix ui issues * feat: ui updates * fix: logs explorer issues (#4483) * fix: logs explorer issues * fix: jest test cases * feat: support custom times unique to pages new design changes (#4485) * fix: loading states for list log view (#4486) * fix: logs search view query fix, logs details view - attribute tags alignment fix (#4489) * fix: delete empty file * fix: chart loading when scrolling logs (#4495) * fix: chart should not load when scrolling the logs as it is already fetched * fix: make the search bar as default rather than advanced options * fix: rename show context to show in context * fix: query range api not triggering on default select first load (#4498) * Refactor: Log Explorer UI changes. (#4502) * refactor: used selected view enum * refactor: updated hight of switch old button and tab border * refactor: import fixes * refactor: query builder border and button groups * refactor: removed hypen from refreshed * refactor: show delete button only when there is more than one query * refactor: sqaure up the query build button groups * refactor: updated css * fix: additional filter color button shadow * refactor: removed commented code and used selected panel enum * refactor: updated typecheck script * refactor: used enum selected view (#4504) * fix: retain the current query on date time change (#4510) * feat: added new icon for promQL and added tooltips for dashboards and alerts (#4512) * feat: added new icon for promQL and added tooltips for dashboards and alerts * fix: styles at 1440 px zoom * fix: rename clickhouse to clickHouse --------- Co-authored-by: Vikrant Gupta <54737045+Vikrant2520@users.noreply.github.com> Co-authored-by: Vikrant Gupta <vikrant.thomso@gmail.com> Co-authored-by: Rajat Dabade <rajat@signoz.io>
214 lines
5.4 KiB
TypeScript
214 lines
5.4 KiB
TypeScript
import './Overview.styles.scss';
|
|
|
|
import MEditor, { EditorProps, Monaco } from '@monaco-editor/react';
|
|
import { Color } from '@signozhq/design-tokens';
|
|
import {
|
|
Button,
|
|
Collapse,
|
|
Divider,
|
|
Input,
|
|
Switch,
|
|
Tag,
|
|
Typography,
|
|
} from 'antd';
|
|
import { AddToQueryHOCProps } from 'components/Logs/AddToQueryHOC';
|
|
import { useIsDarkMode } from 'hooks/useDarkMode';
|
|
import { ChevronDown, ChevronRight, Search } from 'lucide-react';
|
|
import { ReactNode, useState } from 'react';
|
|
import { ILog } from 'types/api/logs/log';
|
|
|
|
import { ActionItemProps } from './ActionItem';
|
|
import TableView from './TableView';
|
|
|
|
interface OverviewProps {
|
|
logData: ILog;
|
|
}
|
|
|
|
type Props = OverviewProps &
|
|
Partial<Pick<ActionItemProps, 'onClickActionItem'>> &
|
|
Pick<AddToQueryHOCProps, 'onAddToQuery'>;
|
|
|
|
function Overview({
|
|
logData,
|
|
onAddToQuery,
|
|
onClickActionItem,
|
|
}: Props): JSX.Element {
|
|
const [isWrapWord, setIsWrapWord] = useState<boolean>(false);
|
|
const [isSearchVisible, setIsSearchVisible] = useState<boolean>(false);
|
|
const [isAttributesExpanded, setIsAttributesExpanded] = useState<boolean>(
|
|
true,
|
|
);
|
|
const [fieldSearchInput, setFieldSearchInput] = useState<string>('');
|
|
|
|
const isDarkMode = useIsDarkMode();
|
|
|
|
const options: EditorProps['options'] = {
|
|
automaticLayout: true,
|
|
readOnly: true,
|
|
height: '40vh',
|
|
wordWrap: 'on',
|
|
minimap: {
|
|
enabled: false,
|
|
},
|
|
fontWeight: 400,
|
|
// fontFamily: 'SF Mono',
|
|
fontFamily: 'Space Mono',
|
|
fontSize: 13,
|
|
lineHeight: '18px',
|
|
colorDecorators: true,
|
|
scrollBeyondLastLine: false,
|
|
scrollbar: {
|
|
vertical: 'hidden',
|
|
horizontal: 'hidden',
|
|
},
|
|
};
|
|
|
|
const handleWrapWord = (checked: boolean): void => {
|
|
setIsWrapWord(checked);
|
|
};
|
|
|
|
function setEditorTheme(monaco: Monaco): void {
|
|
monaco.editor.defineTheme('my-theme', {
|
|
base: 'vs-dark',
|
|
inherit: true,
|
|
rules: [
|
|
{ token: 'string.key.json', foreground: Color.BG_VANILLA_400 },
|
|
{ token: 'string.value.json', foreground: Color.BG_ROBIN_400 },
|
|
],
|
|
colors: {
|
|
'editor.background': Color.BG_INK_400,
|
|
},
|
|
// fontFamily: 'SF Mono',
|
|
fontFamily: 'Space Mono',
|
|
fontSize: 12,
|
|
fontWeight: 'normal',
|
|
lineHeight: 18,
|
|
letterSpacing: -0.06,
|
|
});
|
|
}
|
|
|
|
const handleSearchVisible = (): void => {
|
|
setIsSearchVisible(!isSearchVisible);
|
|
};
|
|
|
|
const toogleAttributePanelOpenState = (): void => {
|
|
setIsAttributesExpanded(!isAttributesExpanded);
|
|
};
|
|
|
|
return (
|
|
<div className="overview-container">
|
|
<Collapse
|
|
defaultActiveKey={['1']}
|
|
// eslint-disable-next-line react/no-unstable-nested-components
|
|
expandIcon={(props): ReactNode =>
|
|
props.isActive ? <ChevronDown size={14} /> : <ChevronRight size={14} />
|
|
}
|
|
items={[
|
|
{
|
|
key: '1',
|
|
label: (
|
|
<Tag bordered={false}>
|
|
<Typography.Text style={{ color: Color.BG_ROBIN_400 }}>
|
|
body
|
|
</Typography.Text>
|
|
</Tag>
|
|
),
|
|
children: (
|
|
<div className="logs-body-content">
|
|
<MEditor
|
|
value={isWrapWord ? JSON.stringify(logData.body) : logData.body}
|
|
language={isWrapWord ? 'placetext' : 'json'}
|
|
options={options}
|
|
onChange={(): void => {}}
|
|
height="20vh"
|
|
theme={isDarkMode ? 'my-theme' : 'light'}
|
|
// eslint-disable-next-line react/jsx-no-bind
|
|
beforeMount={setEditorTheme}
|
|
/>
|
|
<Divider
|
|
style={{
|
|
margin: 0,
|
|
border: isDarkMode
|
|
? `1px solid ${Color.BG_SLATE_500}`
|
|
: `1px solid ${Color.BG_VANILLA_200}`,
|
|
}}
|
|
/>
|
|
<div className="log-switch">
|
|
<div className="wrap-word-switch">
|
|
<Typography.Text>Wrap text</Typography.Text>
|
|
<Switch checked={isWrapWord} onChange={handleWrapWord} size="small" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
),
|
|
extra: <Tag className="tag">{isWrapWord ? 'Raw' : 'JSON'}</Tag>,
|
|
className: 'collapse-content',
|
|
},
|
|
]}
|
|
/>
|
|
|
|
<Collapse
|
|
className="attribute-table"
|
|
defaultActiveKey={['1']}
|
|
bordered={false}
|
|
// eslint-disable-next-line react/no-unstable-nested-components
|
|
expandIcon={(props): ReactNode =>
|
|
props.isActive ? <ChevronDown size={14} /> : <ChevronRight size={14} />
|
|
}
|
|
items={[
|
|
{
|
|
key: '1',
|
|
label: (
|
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
<div
|
|
className="attribute-tab-header"
|
|
onClick={toogleAttributePanelOpenState}
|
|
>
|
|
<Tag bordered={false}>
|
|
<Typography.Text style={{ color: Color.BG_ROBIN_400 }}>
|
|
Attributes
|
|
</Typography.Text>
|
|
</Tag>
|
|
|
|
{isAttributesExpanded && (
|
|
<Button
|
|
className="action-btn"
|
|
icon={<Search size={12} />}
|
|
onClick={(e): void => {
|
|
e.stopPropagation();
|
|
handleSearchVisible();
|
|
}}
|
|
/>
|
|
)}
|
|
</div>
|
|
),
|
|
children: (
|
|
<>
|
|
{isSearchVisible && (
|
|
<Input
|
|
autoFocus
|
|
placeholder="Search for a field..."
|
|
className="search-input"
|
|
value={fieldSearchInput}
|
|
onChange={(e): void => setFieldSearchInput(e.target.value)}
|
|
/>
|
|
)}
|
|
|
|
<TableView
|
|
logData={logData}
|
|
onAddToQuery={onAddToQuery}
|
|
fieldSearchInput={fieldSearchInput}
|
|
onClickActionItem={onClickActionItem}
|
|
/>
|
|
</>
|
|
),
|
|
className: 'collapse-content attribute-collapse',
|
|
},
|
|
]}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default Overview;
|