feat: getCurrentIndent
This commit is contained in:
parent
af0dec5431
commit
f6c5d2a188
@ -47,6 +47,23 @@ export const VERTICES: Vertex[] = [
|
|||||||
"point_25",
|
"point_25",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{ id: "point_333", label: "Вопрос 333", level: 2 },
|
||||||
|
{ id: "point_334", label: "Вопрос 334", level: 2 },
|
||||||
|
{ id: "point_335", label: "Вопрос 335", level: 2 },
|
||||||
|
{ id: "point_336", label: "Вопрос 336", level: 2 },
|
||||||
|
{ id: "point_337", label: "Вопрос 337", level: 2 },
|
||||||
|
{ id: "point_338", label: "Вопрос 338", level: 2 },
|
||||||
|
{ id: "point_339", label: "Вопрос 339", level: 2 },
|
||||||
|
{ id: "point_340", label: "Вопрос 340", level: 2 },
|
||||||
|
{ id: "point_341", label: "Вопрос 341", level: 2 },
|
||||||
|
{ id: "point_342", label: "Вопрос 342", level: 2 },
|
||||||
|
{ id: "point_343", label: "Вопрос 343", level: 2 },
|
||||||
|
{ id: "point_344", label: "Вопрос 344", level: 2 },
|
||||||
|
{ id: "point_345", label: "Вопрос 345", level: 2 },
|
||||||
|
{ id: "point_346", label: "Вопрос 346", level: 2 },
|
||||||
|
{ id: "point_347", label: "Вопрос 347", level: 2 },
|
||||||
|
{ id: "point_348", label: "Вопрос 348", level: 2 },
|
||||||
|
{ id: "point_349", label: "Вопрос 349", level: 2 },
|
||||||
{ id: "point_3", label: "Вопрос 3", level: 2 },
|
{ id: "point_3", label: "Вопрос 3", level: 2 },
|
||||||
{ id: "point_4", label: "Вопрос 4", level: 2 },
|
{ id: "point_4", label: "Вопрос 4", level: 2 },
|
||||||
{
|
{
|
||||||
@ -93,7 +110,12 @@ export const VERTICES: Vertex[] = [
|
|||||||
{ id: "point_11", label: "Вопрос 11", level: 2 },
|
{ id: "point_11", label: "Вопрос 11", level: 2 },
|
||||||
{ id: "point_12", label: "Вопрос 12", level: 2 },
|
{ id: "point_12", label: "Вопрос 12", level: 2 },
|
||||||
{ id: "point_13", label: "Вопрос 13", level: 2 },
|
{ id: "point_13", label: "Вопрос 13", level: 2 },
|
||||||
{ id: "point_14", label: "Вопрос 14", level: 3 },
|
{
|
||||||
|
id: "point_14",
|
||||||
|
label: "Вопрос 14",
|
||||||
|
level: 3,
|
||||||
|
edges: ["point_61", "point_62", "point_63"],
|
||||||
|
},
|
||||||
{ id: "point_15", label: "Вопрос 15", level: 3 },
|
{ id: "point_15", label: "Вопрос 15", level: 3 },
|
||||||
{ id: "point_16", label: "Вопрос 16", level: 3 },
|
{ id: "point_16", label: "Вопрос 16", level: 3 },
|
||||||
{ id: "point_17", label: "Вопрос 17", level: 3 },
|
{ id: "point_17", label: "Вопрос 17", level: 3 },
|
||||||
@ -122,13 +144,6 @@ export const VERTICES: Vertex[] = [
|
|||||||
level: 3,
|
level: 3,
|
||||||
edges: ["point_38", "point_39", "point_40", "point_41"],
|
edges: ["point_38", "point_39", "point_40", "point_41"],
|
||||||
},
|
},
|
||||||
{ id: "point_38", label: "Вопрос 38", level: 4 },
|
|
||||||
{ id: "point_39", label: "Вопрос 39", level: 4 },
|
|
||||||
{ id: "point_40", label: "Вопрос 40", 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_45", label: "Вопрос 45", level: 3 },
|
||||||
{ id: "point_46", label: "Вопрос 46", level: 3 },
|
{ id: "point_46", label: "Вопрос 46", level: 3 },
|
||||||
{ id: "point_47", label: "Вопрос 47", level: 3 },
|
{ id: "point_47", label: "Вопрос 47", level: 3 },
|
||||||
@ -140,6 +155,26 @@ export const VERTICES: Vertex[] = [
|
|||||||
{ id: "point_53", label: "Вопрос 53", level: 3 },
|
{ id: "point_53", label: "Вопрос 53", level: 3 },
|
||||||
{ id: "point_54", label: "Вопрос 54", level: 3 },
|
{ id: "point_54", label: "Вопрос 54", level: 3 },
|
||||||
{ id: "point_55", label: "Вопрос 55", level: 3 },
|
{ id: "point_55", label: "Вопрос 55", level: 3 },
|
||||||
|
{ id: "point_61", label: "Вопрос 61", level: 4 },
|
||||||
|
{ id: "point_62", label: "Вопрос 62", level: 4 },
|
||||||
|
{ id: "point_63", label: "Вопрос 63", level: 4 },
|
||||||
|
{ id: "point_38", label: "Вопрос 38", level: 4 },
|
||||||
|
{
|
||||||
|
id: "point_39",
|
||||||
|
label: "Вопрос 39",
|
||||||
|
level: 4,
|
||||||
|
edges: ["point_56", "point_57", "point_58", "point_59", "point_60"],
|
||||||
|
},
|
||||||
|
{ id: "point_40", label: "Вопрос 40", 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_56", label: "Вопрос 56", level: 5 },
|
||||||
|
{ id: "point_57", label: "Вопрос 57", level: 5 },
|
||||||
|
{ id: "point_58", label: "Вопрос 58", level: 5 },
|
||||||
|
{ id: "point_59", label: "Вопрос 59", level: 5 },
|
||||||
|
{ id: "point_60", label: "Вопрос 60", level: 5 },
|
||||||
// { id: "point_", label: "Вопрос " },
|
// { id: "point_", label: "Вопрос " },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -15,25 +15,54 @@ const sortElementsByLevel = (vertices: Vertex[]): Record<number, Vertex[]> => {
|
|||||||
return sortedVertices;
|
return sortedVertices;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getEmptyVertexIndents = (
|
const getCurrentIndent = (
|
||||||
|
id: string,
|
||||||
|
edges: string[] | undefined,
|
||||||
|
vertices: Vertex[]
|
||||||
|
): number => {
|
||||||
|
let currentIndent = 0;
|
||||||
|
|
||||||
|
if (!edges?.length) {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
const calculatePointIndent = (pointId: string) => {
|
||||||
|
const point = vertices.find(({ id }) => pointId === id);
|
||||||
|
|
||||||
|
if (point?.edges) {
|
||||||
|
currentIndent += point.edges.length * 100;
|
||||||
|
|
||||||
|
point.edges.forEach((edge) => {
|
||||||
|
console.log(id, currentIndent);
|
||||||
|
calculatePointIndent(edge);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
calculatePointIndent(id);
|
||||||
|
|
||||||
|
return currentIndent;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getVertexIndent = (
|
||||||
elements: ElementDefinition[],
|
elements: ElementDefinition[],
|
||||||
vertices: Vertex[],
|
vertices: Vertex[],
|
||||||
id: string,
|
id: string,
|
||||||
indent: number,
|
indent: number,
|
||||||
currentIndent: number,
|
currentIndent: number,
|
||||||
level: number
|
level: number
|
||||||
): number[] => {
|
): number => {
|
||||||
let topIndent = indent + currentIndent;
|
let topIndent = indent + currentIndent;
|
||||||
const indents: number[] = [];
|
let indentResult: number = 0;
|
||||||
|
|
||||||
elements.forEach(({ data, position }) => {
|
for (const { data, position } of elements) {
|
||||||
const isEmptyVertex =
|
const isEmptyVertex =
|
||||||
position?.y === topIndent &&
|
position?.y === topIndent &&
|
||||||
position?.x === level * 250 - 250 &&
|
position?.x === (level - 1) * 250 &&
|
||||||
vertices.find((item) => item.id === data.id && !item.edges?.length);
|
vertices.find((item) => item.id === data.id && !item.edges?.length);
|
||||||
|
|
||||||
if (!isEmptyVertex) {
|
if (!isEmptyVertex) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const parentVertex = vertices.find(({ edges }) => edges?.includes(id));
|
const parentVertex = vertices.find(({ edges }) => edges?.includes(id));
|
||||||
@ -48,17 +77,14 @@ const getEmptyVertexIndents = (
|
|||||||
topIndent += 200;
|
topIndent += 200;
|
||||||
|
|
||||||
if (indent < minTopIndent) {
|
if (indent < minTopIndent) {
|
||||||
indent = minTopIndent;
|
indentResult = minTopIndent;
|
||||||
indents.push(minTopIndent);
|
|
||||||
|
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
indents.push(topIndent);
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
return indents;
|
return indentResult;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createGraphElements = (
|
export const createGraphElements = (
|
||||||
@ -71,9 +97,9 @@ 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 }, index) => {
|
vertexItems.forEach(({ id, label, level, edges }) => {
|
||||||
const currentIndent = edges?.length ? edges?.length * 100 : 100;
|
const currentIndent = getCurrentIndent(id, edges, vertices);
|
||||||
const emptyVertexIndents = getEmptyVertexIndents(
|
const emptyVertexIndent = getVertexIndent(
|
||||||
elements,
|
elements,
|
||||||
vertices,
|
vertices,
|
||||||
id,
|
id,
|
||||||
@ -82,9 +108,7 @@ export const createGraphElements = (
|
|||||||
level
|
level
|
||||||
);
|
);
|
||||||
|
|
||||||
if (emptyVertexIndents.length) {
|
indent = emptyVertexIndent || indent;
|
||||||
indent = emptyVertexIndents[index] || indent;
|
|
||||||
}
|
|
||||||
|
|
||||||
elements.push({
|
elements.push({
|
||||||
data: { id, label },
|
data: { id, label },
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user