Automated changes from task - #12
Open
coderflow-demo-server[bot] wants to merge 5 commits into
Open
coderflow-demo-server[bot] wants to merge 5 commits into
coderflow-demo-server[bot] wants to merge 5 commits into
Conversation
…ness Rebuild the bdmedical Genie skin for the BD prospect. The folder had been copied from Skyline and renamed but never re-skinned: start.html was still titled "Genie - Skyline Skin" and loaded all five images from genie skins/skyline/, and bdmedical.css was Skyline's orange/black stylesheet verbatim. Brand values come from the CSS custom properties published by www.bd.com (clientlib-base) rather than a third-party colour site, which still quotes BD's pre-rebrand palette: navy #060A3D, boosted blue #044ED7, boosted orange #FF6E00, teal #39BEAB, plus BD's published FS Albert Pro fallback chain. BD's two official logo SVGs are included; FS Albert Pro is licensed and is not redistributed. htdocs/profoundui/userdata/genie skins/bdmedical/ - start.html: BD navy masthead with the white BD lockup, product name, tagline and a live "Signed in as" slot, over an orange/blue accent rule; BD footer. Paths repointed at bdmedical/ with a ?v=1 cache-buster. The required div#5250 and the css/script ordering rules are preserved. - bdmedical.css: full rewrite on BD tokens - brand typography, gradients, shadows, transitions, pill CTAs, focus rings, a pui-bd-animation spinner and a responsive breakpoint. All 5250 attribute classes A20-A3E are retained and remapped to BD hues while keeping their semantic distinctions, so colour-coded applications read the same as before. - bd-brandkit.js (new): the behaviour, as a reusable module with no skin name, field ids or wording baked in. Loaded between genie.js and custom.js so it can be relocated to /profoundui/userdata/js/shared/ and shared across skins. Rebuilds the sign-on screen, sizing the card from the live field bounding box so the normal and 128-character-password layouts both work without a second set of coordinates; rebuilds the function-key buttons as a flex-wrapped pill bar from pui.genie.afterInit, since Genie's own buttons are absolutely positioned and cannot be given spacing in CSS. - custom.js: reduced to a thin per-skin config layer. - adjusted columns custom.js: regenerated to match, ids shifted one column left. Without this, enabling adjustColumns would silently revert the sign-on screen to Skyline branding. - bd-logo.svg, bd-logo-white.svg: BD's official marks. - README.md: deploy steps, palette reference and the reasoning behind the non-obvious decisions. config.js is left untouched - it is Genie Administrator-managed. It still carries Skyline's hiColor (#DD5700); changing that to #044ED7 is a Genie Administrator change, not a source edit. Three defects found and fixed while rendering the skin: - "#5250" is an invalid CSS selector (an id selector cannot start with a digit), so those rules were being discarded silently, dropping white-space: nowrap from 5250 fields. Now [id="5250"]. - The card's own ".bd-signon-card div" reset outranked its bare child class selectors, collapsing the heading padding. Child rules now carry the parent class so they win on specificity, rather than using !important. - Subfile columns collided because the stock skin only monospaced INPUT fields and left output fields on the proportional body font, while Genie lays fields out on a fixed ~8px character grid. The 5250 area now uses the same 13px monospace the stock skin already used for inputs; chrome keeps the BD brand font. Sign-on layout is computed rather than inherited from the stock skin's fixed pixel offsets: the card is centred in the 5250 container and the form is laid out inside it. .insideDiv also gets auto margins - it is 675px inside a 775px .middleDiv and as a plain block sat flush left, pushing every screen 50px left of the page centre. And BDGenie.sizeButtonToLabel clears the inline width Genie writes onto each button it creates, which combined with the skin's padding and border-box sizing was clipping "Sign in" to "Sign"; CSS cannot fix that because an inline style wins. The rebuilt function-key bar anchors below the lowest still-visible field (BDGenie.contentBottom) rather than at the row the original prompts occupied. Function-key prompts routinely share a row with real text - the IBM i Main Menu puts F23=Set initial menu on row 24 next to the IBM copyright line - and the bar is taller than the rows it replaces, so anchored at the old top its second row of pills landed on that text. BDGenie.reserveRoomFor then grows .middleDiv if the bar extends past it, so it cannot collide with the page footer either; applyDisplaySizing resets that height on every screen. Add a dynamic "Actions" menu to the masthead, built from the current screen's function keys. The hamburger button and panel are static chrome in start.html; bd-brandkit.js fills the panel per screen and hides the toggle on screens with no function keys. Each row shows the key badge and its description, parsed out of the "Fnn=Text" prompt, and clicking one calls pressKey - the same path the green screen uses. Click-outside and Escape dismiss it, Up/Down move between items, and the keyboard handler is registered in the capture phase so Escape and the arrows reach the menu rather than Genie's 5250 key handling - but only while the menu is open, so ordinary typing is unaffected. rebuildFkeyBar is split into collectFunctionKeys (scan and de-duplicate) plus renderFkeyBar and renderFkeyMenu, so both affordances read the same data. buildFkeyBar and buildFkeyMenu are independent switches; custom.js turns the bar off, so function keys are surfaced through the menu alone rather than duplicating the same list in two places. The menu lives in its own strip (.bd-screenbar) directly above the terminal, width-matched to .insideDiv (675px) rather than the wider .middleDiv that wraps it, so the button's right edge lines up exactly with the right edge of the screen and the panel opens over the content. In the masthead it was correct but far away - the header runs to 1400px against a 675px terminal. The strip reserves a min-height so the terminal does not shift vertically between screens with and without function keys, and the toggle is restyled for the light page background now that it no longer sits on the navy masthead. .bd-header gets z-index 100 and .bd-screenbar z-index 60. 5250 fields carry z-index 10-40 in the root stacking context (.insideDiv is position:relative with z-index auto, which does not create one), so without those the menu panel painted underneath the terminal text. Below the terminal's own fixed width the page scrolls sideways, so at that breakpoint the panel anchors left rather than right to stay on screen. Self-host JetBrains Mono for the terminal (fonts/JetBrainsMono-latin.woff2, 31 KB variable 100-800 latin subset, SIL OFL 1.1 with the licence alongside it). The skin previously relied on a system monospace stack, which lands on whatever each workstation happens to have - frequently Courier New - so the look varied per machine. Chosen for a tall x-height and unambiguous 0/O and 1/l/I; the old system stack remains as a fallback. Three properties were measured rather than assumed, and the harness now asserts them on every screen: the advance is exactly 0.6em (7.8px at 13px, which the browser rounds to Genie's 8px cell, so 80 columns measure exactly 640px), weight 700 has the same advance as 400, and no sequence ligates. 13px is the ceiling for this face: 8 / 0.6 = 13.33px. liga/clig/calt are disabled on the terminal and on inputs. JetBrains Mono is a coding face and the IBM i command line is literally "===>". Measured, this subset does not ligate that sequence even with features on, so the suppression is insurance against a future font swap rather than a fix. start.html's cache-buster is at ?v=6. tools/genie-skin-preview/ Offline harness that serves a skin with a stand-in genie.js drawing synthetic 5250 screens from real Genie field ids, runs the skin's customize() and pui.genie.afterInit, then screenshots and probes the DOM. Covers the standard, 128-character-password and column-adjusted sign-on screens, an application screen with function keys, the IBM i Main Menu, and a narrow viewport. It also drives the Actions menu with real clicks and key presses, asserting the item list, the toggle's offset from the terminal's own rectangle, that the panel is topmost via elementFromPoint, that Escape restores focus, and that clicking a row fires pressKey with that row's key. It also measures the terminal font: that it resolves, its advance, that 80 columns fit the grid, and that "===>" and ". . . ." occupy their exact cell counts. All six screens pass with no page errors, console errors or failed requests. It is a stand-in, not Profound UI, so it verifies the skin's own markup and layout, not a live Genie session. The mock reproduces Genie's inline button widths, without which the harness sized buttons to their labels and missed the clipping seen on the real server. It also probes card-centre against page-centre, flags any button whose scrollWidth exceeds its clientWidth, and intersects the function-key bar against every visible 5250 field - so all three reported defects now fail the harness rather than reaching a browser. Co-Authored-By: CoderFlow <ai@coderflow.ai> Learn more: https://coderflow.ai
Excludes __pycache__/ and *.pyc. A compiled bytecode file from local py_compile runs had been picked up into the index alongside the tool sources; it has been unstaged and is now ignored. Co-Authored-By: CoderFlow <ai@coderflow.ai> Learn more: https://coderflow.ai
Generate a technical reference document for every source member in cfdemo/qrpglesrc, written to docs/docs: - CUSTR (module/service program, embedded SQL data service) - custr_pr (/COPY member: cust_rec template + prototypes) - WRKCUSTR / WRKCUST1R (5250 list and detail) - WRKCUSTRO / WRKCUST1RO (Profound UI Rich Display list and detail) - WRKCUSTEO / WRKCUST1EO (Profound UI EJS screen-mode list and detail) - HELLOR (Hello World example) Each document covers invocation, control options and parameters, ILE structure (activation group and binding), dependency tree and Mermaid diagrams, full object list, DB2 for i schema and access paths, display file / Rich Display / EJS screen layout, program flow and key routines, indicators, error handling, security, interfaces, codermake build rules, related programs and testing scenarios. Also add docs/docs/README.md as an index with an application-level diagram and the cross-cutting notes (fixed CUSTR export signature, unhandled %date conversion on zero dates, subfile field truncation vs full-width filtering, unimplemented edit mode, EJS assets not deployed by codermake). Screen layouts, field positions, indicator effects and the RPGOA/EJS wiring were verified against the running application in an interactive session. Co-Authored-By: CoderFlow <ai@coderflow.ai> Learn more: https://coderflow.ai
Add a BOM / inventory / shop-floor demo dataset for the AdelWiggins Group customer demo, under a new awdemo/ directory, and deploy it to library AWDEMO. The schema is a faithful clone of the existing sample library BOMSAMPLE -- same 8 tables, 9 indexes, primary and foreign keys, and column headings, with SQL long names pinned via FOR COLUMN / FOR SYSTEM NAME so the short system names match. All 8 record format level identifiers are identical to BOMSAMPLE's, so anything written against BOMSAMPLE runs here without a level check. The content is AdelWiggins' own aerospace product families taken from adelwiggins.com: clamshell/threaded/rigid tube couplings, ferrules and bulkhead fittings, 200/6000/Preece quick disconnects and valves, dielectric fuel and hydraulic isolators, freeze-protection heaters, Adel clamps and Wiggins mining fast-fuelling products -- 155 items, 91 BOMs, 468 component lines, 356 inventory balances and 260 shop orders across five locations. - awdemo/Rules.mk codermake targets for the tables and indexes - awdemo/sql/*.table.sql DDL, one file per table - awdemo/sql/*.index.sql DDL, one file per index - awdemo/sql/data/*.sql generated INSERT statements, library-agnostic - awdemo/tools/gen-awdemo-data.py deterministic generator (fixed RNG seed) - awdemo/tools/load-awdemo-data.py loads the data into a chosen library - awdemo/README.md dataset contents, build and promotion steps Manufactured-item standard costs are rolled up from their own structures so a cost roll-up in the demo reconciles. The data deliberately seeds situations to demo against: three-level explosions, five rev-A/rev-B supersessions, 85 below-reorder-point balances, 21 late released orders, inactive items and suppliers with history, and second-source suppliers. The dataset is deployed in AWDEMO. Promoting it turned up one gotcha now documented in the README: SQL only journals a new table if the library already holds a journal named QSQJRN, and AWDEMO had been made with plain CRTLIB, so every CREATE TABLE returned SQL7905 at severity 20. Unjournaled tables would have broken any SQLRPGLE program built later, since codermake compiles with COMMIT(*CHG). AWDEMO/QSQJRN was created to match BOMSAMPLE before the rebuild. Follow-up date review and fixes, applied to AWDEMO and the task library: - Orders now come off a steady release rate (~7.7/working day over 260 working days) with status derived from each order's own lifecycle, replacing a fixed per-status quota that spread closed orders over a year but crammed every open order into the last seven weeks (4-13 orders/month, then 103). Volume scaled 260 -> 2,112 so the open-order count is consistent with the release rate and lead times. Orders per month now sits in a 154-177 band. - The date anchor defaults to the run date instead of a hardcoded constant, so the dataset no longer decays (at +60 days every open order had gone late and the backlog was empty). --as-of / $AWDEMO_AS_OF reproduces an old snapshot; the seed stays fixed so content is deterministic per anchor. - Lead times are counted in working days: no order raised, due or completed at a weekend, and stock movement dates snapped off weekends too (was 32%). - Discontinued parts appear only in long-closed history, never with a live order on the floor. Co-Authored-By: CoderFlow <ai@coderflow.ai> Learn more: https://coderflow.ai
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Co-Authored-By: CoderFlow ai@coderflow.ai
Learn more: https://coderflow.ai