Никаких подсказок, почему этот Digraph не отображается в моем SVG, не дано.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Никаких подсказок, почему этот Digraph не отображается в моем SVG, не дано.

Сообщение Anonymous »

У меня есть следующая функция:

Код: Выделить всё

export async function drawTechTree(techData, svgElement) {
let graphDef = "digraph TechTree {\n";
graphDef += 'node [style="filled", color="black", fontcolor="white", fillcolor="black", fontname="Arial"];\n';

for (const [key, value] of Object.entries(techData)) {
const price = value.price || "Unknown";
const label = `${key}[/b]
Price: ${price}`;
graphDef += `${key} [label= shape="box"];\n`;
}

for (const [key, value] of Object.entries(techData)) {
const appearsAt = value.appearsAt || [];
if (appearsAt.length > 1) {
for (let i = 1; i < appearsAt.length; i++) {
const prereq = appearsAt[i];
if (prereq) {
graphDef += `${prereq} -> ${key};\n`;
}
}
}
}

graphDef += "}";

console.log("Graph definition:", graphDef);

try {
console.log("Rendering graph...");
await new Promise((resolve, reject) => {
d3.select(svgElement)
.graphviz()
.zoom(false)
.renderDot(graphDef)
.on("end", () => {
console.log("Graph rendered successfully");
resolve();
})
.on("error", (err) => {
console.error("Error while rendering the graph:", err);
reject(err);
});
});
} catch (error) {
console.error("An error occurred during graph rendering:", error);
}
}
Я передаю:

Код: Выделить всё

    fetch('./resources/techData.json')
.then((response) => response.json())
.then((techData) => {
drawTechTree(techData, '#techTreeSvg');
})
.catch((error) => console.error('Error loading tech data:', error));
Это дает графу Def идеально сформированную строку DOT, которую я могу отображать в других онлайн-сервисах, которые отображают их в SVG.
Однако вот тут-то все и идет не так.

Код: Выделить всё

.renderDot(graphDef)
- если я отлаживаю это, это не дает никаких подсказок о том, что происходит, но это точно не рендеринг в указанном элементе.
Единственный вывод консоли в эта функция связана с веб-воркерами, и я не думаю, что это повлияет на рендеринг. На самом деле я попытался передать 'digraph {a -> b}', но это тоже не помогло. SVG находится в DOM, имеет правильный идентификатор, и я вижу его на своей веб-странице.
У вас есть какой-нибудь совет, чего не хватает в коде? Спасибо за внимание.
Просто отмечу, что я пробовал с обещанием и без него, который я включил в этот фрагмент. Ни один из .on() не предоставляет ничего полезного, а .on("end"...) никогда не срабатывает.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-my-svg
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как создать гиперссылки на узлы в d3js NetworkX diGraph
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Получить порядок узлов в Digraph Networkx
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Никаких подсказок Pylance после украшения класса (Python)
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Никаких подсказок Pylance после украшения класса (Python)
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Напишите скрипт Python, который, если дано одно предложение со списком из нескольких операторов, разделит их и сделает о
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»