Skip to content
Snippets Groups Projects
Verified Commit c50803ae authored by Marcos Pieras's avatar Marcos Pieras Committed by Dennis Collaris
Browse files

feat: WIP appearance check

parent e9ab5ca7
No related branches found
No related tags found
No related merge requests found
import type { InsightModel } from 'ts-common';
import type { GraphQueryResultMetaFromBackend } from 'ts-common/src/model/webSocket/graphResult';
import type { SaveState } from 'ts-common';
export type AppearanceMap = {
[key: string]: { count: number; queries: string[] };
};
export function appearanceCheck(
result: GraphQueryResultMetaFromBackend,
insight: InsightModel,
ss: SaveState,
queryIndex: number,
appeareanceResult: {
nodeAppearance: AppearanceMap;
edgeAppearances: AppearanceMap;
},
) {
const nameQuery = ss.queryStates.openQueryArray[queryIndex].name;
const queryNodesID = result.nodes
.filter(node => !insight.entitiesAppearances?.nodeLabel || node.label === insight.entitiesAppearances.nodeLabel)
.map(node => node._id);
const queryEdgesID = result.edges
.filter(edge => !insight.entitiesAppearances?.edgeLabel || edge.label === insight.entitiesAppearances.edgeLabel)
.map(edge => edge._id);
trackEntityAppearances(
queryNodesID,
appeareanceResult.nodeAppearance,
nameQuery ? nameQuery : ss.queryStates.openQueryArray[queryIndex].id?.toString() || 'default-id',
);
trackEntityAppearances(
queryEdgesID,
appeareanceResult.edgeAppearances,
nameQuery ? nameQuery : ss.queryStates.openQueryArray[queryIndex].id?.toString() || 'default-id',
);
}
export const trackEntityAppearances = (
entities: string[],
appearances: AppearanceMap,
queryId: string, // Changed to string
) => {
for (const entity of entities) {
if (!appearances[entity]) {
appearances[entity] = { count: 0, queries: [] };
}
appearances[entity].count++;
appearances[entity].queries.push(queryId);
}
};
...@@ -9,6 +9,7 @@ import { query2Cypher } from '../utils/cypher/converter'; ...@@ -9,6 +9,7 @@ import { query2Cypher } from '../utils/cypher/converter';
import { queryService } from './queryService'; import { queryService } from './queryService';
import { statCheck } from './statCheck'; import { statCheck } from './statCheck';
import { diffCheck } from './diffCheck'; import { diffCheck } from './diffCheck';
import { type AppearanceMap, appearanceCheck } from './appearanceCheck';
import { VariableNode } from '../utils/lexical'; import { VariableNode } from '../utils/lexical';
import { populateTemplate } from '../utils/insights'; import { populateTemplate } from '../utils/insights';
import { RabbitMqBroker } from 'ts-common/rabbitMq'; import { RabbitMqBroker } from 'ts-common/rabbitMq';
...@@ -87,6 +88,9 @@ export const insightProcessor = async () => { ...@@ -87,6 +88,9 @@ export const insightProcessor = async () => {
const queries = ss.queryStates.openQueryArray; const queries = ss.queryStates.openQueryArray;
const visualizations = ss.visualizations.openVisualizationArray; const visualizations = ss.visualizations.openVisualizationArray;
const nodeAppearances: AppearanceMap = {};
const edgeAppearances: AppearanceMap = {};
for (const queryIndex in queries) { for (const queryIndex in queries) {
const visualQuery = ss.queryStates.openQueryArray[queryIndex].graph; const visualQuery = ss.queryStates.openQueryArray[queryIndex].graph;
const queryBuilderSettings = ss.queryStates.openQueryArray[queryIndex].settings; const queryBuilderSettings = ss.queryStates.openQueryArray[queryIndex].settings;
...@@ -104,6 +108,9 @@ export const insightProcessor = async () => { ...@@ -104,6 +108,9 @@ export const insightProcessor = async () => {
insight = await diffCheck(insight, ss, result); insight = await diffCheck(insight, ss, result);
} else if (insight.alarmMode === 'conditional' && insight.conditionsCheck && insight.conditionsCheck.length > 0) { } else if (insight.alarmMode === 'conditional' && insight.conditionsCheck && insight.conditionsCheck.length > 0) {
insight = statCheck(insight, result); insight = statCheck(insight, result);
} else if (insight.alarmMode === 'entitiesAppearances') {
appearanceCheck(result, insight, ss, Number(queryIndex), { nodeAppearance: nodeAppearances, edgeAppearances: edgeAppearances });
log.info('LogicSet resultSet:', nodeAppearances);
} }
if (insight.userId == null) return; // fixes ts but never is the case if (insight.userId == null) return; // fixes ts but never is the case
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment