T7.2 - F6/D3: the form gets structure - a section rail, one section open
F6 as amended by D3 (Aug 18): one page, persistent side navigation, sections collapsible, only the current one open by default, plus Expand all. Tabs were rejected in D3 because they hide sections a first-time author does not know exist. What changed: - The jump-chip strip (#section-nav, span onclick) is gone. In its place a <nav> section rail of real <button> entries, aria-current on the current section, 44px tap targets, above the form at 390px and beside it at 1440px. - Every section heading is now a disclosure <button> with aria-expanded and aria-controls. One section open at rest; Expand all (aria-pressed) opens everything and is remembered per browser. - Sections are URL-addressable (?section=, T4.2 machinery) and a deep link to a collapsed section expands it. Positional-id fallback removed: a card without an id gets a console.error and no rail entry, never an invented sec-N id that would ride into shareable URLs and move between visits. - General Information (1,288px on its own) split into #general-card and #assign-card (Assignment & Schedule). The split is presentational: both cards are the ONE CR-006 section `general` (WP_SECTION_NODES lists both), so wp-sections.js and the SOP wizard are untouched. CR-001's adjacency (P6 activity beside due date) is preserved and asserted. - gotoSection() flushes autosave, which the deleted chips used to do. - secMakeToggle() preserves every element child of a heading - help tips go outside the button, everything else inside the label. The first version cleared textContent and destroyed #saved-count, which killed boot one line short of wpCreatorReady with the page still visibly rendered. - BL-013 folded in per the task: the T3.4 focus ring on the rebuilt form. frame_check reports outline solid 2px on creator inputs. Height, measured not asserted: 5,399px before; 1,995px at rest at 1440x900. DONE-WHEN NOT FULLY MET - stated per CLAUDE.md rather than marked complete: "no single view exceeds roughly two screen heights at rest" reads 2.22 screens (1995/900). The remaining gap is page chrome this wave reworks: .ctx-bar (67px, T7.4) and .release-banner (45px, T7.5). The criterion was already amended once (D3, "at rest") and is not being moved again to fit; tests/form_structure_check.py keeps the check red and it is re-measured at the end of wave 7. Every other done-when entry passes. Backlog: BL-001's cause corrected a third time - at rest the overflow is help.js's .help-tip::after tooltip (481 vs 390), the S8 component T9.5 rebuilds; the tables still overflow only when expanded. Deliberately not fixed here - a fix would be thrown away with the component at T9.5. Verification (each probe run alone): form_structure_check 50/51 (the height check above), sections_check 95/95, generalinfo_check 49/49, frame_check 39/39 regression pass. Items: F6, D3, BL-013, BL-001 (re-measured) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -99,8 +99,10 @@
|
||||
<!-- RELEASE READINESS BANNER -->
|
||||
<div class="release-banner" id="release-banner"></div>
|
||||
|
||||
<!-- SECTION NAV (jump links, built from the form cards) -->
|
||||
<div class="section-nav-bar" id="section-nav"></div>
|
||||
<!-- F6/D3: the jump-link strip stood here. It was a row of `<span onclick>` chips
|
||||
that scrolled you somewhere inside a 5,399px page and then told you nothing
|
||||
about where you had landed. The replacement is a real rail, declared below the
|
||||
form so it can be a sticky column beside it at desk width. -->
|
||||
|
||||
<div class="wp-layout">
|
||||
|
||||
@@ -225,7 +227,29 @@
|
||||
WP_FIELD_NODES addresses. -->
|
||||
<div class="field" id="field-costCode"><label>Cost code</label><select id="wp_cost"></select><div class="field-hint sop-hint">Acumatica cost codes</div></div>
|
||||
<div class="field" id="field-acumaticaTask"><label>Acumatica task</label><input type="text" id="wp_wbs" placeholder="Acumatica task no."></div>
|
||||
<!-- Moved up from the second grid by T7.2. The specification section is
|
||||
classification, not assignment: it is read-only and filled from the WP
|
||||
type on the SOP, so it belongs beside Subject and Type. -->
|
||||
<div class="field"><label>Specification section</label>
|
||||
<input type="text" id="wp_spec" readonly class="locked-field" placeholder="set on the WP type in the SOP">
|
||||
<div class="field-hint" id="spec-folder-link"></div></div>
|
||||
</div>
|
||||
<div class="field field-grid col1"><div class="field"><label>Description</label><textarea id="wp_desc" rows="2" placeholder="Short summary of the package"></textarea></div></div>
|
||||
<div class="field field-grid col1" id="bimlink-wrap"><div class="field"><label>Enabled by — BIM package(s)<span class="help-tip" data-tip="Advanced Work Packaging traceability: link the BIM / model package(s) that enabled this install package. Paste the MWP number(s) or a link to the model package.">i</span></label><input type="text" id="wp_bimlink" placeholder="e.g. MWP07-FAB-CONDUITS, or a link to the model package"></div></div>
|
||||
</div>
|
||||
|
||||
<!-- ASSIGNMENT & SCHEDULE (F6 / T7.2)
|
||||
Split out of General Information, which was 1,288px on its own and the
|
||||
whole of the gap between the page at rest and F6's two-screen bar. The
|
||||
split is presentational: BOTH cards are the CR-006 section `general`
|
||||
(WP_SECTION_NODES.general lists both), so the shared section registry in
|
||||
wp-sections.js is untouched, the SOP wizard still shows one toggle, and
|
||||
turning General Information off still hides every field it hid before.
|
||||
|
||||
CR-001 requires the P6 activity to sit beside the due date. Both are here,
|
||||
adjacent, and tests/generalinfo_check.py asserts the adjacency. -->
|
||||
<div class="card" id="assign-card">
|
||||
<div class="sub-heading">Assignment & Schedule</div>
|
||||
<div class="field-grid">
|
||||
<div class="field"><label>Owner <span class="help-tip" data-tip="The accountable owner (a user account on this project). Assigning notifies them by email if email notifications are enabled in the admin console.">i</span></label><select id="wp_assignee"><option value="">— Unassigned —</option></select></div>
|
||||
<div class="field"><label>Assignees<span class="help-tip" data-tip="The crew and staff working this package. Pick from the project team named on the SOP; anyone without a user account can still be added by name.">i</span></label>
|
||||
@@ -254,12 +278,7 @@
|
||||
<input type="text" id="wp_p6_id" placeholder="e.g. A1234"></div>
|
||||
<div class="field"><label>P6 activity description</label>
|
||||
<input type="text" id="wp_p6_desc" placeholder="what that activity covers"></div>
|
||||
<div class="field"><label>Specification section</label>
|
||||
<input type="text" id="wp_spec" readonly class="locked-field" placeholder="set on the WP type in the SOP">
|
||||
<div class="field-hint" id="spec-folder-link"></div></div>
|
||||
</div>
|
||||
<div class="field field-grid col1"><div class="field"><label>Description</label><textarea id="wp_desc" rows="2" placeholder="Short summary of the package"></textarea></div></div>
|
||||
<div class="field field-grid col1" id="bimlink-wrap"><div class="field"><label>Enabled by — BIM package(s)<span class="help-tip" data-tip="Advanced Work Packaging traceability: link the BIM / model package(s) that enabled this install package. Paste the MWP number(s) or a link to the model package.">i</span></label><input type="text" id="wp_bimlink" placeholder="e.g. MWP07-FAB-CONDUITS, or a link to the model package"></div></div>
|
||||
</div>
|
||||
|
||||
<!-- BIM / MODEL DETAILS (shown for BIM/VDC SOPs) -->
|
||||
@@ -380,7 +399,12 @@
|
||||
</div>
|
||||
|
||||
<!-- SIGN-OFFS -->
|
||||
<div class="card">
|
||||
<!-- The only .main > .card that had no id. buildSectionRail() filled the gap
|
||||
positionally - `card.id = "sec-" + i` - and that id then rode into ?section=
|
||||
as a shareable address. It moved every time the set of VISIBLE sections
|
||||
changed: a CR-006 toggle, the BIM flag, or T7.2 inserting #assign-card ahead
|
||||
of it. A link somebody sent then opened a different section, silently. -->
|
||||
<div class="card" id="signoff-card">
|
||||
<div class="sub-heading">Approvals & Sign-offs</div>
|
||||
<div class="notice">Per the AWP IWP checklist. A package should be signed by these roles before release.</div>
|
||||
<div class="table-wrap"><table><thead><tr><th style="width:220px">Role</th><th>Name</th><th style="width:150px">Date</th><th style="width:80px;text-align:center">Signed</th></tr></thead><tbody id="signoff-body"></tbody></table></div>
|
||||
@@ -438,6 +462,25 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- SECTION RAIL (F6 / D3)
|
||||
Built by buildSectionRail() from the cards themselves, so a section added or
|
||||
suppressed by a CR-006 toggle changes the rail without anybody maintaining a
|
||||
second list. Every entry is a real <button>, the current one carries
|
||||
aria-current, and each card's heading became a disclosure button with
|
||||
aria-expanded - the two accessibility defects F6's old chip strip and
|
||||
makeCollapsible() were carrying.
|
||||
|
||||
A sticky column beside the form at 1200px and up; a horizontal strip above it
|
||||
below that, which is what fits at 390px. -->
|
||||
<nav class="sec-rail" id="section-rail" aria-label="Form sections" hidden>
|
||||
<div class="sec-rail-head">
|
||||
<span class="sec-rail-title">Sections</span>
|
||||
<button type="button" class="sec-rail-all" id="sec-expand-all" aria-pressed="false"
|
||||
onclick="toggleExpandAll()">Expand all</button>
|
||||
</div>
|
||||
<ul class="sec-rail-list" id="sec-rail-list"></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<!-- HOLD LOG MODAL (comment 7) -->
|
||||
|
||||
Reference in New Issue
Block a user