mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-29 16:14:42 +00:00
* chore(webpack): file-loader is added for font * chore(UI): monaco-editor is added * feat(UI): Editor component is added * feat(UI): List All Alerts is updated * feat(UI): Create Alert is updated * feat(API): create alert api is added * feat(page): EditRules is added * feat(UI): Alerts WIP * chore(typescript): typing are updated * update(UI): useFetch hook is updated * chore(UI): component for alerts is updated * chore(UI): create alert is updated * feat(UI): delete alert is now added * feat(api): Delete api is added * chore(route): edit rule route is updated * update(UI): get getAll put Alert functionality is added * update(UI): Alert Channels is updated in setting tab * chore(UI): alerts api is updated * chore(UI): getGroup api is updated * chore(UI): chprev api is updated * chore(UI): getGroup interface is exportable * feat(UI):Alerts is added * temp * feat(UI): triggered alerts is added * chore(UI): deafault key for the alert is updated * chore(UI): alerts linting is fixed * chore(UI): alerts linting is fixed * chore(UI): sort order is implemented * feat(FE): channels WIP * feat(UI): slack ui is updated * Channels is updated * feat(UI): slack ui is updated * fix(ROUTES): Channels have a seperate route * fix(build): production build is fixed by adding the file loader * fix(UI): create slack config is updated * fix(BUG): delete alert rule is fixed * fix(bug): after successfull edit user is navigated to all rules * fix(bug): alert is updated * fix(bug): expandable row is updated * fix(bug): filter and grouping of the alerts is fixed * chore(alerts): default title and description of the channels is updated * fix(UI): filtering is fixed * fix(UI): baseUrl is redirected to the nginx and text is updated * fix(BUG): destoryed the inactive pane * chore(UI): placeholder for the triggered alerts is updated * chore(FE): placeholder is updated * chore(UI): placeholder is updated for the create alert
52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
import { Alerts } from 'types/api/alerts/getAll';
|
|
|
|
import { Value } from './Filter';
|
|
|
|
export const FilterAlerts = (
|
|
allAlerts: Alerts[],
|
|
selectedFilter: Value[],
|
|
): Alerts[] => {
|
|
// also we need to update the alerts
|
|
// [[key,value]]
|
|
|
|
if (selectedFilter?.length === 0 || selectedFilter === undefined) {
|
|
return allAlerts;
|
|
}
|
|
|
|
const filter: string[] = [];
|
|
|
|
// filtering the value
|
|
selectedFilter.forEach((e) => {
|
|
const valueKey = e.value.split(':');
|
|
if (valueKey.length === 2) {
|
|
filter.push(e.value);
|
|
}
|
|
});
|
|
|
|
const tags = filter.map((e) => e.split(':'));
|
|
const objectMap = new Map();
|
|
|
|
const filteredKey = tags.reduce((acc, curr) => [...acc, curr[0]], []);
|
|
const filteredValue = tags.reduce((acc, curr) => [...acc, curr[1]], []);
|
|
|
|
filteredKey.forEach((key, index) =>
|
|
objectMap.set(key.trim(), filteredValue[index].trim()),
|
|
);
|
|
|
|
const filteredAlerts: Set<string> = new Set();
|
|
|
|
allAlerts.forEach((alert) => {
|
|
const { labels } = alert;
|
|
Object.keys(labels).forEach((e) => {
|
|
const selectedKey = objectMap.get(e);
|
|
|
|
// alerts which does not have the key with value
|
|
if (selectedKey && labels[e] === selectedKey) {
|
|
filteredAlerts.add(alert.fingerprint);
|
|
}
|
|
});
|
|
});
|
|
|
|
return allAlerts.filter((e) => filteredAlerts.has(e.fingerprint));
|
|
};
|