fix: bug with id

This commit is contained in:
IlyaDoronin 2023-10-25 17:09:47 +03:00
parent fb7f38e7df
commit af0dec5431
2 changed files with 38 additions and 16 deletions

@ -68,7 +68,24 @@ export const VERTICES: Vertex[] = [
"point_37", "point_37",
], ],
}, },
{ id: "point_6", label: "Вопрос 6", level: 2 }, {
id: "point_6",
label: "Вопрос 6",
level: 2,
edges: [
"point_45",
"point_46",
"point_47",
"point_48",
"point_49",
"point_50",
"point_51",
"point_52",
"point_53",
"point_54",
"point_55",
],
},
{ id: "point_7", label: "Вопрос 7", level: 2 }, { id: "point_7", label: "Вопрос 7", level: 2 },
{ id: "point_8", label: "Вопрос 8", level: 2 }, { id: "point_8", label: "Вопрос 8", level: 2 },
{ id: "point_9", label: "Вопрос 9", level: 2 }, { id: "point_9", label: "Вопрос 9", level: 2 },
@ -109,6 +126,20 @@ export const VERTICES: Vertex[] = [
{ id: "point_39", label: "Вопрос 39", level: 4 }, { id: "point_39", label: "Вопрос 39", level: 4 },
{ id: "point_40", label: "Вопрос 40", level: 4 }, { id: "point_40", label: "Вопрос 40", level: 4 },
{ id: "point_41", label: "Вопрос 41", level: 4 }, { id: "point_41", label: "Вопрос 41", level: 4 },
{ id: "point_42", label: "Вопрос 42", level: 4 },
{ id: "point_43", label: "Вопрос 43", level: 4 },
{ id: "point_44", label: "Вопрос 44", level: 4 },
{ id: "point_45", label: "Вопрос 45", level: 3 },
{ id: "point_46", label: "Вопрос 46", level: 3 },
{ id: "point_47", label: "Вопрос 47", level: 3 },
{ id: "point_48", label: "Вопрос 48", level: 3 },
{ id: "point_49", label: "Вопрос 49", level: 3 },
{ id: "point_50", label: "Вопрос 50", level: 3 },
{ id: "point_51", label: "Вопрос 51", level: 3 },
{ id: "point_52", label: "Вопрос 52", level: 3 },
{ id: "point_53", label: "Вопрос 53", level: 3 },
{ id: "point_54", label: "Вопрос 54", level: 3 },
{ id: "point_55", label: "Вопрос 55", level: 3 },
// { id: "point_", label: "Вопрос " }, // { id: "point_", label: "Вопрос " },
]; ];

@ -1,11 +1,6 @@
import type { ElementDefinition } from "cytoscape"; import type { ElementDefinition } from "cytoscape";
import type { Vertex } from "./elements"; import type { Vertex } from "./elements";
type VertexIndent = {
id: string;
indent: number;
};
const sortElementsByLevel = (vertices: Vertex[]): Record<number, Vertex[]> => { const sortElementsByLevel = (vertices: Vertex[]): Record<number, Vertex[]> => {
const sortedVertices: Record<number, Vertex[]> = {}; const sortedVertices: Record<number, Vertex[]> = {};
@ -27,9 +22,9 @@ const getEmptyVertexIndents = (
indent: number, indent: number,
currentIndent: number, currentIndent: number,
level: number level: number
): VertexIndent[] => { ): number[] => {
let topIndent = indent + currentIndent; let topIndent = indent + currentIndent;
const indents: VertexIndent[] = []; const indents: number[] = [];
elements.forEach(({ data, position }) => { elements.forEach(({ data, position }) => {
const isEmptyVertex = const isEmptyVertex =
@ -54,12 +49,12 @@ const getEmptyVertexIndents = (
if (indent < minTopIndent) { if (indent < minTopIndent) {
indent = minTopIndent; indent = minTopIndent;
indents.push({ id, indent: minTopIndent }); indents.push(minTopIndent);
return; return;
} }
indents.push({ id, indent: topIndent }); indents.push(topIndent);
} }
}); });
@ -76,7 +71,7 @@ export const createGraphElements = (
Object.values(sortedVertices).forEach((vertexItems) => { Object.values(sortedVertices).forEach((vertexItems) => {
let indent = 0; let indent = 0;
vertexItems.forEach(({ id, label, level, edges }) => { vertexItems.forEach(({ id, label, level, edges }, index) => {
const currentIndent = edges?.length ? edges?.length * 100 : 100; const currentIndent = edges?.length ? edges?.length * 100 : 100;
const emptyVertexIndents = getEmptyVertexIndents( const emptyVertexIndents = getEmptyVertexIndents(
elements, elements,
@ -88,11 +83,7 @@ export const createGraphElements = (
); );
if (emptyVertexIndents.length) { if (emptyVertexIndents.length) {
const emptyVertexIndent = emptyVertexIndents.find( indent = emptyVertexIndents[index] || indent;
(item) => item.id === id
);
indent = emptyVertexIndent?.indent || indent;
} }
elements.push({ elements.push({