denis 2024-01-11 18:02:44 +03:00
parent f6cec3232d
commit 8acffcb4a9
6 changed files with 53 additions and 5 deletions

5
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/refdb.iml" filepath="$PROJECT_DIR$/.idea/refdb.iml" />
</modules>
</component>
</project>

12
.idea/refdb.iml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

10
docs/readme.md Normal file
View File

@ -0,0 +1,10 @@
## Node
Узел, имеет атрибуты id, value, valueType
## Edge
Связь двух узлов, имеет атрибуты id, in_id, out_id
## Expression
Выражение

View File

@ -29,7 +29,8 @@ export class DataBase {
this.setMap.get(nodeParams.set)?.add(uuid);
switch (nodeParams.valueType) {
case "expression": {
this.expressionMap.set(nodeParams.id, uuid);
const {id} = nodeParams as ExpressionNode;
this.expressionMap.set(id, uuid);
break;
}
}
@ -62,7 +63,7 @@ export class DataBase {
return Array.from(uuids).map(u => this.get(u));
}
getExpression(id: string): ExpressionResult {
getExpression(id: ExpressionNode["id"]): ExpressionResult {
const uuid = this.expressionMap.get(id);
if (uuid == null) {
return null;
@ -75,7 +76,7 @@ export class DataBase {
if (cache != null) {
return cache;
}
const result = this.calculateExpression(node);
const result = this.calculateExpression(node as ExpressionNode);
this.expressionCacheMap.set(node.uuid, result);
return result;
}
@ -88,7 +89,10 @@ export class DataBase {
return set.length;
}
if (node.value.hasOwnProperty("expression")) {
const exprNode: ExpressionNode = this.nodeMap.get((node.value as CountWithExpression).expression);
const exprNode: ExpressionNode | undefined = this.nodeMap.get((node.value as CountWithExpression).expression) as ExpressionNode;
if (exprNode == null) {
return null;
}
const expressionValue = this.getExpression(exprNode.id);
if (expressionValue instanceof Array) {
return expressionValue.length;
@ -112,7 +116,10 @@ export class DataBase {
}) as ExpressionResult;
}
if (node.value.hasOwnProperty("expression")) {
const exprNode: ExpressionNode = this.nodeMap.get((node.value as FilterWithExpression).expression);
const exprNode: ExpressionNode | undefined = this.nodeMap.get((node.value as FilterWithExpression).expression) as ExpressionNode;
if (!exprNode) {
return null;
}
const expressionValue = this.getExpression(exprNode.id);
if (expressionValue instanceof Array) {
return expressionValue.length;