mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-24 02:46:27 +00:00
* feat: done with prd full view * refactor: updated some variable and naming convection * feat: when click on label only select associated graph * feat: made the table scrollable * feat: update the table column length * feat: save notification after saving state * refactor: removed unwanted code * refactor: renamed some file * fix: linter issue * fix: position of save button * refactor: seperated widgetGraphComponent from gridGraphComponent * feat: fetching the localstorage data while initial loading of graph * fix: dependency of graphVisibilityHandler for other component * refactor: updated the notification msg on save * fix: linter error * refactor: remove the update logic of graph from graph component * refactor: created utils and move some utility code * refactor: place the checkbox component in fullview * refactor: updated the utils function added enun localstorage * refactor: added enum for table columns data * refactor: name changes to graphVisibilityStates * refactor: shifted the type to types.ts * refactor: sepearated the type from graph componnet * refactor: seperated graphOptions from graph component * refactor: updated imports * refactor: shifted the logic to utils * refactor: remove unused file and check for full view * refactor: using PanelType instead of GraphType * refactor: changed the variable name * refactor: provided checks of useEffect * test: added unit test case for utility function * refactor: one on one maping of props and value * refactor: panelTypeAndGraphManagerVisibility as a props * refactor: remove the enforing of type in useChartMutable * refactor: updated the test case * refactor: moved types to types.ts files * refactor: separated types from components * refactor: one to one mapping and cancel feature * refactor: remove unwanted useEffect and used eventEmitter * fix: only open chart visibility will change issue * refactor: removed unwanted useEffect * refactor: resolve the hang issue for full view * refactor: legend to checkbox connection, separated code * refactor: updated styled component GraphContainer * chore: removed unwanted consoles * refactor: ux changes * fix: eslint and updated test case * refactor: review comments * chore: fix types * refactor: made utils for getIsGraphLegendToggleAvailable * refactor: removed the ref mutation from graphPanelSwitch * refactor: resolve the issue of chart state not getting reflect outside fullview * refactor: common utility for toggle graphs visibility in chart * refactor: shifted ref to perticular component level * test: removed extra space * chore: close on save and NaN infinity check * refactor: added yAxisUnit to GraphManager table header * refactor: create a function for appending yAxisUnit to table header * fix: decimal upto 2 decimal points --------- Co-authored-by: Vishal Sharma <makeavish786@gmail.com> Co-authored-by: Pranay Prateek <pranay@signoz.io> Co-authored-by: Palash Gupta <palashgdev@gmail.com>
67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { LOCALSTORAGE } from 'constants/localStorage';
|
|
|
|
import { LegendEntryProps } from './FullView/types';
|
|
import { showAllDataSet } from './FullView/utils';
|
|
import {
|
|
GetGraphVisibilityStateOnLegendClickProps,
|
|
GraphVisibilityLegendEntryProps,
|
|
ToggleGraphsVisibilityInChartProps,
|
|
} from './types';
|
|
|
|
export const getGraphVisibilityStateOnDataChange = ({
|
|
data,
|
|
isExpandedName,
|
|
name,
|
|
}: GetGraphVisibilityStateOnLegendClickProps): GraphVisibilityLegendEntryProps => {
|
|
const visibilityStateAndLegendEntry: GraphVisibilityLegendEntryProps = {
|
|
graphVisibilityStates: Array(data.datasets.length).fill(true),
|
|
legendEntry: showAllDataSet(data),
|
|
};
|
|
if (localStorage.getItem(LOCALSTORAGE.GRAPH_VISIBILITY_STATES) !== null) {
|
|
const legendGraphFromLocalStore = localStorage.getItem(
|
|
LOCALSTORAGE.GRAPH_VISIBILITY_STATES,
|
|
);
|
|
let legendFromLocalStore: {
|
|
name: string;
|
|
dataIndex: LegendEntryProps[];
|
|
}[] = [];
|
|
|
|
try {
|
|
legendFromLocalStore = JSON.parse(legendGraphFromLocalStore || '[]');
|
|
} catch (error) {
|
|
console.error(
|
|
'Error parsing GRAPH_VISIBILITY_STATES from local storage',
|
|
error,
|
|
);
|
|
}
|
|
|
|
const newGraphVisibilityStates = Array(data.datasets.length).fill(true);
|
|
legendFromLocalStore.forEach((item) => {
|
|
const newName = isExpandedName ? `${name}expanded` : name;
|
|
if (item.name === newName) {
|
|
visibilityStateAndLegendEntry.legendEntry = item.dataIndex;
|
|
data.datasets.forEach((datasets, i) => {
|
|
const index = item.dataIndex.findIndex(
|
|
(dataKey) => dataKey.label === datasets.label,
|
|
);
|
|
if (index !== -1) {
|
|
newGraphVisibilityStates[i] = item.dataIndex[index].show;
|
|
}
|
|
});
|
|
visibilityStateAndLegendEntry.graphVisibilityStates = newGraphVisibilityStates;
|
|
}
|
|
});
|
|
}
|
|
|
|
return visibilityStateAndLegendEntry;
|
|
};
|
|
|
|
export const toggleGraphsVisibilityInChart = ({
|
|
graphsVisibilityStates,
|
|
lineChartRef,
|
|
}: ToggleGraphsVisibilityInChartProps): void => {
|
|
graphsVisibilityStates?.forEach((showLegendData, index) => {
|
|
lineChartRef?.current?.toggleGraph(index, showLegendData);
|
|
});
|
|
};
|