Archived
deploy.
This commit is contained in:
@@ -87,10 +87,10 @@
|
||||
<article data-uid="Anatomy-GeomCombinationControl">
|
||||
<h1 id="geometry-combination-control">Geometry Combination Control</h1>
|
||||
|
||||
<p>A <a class="xref" href="../../api/Hi.Geom.GeomCombination.html">GeomCombination</a> is several geometries treated as one, and it has <strong>two faces on the
|
||||
web</strong>: an inline editor that renders every child's own editor at once, and a Control-Tree panel that
|
||||
manages the list only and puts each child on its own node. The desktop client has the inline shape
|
||||
alone. There is no selection model on any of them — every child carries its own remove button.</p>
|
||||
<p>A <a class="xref" href="../../api/Hi.Geom.GeomCombination.html">GeomCombination</a> is several geometries treated as one, and it has <strong>two faces</strong>: an
|
||||
inline editor that renders every child's own editor at once, and a Control-Tree panel that manages
|
||||
the list only and puts each child on its own node. There is no selection model on either — every
|
||||
child carries its own remove button.</p>
|
||||
<h2 id="layout">Layout</h2>
|
||||
<h3 id="the-inline-editor">The inline editor</h3>
|
||||
<ul>
|
||||
@@ -103,33 +103,23 @@ editable at once.</li>
|
||||
<p>Deliberately shallow: a list of read-only rows with Add, a per-row remove and Clear all, and a
|
||||
standing hint that an <strong>Item</strong> child node is where a child is actually edited. No editor is embedded
|
||||
here; each child is its own <code>Item</code> node — <code>.../item-{index}</code> — under this one.</p>
|
||||
<h3 id="the-desktop-control">The desktop control</h3>
|
||||
<p>A title, then an <strong>Add</strong> and a <strong>Clear All</strong> button over a scrolling list of bordered cards, each
|
||||
holding that child's own geometry management panel and a remove button — no index badge and no type
|
||||
caption. Below the list sits a collapsed <strong>Combination Information</strong> expander reporting the aggregate
|
||||
triangle count and bounding box, the latter as a read-only box control.</p>
|
||||
<h2 id="adding-a-child">Adding a Child</h2>
|
||||
<p>The two clients differ here, and the web is the one that gained something:</p>
|
||||
<ul>
|
||||
<li><strong>Web</strong> — pick the kind first, then Add; the request carries the kind.</li>
|
||||
<li><strong>Desktop</strong> — Add takes no kind and always appends a 100 mm cube. The kind is switched afterwards,
|
||||
on that child's own Geometry Type combo.</li>
|
||||
</ul>
|
||||
<p>Pick the kind first, then Add; the request carries the kind.</p>
|
||||
<p>Five kinds may be children — Box3d, Cylindroid, StlFile, TransformationGeom and a <strong>nested</strong>
|
||||
GeomCombination, so combinations nest arbitrarily deep. <code>CubeTreeFile</code> and <code>ExtendedCylinder</code> are
|
||||
accepted by neither client's switch.</p>
|
||||
accepted by neither switch.</p>
|
||||
<h2 id="behavior">Behavior</h2>
|
||||
<ul>
|
||||
<li><strong>A type switch rewires the slot, not just the alias.</strong> Changing a child's kind goes through
|
||||
<code>SetItemAt</code>, which replaces the entry in <a class="xref" href="../../api/Hi.Geom.GeomCombination.html#Hi_Geom_GeomCombination_StlSources">StlSources</a> itself.</li>
|
||||
<li><strong>The aggregate STL is cached, and a child's own controller does not invalidate it.</strong> Editing a
|
||||
child through its own endpoints leaves the combination returning the mesh it had already built, so
|
||||
both web faces call <code>CleanCache</code> before bubbling the change, and compose that call into the
|
||||
ancestor chain. This is the behavioural fact the rest of the page depends on.</li>
|
||||
both faces call <code>CleanCache</code> before bubbling the change, and compose that call into the ancestor
|
||||
chain. This is the behavioural fact the rest of the page depends on.</li>
|
||||
<li><strong>Removing a child does not renumber the ones after it.</strong> Item keys are minted as
|
||||
<code>{key}-item-{index}</code> and the remove endpoint leaves later indices pointing at the old aliases,
|
||||
which is why every structural change rebuilds the branch and re-mints them.</li>
|
||||
<li><strong>Clear all confirms only on the desktop.</strong> The web posts it directly.</li>
|
||||
<li><strong>Clear all is posted directly, with no confirmation.</strong></li>
|
||||
</ul>
|
||||
<h2 id="source-code-path">Source Code Path</h2>
|
||||
<p>See <a class="xref" href="../index.html">HiNC App Anatomy</a> for git repository links.</p>
|
||||
@@ -175,7 +165,7 @@ cache.</li>
|
||||
<h2 id="see-also">See Also</h2>
|
||||
<ul>
|
||||
<li><a href="geom-manage-control.html">Geometry Management Panel</a> — the switchboard that offers this kind, and
|
||||
the panel each desktop child card embeds</li>
|
||||
the panel each child card embeds</li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user