Drop generated cards; registry descriptions become Elements tooltips

- resolveRefs no longer adds cards to a diagram; it returns node id →
  description, which the page sets as the tooltip of the matching row in
  Archify's Elements panel
- hand-written cards pass through unchanged; docs and changelog
This commit is contained in:
2026-10-19 20:44:09 +03:00
parent de1a57e4c6
commit 094ca2925f
8 changed files with 34 additions and 70 deletions
+13
View File
@@ -18,6 +18,8 @@ export interface PageOptions {
links?: Record<string, string>;
/** The model page: metadata above the diagram, the diagram list and registry below. */
model?: ModelPanel;
/** Node id → registry description, shown as tooltips in the Elements panel. */
descriptions?: Record<string, string>;
/** Registry page: the elements of one .archify-registry file. */
registry?: RegistryPanel;
}
@@ -77,6 +79,7 @@ function bridgeScript(options: PageOptions): string {
links: options.links ?? {},
model: options.model,
registry: options.registry,
descriptions: options.descriptions || {},
};
return `(function () {
var config = ${scriptJson(config)};
@@ -322,6 +325,15 @@ function bridgeScript(options: PageOptions): string {
document.body.appendChild(body);
}
// Elements: registry descriptions as tooltips on Archify's node index rows.
function describeElements() {
var items = document.querySelectorAll('#node-outline .node-outline-item[data-outline-node]');
Array.prototype.forEach.call(items, function (item) {
var text = config.descriptions[item.getAttribute('data-outline-node')];
if (text) item.title = text;
});
}
// Connectors: a rail panel next to Archify's Elements index, read from the
// SVG's edges. Hover highlights the connector, click keeps it highlighted.
function renderConnectors() {
@@ -486,6 +498,7 @@ function bridgeScript(options: PageOptions): string {
if (config.model) onReady(function () { renderModel(config.model); });
if (config.registry) onReady(function () { renderRegistry(config.registry); });
onReady(renderConnectors);
onReady(describeElements);
if (config.notice) {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function () { showNotice(config.notice); });