52 lines
1.2 KiB
TypeScript
Raw Normal View History

Feat(UI): alerts (#363) * 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
2021-11-22 11:49:09 +05:30
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));
};